Project Wonder 2.0

er.extensions
Class ERXSession

java.lang.Object
  extended bycom.webobjects.appserver.WOSession
      extended byer.extensions.ERXSession
All Implemented Interfaces:
Cloneable, NSKeyValueCoding, NSKeyValueCoding.ErrorHandling, NSKeyValueCodingAdditions, Serializable

public class ERXSession
extends WOSession
implements Serializable

The ERXSession aguments the regular WOSession object by adding a few nice additions. Of interest, notifications are now posted when a session when a session goes to sleep, David Neumann's browser backtracking detection has been added from his security framework, a somewhat comprehensive user-agent parsing is provided to know what type of browser is being used, flags have also been added to tell if javascript has been enabled, and enhanced localization support has been added.

See Also:
Serialized Form

Nested Class Summary
static class ERXSession.Observer
          The Observer inner class encapsulates functions to handle various notifications.
 
Nested classes inherited from class com.webobjects.foundation.NSKeyValueCoding
NSKeyValueCoding._BooleanFieldBinding, NSKeyValueCoding._BooleanMethodBinding, NSKeyValueCoding._FieldBinding, NSKeyValueCoding._ForwardingBinding, NSKeyValueCoding._KeyBinding, NSKeyValueCoding._KeyBindingCreation, NSKeyValueCoding._MethodBinding, NSKeyValueCoding._NumberFieldBinding, NSKeyValueCoding._NumberMethodBinding, NSKeyValueCoding._ReflectionKeyBindingCreation, NSKeyValueCoding.DefaultImplementation, NSKeyValueCoding.ErrorHandling, NSKeyValueCoding.Null, NSKeyValueCoding.UnknownKeyException, NSKeyValueCoding.Utility, NSKeyValueCoding.ValueAccessor
 
Nested classes inherited from class com.webobjects.foundation.NSKeyValueCodingAdditions
NSKeyValueCodingAdditions.DefaultImplementation, NSKeyValueCodingAdditions.Utility
 
Field Summary
protected  NSMutableDictionary _debuggingStore
          holds a debugging store for a given session.
protected  Boolean _didBacktrack
          flag to indicate if the user is currently backtracking, meaning they hit the back button and then clicked on a link.
protected  Boolean _javaScriptEnabled
          flag for if java script is enabled
 String _originalThreadName
          _originalThreadName holds the original name from the WorkerThread whic is the value before executing awake()
static String JAVASCRIPT_ENABLED_COOKIE_NAME
          cookie name that if set it means that the user has cookies enabled
 boolean lastActionWasDA
          flag to indicate if the last action was a direct action
static ERXLogger log
          logging support
static String SessionWillAwakeNotification
          Notification name that is posted after a session wakes up.
static String SessionWillSleepNotification
          Notification name that is posted when a session is about to sleep.
 
Fields inherited from class com.webobjects.appserver.WOSession
_componentState, _httpSession, _httpSessionWatcher, SessionDidCreateNotification, SessionDidRestoreNotification, SessionDidTimeOutNotification
 
Fields inherited from interface com.webobjects.foundation.NSKeyValueCoding
_CLASS, NullValue
 
Fields inherited from interface com.webobjects.foundation.NSKeyValueCoding.ErrorHandling
_CLASS
 
Fields inherited from interface com.webobjects.foundation.NSKeyValueCodingAdditions
_CLASS, _KeyPathSeparatorChar, KeyPathSeparator
 
