Use a concurrent hashmap as a base class instead
authorfhanik <fhanik@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 14 Dec 2006 17:19:24 +0000 (17:19 +0000)
committerfhanik <fhanik@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 14 Dec 2006 17:19:24 +0000 (17:19 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@487262 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/ha/context/ReplicatedContext.java
java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java

index ec23373..d1ab8ca 100644 (file)
@@ -27,6 +27,7 @@ import org.apache.catalina.Globals;
 import javax.servlet.ServletContext;
 import java.util.HashMap;
 import org.apache.catalina.tribes.tipis.LazyReplicatedMap;
+import java.util.AbstractMap;
 
 /**
  * @author Filip Hanik
@@ -113,10 +114,10 @@ public class ReplicatedContext extends StandardContext {
              return super.getFacade();
         }
         
-        public HashMap getAttributeMap() {
-            return (HashMap)this.attributes;
+        public AbstractMap getAttributeMap() {
+            return (AbstractMap)this.attributes;
         }
-        public void setAttributeMap(HashMap map) {
+        public void setAttributeMap(AbstractMap map) {
             this.attributes = map;
         }
 
index a17379e..737e132 100644 (file)
@@ -47,13 +47,14 @@ import org.apache.catalina.tribes.util.Arrays;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import java.util.ConcurrentModificationException;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  *
  * @author Filip Hanik
  * @version 1.0
  */
-public abstract class AbstractReplicatedMap extends LinkedHashMap implements RpcCallback, ChannelListener, MembershipListener, Heartbeat {
+public abstract class AbstractReplicatedMap extends ConcurrentHashMap implements RpcCallback, ChannelListener, MembershipListener, Heartbeat {
     protected static Log log = LogFactory.getLog(AbstractReplicatedMap.class);
 
     /**
@@ -159,7 +160,7 @@ public abstract class AbstractReplicatedMap extends LinkedHashMap implements Rpc
                                  float loadFactor,
                                  int channelSendOptions,
                                  ClassLoader[] cls) {
-        super(initialCapacity, loadFactor);
+        super(initialCapacity, loadFactor, 15);
         init(owner, channel, mapContextName, timeout, channelSendOptions, cls);
         
     }
@@ -958,7 +959,7 @@ public abstract class AbstractReplicatedMap extends LinkedHashMap implements Rpc
             //todo, implement a counter variable instead
             //only count active members in this node
             int counter = 0;
-            Iterator it = Collections.unmodifiableSet(super.entrySet()).iterator();
+            Iterator it = super.entrySet().iterator();
             while (it.hasNext() ) {
                 Map.Entry e = (Map.Entry) it.next();
                 if ( e != null ) {