ggolden 02/05/14 07:50:11 Modified: src/java/org/apache/jetspeed/services/statemanager JetspeedStateManagerService.java SessionState.java StateManagerService.java Log: Changed getAttributeNames to return a String[] rather than an iterator. Made the JetspeedStateManagerService implementation use synchronized maps to be more thread safe. Revision Changes Path 1.3 +36 -29 jakarta-jetspeed/src/java/org/apache/jetspeed/services/statemanager/JetspeedStateManagerService.java Index: JetspeedStateManagerService.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/statemanager/JetspeedStateManagerService.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- JetspeedStateManagerService.java 3 May 2002 17:40:44 -0000 1.2 +++ JetspeedStateManagerService.java 14 May 2002 14:50:11 -0000 1.3 @@ -1,6 +1,6 @@ /********************************************************************************** * -* $Header: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/statemanager/JetspeedStateManagerService.java,v 1.2 2002/05/03 17:40:44 ggolden Exp $ +* $Header: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/statemanager/JetspeedStateManagerService.java,v 1.3 2002/05/14 14:50:11 ggolden Exp $ * * ==================================================================== * The Apache Software License, Version 1.1 @@ -64,6 +64,8 @@ import java.util.HashMap; import java.util.Map; import java.util.Set; +import java.util.Collections; +import java.util.Vector; import javax.servlet.ServletConfig; import org.apache.jetspeed.services.statemanager.StateManagerService; @@ -77,7 +79,7 @@ * <p>SessionState is stored in a HashMap, keyed by state key. In the HashMap, each * SessionState has another HashMap, storing the names and values of the state info. </p> * <p>See the proposal: jakarta-jetspeed/proposals/StateManager.txt for more details.</p> -* @version $Revision: 1.2 $ +* @version $Revision: 1.3 $ * @see org.apache.jetspeed.services.statemanager.StateManagerService * @see org.apache.jetspeed.services.statemanager.SessionState * @author <a href="mailto:[EMAIL PROTECTED]">Glenn R. Golden</a> @@ -89,7 +91,7 @@ { /** Store each set of state parameters by state key (each is a HashMap keyed by parameter name) */ - private HashMap m_states = null; + private Map m_states = null; /** * Performs early initialization. @@ -134,7 +136,9 @@ throws InitializationException { super.init(); - m_states = new HashMap(); + + // create our states map synchronized + m_states = Collections.synchronizedMap(new HashMap()); } // init @@ -161,9 +165,9 @@ */ public Object getAttribute ( String key, String name ) { - Map map = (Map) m_states.get(key); - if (map == null) return null; - return map.get(name); + Map state = (Map) m_states.get(key); + if (state == null) return null; + return state.get(name); } // getAttribute @@ -175,13 +179,15 @@ */ public void setAttribute( String key, String name, Object value ) { - Map map = (Map) m_states.get(key); - if (map == null) + Map state = (Map) m_states.get(key); + if (state == null) { - map = new HashMap(); - m_states.put(key, map); + // create a synchronized map to store the state attributes + state = Collections.synchronizedMap(new HashMap()); + m_states.put(key, state); } - map.put(name, value); + + state.put(name, value); } // setAttribute @@ -192,9 +198,9 @@ */ public void removeAttribute( String key, String name ) { - Map map = (Map) m_states.get(key); - if (map == null) return; - map.remove(name); + Map state = (Map) m_states.get(key); + if (state == null) return; + state.remove(name); } // removeAttribute @@ -204,11 +210,11 @@ */ public void clear( String key ) { - Map map = (Map) m_states.get(key); - if (map != null) + Map state = (Map) m_states.get(key); + if (state != null) { // remove all attributes - map.clear(); + state.clear(); // and forget about it m_states.remove(key); @@ -217,16 +223,17 @@ } // clear /** - * Access an iterator on all names of attributes stored in the keyed state. + * Access an array of all names of attributes stored in the keyed state. * @param key The state key. - * @return An iterator on all names of attributes stored in the keyed state. + * @return An array of all names of attributes stored in the keyed state. */ - public Iterator getAttributeNames( String key ) + public String[] getAttributeNames( String key ) { - Map map = (Map) m_states.get(key); - if (map == null) return null; - Set keys = map.keySet(); - return keys.iterator(); + Map state = (Map) m_states.get(key); + if (state == null) return null; + + // process all the current keys, synchronized + return (String[]) state.keySet().toArray(new String[state.size()]); } // getAttributeNames @@ -328,10 +335,10 @@ } // clear /** - * Access an iterator on all names of attributes stored in the SessionState. - * @return An iterator on all names of attribute stored in the SessionState. + * Access an array of all names of attributes stored in the SessionState. + * @return An array of all names of attribute stored in the SessionState. */ - public Iterator getAttributeNames() + public String[] getAttributeNames() { return m_service.getAttributeNames(m_key); @@ -362,7 +369,7 @@ /********************************************************************************** * -* $Header: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/statemanager/JetspeedStateManagerService.java,v 1.2 2002/05/03 17:40:44 ggolden Exp $ +* $Header: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/statemanager/JetspeedStateManagerService.java,v 1.3 2002/05/14 14:50:11 ggolden Exp $ * **********************************************************************************/ 1.3 +6 -6 jakarta-jetspeed/src/java/org/apache/jetspeed/services/statemanager/SessionState.java Index: SessionState.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/statemanager/SessionState.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- SessionState.java 3 May 2002 17:40:44 -0000 1.2 +++ SessionState.java 14 May 2002 14:50:11 -0000 1.3 @@ -1,6 +1,6 @@ /********************************************************************************** * -* $Header: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/statemanager/SessionState.java,v 1.2 2002/05/03 17:40:44 ggolden Exp $ +* $Header: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/statemanager/SessionState.java,v 1.3 2002/05/14 14:50:11 ggolden Exp $ * * ==================================================================== * The Apache Software License, Version 1.1 @@ -66,7 +66,7 @@ * <p>SessionState is an interface for objects that provide name - value information sets * with a unique key that can be used in the StateManager service</p> * <p>See the proposal: jakarta-jetspeed/proposals/StateManager.txt for more details.</p> -* @version $Revision: 1.2 $ +* @version $Revision: 1.3 $ * @see org.apache.jetspeed.services.statemanager.StateManagerService * @author <a href="mailto:[EMAIL PROTECTED]">Glenn R. Golden</a> */ @@ -98,10 +98,10 @@ public void clear(); /** - * Access an iterator on all names of attributes stored in the SessionState. - * @return An iterator on all names of attribute stored in the SessionState. + * Access an array of all names of attributes stored in the SessionState. + * @return An array of all names of attribute stored in the SessionState. */ - public Iterator getAttributeNames(); + public String[] getAttributeNames(); /** * Access the unique StateManager key for the SessionState. @@ -118,7 +118,7 @@ /********************************************************************************** * -* $Header: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/statemanager/SessionState.java,v 1.2 2002/05/03 17:40:44 ggolden Exp $ +* $Header: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/statemanager/SessionState.java,v 1.3 2002/05/14 14:50:11 ggolden Exp $ * **********************************************************************************/ 1.2 +6 -9 jakarta-jetspeed/src/java/org/apache/jetspeed/services/statemanager/StateManagerService.java Index: StateManagerService.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/statemanager/StateManagerService.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- StateManagerService.java 3 May 2002 15:04:38 -0000 1.1 +++ StateManagerService.java 14 May 2002 14:50:11 -0000 1.2 @@ -1,6 +1,6 @@ /********************************************************************************** * -* $Header: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/statemanager/StateManagerService.java,v 1.1 2002/05/03 15:04:38 ggolden Exp $ +* $Header: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/statemanager/StateManagerService.java,v 1.2 2002/05/14 14:50:11 ggolden Exp $ * * ==================================================================== * The Apache Software License, Version 1.1 @@ -59,15 +59,12 @@ // package package org.apache.jetspeed.services.statemanager; -// imports -import java.util.Iterator; - /** * <p>The StateManagerService is a service that manages SessionState information. * Each SessionState is identified by a unique key in this service. The SessionState * is composed of name - value sets of information, stored under the key by the service.</p> * <p>See the proposal: jakarta-jetspeed/proposals/StateManager.txt for more details.</p> -* @version $Revision: 1.1 $ +* @version $Revision: 1.2 $ * @see org.apache.jetspeed.services.statemanager.SessionState * @author <a href="mailto:[EMAIL PROTECTED]">Glenn R. Golden</a> */ @@ -106,11 +103,11 @@ public void clear( String key ); /** - * Access an iterator on all names of attributes stored in the keyed state. + * Access an array of all names of attributes stored in the keyed state. * @param key The state key. - * @return An iterator on all names of attributes stored in the keyed state. + * @return An array of all names of attributes stored in the keyed state. */ - public Iterator getAttributeNames( String key ); + public String[] getAttributeNames( String key ); /** * Access an SessionState object with the given key. @@ -129,7 +126,7 @@ /********************************************************************************** * -* $Header: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/statemanager/StateManagerService.java,v 1.1 2002/05/03 15:04:38 ggolden Exp $ +* $Header: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/statemanager/StateManagerService.java,v 1.2 2002/05/14 14:50:11 ggolden Exp $ * **********************************************************************************/
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>