|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.directwebremoting.impl.DefaultScriptSession
public class DefaultScriptSession
An implementation of ScriptSession and RealScriptSession.
There are synchronization constraints on this class. See the field
comments of the type: GuardedBy("lock")
.
In addition you should note that DefaultScriptSession
and
DefaultScriptSessionManager
make calls to each other and you should
take care not to break any constraints in inheriting from these classes.
Field Summary | |
---|---|
protected java.util.Map |
attributes
The server side attributes for this page. |
protected java.util.SortedSet |
conduits
The script conduits that we can use to transfer data to the browser. |
protected long |
creationTime
When we we created? |
protected java.lang.String |
id
What is our page session id? |
protected boolean |
invalidated
Have we been made invalid? |
protected long |
lastAccessedTime
When the the web page that we represent last contact us using DWR? |
protected DefaultScriptSessionManager |
manager
The session manager that collects sessions together |
protected java.util.List |
scripts
The list of waiting scripts. |
Constructor Summary | |
---|---|
protected |
DefaultScriptSession(java.lang.String id,
DefaultScriptSessionManager manager)
Simple constructor |
Method Summary | |
---|---|
void |
addScript(ScriptBuffer script)
Add a script to the list waiting for remote execution. |
void |
addScriptConduit(ScriptConduit conduit)
While a Marshaller is processing a request it can register a ScriptConduit with the ScriptSession to say - "pass scripts to me" |
protected void |
checkNotInvalidated()
Check that we are still valid and throw an IllegalStateException if not. |
boolean |
equals(java.lang.Object obj)
|
java.lang.Object |
getAttribute(java.lang.String name)
Returns the object bound with the specified name in this session, or null if no object is bound under the name. |
java.util.Iterator |
getAttributeNames()
Returns an Enumeration of String objects
containing the names of all the objects bound to this session. |
long |
getCreationTime()
Returns the time when this session was created, measured in milliseconds since midnight January 1, 1970 GMT. |
java.lang.String |
getId()
Returns a string containing the unique identifier assigned to this session. |
long |
getLastAccessedTime()
Returns the last time the client sent a request associated with this session, as the number of milliseconds since 1/1/1970 GMT, and marked by the time the container received the request. |
int |
hashCode()
|
boolean |
hasWaitingScripts()
Allows for checking to see if there is data waiting to be returned |
void |
invalidate()
Invalidates this session then unbinds any objects bound to it. |
boolean |
isInvalidated()
Checks to see if this ScriptSession has been invalidated. |
void |
removeAttribute(java.lang.String name)
Removes the object bound with the specified name from this session. |
void |
removeScriptConduit(ScriptConduit conduit)
Remove a ScriptConduit. |
void |
setAttribute(java.lang.String name,
java.lang.Object value)
Binds an object to this session, using the name specified. |
java.lang.String |
toString()
|
protected void |
updateLastAccessedTime()
Called whenever a browser accesses this data using DWR |
void |
writeScripts(ScriptConduit conduit)
We might need to send a script directly to a conduit without adding the conduit to the "open" list and then removing it directly. |
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected final java.util.Map attributes
GuardedBy("attributes")
protected volatile long lastAccessedTime
GuardedBy("invalidLock")
protected volatile boolean invalidated
GuardedBy("invalidLock")
protected final java.util.SortedSet conduits
GuardedBy("scriptLock")
protected final java.util.List scripts
GuardedBy("scriptLock")
protected final java.lang.String id
This should not need careful synchronization since it is unchanging
protected final long creationTime
This should not need careful synchronization since it is unchanging
protected final DefaultScriptSessionManager manager
This should not need careful synchronization since it is unchanging
Constructor Detail |
---|
protected DefaultScriptSession(java.lang.String id, DefaultScriptSessionManager manager)
id
- The new unique identifier for this sessionmanager
- The manager that created usMethod Detail |
---|
public java.lang.Object getAttribute(java.lang.String name)
ScriptSession
null
if no object is bound under the name.
getAttribute
in interface ScriptSession
name
- a string specifying the name of the object
public void setAttribute(java.lang.String name, java.lang.Object value)
ScriptSession
setAttribute
in interface ScriptSession
name
- the name to which the object is bound; cannot be nullvalue
- the object to be boundpublic void removeAttribute(java.lang.String name)
ScriptSession
removeAttribute
in interface ScriptSession
name
- the name of the object to remove from this sessionpublic java.util.Iterator getAttributeNames()
ScriptSession
Enumeration
of String
objects
containing the names of all the objects bound to this session.
getAttributeNames
in interface ScriptSession
Iterator
of String
s, specifying the
names of all the objects bound to this sessionpublic void invalidate()
ScriptSession
invalidate
in interface ScriptSession
public boolean isInvalidated()
ScriptSession
There is no similar method on HttpSession
because it is
assumed that you do not store HttpSessions from one request to another,
so all sessions that you have access to will always be either valid, or
you have just invalidated it yourself so you wont need to ask. This
method makes up for the change that now ScriptSessions are accessible
from outside the normal scope.
isInvalidated
in interface ScriptSession
public java.lang.String getId()
ScriptSession
getId
in interface ScriptSession
public long getCreationTime()
ScriptSession
getCreationTime
in interface ScriptSession
public long getLastAccessedTime()
ScriptSession
Actions that your application takes, such as getting or setting a value associated with the session, do not affect the access time.
getLastAccessedTime
in interface ScriptSession
public void addScript(ScriptBuffer script)
ScriptSession
addScript
in interface ScriptSession
script
- The script to executepublic void addScriptConduit(ScriptConduit conduit) throws java.io.IOException
RealScriptSession
Several Marshallers may be active on the same page as a time and it doesn't really matter which gets the script. So ScriptSession should record all of the active ScriptConduits, but just pick one
addScriptConduit
in interface RealScriptSession
conduit
- The new ScriptConduit
java.io.IOException
- If the write to the output failsRealScriptSession.removeScriptConduit(ScriptConduit)
public void writeScripts(ScriptConduit conduit) throws java.io.IOException
RealScriptSession
writeScripts
in interface RealScriptSession
conduit
- The conduit to write to
java.io.IOException
- If writing failspublic void removeScriptConduit(ScriptConduit conduit)
RealScriptSession
removeScriptConduit
in interface RealScriptSession
conduit
- The ScriptConduit to removeRealScriptSession.addScriptConduit(ScriptConduit)
public boolean hasWaitingScripts()
RealScriptSession
hasWaitingScripts
in interface RealScriptSession
protected void updateLastAccessedTime()
protected void checkNotInvalidated()
java.lang.IllegalStateException
- If this object has become invalidpublic int hashCode()
hashCode
in class java.lang.Object
public boolean equals(java.lang.Object obj)
equals
in class java.lang.Object
public java.lang.String toString()
toString
in class java.lang.Object
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |