Author: fhanik
Date: Wed Mar 8 13:38:16 2006
New Revision: 384337
URL: http://svn.apache.org/viewcvs?rev=384337&view=rev
Log:
Removed duplicate string manager
reformatted to readable code
Modified:
tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/ha/session/DeltaSession.java
Modified:
tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/ha/session/DeltaSession.java
URL:
http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/ha/session/DeltaSession.java?rev=384337&r1=384336&r2=384337&view=diff
==============================================================================
---
tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/ha/session/DeltaSession.java
(original)
+++
tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/ha/session/DeltaSession.java
Wed Mar 8 13:38:16 2006
@@ -1,12 +1,12 @@
/*
* Copyright 1999,2004 The Apache Software Foundation.
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -32,7 +32,6 @@
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
-
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionAttributeListener;
@@ -42,20 +41,18 @@
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
-import org.apache.catalina.Container;
import org.apache.catalina.Context;
import org.apache.catalina.Manager;
import org.apache.catalina.Session;
import org.apache.catalina.SessionEvent;
import org.apache.catalina.SessionListener;
import org.apache.catalina.ha.ClusterSession;
-import org.apache.catalina.core.StandardContext;
import org.apache.catalina.realm.GenericPrincipal;
import org.apache.catalina.util.Enumerator;
import org.apache.catalina.util.StringManager;
/**
- *
+ *
* Similar to the StandardSession, this code is identical, but for update and
* some small issues, simply copied in the first release. This session will
keep
* track of deltas during a request.
@@ -69,7 +66,7 @@
* <b>IMPLEMENTATION NOTE </b>: If you add fields to this class, you must make
* sure that you carry them over in the read/writeObject methods so that this
* class is properly serialized.
- *
+ *
* @author Filip Hanik
* @author Craig R. McClanahan
* @author Sean Legassick
@@ -77,18 +74,17 @@
* @version $Revision: 372887 $ $Date: 2006-01-27 09:58:58 -0600 (Fri, 27 Jan
2006) $
*/
-public class DeltaSession implements HttpSession, Session, Serializable,
- ClusterSession {
+public class DeltaSession
+ implements HttpSession, Session, Serializable,
+ ClusterSession {
public static org.apache.commons.logging.Log log =
org.apache.commons.logging.LogFactory
- .getLog(DeltaManager.class);
+ .getLog(DeltaManager.class);
/**
* The string manager for this package.
*/
- protected static StringManager smp = StringManager
- .getManager(Constants.Package);
-
+ protected static StringManager sm =
StringManager.getManager(Constants.Package);
// ----------------------------------------------------- Instance Variables
@@ -128,8 +124,10 @@
/**
* The method signature for the <code>fireContainerEvent</code> method.
*/
- private static final Class containerEventTypes[] = { String.class,
- Object.class };
+ private static final Class containerEventTypes[] = {
+ String.class,
+ Object.class
+ };
/**
* The time this session was created, in milliseconds since midnight,
@@ -206,11 +204,6 @@
*/
private transient Principal principal = null;
- /**
- * The string manager for this package.
- */
- private static StringManager sm = StringManager
- .getManager(Constants.Package);
/**
* The HTTP session context associated with this session.
@@ -221,8 +214,7 @@
* The property change support for this component. NOTE: This value is not
* included in the serialized version of this object.
*/
- private transient PropertyChangeSupport support = new
PropertyChangeSupport(
- this);
+ private transient PropertyChangeSupport support = new
PropertyChangeSupport(this);
/**
* The current accessed time for this session.
@@ -239,7 +231,7 @@
/**
* The delta request contains all the action info
- *
+ *
*/
private transient DeltaRequest deltaRequest = null;
@@ -255,15 +247,14 @@
protected transient int accessCount = 0;
// ----------------------------------------------------------- Constructors
-
+
/**
* Construct a new Session associated with the specified Manager.
- *
+ *
* @param manager
* The manager with which this Session is associated
*/
public DeltaSession(Manager manager) {
-
super();
this.manager = manager;
this.resetDeltaRequest();
@@ -281,7 +272,7 @@
/**
* Sets whether this is the primary session or not.
- *
+ *
* @param primarySession
* Flag value
*/
@@ -302,7 +293,7 @@
/**
* Set the authentication type used to authenticate our cached Principal,
if
* any.
- *
+ *
* @param authType
* The new cached authentication type
*/
@@ -317,7 +308,7 @@
/**
* Set the creation time for this session. This method is called by the
* Manager when an existing Session instance is reused.
- *
+ *
* @param time
* The new creation time
*/
@@ -337,7 +328,6 @@
}
-
/**
* Return the session identifier for this session.
*/
@@ -347,39 +337,34 @@
}
-
/**
* Set the session identifier for this session without notify listeners.
- *
+ *
* @param id
* The new session identifier
*/
public void setIdInternal(String id) {
- if ((this.id != null) && (manager != null))
- manager.remove(this);
-
+ if ( (this.id != null) && (manager != null)) manager.remove(this);
this.id = id;
-
- if (manager != null)
- manager.add(this);
- if ( deltaRequest == null ) resetDeltaRequest();
+ if (manager != null) manager.add(this);
+ if (deltaRequest == null) resetDeltaRequest();
else deltaRequest.setSessionId(id);
}
/**
* Set the session identifier for this session.
- *
+ *
* @param id
* The new session identifier
*/
public void setId(String id) {
setIdInternal(id);
tellNew();
- }
+ }
/**
* Inform the listeners about the new session.
- *
+ *
*/
public void tellNew() {
@@ -394,25 +379,19 @@
if (listeners != null) {
HttpSessionEvent event = new HttpSessionEvent(getSession());
for (int i = 0; i < listeners.length; i++) {
- if (!(listeners[i] instanceof HttpSessionListener))
+ if (! (listeners[i] instanceof HttpSessionListener))
continue;
HttpSessionListener listener = (HttpSessionListener)
listeners[i];
try {
- fireContainerEvent(context, "beforeSessionCreated",
- listener);
+ fireContainerEvent(context,
"beforeSessionCreated",listener);
listener.sessionCreated(event);
- fireContainerEvent(context, "afterSessionCreated",
- listener);
+ fireContainerEvent(context,
"afterSessionCreated",listener);
} catch (Throwable t) {
try {
- fireContainerEvent(context, "afterSessionCreated",
- listener);
- } catch (Exception e) {
- ;
- }
+ fireContainerEvent(context,
"afterSessionCreated",listener);
+ } catch (Exception e) {}
// FIXME - should we do anything besides log these?
- log.error(sm.getString("standardSession.sessionEvent"),
- t);
+
log.error(sm.getString("standardSession.sessionEvent"),t);
}
}
}
@@ -437,12 +416,11 @@
* value associated with the session, do not affect the access time.
*/
public long getLastAccessedTime() {
-
- if (!isValid()) {
- throw new IllegalStateException(sm
- .getString("standardSession.getId.ise"));
+
+ if (!isValid()) {
+ throw new
IllegalStateException(sm.getString("standardSession.getId.ise"));
}
- return (this.lastAccessedTime);
+ return (this.lastAccessedTime);
}
@@ -450,21 +428,17 @@
* Return the Manager within which this Session is valid.
*/
public Manager getManager() {
-
return (this.manager);
-
}
/**
* Set the Manager within which this Session is valid.
- *
+ *
* @param manager
* The new Manager
*/
public void setManager(Manager manager) {
-
this.manager = manager;
-
}
/**
@@ -473,16 +447,14 @@
* indicates that the session should never time out.
*/
public int getMaxInactiveInterval() {
-
return (this.maxInactiveInterval);
-
}
/**
* Set the maximum time interval, in seconds, between client requests
before
* the servlet container will invalidate the session. A negative time
* indicates that the session should never time out.
- *
+ *
* @param interval
* The new maximum interval
*/
@@ -491,7 +463,6 @@
}
public void setMaxInactiveInterval(int interval, boolean addDeltaRequest) {
-
this.maxInactiveInterval = interval;
if (isValid && interval == 0) {
expire();
@@ -499,12 +470,11 @@
if (addDeltaRequest && (deltaRequest != null))
deltaRequest.setMaxInactiveInterval(interval);
}
-
}
/**
* Set the <code>isNew</code> flag for this session.
- *
+ *
* @param isNew
* The new value for the <code>isNew</code> flag
*/
@@ -526,9 +496,7 @@
* no current associated Principal, return <code>null</code>.
*/
public Principal getPrincipal() {
-
return (this.principal);
-
}
/**
@@ -536,7 +504,7 @@
* This provides an <code>Authenticator</code> with a means to cache a
* previously authenticated Principal, and avoid potentially expensive
* <code>Realm.authenticate()</code> calls on every request.
- *
+ *
* @param principal
* The new Principal, or <code>null</code> if none
*/
@@ -557,70 +525,62 @@
* facade.
*/
public HttpSession getSession() {
-
if (facade == null) {
if (System.getSecurityManager() != null) {
final DeltaSession fsession = this;
facade = (DeltaSessionFacade) AccessController
- .doPrivileged(new PrivilegedAction() {
- public Object run() {
- return new DeltaSessionFacade(fsession);
- }
- });
+ .doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ return new DeltaSessionFacade(fsession);
+ }
+ });
} else {
facade = new DeltaSessionFacade(this);
}
}
return (facade);
-
}
/**
* Return the <code>isValid</code> flag for this session.
*/
public boolean isValid() {
-
if (this.expiring) {
return true;
}
-
if (!this.isValid) {
return false;
}
-
if (accessCount > 0) {
return true;
}
-
if (maxInactiveInterval >= 0) {
long timeNow = System.currentTimeMillis();
- int timeIdle = (int) ((timeNow - lastAccessedTime) / 1000L);
+ int timeIdle = (int) ( (timeNow - lastAccessedTime) / 1000L);
if (isPrimarySession()) {
- if(timeIdle >= maxInactiveInterval) {
+ if (timeIdle >= maxInactiveInterval) {
expire(true);
}
} else {
if (timeIdle >= (2 * maxInactiveInterval)) {
- //if the session has been idle twice as long as allowed,
- //the primary session has probably crashed, and no other
- //requests are coming in. that is why we do this. otherwise
- //we would have a memory leak
+ //if the session has been idle twice as long as allowed,
+ //the primary session has probably crashed, and no other
+ //requests are coming in. that is why we do this. otherwise
+ //we would have a memory leak
expire(true, false);
}
}
}
-
return (this.isValid);
}
/**
* Set the <code>isValid</code> flag for this session.
- *
+ *
* @param isValid
* The new value for the <code>isValid</code> flag
*/
public void setValid(boolean isValid) {
-
this.isValid = isValid;
}
@@ -632,31 +592,26 @@
* session, even if the application does not reference it.
*/
public void access() {
-
this.lastAccessedTime = this.thisAccessedTime;
this.thisAccessedTime = System.currentTimeMillis();
-
evaluateIfValid();
-
accessCount++;
}
public void endAccess() {
isNew = false;
accessCount--;
- if(manager instanceof DeltaManager)
- ((DeltaManager)manager).registerSessionAtReplicationValve(this);
+ if (manager instanceof DeltaManager)
+ ( (DeltaManager) manager).registerSessionAtReplicationValve(this);
}
/**
* Add a session event listener to this component.
*/
public void addSessionListener(SessionListener listener) {
-
synchronized (listeners) {
listeners.add(listener);
}
-
}
/**
@@ -664,15 +619,13 @@
* without triggering an exception if the session has already expired.
*/
public void expire() {
-
expire(true);
-
}
/**
* Perform the internal processing required to invalidate this session,
* without triggering an exception if the session has already expired.
- *
+ *
* @param notify
* Should we notify listeners about the demise of this session?
*/
@@ -681,7 +634,6 @@
}
public void expire(boolean notify, boolean notifyCluster) {
-
// Mark this session as "being expired" if needed
if (expiring)
return;
@@ -704,30 +656,25 @@
HttpSessionEvent event = new
HttpSessionEvent(getSession());
for (int i = 0; i < listeners.length; i++) {
int j = (listeners.length - 1) - i;
- if (!(listeners[j] instanceof HttpSessionListener))
+ if (! (listeners[j] instanceof HttpSessionListener))
continue;
HttpSessionListener listener = (HttpSessionListener)
listeners[j];
try {
- fireContainerEvent(context,
- "beforeSessionDestroyed", listener);
+
fireContainerEvent(context,"beforeSessionDestroyed", listener);
listener.sessionDestroyed(event);
- fireContainerEvent(context,
- "afterSessionDestroyed", listener);
+
fireContainerEvent(context,"afterSessionDestroyed", listener);
} catch (Throwable t) {
try {
- fireContainerEvent(context,
- "afterSessionDestroyed", listener);
+
fireContainerEvent(context,"afterSessionDestroyed", listener);
} catch (Exception e) {
;
}
// FIXME - should we do anything besides log these?
- log.error(sm
- .getString("standardSession.sessionEvent"),
- t);
+
log.error(sm.getString("standardSession.sessionEvent"),t);
}
}
}
- }//end if
+ } //end if
//end fix
accessCount = 0;
setValid(false);
@@ -751,12 +698,12 @@
if (notifyCluster) {
if (log.isDebugEnabled())
- log.debug(smp.getString("deltaSession.notifying",
- ((DeltaManager) manager).getName(), new Boolean(
- isPrimarySession()), expiredId));
- ((DeltaManager) manager).sessionExpired(expiredId);
+ log.debug(sm.getString("deltaSession.notifying",
+ ((DeltaManager)manager).getName(),
+ new Boolean(isPrimarySession()),
+ expiredId));
+ ( (DeltaManager) manager).sessionExpired(expiredId);
}
-
}
}
@@ -764,12 +711,12 @@
/**
* Return the object bound with the specified name to the internal notes
for
* this session, or <code>null</code> if no such binding exists.
- *
+ *
* @param name
* Name of the note to be returned
*/
public Object getNote(String name) {
- return (notes.get(name));
+ return (notes.get(name));
}
/**
@@ -777,7 +724,7 @@
* exist for this session.
*/
public Iterator getNoteNames() {
- return (notes.keySet().iterator());
+ return (notes.keySet().iterator());
}
/**
@@ -785,7 +732,6 @@
* preparation for reuse of this object.
*/
public void recycle() {
-
// Reset the instance variables associated with this Session
attributes.clear();
setAuthType(null);
@@ -801,13 +747,12 @@
isValid = false;
manager = null;
deltaRequest.clear();
-
}
/**
* Remove any object bound to the specified name in the internal notes for
* this session.
- *
+ *
* @param name
* Name of the note to be removed
*/
@@ -819,17 +764,15 @@
* Remove a session event listener from this component.
*/
public void removeSessionListener(SessionListener listener) {
-
synchronized (listeners) {
listeners.remove(listener);
}
-
}
/**
* Bind an object to a specified name in the internal notes associated with
* this session, replacing any existing binding for this name.
- *
+ *
* @param name
* Name to which the object should be bound
* @param value
@@ -843,13 +786,11 @@
* Return a string representation of this object.
*/
public String toString() {
-
StringBuffer sb = new StringBuffer();
sb.append("DeltaSession[");
sb.append(id);
sb.append("]");
return (sb.toString());
-
}
// ------------------------------------------------ Session Package Methods
@@ -858,37 +799,32 @@
* Read a serialized version of the contents of this session object from
the
* specified object input stream, without requiring that the
StandardSession
* itself have been serialized.
- *
+ *
* @param stream
* The object input stream to read from
- *
+ *
* @exception ClassNotFoundException
* if an unknown class is specified
* @exception IOException
* if an input/output error occurs
*/
- public void readObjectData(ObjectInputStream stream)
- throws ClassNotFoundException, IOException {
-
+ public void readObjectData(ObjectInputStream stream) throws
ClassNotFoundException, IOException {
readObject(stream);
-
}
/**
* Write a serialized version of the contents of this session object to the
* specified object output stream, without requiring that the
* StandardSession itself have been serialized.
- *
+ *
* @param stream
* The object output stream to write to
- *
+ *
* @exception IOException
* if an input/output error occurs
*/
public void writeObjectData(ObjectOutputStream stream) throws IOException {
-
writeObject(stream);
-
}
public void resetDeltaRequest() {
@@ -901,8 +837,7 @@
}
public DeltaRequest getDeltaRequest() {
- if (deltaRequest == null)
- resetDeltaRequest();
+ if (deltaRequest == null) resetDeltaRequest();
return deltaRequest;
}
@@ -911,25 +846,20 @@
/**
* Return the time when this session was created, in milliseconds since
* midnight, January 1, 1970 GMT.
- *
+ *
* @exception IllegalStateException
* if this method is called on an invalidated session
*/
public long getCreationTime() {
-
if (!expiring && !isValid)
- throw new IllegalStateException(sm
- .getString("standardSession.getCreationTime.ise"));
-
+ throw new
IllegalStateException(sm.getString("standardSession.getCreationTime.ise"));
return (this.creationTime);
-
}
/**
* Return the ServletContext to which this session belongs.
*/
public ServletContext getServletContext() {
-
if (manager == null)
return (null);
Context context = (Context) manager.getContainer();
@@ -937,22 +867,19 @@
return (null);
else
return (context.getServletContext());
-
}
/**
* Return the session context with which this session is associated.
- *
+ *
* @deprecated As of Version 2.1, this method is deprecated and has no
* replacement. It will be removed in a future version of the
* Java Servlet API.
*/
public HttpSessionContext getSessionContext() {
-
if (sessionContext == null)
sessionContext = new StandardSessionContext();
return (sessionContext);
-
}
// ----------------------------------------------HttpSession Public Methods
@@ -960,90 +887,76 @@
/**
* Return the object bound with the specified name in this session, or
* <code>null</code> if no object is bound with that name.
- *
+ *
* @param name
* Name of the attribute to be returned
- *
+ *
* @exception IllegalStateException
* if this method is called on an invalidated session
*/
public Object getAttribute(String name) {
-
if (!isValid())
- throw new IllegalStateException(sm
- .getString("standardSession.getAttribute.ise"));
+ throw new
IllegalStateException(sm.getString("standardSession.getAttribute.ise"));
return (attributes.get(name));
}
/**
* Return an <code>Enumeration</code> of <code>String</code> objects
* containing the names of the objects bound to this session.
- *
+ *
* @exception IllegalStateException
* if this method is called on an invalidated session
*/
public Enumeration getAttributeNames() {
-
if (!isValid())
- throw new IllegalStateException(sm
- .getString("standardSession.getAttributeNames.ise"));
+ throw new
IllegalStateException(sm.getString("standardSession.getAttributeNames.ise"));
return (new Enumerator(attributes.keySet(), true));
}
/**
* Return the object bound with the specified name in this session, or
* <code>null</code> if no object is bound with that name.
- *
+ *
* @param name
* Name of the value to be returned
- *
+ *
* @exception IllegalStateException
* if this method is called on an invalidated session
- *
+ *
* @deprecated As of Version 2.2, this method is replaced by
* <code>getAttribute()</code>
*/
public Object getValue(String name) {
-
return (getAttribute(name));
-
}
/**
* Return the set of names of objects bound to this session. If there are
no
* such objects, a zero-length array is returned.
- *
+ *
* @exception IllegalStateException
* if this method is called on an invalidated session
- *
+ *
* @deprecated As of Version 2.2, this method is replaced by
* <code>getAttributeNames()</code>
*/
public String[] getValueNames() {
-
if (!isValid())
- throw new IllegalStateException(sm
- .getString("standardSession.getValueNames.ise"));
-
+ throw new
IllegalStateException(sm.getString("standardSession.getValueNames.ise"));
return (keys());
-
}
/**
* Invalidates this session and unbinds any objects bound to it.
- *
+ *
* @exception IllegalStateException
* if this method is called on an invalidated session
*/
public void invalidate() {
-
if (!isValid())
- throw new IllegalStateException(sm
- .getString("standardSession.invalidate.ise"));
-
+ throw new
IllegalStateException(sm.getString("standardSession.invalidate.ise"));
// Cause this session to expire
expire();
-
}
/**
@@ -1051,18 +964,14 @@
* session, or if the client chooses not to join the session. For example,
* if the server used only cookie-based sessions, and the client has
* disabled the use of cookies, then a session would be new on each
request.
- *
+ *
* @exception IllegalStateException
* if this method is called on an invalidated session
*/
public boolean isNew() {
-
if (!isValid())
- throw new IllegalStateException(sm
- .getString("standardSession.isNew.ise"));
-
+ throw new
IllegalStateException(sm.getString("standardSession.isNew.ise"));
return (this.isNew);
-
}
/**
@@ -1072,22 +981,20 @@
* After this method executes, and if the object implements
* <code>HttpSessionBindingListener</code>, the container calls
* <code>valueBound()</code> on the object.
- *
+ *
* @param name
* Name to which the object is bound, cannot be null
* @param value
* Object to be bound, cannot be null
- *
+ *
* @exception IllegalStateException
* if this method is called on an invalidated session
- *
+ *
* @deprecated As of Version 2.2, this method is replaced by
* <code>setAttribute()</code>
*/
public void putValue(String name, Object value) {
-
setAttribute(name, value);
-
}
/**
@@ -1098,17 +1005,15 @@
* After this method executes, and if the object implements
* <code>HttpSessionBindingListener</code>, the container calls
* <code>valueUnbound()</code> on the object.
- *
+ *
* @param name
* Name of the object to remove from this session.
- *
+ *
* @exception IllegalStateException
* if this method is called on an invalidated session
*/
public void removeAttribute(String name) {
-
removeAttribute(name, true);
-
}
/**
@@ -1119,13 +1024,13 @@
* After this method executes, and if the object implements
* <code>HttpSessionBindingListener</code>, the container calls
* <code>valueUnbound()</code> on the object.
- *
+ *
* @param name
* Name of the object to remove from this session.
* @param notify
* Should we notify interested listeners that this attribute is
* being removed?
- *
+ *
* @exception IllegalStateException
* if this method is called on an invalidated session
*/
@@ -1134,12 +1039,10 @@
}
public void removeAttribute(String name, boolean notify,
- boolean addDeltaRequest) {
-
+ boolean addDeltaRequest) {
// Validate our current state
if (!isValid())
- throw new IllegalStateException(sm
- .getString("standardSession.removeAttribute.ise"));
+ throw new
IllegalStateException(sm.getString("standardSession.removeAttribute.ise"));
removeAttributeInternal(name, notify, addDeltaRequest);
}
@@ -1151,20 +1054,18 @@
* After this method executes, and if the object implements
* <code>HttpSessionBindingListener</code>, the container calls
* <code>valueUnbound()</code> on the object.
- *
+ *
* @param name
* Name of the object to remove from this session.
- *
+ *
* @exception IllegalStateException
* if this method is called on an invalidated session
- *
+ *
* @deprecated As of Version 2.2, this method is replaced by
* <code>removeAttribute()</code>
*/
public void removeValue(String name) {
-
removeAttribute(name);
-
}
/**
@@ -1174,12 +1075,12 @@
* After this method executes, and if the object implements
* <code>HttpSessionBindingListener</code>, the container calls
* <code>valueBound()</code> on the object.
- *
+ *
* @param name
* Name to which the object is bound, cannot be null
* @param value
* Object to be bound, cannot be null
- *
+ *
* @exception IllegalArgumentException
* if an attempt is made to add a non-serializable object in
* an environment marked distributable.
@@ -1191,12 +1092,11 @@
}
public void setAttribute(String name, Object value, boolean notify,
- boolean addDeltaRequest) {
+ boolean addDeltaRequest) {
// Name cannot be null
if (name == null)
- throw new IllegalArgumentException(sm
- .getString("standardSession.setAttribute.namenull"));
+ throw new
IllegalArgumentException(sm.getString("standardSession.setAttribute.namenull"));
// Null value is the same as removeAttribute()
if (value == null) {
@@ -1206,17 +1106,14 @@
// Validate our current state
if (!isValid())
- throw new IllegalStateException(sm
- .getString("standardSession.setAttribute.ise"));
- if (!(value instanceof java.io.Serializable)) {
- throw new IllegalArgumentException("Attribute [" + name
- + "] is not serializable");
+ throw new
IllegalStateException(sm.getString("standardSession.setAttribute.ise"));
+ if (! (value instanceof java.io.Serializable)) {
+ throw new IllegalArgumentException("Attribute [" + name + "] is
not serializable");
}
if (addDeltaRequest && (deltaRequest != null))
deltaRequest.setAttribute(name, value);
-
// Construct an event with the new value
HttpSessionBindingEvent event = null;
@@ -1227,9 +1124,9 @@
if (value != oldValue) {
event = new HttpSessionBindingEvent(getSession(), name, value);
try {
- ((HttpSessionBindingListener) value).valueBound(event);
+ ( (HttpSessionBindingListener) value).valueBound(event);
} catch (Exception x) {
- log.error(smp.getString("deltaSession.valueBound.ex"), x);
+ log.error(sm.getString("deltaSession.valueBound.ex"), x);
}
}
}
@@ -1237,14 +1134,12 @@
// Replace or add this attribute
Object unbound = attributes.put(name, value);
// Call the valueUnbound() method if necessary
- if ((unbound != null) && (unbound != value) && notify
- && (unbound instanceof HttpSessionBindingListener)) {
+ if ( (unbound != null) && (unbound != value) && notify
+ && (unbound instanceof HttpSessionBindingListener)) {
try {
- ((HttpSessionBindingListener) unbound)
- .valueUnbound(new HttpSessionBindingEvent(
- (HttpSession) getSession(), name));
+ ( (HttpSessionBindingListener) unbound).valueUnbound(new
HttpSessionBindingEvent((HttpSession) getSession(), name));
} catch (Exception x) {
- log.error(smp.getString("deltaSession.valueBinding.ex"), x);
+ log.error(sm.getString("deltaSession.valueBinding.ex"), x);
}
}
@@ -1261,52 +1156,39 @@
if (listeners == null)
return;
for (int i = 0; i < listeners.length; i++) {
- if (!(listeners[i] instanceof HttpSessionAttributeListener))
+ if (! (listeners[i] instanceof HttpSessionAttributeListener))
continue;
HttpSessionAttributeListener listener =
(HttpSessionAttributeListener) listeners[i];
try {
if (unbound != null) {
- fireContainerEvent(context,
- "beforeSessionAttributeReplaced", listener);
+
fireContainerEvent(context,"beforeSessionAttributeReplaced", listener);
if (event == null) {
- event = new HttpSessionBindingEvent(getSession(),
- name, unbound);
+ event = new
HttpSessionBindingEvent(getSession(),name, unbound);
}
listener.attributeReplaced(event);
- fireContainerEvent(context,
- "afterSessionAttributeReplaced", listener);
+
fireContainerEvent(context,"afterSessionAttributeReplaced", listener);
} else {
- fireContainerEvent(context,
- "beforeSessionAttributeAdded", listener);
+
fireContainerEvent(context,"beforeSessionAttributeAdded", listener);
if (event == null) {
- event = new HttpSessionBindingEvent(getSession(),
- name, value);
+ event =
+ new HttpSessionBindingEvent(getSession(),name,
value);
}
listener.attributeAdded(event);
- fireContainerEvent(context,
- "afterSessionAttributeAdded", listener);
+
fireContainerEvent(context,"afterSessionAttributeAdded", listener);
}
} catch (Throwable t) {
try {
if (unbound != null) {
- fireContainerEvent(context,
- "afterSessionAttributeReplaced", listener);
+
fireContainerEvent(context,"afterSessionAttributeReplaced", listener);
} else {
- fireContainerEvent(context,
- "afterSessionAttributeAdded", listener);
+
fireContainerEvent(context,"afterSessionAttributeAdded", listener);
}
- } catch (Exception e) {
- ;
- }
+ } catch (Exception e) {}
// FIXME - should we do anything besides log these?
- log
- .error(
- sm
-
.getString("standardSession.attributeEvent"),
- t);
+
log.error(sm.getString("standardSession.attributeEvent"),t);
}
} //for
- }//end if
+ } //end if
//end fix
}
@@ -1319,57 +1201,53 @@
* <p>
* <b>IMPLEMENTATION NOTE </b>: The reference to the owning Manager is not
* restored by this method, and must be set explicitly.
- *
+ *
* @param stream
* The input stream to read from
- *
+ *
* @exception ClassNotFoundException
* if an unknown class is specified
* @exception IOException
* if an input/output error occurs
*/
- private void readObject(ObjectInputStream stream)
- throws ClassNotFoundException, IOException {
+ private void readObject(ObjectInputStream stream) throws
ClassNotFoundException, IOException {
// Deserialize the scalar instance variables (except Manager)
authType = null; // Transient only
- creationTime = ((Long) stream.readObject()).longValue();
- lastAccessedTime = ((Long) stream.readObject()).longValue();
- maxInactiveInterval = ((Integer) stream.readObject()).intValue();
- isNew = ((Boolean) stream.readObject()).booleanValue();
- isValid = ((Boolean) stream.readObject()).booleanValue();
- thisAccessedTime = ((Long) stream.readObject()).longValue();
+ creationTime = ( (Long) stream.readObject()).longValue();
+ lastAccessedTime = ( (Long) stream.readObject()).longValue();
+ maxInactiveInterval = ( (Integer) stream.readObject()).intValue();
+ isNew = ( (Boolean) stream.readObject()).booleanValue();
+ isValid = ( (Boolean) stream.readObject()).booleanValue();
+ thisAccessedTime = ( (Long) stream.readObject()).longValue();
boolean hasPrincipal = stream.readBoolean();
principal = null;
if (hasPrincipal) {
- principal = SerializablePrincipal.readPrincipal(stream,
- getManager().getContainer().getRealm());
+ principal =
SerializablePrincipal.readPrincipal(stream,getManager().getContainer().getRealm());
}
// setId((String) stream.readObject());
id = (String) stream.readObject();
- if (log.isDebugEnabled())
- log.debug(smp.getString("deltaSession.readSession", id));
+ if (log.isDebugEnabled())
log.debug(sm.getString("deltaSession.readSession", id));
// Deserialize the attribute count and attribute values
- if (attributes == null)
- attributes = new Hashtable();
- int n = ((Integer) stream.readObject()).intValue();
+ if (attributes == null) attributes = new Hashtable();
+ int n = ( (Integer) stream.readObject()).intValue();
boolean isValidSave = isValid;
isValid = true;
for (int i = 0; i < n; i++) {
String name = (String) stream.readObject();
Object value = (Object) stream.readObject();
- if ((value instanceof String) && (value.equals(NOT_SERIALIZED)))
+ if ( (value instanceof String) && (value.equals(NOT_SERIALIZED)))
continue;
attributes.put(name, value);
}
isValid = isValidSave;
-
+
if (listeners == null) {
listeners = new ArrayList();
}
-
+
if (notes == null) {
notes = new Hashtable();
}
@@ -1389,10 +1267,10 @@
* HttpSessionBindingListener. If you do not want any such attributes, be
* sure the <code>distributable</code> property of the associated Manager
* is set to <code>true</code>.
- *
+ *
* @param stream
* The output stream to write to
- *
+ *
* @exception IOException
* if an input/output error occurs
*/
@@ -1407,13 +1285,11 @@
stream.writeObject(new Long(thisAccessedTime));
stream.writeBoolean(getPrincipal() != null);
if (getPrincipal() != null) {
- SerializablePrincipal.writePrincipal((GenericPrincipal) principal,
- stream);
+ SerializablePrincipal.writePrincipal((GenericPrincipal)
principal,stream);
}
stream.writeObject(id);
- if (log.isDebugEnabled())
- log.debug(smp.getString("deltaSession.writeSession",id));
+ if (log.isDebugEnabled())
log.debug(sm.getString("deltaSession.writeSession", id));
// Accumulate the names of serializable and non-serializable attributes
String keys[] = keys();
@@ -1434,18 +1310,13 @@
int n = saveNames.size();
stream.writeObject(new Integer(n));
for (int i = 0; i < n; i++) {
- stream.writeObject((String) saveNames.get(i));
+ stream.writeObject( (String) saveNames.get(i));
try {
stream.writeObject(saveValues.get(i));
- // if (log.isDebugEnabled())
- // log.debug(" storing attribute '" +
saveNames.get(i) +
- // "' with value '" + saveValues.get(i)
+ "'");
} catch (NotSerializableException e) {
- log.error(sm.getString("standardSession.notSerializable",
- saveNames.get(i), id), e);
+
log.error(sm.getString("standardSession.notSerializable",saveNames.get(i), id),
e);
stream.writeObject(NOT_SERIALIZED);
- log.error(" storing attribute '" + saveNames.get(i)
- + "' with value NOT_SERIALIZED");
+ log.error(" storing attribute '" + saveNames.get(i)+ "' with
value NOT_SERIALIZED");
}
}
@@ -1458,9 +1329,7 @@
*/
if (!this.isValid || expiring || maxInactiveInterval < 0)
return;
-
isValid();
-
}
// -------------------------------------------------------- Private Methods
@@ -1468,41 +1337,36 @@
/**
* Fire container events if the Context implementation is the
* <code>org.apache.catalina.core.StandardContext</code>.
- *
+ *
* @param context
* Context for which to fire events
* @param type
* Event type
* @param data
* Event data
- *
+ *
* @exception Exception
* occurred during event firing
*/
- private void fireContainerEvent(Context context, String type, Object data)
- throws Exception {
-
- if (!"org.apache.catalina.core.StandardContext".equals(context
- .getClass().getName())) {
+ private void fireContainerEvent(Context context, String type, Object data)
throws Exception {
+ if
(!"org.apache.catalina.core.StandardContext".equals(context.getClass().getName()))
{
return; // Container events are not supported
}
// NOTE: Race condition is harmless, so do not synchronize
if (containerEventMethod == null) {
- containerEventMethod = context.getClass().getMethod(
- "fireContainerEvent", containerEventTypes);
+ containerEventMethod =
context.getClass().getMethod("fireContainerEvent", containerEventTypes);
}
Object containerEventParams[] = new Object[2];
containerEventParams[0] = type;
containerEventParams[1] = data;
containerEventMethod.invoke(context, containerEventParams);
-
}
/**
* Notify all session event listeners that a particular event has occurred
* for this Session. The default implementation performs this notification
* synchronously using the calling thread.
- *
+ *
* @param type
* Event type
* @param data
@@ -1518,9 +1382,8 @@
}
for (int i = 0; i < list.length; i++) {
- ((SessionListener) list[i]).sessionEvent(event);
+ ( (SessionListener) list[i]).sessionEvent(event);
}
-
}
/**
@@ -1529,18 +1392,18 @@
* returned.
*/
protected String[] keys() {
- return ((String[]) attributes.keySet().toArray(EMPTY_ARRAY));
+ return ( (String[]) attributes.keySet().toArray(EMPTY_ARRAY));
}
/**
* Return the value of an attribute without a check for validity.
*/
protected Object getAttributeInternal(String name) {
- return (attributes.get(name));
+ return (attributes.get(name));
}
protected void removeAttributeInternal(String name, boolean notify,
- boolean addDeltaRequest) {
+ boolean addDeltaRequest) {
// Remove this attribute from our collection
Object value = attributes.remove(name);
@@ -1556,14 +1419,13 @@
}
// Call the valueUnbound() method if necessary
- HttpSessionBindingEvent event = null;
- if (value instanceof HttpSessionBindingListener) {
- event = new HttpSessionBindingEvent(
- (HttpSession) getSession(), name, value);
+ HttpSessionBindingEvent event = null;
+ if (value instanceof HttpSessionBindingListener) {
+ event = new HttpSessionBindingEvent((HttpSession) getSession(),
name, value);
try {
- ((HttpSessionBindingListener) value).valueUnbound(event);
+ ( (HttpSessionBindingListener) value).valueUnbound(event);
} catch (Exception x) {
- log.error(smp.getString("deltaSession.valueUnbound.ex"), x);
+ log.error(sm.getString("deltaSession.valueUnbound.ex"), x);
}
}
// Notify interested application event listeners
@@ -1574,35 +1436,27 @@
if (listeners == null)
return;
for (int i = 0; i < listeners.length; i++) {
- if (!(listeners[i] instanceof HttpSessionAttributeListener))
+ if (! (listeners[i] instanceof HttpSessionAttributeListener))
continue;
HttpSessionAttributeListener listener =
(HttpSessionAttributeListener) listeners[i];
try {
- fireContainerEvent(context,
- "beforeSessionAttributeRemoved", listener);
+
fireContainerEvent(context,"beforeSessionAttributeRemoved", listener);
if (event == null) {
- event = new HttpSessionBindingEvent
- (getSession(), name, value);
+ event = new HttpSessionBindingEvent(getSession(),
name, value);
}
listener.attributeRemoved(event);
- fireContainerEvent(context, "afterSessionAttributeRemoved",
- listener);
+ fireContainerEvent(context,
"afterSessionAttributeRemoved",listener);
} catch (Throwable t) {
try {
- fireContainerEvent(context,
- "afterSessionAttributeRemoved", listener);
+
fireContainerEvent(context,"afterSessionAttributeRemoved", listener);
} catch (Exception e) {
;
}
// FIXME - should we do anything besides log these?
- log
- .error(
- sm
-
.getString("standardSession.attributeEvent"),
- t);
+
log.error(sm.getString("standardSession.attributeEvent"),t);
}
} //for
- }//end if
+ } //end if
//end fix
}
@@ -1631,46 +1485,43 @@
* This class is a dummy implementation of the <code>HttpSessionContext</code>
* interface, to conform to the requirement that such an object be returned
when
* <code>HttpSession.getSessionContext()</code> is called.
- *
+ *
* @author Craig R. McClanahan
- *
+ *
* @deprecated As of Java Servlet API 2.1 with no replacement. The interface
* will be removed in a future version of this API.
*/
-final class StandardSessionContext implements HttpSessionContext {
+final class StandardSessionContext
+ implements HttpSessionContext {
private HashMap dummy = new HashMap();
/**
* Return the session identifiers of all sessions defined within this
* context.
- *
+ *
* @deprecated As of Java Servlet API 2.1 with no replacement. This method
* must return an empty <code>Enumeration</code> and will be
* removed in a future version of the API.
*/
public Enumeration getIds() {
-
return (new Enumerator(dummy));
-
}
/**
* Return the <code>HttpSession</code> associated with the specified
* session identifier.
- *
+ *
* @param id
* Session identifier for which to look up a session
- *
+ *
* @deprecated As of Java Servlet API 2.1 with no replacement. This method
* must return null and will be removed in a future version of
* the API.
*/
public HttpSession getSession(String id) {
-
return (null);
-
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]