Constructor Summary
ERXSession()
           
 
Method Summary
 void appendToResponse(WOResponse aResponse, WOContext aContext)
          Provides automatic encoding support for component action with messageEncoding object.
 NSArray availableLanguagesForTheApplication()
          Returns the NSArray of language names available for this application.
 NSArray availableLanguagesForThisSession()
          Returns the NSArray of language names available for this particular session.
 void awake()
          Overridden to provide a few checks to see if javascript is enabled.
 ERXBrowser browser()
          Returns the browser object representing the web browser's "user-agent" string.
 NSMutableDictionary debuggingStore()
          Simple mutable dictionary that can be used at runtime to stash objects that can be useful for debugging.
 EOEditingContext defaultEditingContext()
           
 boolean didBacktrack()
          Method inspects the passed in request to see if the user backtracked.
 boolean javaScriptEnabled()
          Returns if this user has javascript enabled.
 String language()
          Returns the primary language of the current session's localizer.
 ERXLocalizer localizer()
          Method to get the current localizer for this session.
 ERXMessageEncoding messageEncoding()
          Returns the message encoding of the current session.
 ERXSession.Observer observer()
          returns the observer object for this session.
 String requestsContextID(WORequest aRequest)
          Utility method that gets the context ID string from the passed in request.
 void setDefaultEditingContext(EOEditingContext ec)
           
 void setJavaScriptEnabled(boolean newValue)
          Sets if javascript is enabled for this session.
 void setLanguage(String language)
          Cover method to set the current localizer to the localizer for that language.
 void setLanguages(NSArray languageList)
          Sets the languages list for which the session is localized.
 void sleep()
          Overridden to post the notification that the session will sleep.
 void takeValuesFromRequest(WORequest aRequest, WOContext aContext)
          Provides automatic encoding support for component action with messageEncoding object.
 void terminate()
          Overrides terminate to free up resources and unregister for notifications.
 String threadName()
          override this method in order to provide a different name for the WorkerThread for this rr loop very useful for logging stuff: assign a log statement to a log entry.
 String toString()
           
 
Methods inherited from class com.webobjects.appserver.WOSession
_allowToViewEvents, _allowToViewStatistics, _appendCookieToResponse, _awakeInContext, _birthDate, _clearCookieFromResponse, _contextCounter, _contextDidIncrementContextID, _contextIDMatchingIDs, _formattedStatistics, _keyEnumerator, _lifeInMillis, _requestCounter, _saveCurrentPage, _setContext, _setHttpSession, _setHttpSessionWatcher, _setSessionID, _sleepInContext, _terminateByJ2EE, _terminateByTimeout, allowedToViewEvents, allowedToViewStatistics, canAccessFieldsDirectly, clone, context, debugString, domainForIDCookies, expirationDateForIDCookies, handleQueryWithUnboundKey, handleTakeValueForUnboundKey, invokeAction, isDistributionEnabled, isTerminating, languages, logString, objectForKey, removeObjectForKey, restorePageForContextID, savePage, savePageInPermanentCache, sessionID, setDistributionEnabled, setObjectForKey, setStoresIDsInCookies, setStoresIDsInURLs, setTimeOut, statistics, storesIDsInCookies, storesIDsInURLs, takeValueForKey, takeValueForKeyPath, timeOut, timeOutForIDCookies, timeOutMillis, unableToSetNullForKey, validateEventsLogin, validateStatisticsLogin, validationFailedWithException, valueForKey, valueForKeyPath
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

log

public static ERXLogger log
logging support


SessionWillAwakeNotification

public static final String SessionWillAwakeNotification
Notification name that is posted after a session wakes up.

See Also:
Constant Field Values

SessionWillSleepNotification

public static final String SessionWillSleepNotification
Notification name that is posted when a session is about to sleep.

See Also:
Constant Field Values

JAVASCRIPT_ENABLED_COOKIE_NAME

public static final String JAVASCRIPT_ENABLED_COOKIE_NAME
cookie name that if set it means that the user has cookies enabled

See Also:
Constant Field Values

_javaScriptEnabled

protected Boolean _javaScriptEnabled
flag for if java script is enabled


_debuggingStore

protected NSMutableDictionary _debuggingStore
holds a debugging store for a given session.


_originalThreadName

public String _originalThreadName
_originalThreadName holds the original name from the WorkerThread whic is the value before executing awake()


_didBacktrack

protected Boolean _didBacktrack
flag to indicate if the user is currently backtracking, meaning they hit the back button and then clicked on a link.


lastActionWasDA

public boolean lastActionWasDA
flag to indicate if the last action was a direct action

Constructor Detail

ERXSession

public ERXSession()
Method Detail

observer

public ERXSession.Observer observer()
returns the observer object for this session. If it doesn't ever exist, one will be created.

Returns:
the observer

localizer

public ERXLocalizer localizer()
Method to get the current localizer for this session. If local instance variable is null then a localizer is fetched for the session's languages array. See ERXLocalizer for more information about using a localizer.

Returns:
the current localizer for this session

language

public String language()
Returns the primary language of the current session's localizer. This method is just a cover for calling the method localizer().language().

Returns:
primary language

setLanguage

public void setLanguage(String language)
Cover method to set the current localizer to the localizer for that language.

Also updates languages list with the new single language.

Parameters:
language - to set the current localizer for.
See Also:
language(), setLanguages(com.webobjects.foundation.NSArray)

setLanguages

public void setLanguages(NSArray languageList)
Sets the languages list for which the session is localized. The ordering of language strings in the array determines the order in which the application will search .lproj directories for localized strings, images, and component definitions.

Also updates localizer and messageEncodings.

Parameters:
languageList - the array of languages for the session
See Also:
language(), setLanguage(java.lang.String)

availableLanguagesForTheApplication

public NSArray availableLanguagesForTheApplication()
Returns the NSArray of language names available for this application. This is simply a cover method of ERXLocalizer.availableLanguages(), but will be convenient for binding to dynamic elements like language selector popup.

Returns:
NSArray of language name strings available for this application
See Also:
availableLanguagesForThisSession(), ERXLocalizer.availableLanguages()

availableLanguagesForThisSession

public NSArray availableLanguagesForThisSession()
Returns the NSArray of language names available for this particular session. The resulting array is an intersect of web browser's language array (ERXRequest.browserLanguages()) and localizer's available language array (ERXLocalizer.availableLanguages()).

Note that the order of the resulting language names is not defined at this morment.

Returns:
NSArray of language name strings available for this particular session
See Also:
availableLanguagesForTheApplication(), ERXRequest.browserLanguages(), ERXLocalizer.availableLanguages()

messageEncoding

public ERXMessageEncoding messageEncoding()
Returns the message encoding of the current session. If it's not already set up but no current language() available for the session, it creates one with the default encoding.

Returns:
message encoding object

browser

public ERXBrowser browser()
Returns the browser object representing the web browser's "user-agent" string. You can obtain browser name, version, platform and Mozilla version, etc. through this object.
Good for WOConditional's condition binding to deal with different browser versions.

Returns:
browser object

debuggingStore

public NSMutableDictionary debuggingStore()
Simple mutable dictionary that can be used at runtime to stash objects that can be useful for debugging.

Returns:
debugging store dictionary

defaultEditingContext

public EOEditingContext defaultEditingContext()

setDefaultEditingContext

public void setDefaultEditingContext(EOEditingContext ec)

javaScriptEnabled

public boolean javaScriptEnabled()
Returns if this user has javascript enabled. This checks a form value "javaScript" and a cookie "js" if the value is 1.

Returns:
if js is enabled, defaults to true.

setJavaScriptEnabled

public void setJavaScriptEnabled(boolean newValue)
Sets if javascript is enabled for this session. crafty entry pages can set form values via javascript to test if it is enabled.

Parameters:
newValue - says if javascript is enabled

awake

public void awake()
Overridden to provide a few checks to see if javascript is enabled.


sleep

public void sleep()
Overridden to post the notification that the session will sleep.


threadName

public String threadName()
override this method in order to provide a different name for the WorkerThread for this rr loop very useful for logging stuff: assign a log statement to a log entry. Something useful could be: return session().sessionID() + valueForKeyPath("user.username");

Returns:

requestsContextID

public String requestsContextID(WORequest aRequest)
Utility method that gets the context ID string from the passed in request.

Parameters:
aRequest - request to get the context id from
Returns:
the context id as a string

didBacktrack

public boolean didBacktrack()
Method inspects the passed in request to see if the user backtracked. If the context ID for the request is 2 clicks less than the context ID for the current WOContext, we know the backtracked.

Returns:
if the user has backtracked or not.

takeValuesFromRequest

public void takeValuesFromRequest(WORequest aRequest,
                                  WOContext aContext)
Provides automatic encoding support for component action with messageEncoding object.

Parameters:
aRequest - current request
aContext - current context
Returns:
super's implementation of invokeAction

appendToResponse

public void appendToResponse(WOResponse aResponse,
                             WOContext aContext)
Provides automatic encoding support for component action with messageEncoding object.

Parameters:
aResponse - current response object
aContext - current context object

terminate

public void terminate()
Overrides terminate to free up resources and unregister for notifications.


toString

public String toString()

Last updated: Do, Dez 9, 2004 • 12:46 PM CET

Copyright © 2002 – 2004 Project Wonder.