You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@river.apache.org by pe...@apache.org on 2011/10/09 04:14:01 UTC

svn commit: r1180519 [2/2] - in /river/jtsk/skunk/peterConcurrentPolicy: src/net/jini/loader/pref/ src/net/jini/security/policy/ src/org/apache/river/api/delegates/ src/org/apache/river/api/security/ src/org/apache/river/impl/security/dos/ src/org/apac...

Modified: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceList.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceList.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceList.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceList.java Sun Oct  9 02:13:59 2011
@@ -18,7 +18,8 @@
 
 package org.apache.river.impl.util;
 
-import java.lang.ref.Reference;
+import java.io.InvalidObjectException;
+import java.io.ObjectInputStream;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
@@ -45,16 +46,22 @@ import java.util.ListIterator;
  * @author Peter Firmstone.
  */
 class ReferenceList<T> extends ReferenceCollection<T> implements List<T> {
-    private final List<Reference<T>> list;
-    ReferenceList(List<Reference<T>> list, Ref type){
+    private static final long serialVersionUID = 1L;
+    private final List<Referrer<T>> list;
+    ReferenceList(List<Referrer<T>> list, Ref type){
         super(list, type);
         this.list = list;
     }
     
-    ReferenceList(List<Reference<T>> list, ReferenceQueuingFactory<T, Reference<T>> rqf){
+    ReferenceList(List<Referrer<T>> list, ReferenceQueuingFactory<T, Referrer<T>> rqf){
         super(list, rqf);
         this.list = list;
     }
+    
+    private void readObject(ObjectInputStream stream) 
+            throws InvalidObjectException{
+        throw new InvalidObjectException("Builder required");
+    }
 
     /**
      * Implemented as per the List interface definition of equals.
@@ -106,14 +113,14 @@ class ReferenceList<T> extends Reference
 
     public T get(int index) {
         processQueue();
-        Reference<T> r = list.get(index);
+        Referrer<T> r = list.get(index);
         if (r != null) return r.get();
         return null;
     }
 
     public T set(int index, T element) {
         processQueue();
-        Reference<T> r = list.set(index, wrapObj(element, true));
+        Referrer<T> r = list.set(index, wrapObj(element, true));
         if (r != null) return r.get();
         return null;
     }
@@ -125,7 +132,7 @@ class ReferenceList<T> extends Reference
 
     public T remove(int index) {
         processQueue();
-        Reference<T> r = list.remove(index);
+        Referrer<T> r = list.remove(index);
         if (r != null) return r.get();
         return null;
     }
@@ -159,9 +166,9 @@ class ReferenceList<T> extends Reference
     }
     
     private  class ReferenceListIterator<T> implements ListIterator<T>{
-        ListIterator<Reference<T>> iterator;
-        ReferenceQueuingFactory<T, Reference<T>> rqf;
-        private ReferenceListIterator(ListIterator<Reference<T>> iterator, ReferenceQueuingFactory<T, Reference<T>> rqf ){
+        ListIterator<Referrer<T>> iterator;
+        ReferenceQueuingFactory<T, Referrer<T>> rqf;
+        private ReferenceListIterator(ListIterator<Referrer<T>> iterator, ReferenceQueuingFactory<T, Referrer<T>> rqf ){
             if ( iterator == null || rqf == null ) throw 
             new NullPointerException("Null iterator or reference queuing factory not allowed");
             this.iterator = iterator;
@@ -173,7 +180,7 @@ class ReferenceList<T> extends Reference
         }
 
         public T next() {
-            Reference<T> t = iterator.next();
+            Referrer<T> t = iterator.next();
             if ( t != null ) return t.get();
             return null;
         }
@@ -183,7 +190,7 @@ class ReferenceList<T> extends Reference
         }
 
         public T previous() {
-            Reference<T> t = iterator.previous();
+            Referrer<T> t = iterator.previous();
             if ( t != null ) return t.get();
             return null;
         }

Modified: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceMap.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceMap.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceMap.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceMap.java Sun Oct  9 02:13:59 2011
@@ -54,23 +54,23 @@ import java.util.Set;
  */
 class ReferenceMap<K, V> extends AbstractMap<K, V> implements Map<K, V> {
 
-    private final Map<Reference<K>, Reference<V>> map;
+    private final Map<Referrer<K>, Referrer<V>> map;
     // ReferenceQueuingFactory's handle ReferenceQueue locking policy.
-    private final ReferenceQueuingFactory<K, Reference<K>> krqf;
-    private final ReferenceQueuingFactory<V, Reference<V>> vrqf;
+    private final ReferenceQueuingFactory<K, Referrer<K>> krqf;
+    private final ReferenceQueuingFactory<V, Referrer<V>> vrqf;
     // Views of values and keys, reduces object creation.
     private final Collection<V> values;
     private final Set<K> keys;
     private final Set<Entry<K,V>> entrys;
     
-    ReferenceMap(Map<Reference<K>,Reference<V>> map, Ref key, Ref val){
+    ReferenceMap(Map<Referrer<K>,Referrer<V>> map, Ref key, Ref val){
         this(map, 
                 new ReferenceProcessor<K>(map.keySet(), key, new ReferenceQueue<K>()),
                 new ReferenceProcessor<V>(map.values(), val, new ReferenceQueue<V>())
                 );
     }
     
-    ReferenceMap(Map<Reference<K>, Reference<V>> map, ReferenceQueuingFactory<K, Reference<K>> krqf, ReferenceQueuingFactory<V, Reference<V>> vrqf){
+    ReferenceMap(Map<Referrer<K>, Referrer<V>> map, ReferenceQueuingFactory<K, Referrer<K>> krqf, ReferenceQueuingFactory<V, Referrer<V>> vrqf){
         this.map = map;
         this.krqf = krqf;
         this.vrqf = vrqf;
@@ -78,17 +78,17 @@ class ReferenceMap<K, V> extends Abstrac
         keys = new ReferenceSet<K>(this.map.keySet(), krqf);
         // We let this escape during construction, but it's package private only
         // and doesn't escape the package.
-        entrys = new EntrySetFacade<Entry<K,V>, Entry<Reference<K>,Reference<V>>>(
+        entrys = new EntrySetFacade<Entry<K,V>, Entry<Referrer<K>,Referrer<V>>>(
                 map.entrySet(), 
                 new EntryFacadeConverter<K,V>(krqf, vrqf)
                 );
     }
      
-    ReferenceQueuingFactory<K, Reference<K>> getKeyRQF(){
+    ReferenceQueuingFactory<K, Referrer<K>> getKeyRQF(){
         return krqf;
      }
      
-    ReferenceQueuingFactory<V, Reference<V>> getValRQF(){
+    ReferenceQueuingFactory<V, Referrer<V>> getValRQF(){
         return vrqf;
     }
     
@@ -134,7 +134,7 @@ class ReferenceMap<K, V> extends Abstrac
     public V get(Object key) {
         processQueue();
         @SuppressWarnings(value = "unchecked")
-        Reference<V> refVal = map.get(wrapKey((K) key, false));
+        Referrer<V> refVal = map.get(wrapKey((K) key, false));
         if (refVal != null) return refVal.get();
         return null;
     }
@@ -176,7 +176,7 @@ class ReferenceMap<K, V> extends Abstrac
      */
     public V put(K key, V value) {
         processQueue();
-        Reference<V> val = map.put(wrapKey(key, false),wrapVal(value, false));
+        Referrer<V> val = map.put(wrapKey(key, false),wrapVal(value, false));
         if (val != null) return val.get();
             return null;
         }
@@ -188,7 +188,7 @@ class ReferenceMap<K, V> extends Abstrac
     public V remove(Object key) {
         processQueue();
         @SuppressWarnings(value = "unchecked")
-        Reference<V> val = map.remove(wrapKey((K) key, false));
+        Referrer<V> val = map.remove(wrapKey((K) key, false));
         if (val != null) return val.get();
         return null;
     }
@@ -206,11 +206,11 @@ class ReferenceMap<K, V> extends Abstrac
         return values;
     }
 
-    Reference<V> wrapVal(V val, boolean enque) {
+    Referrer<V> wrapVal(V val, boolean enque) {
         return vrqf.referenced(val, enque);
     }
 
-    Reference<K> wrapKey(K key, boolean enque) {
+    Referrer<K> wrapKey(K key, boolean enque) {
         return krqf.referenced(key, enque);
     }
     

Modified: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceNavigableMap.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceNavigableMap.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceNavigableMap.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceNavigableMap.java Sun Oct  9 02:13:59 2011
@@ -28,16 +28,16 @@ import java.util.NavigableSet;
  * @author Peter Firmstone.
  */
 class ReferenceNavigableMap<K,V> extends ReferenceSortedMap<K,V> implements NavigableMap<K,V> {
-    private final NavigableMap<Reference<K>, Reference<V>> map;
+    private final NavigableMap<Referrer<K>, Referrer<V>> map;
     
-    ReferenceNavigableMap(NavigableMap<Reference<K>, Reference<V>> map, Ref keyRef, Ref valRef){
+    ReferenceNavigableMap(NavigableMap<Referrer<K>, Referrer<V>> map, Ref keyRef, Ref valRef){
         super(map, keyRef, valRef);
         this.map = map;
     }
     
-    ReferenceNavigableMap(NavigableMap<Reference<K>, Reference<V>> map,
-            ReferenceQueuingFactory<K, Reference<K>> krqf,
-            ReferenceQueuingFactory<V, Reference<V>> vrqf){
+    ReferenceNavigableMap(NavigableMap<Referrer<K>, Referrer<V>> map,
+            ReferenceQueuingFactory<K, Referrer<K>> krqf,
+            ReferenceQueuingFactory<V, Referrer<V>> vrqf){
         super(map, krqf, vrqf);
         this.map = map;
     }
@@ -52,7 +52,7 @@ class ReferenceNavigableMap<K,V> extends
 
     public K lowerKey(K key) {
         processQueue();
-        Reference<K> k = map.lowerKey(wrapKey(key, false));
+        Referrer<K> k = map.lowerKey(wrapKey(key, false));
         if (k != null) return k.get();
         return null;
     }
@@ -67,7 +67,7 @@ class ReferenceNavigableMap<K,V> extends
 
     public K floorKey(K key) {
         processQueue();
-        Reference<K> k = map.floorKey(wrapKey(key, false));
+        Referrer<K> k = map.floorKey(wrapKey(key, false));
         if (k != null) return k.get();
         return null;
     }
@@ -82,7 +82,7 @@ class ReferenceNavigableMap<K,V> extends
 
     public K ceilingKey(K key) {
         processQueue();
-        Reference<K> k = map.ceilingKey(wrapKey(key, false));
+        Referrer<K> k = map.ceilingKey(wrapKey(key, false));
         if (k != null) return k.get();
         return null;
     }
@@ -97,7 +97,7 @@ class ReferenceNavigableMap<K,V> extends
 
     public K higherKey(K key) {
         processQueue();
-        Reference<K> k = map.higherKey(wrapKey(key, false));
+        Referrer<K> k = map.higherKey(wrapKey(key, false));
         if (k != null) return k.get();
         return null;
     }

Modified: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceNavigableSet.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceNavigableSet.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceNavigableSet.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceNavigableSet.java Sun Oct  9 02:13:59 2011
@@ -18,8 +18,8 @@
 
 package org.apache.river.impl.util;
 
-import java.lang.ref.Reference;
-import java.lang.ref.ReferenceQueue;
+import java.io.InvalidObjectException;
+import java.io.ObjectInputStream;
 import java.util.Iterator;
 import java.util.NavigableSet;
 
@@ -30,56 +30,62 @@ import java.util.NavigableSet;
  */
 public class ReferenceNavigableSet<T> 
     extends ReferenceSortedSet<T> implements NavigableSet<T> {
-    private final NavigableSet<Reference<T>> set;
+    private static final long serialVersionUID = 1L;
+    private final NavigableSet<Referrer<T>> set;
     
-    public ReferenceNavigableSet(NavigableSet<Reference<T>> set, Ref type){
+    public ReferenceNavigableSet(NavigableSet<Referrer<T>> set, Ref type){
         super(set, type);
         this.set = set;
     }
     
-    ReferenceNavigableSet(NavigableSet<Reference<T>> set, ReferenceQueuingFactory<T, Reference<T>> rqf){
+    ReferenceNavigableSet(NavigableSet<Referrer<T>> set, ReferenceQueuingFactory<T, Referrer<T>> rqf){
         super(set, rqf);
         this.set = set;
     }
+    
+    private void readObject(ObjectInputStream stream) 
+            throws InvalidObjectException{
+        throw new InvalidObjectException("Builder required");
+    }
 
     public T lower(T e) {
         processQueue();
-        Reference<T> t = set.lower(wrapObj(e, false));
+        Referrer<T> t = set.lower(wrapObj(e, false));
         if ( t != null ) return t.get();
         return null;
     }
 
     public T floor(T e) {
         processQueue();
-        Reference<T> t = set.floor(wrapObj(e, false));
+        Referrer<T> t = set.floor(wrapObj(e, false));
         if ( t != null ) return t.get();
         return null;
     }
 
     public T ceiling(T e) {
         processQueue();
-        Reference<T> t = set.ceiling(wrapObj(e, false));
+        Referrer<T> t = set.ceiling(wrapObj(e, false));
         if ( t != null ) return t.get();
         return null;
     }
 
     public T higher(T e) {
         processQueue();
-        Reference<T> t = set.higher(wrapObj(e, false));
+        Referrer<T> t = set.higher(wrapObj(e, false));
         if ( t != null ) return t.get();
         return null;
     }
 
     public T pollFirst() {
         processQueue();
-        Reference<T> t = set.pollFirst();
+        Referrer<T> t = set.pollFirst();
         if ( t != null ) return t.get();
         return null;
     }
 
     public T pollLast() {
         processQueue();
-        Reference<T> t = set.pollLast();
+        Referrer<T> t = set.pollLast();
         if ( t != null ) return t.get();
         return null;
     }

Modified: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceProcessor.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceProcessor.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceProcessor.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceProcessor.java Sun Oct  9 02:13:59 2011
@@ -30,14 +30,14 @@ import java.util.concurrent.locks.Reentr
  * @param <T> 
  * @author peter
  */
-class ReferenceProcessor<T> implements ReferenceQueuingFactory<T, Reference<T>> {
+class ReferenceProcessor<T> implements ReferenceQueuingFactory<T, Referrer<T>> {
     
-    private final Collection<Reference<T>> col;
+    private final Collection<Referrer<T>> col;
     private final ReferenceQueue<T> queue;
     private final Ref type;
     private final Lock queueLock;
     
-    ReferenceProcessor(Collection<Reference<T>> col, Ref type, ReferenceQueue<T> queue){
+    ReferenceProcessor(Collection<Referrer<T>> col, Ref type, ReferenceQueue<T> queue){
         if (col == null || type == null ) throw new NullPointerException("collection or reference type cannot be null");
         this.col = col;
         this.type = type;
@@ -46,12 +46,12 @@ class ReferenceProcessor<T> implements R
     }
 
     @Override
-    public T pseudoReferent(Reference<T> u) {
+    public T pseudoReferent(Referrer<T> u) {
         throw new UnsupportedOperationException("Not supported.");
     }
 
     @Override
-    public Reference<T> referenced(T w, boolean enque) {
+    public Referrer<T> referenced(T w, boolean enque) {
         if (w == null) return null;
         return ReferenceFactory.create(w, enque == true ? queue : null, type);
     }

Added: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSerializationFactory.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSerializationFactory.java?rev=1180519&view=auto
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSerializationFactory.java (added)
+++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSerializationFactory.java Sun Oct  9 02:13:59 2011
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.river.impl.util;
+
+/**
+ *
+ * @author peter
+ */
+abstract class ReferenceSerializationFactory<T> implements Referrer<T> {
+    
+    static <T> ReferenceSerializationFactory<T> create(T t) {
+        return new ReferenceSerializedForm<T>(t);
+    }
+    
+}

Propchange: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSerializationFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSerializedForm.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSerializedForm.java?rev=1180519&view=auto
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSerializedForm.java (added)
+++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSerializedForm.java Sun Oct  9 02:13:59 2011
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.river.impl.util;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+
+/**
+ *
+ * @author peter
+ */
+class ReferenceSerializedForm<T> extends ReferenceSerializationFactory<T> implements Serializable{
+    private static final long serialVersionUID = 1L;
+    
+    private T obj;
+    private transient int hash;
+    
+    ReferenceSerializedForm(){
+        obj = null;
+        hash = 0;
+    }
+    
+    ReferenceSerializedForm(T t){
+        obj = t;
+        int hash = 7;
+        hash = 29 * hash + System.identityHashCode(t);
+        hash = 29 * hash + (t!= null ? t.getClass().hashCode() :0);
+        this.hash = hash;
+    }
+
+    public T get() {
+        T t = obj;
+        obj = null;
+        return t;
+    }
+
+    public void clear() {
+        obj = null;
+    }
+
+    public boolean isEnqueued() {
+        return false;
+    }
+
+    public boolean enqueue() {
+        return false;
+    }
+    
+    /* ReferenceQueue is not compared, because a lookup key is used to locate
+     * an existing key and ReferenceQueue is null in lookup key's.
+     *
+     * ReferenceQueue is not part of hashCode or equals.
+     */
+    @Override
+    public boolean equals(Object o) {
+        if (this == o)  return true; // Same reference.
+        if (!(o instanceof Referrer))  return false;
+        Object k1 = get();
+        Object k2 = ((Referrer) o).get();
+        if ( k1 != null && k1.equals(k2)) return true;
+        return ( k1 == null && k2 == null && hashCode() == o.hashCode()); // Both objects were collected.
+    }
+
+    @Override
+    public int hashCode() {
+        return hash;
+    }
+    
+    private void readObject(ObjectInputStream in)
+        throws IOException, ClassNotFoundException {
+        in.defaultReadObject();
+        int hash = 7;
+        hash = 29 * hash + System.identityHashCode(obj);
+        hash = 29 * hash + (obj != null ? obj.getClass().hashCode() :0);
+        this.hash = hash;
+    }
+    
+    private void writeObject(ObjectOutputStream out) throws IOException {
+        out.defaultWriteObject();
+    }
+
+    
+}

Propchange: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSerializedForm.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSet.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSet.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSet.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSet.java Sun Oct  9 02:13:59 2011
@@ -18,7 +18,8 @@
 
 package org.apache.river.impl.util;
 
-import java.lang.ref.Reference;
+import java.io.InvalidObjectException;
+import java.io.ObjectInputStream;
 import java.util.Iterator;
 import java.util.Set;
 
@@ -30,15 +31,21 @@ import java.util.Set;
  * @author Peter Firmstone.
  */
 class ReferenceSet<T> extends ReferenceCollection<T> implements Set<T>{
+    private static final long serialVersionUID = 1L;
     
-    ReferenceSet(Set<Reference<T>> col, Ref type){
+    ReferenceSet(Set<Referrer<T>> col, Ref type){
         super(col, type);
     }
     
-    ReferenceSet(Set<Reference<T>> col, ReferenceQueuingFactory<T, Reference<T>> rqf){
+    ReferenceSet(Set<Referrer<T>> col, ReferenceQueuingFactory<T, Referrer<T>> rqf){
         super(col, rqf);
     }
     
+    private void readObject(ObjectInputStream stream) 
+            throws InvalidObjectException{
+        throw new InvalidObjectException("Builder required");
+    }
+    
     public boolean equals(Object o) {
 	if (o == this) return true;
 	if (!(o instanceof Set)) return false;

Modified: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSortedMap.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSortedMap.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSortedMap.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSortedMap.java Sun Oct  9 02:13:59 2011
@@ -29,16 +29,16 @@ import java.util.SortedMap;
  * @author peter
  */
 class ReferenceSortedMap<K,V> extends ReferenceMap<K,V> implements SortedMap<K,V>{
-    private SortedMap<Reference<K>, Reference<V>> map;
+    private SortedMap<Referrer<K>, Referrer<V>> map;
     
-    ReferenceSortedMap(SortedMap<Reference<K>, Reference<V>> map, Ref keyRef, Ref valRef){
+    ReferenceSortedMap(SortedMap<Referrer<K>, Referrer<V>> map, Ref keyRef, Ref valRef){
         super(map, keyRef, valRef);
         this.map = map;
     }
     
-    ReferenceSortedMap(SortedMap<Reference<K>, Reference<V>> map, 
-            ReferenceQueuingFactory<K, Reference<K>> krqf,
-            ReferenceQueuingFactory<V, Reference<V>> vrqf){
+    ReferenceSortedMap(SortedMap<Referrer<K>, Referrer<V>> map, 
+            ReferenceQueuingFactory<K, Referrer<K>> krqf,
+            ReferenceQueuingFactory<V, Referrer<V>> vrqf){
         super(map, krqf, vrqf);
         this.map = map;
     }
@@ -46,7 +46,7 @@ class ReferenceSortedMap<K,V> extends Re
     @SuppressWarnings("unchecked")
     public Comparator<? super K> comparator() {
         processQueue();
-        Comparator<? super Reference<K>> c = map.comparator();
+        Comparator<? super Referrer<K>> c = map.comparator();
         if ( c instanceof ReferenceComparator){
             return ((ReferenceComparator) c).get();
         }
@@ -85,7 +85,7 @@ class ReferenceSortedMap<K,V> extends Re
 
     public K firstKey() {
         processQueue();
-        Reference<K> k = map.firstKey();
+        Referrer<K> k = map.firstKey();
         if (k != null) return k.get();
         return null;
     }
@@ -93,7 +93,7 @@ class ReferenceSortedMap<K,V> extends Re
 
     public K lastKey() {
         processQueue();
-        Reference<K> k = map.lastKey();
+        Referrer<K> k = map.lastKey();
         if (k != null) return k.get();
         return null;
     }

Modified: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSortedSet.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSortedSet.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSortedSet.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferenceSortedSet.java Sun Oct  9 02:13:59 2011
@@ -18,8 +18,8 @@
 
 package org.apache.river.impl.util;
 
-import java.lang.ref.Reference;
-import java.lang.ref.ReferenceQueue;
+import java.io.InvalidObjectException;
+import java.io.ObjectInputStream;
 import java.util.Comparator;
 import java.util.SortedSet;
 
@@ -34,22 +34,27 @@ import java.util.SortedSet;
  * @author Peter Firmstone.
  */
 class ReferenceSortedSet<T> extends ReferenceSet<T> implements SortedSet<T> {
-    private final SortedSet<Reference<T>> set;
+    private final SortedSet<Referrer<T>> set;
 
-    ReferenceSortedSet( SortedSet<Reference<T>> set, Ref type){
+    ReferenceSortedSet( SortedSet<Referrer<T>> set, Ref type){
         super(set, type);
         this.set = set;
     }
     
-    ReferenceSortedSet(SortedSet<Reference<T>> set, ReferenceQueuingFactory<T, Reference<T>> rqf){
+    ReferenceSortedSet(SortedSet<Referrer<T>> set, ReferenceQueuingFactory<T, Referrer<T>> rqf){
         super(set, rqf);
         this.set = set;
     }
+    
+    private void readObject(ObjectInputStream stream) 
+            throws InvalidObjectException{
+        throw new InvalidObjectException("Builder required");
+    }
 
     @SuppressWarnings("unchecked")
     public Comparator<? super T> comparator() {
         processQueue();
-        Comparator<? super Reference<T>> c = set.comparator();
+        Comparator<? super Referrer<T>> c = set.comparator();
         if ( c instanceof ReferenceComparator){
             return ((ReferenceComparator) c).get();
         }
@@ -58,33 +63,33 @@ class ReferenceSortedSet<T> extends Refe
 
     public SortedSet<T> subSet(T fromElement, T toElement) {
         processQueue();
-        Reference<T> from = wrapObj(fromElement, false);
-        Reference<T> to = wrapObj(toElement, false);
+        Referrer<T> from = wrapObj(fromElement, false);
+        Referrer<T> to = wrapObj(toElement, false);
         return new ReferenceSortedSet<T>( set.subSet(from, to), getRQF());
     }
 
     public SortedSet<T> headSet(T toElement) {
         processQueue();
-        Reference<T> to = wrapObj(toElement, false);
+        Referrer<T> to = wrapObj(toElement, false);
         return new ReferenceSortedSet<T>(set.headSet(to), getRQF());
     }
 
     public SortedSet<T> tailSet(T fromElement) {
         processQueue();
-        Reference<T> from = wrapObj(fromElement, false);
+        Referrer<T> from = wrapObj(fromElement, false);
         return new ReferenceSortedSet<T>(set.tailSet(from), getRQF());
     }
 
     public T first() {
         processQueue();
-        Reference<T> t = set.first();
+        Referrer<T> t = set.first();
         if ( t != null ) return t.get();
         return null;
     }
 
     public T last() {
         processQueue();
-        Reference<T> t = set.last();
+        Referrer<T> t = set.last();
         if ( t != null ) return t.get();
         return null;
     }

Modified: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferencedQueue.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferencedQueue.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferencedQueue.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/ReferencedQueue.java Sun Oct  9 02:13:59 2011
@@ -18,7 +18,8 @@
 
 package org.apache.river.impl.util;
 
-import java.lang.ref.Reference;
+import java.io.InvalidObjectException;
+import java.io.ObjectInputStream;
 import java.util.Queue;
 
 /**
@@ -27,42 +28,49 @@ import java.util.Queue;
  * @author Peter Firmstone.
  */
 public class ReferencedQueue<T> extends ReferenceCollection<T> implements Queue<T> {
-    private final Queue<Reference<T>> queue;
+    private static final long serialVersionUID = 1L;
+    private final Queue<Referrer<T>> queue;
     
-    public ReferencedQueue( Queue<Reference<T>> queue, Ref type){
+    public ReferencedQueue( Queue<Referrer<T>> queue, Ref type){
         super(queue, type);
         this.queue = queue;
     }
+    
+    private void readObject(ObjectInputStream stream) 
+            throws InvalidObjectException{
+        throw new InvalidObjectException("Builder required");
+    }
+    
     public boolean offer(T e) {
         processQueue();
-        Reference<T> r = wrapObj(e, true);
+        Referrer<T> r = wrapObj(e, true);
         return queue.offer(r);
     }
 
     public T remove() {
         processQueue();
-        Reference<T> t = queue.remove();
+        Referrer<T> t = queue.remove();
         if ( t != null ) return t.get();
         return null;
     }
 
     public T poll() {
         processQueue();
-        Reference<T> t = queue.poll();
+        Referrer<T> t = queue.poll();
         if ( t != null ) return t.get();
         return null;
     }
 
     public T element() {
         processQueue();
-        Reference<T> t = queue.element();
+        Referrer<T> t = queue.element();
         if ( t != null ) return t.get();
         return null;
     }
 
     public T peek() {
         processQueue();
-        Reference<T> t = queue.peek();
+        Referrer<T> t = queue.peek();
         if ( t != null ) return t.get();
         return null;
     }

Added: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/Referrer.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/Referrer.java?rev=1180519&view=auto
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/Referrer.java (added)
+++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/Referrer.java Sun Oct  9 02:13:59 2011
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.river.impl.util;
+
+import java.lang.ref.Reference;
+
+/**
+ * An interface for Reference wrappers, for use in collections.
+ * @param <T> 
+ * @author Peter Firmstone
+ */
+public interface Referrer<T> {
+    
+    /**
+     * @see Reference#get()
+     */
+    public T get() ;
+    /**
+     * @see Reference#clear()
+     */
+    public void clear();
+    /**
+     * @see Reference#isEnqueued() 
+     * @return true if enqueued.
+     */
+    public boolean isEnqueued();
+    /**
+     * @see Reference#enqueue() 
+     * @return 
+     */
+    public boolean enqueue();
+    
+    /**
+     * Equals is calculated on IDENTITY or equality.
+     * 
+     * IDENTITY calculation:
+     * 
+     * if (this == o) return true;
+     * if (!(o instanceof Referrer)) return false;
+     * Object k1 = get();
+     * Object k2 = ((Referrer) o).get();
+     * if ( k1 != null && k1 == k2 ) return true;
+     * return ( k1 == null && k2 == null && hashCode() == o.hashCode());
+     * 
+     * Equality calculation:
+     * 
+     * if (this == o)  return true; // Same reference.
+     * if (!(o instanceof Referrer))  return false;
+     * Object k1 = get();
+     * Object k2 = ((Referrer) o).get();
+     * if ( k1 != null && k1.equals(k2)) return true;
+     * return ( k1 == null && k2 == null && hashCode() == o.hashCode());
+     *
+     * @see Ref
+     * @param o
+     * @return 
+     */
+    public boolean equals(Object o);
+    
+    /**
+     * Standard hashCode calculation for IDENTITY based references, where k
+     * is the referent.
+     * 
+     * int hash = 7;
+     * hash = 29 * hash + System.identityHashCode(k);
+     * hash = 29 * hash + k.getClass().hashCode();
+     * 
+     * For non IDENTITY references, the hashCode returned is the referent's 
+     * hashCode, after the reference has been cleared, it reverts to the
+     * IDENTITY based value.  The IDENTITY hashCode should be calculated
+     * at construction time.
+     * 
+     * @return 
+     */
+    public int hashCode();
+}

Propchange: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/Referrer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/SerialDataReferenceCollection.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/SerialDataReferenceCollection.java?rev=1180519&view=auto
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/SerialDataReferenceCollection.java (added)
+++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/SerialDataReferenceCollection.java Sun Oct  9 02:13:59 2011
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.river.impl.util;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.Collection;
+
+/**
+ *
+ * @author peter
+ */
+public class SerialDataReferenceCollection<T> extends AbstractSerializationOfRC<T> {
+    private static final long serialVersionUID = 1L;
+
+   /** @serialData */
+   private Ref type = null;
+   /** @serialData */
+   private Collection<Referrer<T>> collection;
+   /** @serialData */
+   private Class clazz;
+   
+    @SuppressWarnings("unchecked")
+   SerialDataReferenceCollection( Class clazz,
+            Collection<Referrer<T>> underlyingCollection, Ref type) 
+           throws InstantiationException, IllegalAccessException{
+       // Create a new instance of the underlying collection and
+       // add all objects.
+       this.collection = underlyingCollection;
+       this.type = type;
+       this.clazz = clazz;
+   }
+    
+    @Override
+    public Ref getType() {
+        return type;
+    }
+
+    @Override
+    public Collection<Referrer<T>> getCollection() {
+        return collection;
+    }
+
+    @Override
+    public Class getClazz() {
+        return clazz;
+    }
+    
+    @Override
+    Collection<T> build() throws InstantiationException, IllegalAccessException{
+        Collection<T> result = super.build();
+        // What if the underlying collection is immutable?
+        return result;
+    }
+
+     private void readObject(ObjectInputStream in)
+        throws IOException, ClassNotFoundException {
+        in.defaultReadObject();
+    }
+    
+    private void writeObject(ObjectOutputStream out) throws IOException {
+        out.defaultWriteObject();
+    }
+    
+}

Propchange: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/SerialDataReferenceCollection.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/SerializationOfReferenceCollection.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/SerializationOfReferenceCollection.java?rev=1180519&view=auto
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/SerializationOfReferenceCollection.java (added)
+++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/SerializationOfReferenceCollection.java Sun Oct  9 02:13:59 2011
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.river.impl.util;
+
+import java.util.AbstractCollection;
+import java.util.Collection;
+
+/**
+ *
+ * @author peter
+ */
+abstract class SerializationOfReferenceCollection<T> extends AbstractCollection<T> {
+    
+    static <T> SerializationOfReferenceCollection<T> create(
+            Class clazz,
+            Collection<Referrer<T>> refCol,
+            Ref type) throws InstantiationException, IllegalAccessException{
+        return new SerialDataReferenceCollection<T>(clazz, refCol, type);
+    }
+    
+    abstract Collection<T> build() throws InstantiationException, IllegalAccessException;
+    
+}

Propchange: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/SerializationOfReferenceCollection.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/SoftIdentityReferenceKey.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/SoftIdentityReferenceKey.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/SoftIdentityReferenceKey.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/SoftIdentityReferenceKey.java Sun Oct  9 02:13:59 2011
@@ -18,6 +18,8 @@
 
 package org.apache.river.impl.util;
 
+import java.io.InvalidObjectException;
+import java.io.ObjectInputStream;
 import java.lang.ref.ReferenceQueue;
 import java.lang.ref.SoftReference;
 
@@ -27,7 +29,7 @@ import java.lang.ref.SoftReference;
  * @see Ref#SOFT_IDENTITY
  * @author Peter Firmstone.
  */
-class SoftIdentityReferenceKey<T> extends SoftReference<T> {
+class SoftIdentityReferenceKey<T> extends SoftReference<T> implements Referrer<T>{
     private final int hash;
 
     SoftIdentityReferenceKey(T k, ReferenceQueue<? super T> q) {
@@ -40,16 +42,12 @@ class SoftIdentityReferenceKey<T> extend
 
     @Override
     public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (!(o instanceof SoftIdentityReferenceKey)) {
-            return false;
-        }
+        if (this == o) return true;
+        if (!(o instanceof Referrer)) return false;
         Object k1 = get();
-        Object k2 = ((SoftIdentityReferenceKey) o).get();
+        Object k2 = ((Referrer) o).get();
         if ( k1 != null && k1 == k2 ) return true;
-        return ( k1 == null && k2 == null && hash == o.hashCode());
+        return ( k1 == null && k2 == null && hashCode() == o.hashCode());
     }
 
     @Override
@@ -63,4 +61,15 @@ class SoftIdentityReferenceKey<T> extend
         if (s != null) return s.toString();
         return super.toString();
     }
+    
+    private Object writeReplace() {
+        // returns a Builder instead of this class.
+        return ReferenceSerializationFactory.create(get());
+    }
+    
+    private void readObject(ObjectInputStream stream) 
+            throws InvalidObjectException{
+        throw new InvalidObjectException("Factory required");
+    }
+
 }

Modified: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/SoftReferenceKey.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/SoftReferenceKey.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/SoftReferenceKey.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/SoftReferenceKey.java Sun Oct  9 02:13:59 2011
@@ -27,25 +27,25 @@ import java.lang.ref.SoftReference;
  * @see Ref#SOFT
  * @author Peter Firmstone.
  */
-class SoftReferenceKey<T> extends SoftReference<T> implements Comparable<SoftReferenceKey<T>>{
+class SoftReferenceKey<T> extends SoftReference<T> implements Referrer<T>, Comparable<Referrer<T>>{
     private final int hash; // Once the object is garbage collected, use it's identity.
 
     SoftReferenceKey(T k, ReferenceQueue<? super T> q) {
         super(k,q);
-        int hash = 3;
-        hash = 67 * hash + System.identityHashCode(k);
-        hash = 67 * hash + k.getClass().hashCode();
+        int hash = 7;
+        hash = 29 * hash + System.identityHashCode(k);
+        hash = 29 * hash + k.getClass().hashCode();
         this.hash = hash;
     }
 
     @Override
     public boolean equals(Object o) {
         if (this == o)  return true; // Same reference.
-        if (!(o instanceof SoftReferenceKey))  return false;
+        if (!(o instanceof Referrer))  return false;
         Object k1 = get();
-        Object k2 = ((SoftReferenceKey) o).get();
+        Object k2 = ((Referrer) o).get();
         if ( k1 != null && k1.equals(k2)) return true;
-        return ( k1 == null && k2 == null && hash == o.hashCode());
+        return ( k1 == null && k2 == null && hashCode() == o.hashCode());
     }
 
     @Override
@@ -64,7 +64,7 @@ class SoftReferenceKey<T> extends SoftRe
     }
 
     @SuppressWarnings("unchecked")
-    public int compareTo(SoftReferenceKey<T> o) {
+    public int compareTo(Referrer<T> o) {
         T t = get();
         T r = o.get();
         if ( t != null && r != null) {

Modified: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/StrongReferenceKey.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/StrongReferenceKey.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/StrongReferenceKey.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/StrongReferenceKey.java Sun Oct  9 02:13:59 2011
@@ -27,8 +27,9 @@ import java.lang.ref.WeakReference;
  * @see Ref#STRONG
  * @author Peter Firmstone
  */
-class StrongReferenceKey<T> extends WeakReference<T> implements Comparable<StrongReferenceKey<T>>{
+class StrongReferenceKey<T> extends WeakReference<T> implements Referrer<T>, Comparable<StrongReferenceKey<T>>{
     private T referent;
+    private final int hash;
     
     /**
      * Creates a new strong reference that refers to the given object.  The new
@@ -37,8 +38,12 @@ class StrongReferenceKey<T> extends Weak
      * @param referent object the new weak reference will refer to
      */
     StrongReferenceKey(T referent){
-        super(null);
+        super(referent);
         this.referent = referent ;
+        int hash = 7;
+        hash = 29 * hash + System.identityHashCode(referent);
+        hash = 29 * hash + referent.getClass().hashCode();
+        this.hash = hash;
     }
 
     /**
@@ -54,17 +59,17 @@ class StrongReferenceKey<T> extends Weak
 
     @Override
     public int hashCode() {
-        int hash = 7;
-        hash = 59 * hash + (this.referent != null ? this.referent.hashCode() : 0);
+        if ( referent != null ) return referent.hashCode();
         return hash;
     }
     
     public boolean equals(Object o){
-        if ( !(o instanceof StrongReferenceKey)) return false;
-        StrongReferenceKey that = (StrongReferenceKey) o;
-        if (this.referent != that.referent) return false;
-        if (this.referent != null && this.referent.equals(that.referent)) return true;
-        return false;
+        if (this == o)  return true; // Same reference.
+        if (!(o instanceof Referrer))  return false;
+        Object k1 = get();
+        Object k2 = ((Referrer) o).get();
+        if ( k1 != null && k1.equals(k2)) return true;
+        return ( k1 == null && k2 == null && hashCode() == o.hashCode());
     }
     
     @Override
@@ -89,22 +94,8 @@ class StrongReferenceKey<T> extends Weak
     }
 
     @Override
-    public T get() {
-	return this.referent;
-    }
-
-    @Override
     public void clear() {
 	this.referent = null;
-    }
-
-    @Override
-    public boolean isEnqueued() {
-	return false;
-    }
-
-    @Override
-    public boolean enqueue() {
-	return false;
+        super.clear();
     }
 }

Modified: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/WeakIdentityReferenceKey.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/WeakIdentityReferenceKey.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/WeakIdentityReferenceKey.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/WeakIdentityReferenceKey.java Sun Oct  9 02:13:59 2011
@@ -27,14 +27,14 @@ import java.lang.ref.WeakReference;
  * @see Ref#WEAK_IDENTITY
  * @author Peter Firmstone.
  */
-class WeakIdentityReferenceKey<T> extends WeakReference<T> {
+class WeakIdentityReferenceKey<T> extends WeakReference<T> implements Referrer<T> {
     private final int hash;
 
     WeakIdentityReferenceKey(T k, ReferenceQueue<? super T> q) {
         super(k,q);
-        int hash = 5;
-        hash = 13 * hash + System.identityHashCode(k);
-        hash = 13 * hash + k.getClass().hashCode();
+        int hash = 7;
+        hash = 29 * hash + System.identityHashCode(k);
+        hash = 29 * hash + k.getClass().hashCode();
         this.hash = hash;
     }
 

Modified: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/WeakReferenceKey.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/WeakReferenceKey.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/WeakReferenceKey.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/util/WeakReferenceKey.java Sun Oct  9 02:13:59 2011
@@ -27,14 +27,14 @@ import java.lang.ref.WeakReference;
  * @see Ref#WEAK
  * @author Peter Firmstone
  */
-class WeakReferenceKey<T> extends WeakReference<T> implements Comparable<WeakReferenceKey<T>> {
+class WeakReferenceKey<T> extends WeakReference<T> implements Referrer<T>, Comparable<WeakReferenceKey<T>> {
     private final int hash; // Only used after referent has been garbage collected.
 
     WeakReferenceKey(T k, ReferenceQueue<? super T> q) {
         super(k,q);
         int hash = 7;
-        hash = 43 * hash + System.identityHashCode(k);
-        hash = 43 * hash + k.getClass().hashCode();
+        hash = 29 * hash + System.identityHashCode(k);
+        hash = 29 * hash + k.getClass().hashCode();
         this.hash = hash;
     }
 
@@ -46,11 +46,11 @@ class WeakReferenceKey<T> extends WeakRe
     @Override
     public boolean equals(Object o) {
         if (this == o)  return true; // Same reference.
-        if (!(o instanceof WeakReferenceKey))  return false;
+        if (!(o instanceof Referrer))  return false;
         Object k1 = get();
-        Object k2 = ((WeakReferenceKey) o).get();
+        Object k2 = ((Referrer) o).get();
         if ( k1 != null && k1.equals(k2)) return true;
-        return ( k1 == null && k2 == null && hash == o.hashCode()); // Both objects were collected.
+        return ( k1 == null && k2 == null && hashCode() == o.hashCode()); // Both objects were collected.
     }
 
     @Override

Modified: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ConcurrentReferenceMapTest.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ConcurrentReferenceMapTest.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ConcurrentReferenceMapTest.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ConcurrentReferenceMapTest.java Sun Oct  9 02:13:59 2011
@@ -50,8 +50,8 @@ public class ConcurrentReferenceMapTest 
     
     @Before
     public void setUp() {
-        ConcurrentMap<Reference<Integer>, Reference<String>> internal 
-                = new ConcurrentHashMap<Reference<Integer>, Reference<String>>(5);
+        ConcurrentMap<Referrer<Integer>, Referrer<String>> internal 
+                = new ConcurrentHashMap<Referrer<Integer>, Referrer<String>>(5);
         instance = RC.concurrentMap(internal, Ref.WEAK, Ref.STRONG);
         i1 = 1;
         i2 = 2;

Modified: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceBlockingQueueTest.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceBlockingQueueTest.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceBlockingQueueTest.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceBlockingQueueTest.java Sun Oct  9 02:13:59 2011
@@ -53,7 +53,7 @@ public class ReferenceBlockingQueueTest 
     
     @Before
     public void setUp() {
-        instance = RC.blockingQueue(new ArrayBlockingQueue<Reference<String>>(30), Ref.SOFT);
+        instance = RC.blockingQueue(new ArrayBlockingQueue<Referrer<String>>(30), Ref.SOFT);
     }
     
     @After

Modified: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceCollectionTest.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceCollectionTest.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceCollectionTest.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceCollectionTest.java Sun Oct  9 02:13:59 2011
@@ -57,7 +57,7 @@ public class ReferenceCollectionTest {
     
     @Before
     public void setUp() {
-        instance = new ReferenceCollection<String>(new ArrayList<Reference<String>>(), Ref.WEAK_IDENTITY);
+        instance = new ReferenceCollection<String>(new ArrayList<Referrer<String>>(), Ref.WEAK_IDENTITY);
         instance.add(truck);
         instance.add(shovel);
         instance.add(grader);

Modified: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceConcurrentNavigableMapTest.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceConcurrentNavigableMapTest.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceConcurrentNavigableMapTest.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceConcurrentNavigableMapTest.java Sun Oct  9 02:13:59 2011
@@ -65,9 +65,9 @@ public class ReferenceConcurrentNavigabl
             }
             
         };
-        Comparator<Reference<Integer>> ci = RC.comparator(comparator);
-         ConcurrentNavigableMap<Reference<Integer>, Reference<String>> internal 
-                = new ConcurrentSkipListMap<Reference<Integer>, Reference<String>>(ci);
+        Comparator<Referrer<Integer>> ci = RC.comparator(comparator);
+         ConcurrentNavigableMap<Referrer<Integer>, Referrer<String>> internal 
+                = new ConcurrentSkipListMap<Referrer<Integer>, Referrer<String>>(ci);
         instance = RC.concurrentNavigableMap(internal, Ref.WEAK, Ref.STRONG);
         i1 = 1;
         i2 = 2;

Modified: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceDequeTest.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceDequeTest.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceDequeTest.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceDequeTest.java Sun Oct  9 02:13:59 2011
@@ -48,7 +48,7 @@ public class ReferenceDequeTest {
     
     @Before
     public void setUp() {
-        instance = RC.deque(new LinkedList<Reference<String>>(), Ref.WEAK);
+        instance = RC.deque(new LinkedList<Referrer<String>>(), Ref.WEAK);
     }
     
     @After

Modified: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceListTest.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceListTest.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceListTest.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceListTest.java Sun Oct  9 02:13:59 2011
@@ -57,7 +57,7 @@ public class ReferenceListTest {
     
     @Before
     public void setUp() {
-        instance = new ReferenceList<String>(new ArrayList<Reference<String>>(), Ref.WEAK_IDENTITY);
+        instance = new ReferenceList<String>(new ArrayList<Referrer<String>>(), Ref.WEAK_IDENTITY);
         instance.add(truck);
         instance.add(shovel);
         instance.add(grader);
@@ -76,7 +76,7 @@ public class ReferenceListTest {
     public void testEquals() {
         System.out.println("testEquals");
         List<String> set1 = new ArrayList<String>(3);
-        List<String> set2 = RC.list(new ArrayList<Reference<String>>(), Ref.SOFT);
+        List<String> set2 = RC.list(new ArrayList<Referrer<String>>(), Ref.SOFT);
         String s1 = "1", s2 = "2", s3 = "3";
         set1.add(s1);
         set1.add(s2);

Modified: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceMapTest.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceMapTest.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceMapTest.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceMapTest.java Sun Oct  9 02:13:59 2011
@@ -49,8 +49,8 @@ public class ReferenceMapTest {
 
     @Before
     public void setUp() {
-        Map<Reference<Integer>, Reference<String>> internal 
-                = new HashMap<Reference<Integer>, Reference<String>>(5);
+        Map<Referrer<Integer>, Referrer<String>> internal 
+                = new HashMap<Referrer<Integer>, Referrer<String>>(5);
         instance = new ReferenceMap<Integer, String>(internal, Ref.WEAK, Ref.STRONG);
         i1 = 1;
         i2 = 2;
@@ -80,7 +80,7 @@ public class ReferenceMapTest {
         m1.put(i2, s2);
         m1.put(i3, s3);
         Map<Integer, String> m2 = RC.map(
-            new TreeMap<Reference<Integer>, Reference<String>>(),
+            new TreeMap<Referrer<Integer>, Referrer<String>>(),
             Ref.SOFT, Ref.SOFT
         );
         m2.put(i1, s1);
@@ -98,7 +98,7 @@ public class ReferenceMapTest {
         m1.put(i2, s2);
         m1.put(i3, s3);
         Map<Integer, String> m2 = RC.map(
-            new TreeMap<Reference<Integer>, Reference<String>>(),
+            new TreeMap<Referrer<Integer>, Referrer<String>>(),
             Ref.SOFT, Ref.SOFT
         );
         m2.put(i1, s1);
@@ -118,7 +118,7 @@ public class ReferenceMapTest {
         m1.put(i2, s2);
         m1.put(i3, s3);
         Map<Integer, String> m2 = RC.map(
-            new TreeMap<Reference<Integer>, Reference<String>>(),
+            new TreeMap<Referrer<Integer>, Referrer<String>>(),
             Ref.SOFT, Ref.SOFT
         );
         m2.put(i1, s1);
@@ -137,7 +137,7 @@ public class ReferenceMapTest {
         m1.put(i2, s2);
         m1.put(i3, s3);
         Map<Integer, String> m2 = RC.map(
-            new TreeMap<Reference<Integer>, Reference<String>>(),
+            new TreeMap<Referrer<Integer>, Referrer<String>>(),
             Ref.SOFT, Ref.SOFT
         );
         m2.put(i1, s1);
@@ -156,7 +156,7 @@ public class ReferenceMapTest {
         m1.put(i2, s2);
         m1.put(i3, s3);
         Map<Integer, String> m2 = RC.map(
-            new TreeMap<Reference<Integer>, Reference<String>>(),
+            new TreeMap<Referrer<Integer>, Referrer<String>>(),
             Ref.SOFT, Ref.SOFT
         );
         m2.put(i1, s1);
@@ -179,7 +179,7 @@ public class ReferenceMapTest {
         m1.put(i2, s2);
         m1.put(i3, s3);
         Map<Integer, String> m2 = RC.map(
-            new TreeMap<Reference<Integer>, Reference<String>>(),
+            new TreeMap<Referrer<Integer>, Referrer<String>>(),
             Ref.SOFT, Ref.SOFT
         );
         m2.put(i1, s1);
@@ -204,7 +204,7 @@ public class ReferenceMapTest {
         m1.put(i2, s2);
         m1.put(i3, s3);
         Map<Integer, String> m2 = RC.map(
-            new MutableMap<Reference<Integer>, Reference<String>>(),
+            new MutableMap<Referrer<Integer>, Referrer<String>>(),
             Ref.SOFT, Ref.SOFT
         );
         Set<Entry<Integer, String>> set1 = m1.entrySet();

Modified: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceNavigableMapTest.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceNavigableMapTest.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceNavigableMapTest.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceNavigableMapTest.java Sun Oct  9 02:13:59 2011
@@ -53,8 +53,8 @@ public class ReferenceNavigableMapTest {
     
     @Before
     public void setUp() {
-                 NavigableMap<Reference<Integer>, Reference<String>> internal 
-                = new TreeMap<Reference<Integer>, Reference<String>>();
+                 NavigableMap<Referrer<Integer>, Referrer<String>> internal 
+                = new TreeMap<Referrer<Integer>, Referrer<String>>();
         instance = RC.navigableMap(internal, Ref.WEAK, Ref.STRONG);
         i1 = 1;
         i2 = 2;

Modified: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceNavigableSetTest.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceNavigableSetTest.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceNavigableSetTest.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceNavigableSetTest.java Sun Oct  9 02:13:59 2011
@@ -48,7 +48,7 @@ public class ReferenceNavigableSetTest {
     
     @Before
     public void setUp() {
-        instance = RC.navigableSet(new TreeSet<Reference<String>>(), Ref.STRONG);
+        instance = RC.navigableSet(new TreeSet<Referrer<String>>(), Ref.STRONG);
         instance.add("eee");
         instance.add("bbb");
         instance.add("aaa");

Modified: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceSetTest.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceSetTest.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceSetTest.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceSetTest.java Sun Oct  9 02:13:59 2011
@@ -44,7 +44,7 @@ public class ReferenceSetTest {
     public void testEquals() {
         System.out.println("testEquals");
         Set<String> set1 = new HashSet<String>(3);
-        Set<String> set2 = RC.set(new TreeSet<Reference<String>>(), Ref.SOFT);
+        Set<String> set2 = RC.set(new TreeSet<Referrer<String>>(), Ref.SOFT);
         String s1 = "1", s2 = "2", s3 = "3";
         set1.add(s1);
         set1.add(s2);

Modified: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceSortedMapTest.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceSortedMapTest.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceSortedMapTest.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceSortedMapTest.java Sun Oct  9 02:13:59 2011
@@ -60,9 +60,9 @@ public class ReferenceSortedMapTest {
             }
             
         };
-        Comparator<Reference<Integer>> ci = RC.comparator(comparator);
-         SortedMap<Reference<Integer>, Reference<String>> internal 
-                = new TreeMap<Reference<Integer>, Reference<String>>(ci);
+        Comparator<Referrer<Integer>> ci = RC.comparator(comparator);
+         SortedMap<Referrer<Integer>, Referrer<String>> internal 
+                = new TreeMap<Referrer<Integer>, Referrer<String>>(ci);
         instance = RC.sortedMap(internal, Ref.WEAK, Ref.STRONG);
         i1 = 1;
         i2 = 2;

Modified: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceSortedSetTest.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceSortedSetTest.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceSortedSetTest.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceSortedSetTest.java Sun Oct  9 02:13:59 2011
@@ -58,8 +58,8 @@ public class ReferenceSortedSetTest {
             }
             
         };
-        Comparator<Reference<String>> rc = RC.comparator(comparator);
-        instance = RC.sortedSet(new TreeSet<Reference<String>>(rc), Ref.STRONG);
+        Comparator<Referrer<String>> rc = RC.comparator(comparator);
+        instance = RC.sortedSet(new TreeSet<Referrer<String>>(rc), Ref.STRONG);
         instance.add("eee");
         instance.add("bbb");
         instance.add("aaa");

Modified: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferencedQueueTest.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferencedQueueTest.java?rev=1180519&r1=1180518&r2=1180519&view=diff
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferencedQueueTest.java (original)
+++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferencedQueueTest.java Sun Oct  9 02:13:59 2011
@@ -47,7 +47,7 @@ public class ReferencedQueueTest {
     
     @Before
     public void setUp() {
-        instance = RC.queue(new LinkedList<Reference<String>>(), Ref.SOFT);
+        instance = RC.queue(new LinkedList<Referrer<String>>(), Ref.SOFT);
     }
     
     @After