You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by nd...@apache.org on 2006/08/26 02:42:43 UTC

svn commit: r437046 - /incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/ref/ReferenceQueue.java

Author: ndbeyer
Date: Fri Aug 25 17:42:42 2006
New Revision: 437046

URL: http://svn.apache.org/viewvc?rev=437046&view=rev
Log:
Cleanup code and remove compiler warnings

Modified:
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/ref/ReferenceQueue.java

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/ref/ReferenceQueue.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/ref/ReferenceQueue.java?rev=437046&r1=437045&r2=437046&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/ref/ReferenceQueue.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/ref/ReferenceQueue.java Fri Aug 25 17:42:42 2006
@@ -15,25 +15,42 @@
 
 package java.lang.ref;
 
-
 /**
  * The implementation of this class is provided. The non-public implementation
- * details are documented so the vm vendor can use the implementation.
+ * details are documented so the VM vendor can use the implementation.
  * 
  * ReferenceQueue is the container on which reference objects are enqueued when
  * their reachability type is detected for the referent.
  * 
  * @since JDK1.2
  */
-public class ReferenceQueue<T> extends Object {
-
-	private Reference<? extends T>[] references;
-
-	private int head, tail;
+public class ReferenceQueue<T> {
+    
+    private static final int DEFAULT_QUEUE_SIZE = 128;
+    
+    private Reference<? extends T>[] references;
+
+	private int head;
+    
+    private int tail;
 
 	private boolean empty;
-
-	static private final int DEFAULT_QUEUE_SIZE = 128;
+    
+    /**
+     * Constructs a new instance of this class.
+     */
+    public ReferenceQueue() {
+        super();
+        references = newArray(DEFAULT_QUEUE_SIZE);
+        head = 0;
+        tail = 0;
+        empty = true;
+    }
+    
+    @SuppressWarnings("unchecked")
+    private Reference<? extends T>[] newArray(int size) {
+        return new Reference[size];
+    }
 
 	/**
 	 * Returns the next available reference from the queue if one is enqueued,
@@ -62,7 +79,7 @@
 
 	/**
 	 * Return the next available enqueued reference on the queue, blocking
-	 * indefinately until one is available.
+	 * indefinitely until one is available.
 	 * 
 	 * @return Reference a Reference object if one is available, null otherwise.
 	 * @exception InterruptedException
@@ -121,40 +138,27 @@
 	 * @return boolean true if reference is enqueued. false if reference failed
 	 *         to enqueue.
 	 */
-	boolean enqueue(Reference<? extends T> reference) {
+    boolean enqueue(Reference<? extends T> reference) {
 		synchronized (this) {
-			if (!empty && head == tail) {
-				/* Queue is full - grow */
-				int newQueueSize = (int) (references.length * 1.10);
-				Reference<? extends T> newQueue[] =
-                    (Reference<? extends T>[])new Reference[newQueueSize];
-				System.arraycopy(references, head, newQueue, 0,
-						references.length - head);
-				if (tail > 0) {
-					System.arraycopy(references, 0, newQueue, references.length
-							- head, tail);
-				}
-				head = 0;
-				tail = references.length;
-				references = newQueue;
-			}
-			references[tail++] = reference;
-			if (tail == references.length) {
-				tail = 0;
-			}
-			empty = false;
-			notifyAll();
-		}
-		return true;
-	}
-
-	/**
-	 * Constructs a new instance of this class.
-	 */
-	public ReferenceQueue() {
-		references = (Reference<? extends T>[])new Reference[DEFAULT_QUEUE_SIZE];
-		head = 0;
-		tail = 0;
-		empty = true;
+            if (!empty && head == tail) {
+                /* Queue is full - grow */
+                int newQueueSize = (int) (references.length * 1.10);
+                Reference<? extends T> newQueue[] = newArray(newQueueSize);
+                System.arraycopy(references, head, newQueue, 0, references.length - head);
+                if (tail > 0) {
+                    System.arraycopy(references, 0, newQueue, references.length - head, tail);
+                }
+                head = 0;
+                tail = references.length;
+                references = newQueue;
+            }
+            references[tail++] = reference;
+            if (tail == references.length) {
+                tail = 0;
+            }
+            empty = false;
+            notifyAll();
+        }
+        return true;
 	}
 }