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