[jboss-remoting-commits] JBoss Remoting SVN: r4042 - remoting3/trunk/util/src/main/java/org/jboss/cx/remoting/util.

jboss-remoting-commits at lists.jboss.org jboss-remoting-commits at lists.jboss.org
Tue Apr 22 21:42:10 EDT 2008


Author: david.lloyd at jboss.com
Date: 2008-04-22 21:42:10 -0400 (Tue, 22 Apr 2008)
New Revision: 4042

Modified:
   remoting3/trunk/util/src/main/java/org/jboss/cx/remoting/util/ConcurrentReferenceHashMap.java
Log:
Merge in Jason's latest updates

Modified: remoting3/trunk/util/src/main/java/org/jboss/cx/remoting/util/ConcurrentReferenceHashMap.java
===================================================================
--- remoting3/trunk/util/src/main/java/org/jboss/cx/remoting/util/ConcurrentReferenceHashMap.java	2008-04-23 00:38:20 UTC (rev 4041)
+++ remoting3/trunk/util/src/main/java/org/jboss/cx/remoting/util/ConcurrentReferenceHashMap.java	2008-04-23 01:42:10 UTC (rev 4042)
@@ -309,38 +309,31 @@
         final int hash;
         volatile Object valueRef;
         final HashEntry<K,V> next;
-        final ReferenceType keyType;
-        final ReferenceType valueType;
 
         HashEntry(K key, int hash,  HashEntry<K,V> next, V value, 
                 ReferenceType keyType, ReferenceType valueType, 
                 ReferenceQueue<K> refQueue) {
-            this.keyType = keyType;
-            this.valueType = valueType;
-            this.keyRef = newKeyReference(key, hash, refQueue);
+            this.keyRef = newKeyReference(key, keyType, hash, refQueue);
             this.hash = hash;
             this.next = next;
-            this.valueRef = newValueReference(value);
+            this.valueRef = newValueReference(value, valueType);
         }
         
-        final Object newKeyReference(K key, int hash, ReferenceQueue<K> refQueue) {
-            switch (keyType) {
-                case WEAK:
-                    return new WeakKeyReference<K>(key, hash, refQueue);
-                case SOFT:
-                    return new SoftKeyReference<K>(key, hash, refQueue);
-            }
+        final Object newKeyReference(K key, ReferenceType keyType, int hash, 
+                ReferenceQueue<K> refQueue) {
+            if (keyType == ReferenceType.WEAK)
+                return new WeakKeyReference<K>(key, hash, refQueue);
+            if (keyType == ReferenceType.SOFT)
+                return new SoftKeyReference<K>(key, hash, refQueue);
             
             return key;
         }
         
-        final Object newValueReference(V value) {
-            switch (valueType) {
-                case WEAK:
-                    return new WeakReference<V>(value);
-                case SOFT:
-                    return new SoftReference<V>(value);
-            }
+        final Object newValueReference(V value, ReferenceType valueType) {
+            if (valueType == ReferenceType.WEAK)
+                return new WeakReference<V>(value);
+            if (valueType == ReferenceType.SOFT)
+                return new SoftReference<V>(value);
             
             return value;
         }
@@ -365,8 +358,8 @@
             return (V) value;
         }
         
-        final void setValue(V value) {
-            this.valueRef = newValueReference(value);
+        final void setValue(V value, ReferenceType valueType) {
+            this.valueRef = newValueReference(value, valueType);
         }
 
         @SuppressWarnings("unchecked")
@@ -588,7 +581,7 @@
                 boolean replaced = false;
                 if (e != null && oldValue.equals(e.value())) {
                     replaced = true;
-                    e.setValue(newValue);
+                    e.setValue(newValue, valueType);
                 }
                 return replaced;
             } finally {
@@ -607,7 +600,7 @@
                 V oldValue = null;
                 if (e != null) {
                     oldValue = e.value();
-                    e.setValue(newValue);
+                    e.setValue(newValue, valueType);
                 }
                 return oldValue;
             } finally {
@@ -638,7 +631,7 @@
                 if (e != null) {
                     oldValue = e.value();
                     if (!onlyIfAbsent)
-                        e.setValue(value);
+                        e.setValue(value, valueType);
                 }
                 else {
                     oldValue = null;




More information about the jboss-remoting-commits mailing list