You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sc...@apache.org on 2004/01/01 19:57:37 UTC

cvs commit: jakarta-commons/collections/src/java/org/apache/commons/collections PriorityQueueUtils.java SynchronizedPriorityQueue.java

scolebourne    2004/01/01 10:57:37

  Modified:    collections/src/java/org/apache/commons/collections
                        PriorityQueueUtils.java
                        SynchronizedPriorityQueue.java
  Removed:     collections/src/java/org/apache/commons/collections/buffer
                        UnmodifiablePriorityQueue.java
                        SynchronizedPriorityQueue.java
  Log:
  Move PriorityQueue decorators to PriorityQueueUtils only
  (PriorityQueue interface has nothing to do with Buffer)
  
  Revision  Changes    Path
  1.5       +123 -8    jakarta-commons/collections/src/java/org/apache/commons/collections/PriorityQueueUtils.java
  
  Index: PriorityQueueUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/PriorityQueueUtils.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- PriorityQueueUtils.java	3 Dec 2003 14:39:42 -0000	1.4
  +++ PriorityQueueUtils.java	1 Jan 2004 18:57:37 -0000	1.5
  @@ -57,9 +57,7 @@
    */
   package org.apache.commons.collections;
   
  -import org.apache.commons.collections.buffer.BinaryHeap;
  -import org.apache.commons.collections.buffer.SynchronizedPriorityQueue;
  -import org.apache.commons.collections.buffer.UnmodifiablePriorityQueue;
  +import java.util.NoSuchElementException;
   
   /**
    * Provides static utility methods and decorators for {@link PriorityQueue}.
  @@ -74,7 +72,7 @@
       /**
        * An empty unmodifiable priority queue.
        */
  -    public static final PriorityQueue EMPTY_PRIORITY_QUEUE = UnmodifiablePriorityQueue.decorate(new BinaryHeap());
  +    public static final PriorityQueue EMPTY_PRIORITY_QUEUE = new EmptyPriorityQueue();
   
       /**
        * <code>PriorityQueueUtils</code> should not normally be instantiated.
  @@ -91,7 +89,7 @@
        * @throws IllegalArgumentException  if the priority queue is null
        */
       public static PriorityQueue synchronizedPriorityQueue(PriorityQueue priorityQueue) {
  -        return SynchronizedPriorityQueue.decorate(priorityQueue);
  +        return new SynchronizedPriorityQueue(priorityQueue);
       }
   
       /**
  @@ -102,7 +100,124 @@
        * @throws IllegalArgumentException  if the priority queue is null
        */
       public static PriorityQueue unmodifiablePriorityQueue(PriorityQueue priorityQueue) {
  -        return UnmodifiablePriorityQueue.decorate(priorityQueue);
  +        return new UnmodifiablePriorityQueue(priorityQueue);
       }
   
  +    //-----------------------------------------------------------------------
  +    /**
  +     * Decorator for PriorityQueue that adds synchronization.
  +     */
  +    static class SynchronizedPriorityQueue implements PriorityQueue {
  +
  +        /** The priority queue to decorate */
  +        protected final PriorityQueue priorityQueue;
  +
  +        protected SynchronizedPriorityQueue(PriorityQueue priorityQueue) {
  +            if (priorityQueue == null) {
  +                throw new IllegalArgumentException("PriorityQueue must not be null");
  +            }
  +            this.priorityQueue = priorityQueue;
  +        }
  +
  +        public synchronized boolean isEmpty() {
  +            return priorityQueue.isEmpty();
  +        }
  +
  +        public synchronized Object peek() {
  +            return priorityQueue.peek();
  +        }
  +
  +        public synchronized Object pop() {
  +            return priorityQueue.pop();
  +        }
  +
  +        public synchronized void insert(Object obj) {
  +            priorityQueue.insert(obj);
  +        }
  +
  +        public synchronized void clear() {
  +            priorityQueue.clear();
  +        }
  +
  +        public synchronized String toString() {
  +            return priorityQueue.toString();
  +        }
  +    }
  +    
  +    //-----------------------------------------------------------------------
  +    /**
  +     * Decorator for PriorityQueue that prevents changes.
  +     */
  +    static class UnmodifiablePriorityQueue implements PriorityQueue, Unmodifiable {
  +
  +        /** The priority queue to decorate */
  +        protected final PriorityQueue priorityQueue;
  +
  +        protected UnmodifiablePriorityQueue(PriorityQueue priorityQueue) {
  +            if (priorityQueue == null) {
  +                throw new IllegalArgumentException("PriorityQueue must not be null");
  +            }
  +            this.priorityQueue = priorityQueue;
  +        }
  +
  +        public synchronized boolean isEmpty() {
  +            return priorityQueue.isEmpty();
  +        }
  +
  +        public synchronized Object peek() {
  +            return priorityQueue.peek();
  +        }
  +
  +        public synchronized Object pop() {
  +            throw new UnsupportedOperationException();
  +        }
  +
  +        public synchronized void insert(Object obj) {
  +            throw new UnsupportedOperationException();
  +        }
  +
  +        public synchronized void clear() {
  +            throw new UnsupportedOperationException();
  +        }
  +
  +        public synchronized String toString() {
  +            return priorityQueue.toString();
  +        }
  +    
  +    }
  +    
  +    //-----------------------------------------------------------------------
  +    /**
  +     * PriorityQueue that is empty.
  +     */
  +    static class EmptyPriorityQueue implements PriorityQueue, Unmodifiable {
  +
  +        protected EmptyPriorityQueue() {
  +        }
  +
  +        public synchronized boolean isEmpty() {
  +            return true;
  +        }
  +
  +        public synchronized Object peek() {
  +            throw new NoSuchElementException();
  +        }
  +
  +        public synchronized Object pop() {
  +            throw new UnsupportedOperationException();
  +        }
  +
  +        public synchronized void insert(Object obj) {
  +            throw new UnsupportedOperationException();
  +        }
  +
  +        public synchronized void clear() {
  +            throw new UnsupportedOperationException();
  +        }
  +
  +        public synchronized String toString() {
  +            return "[]";
  +        }
  +    
  +    }
   }
  
  
  
  1.10      +4 -4      jakarta-commons/collections/src/java/org/apache/commons/collections/SynchronizedPriorityQueue.java
  
  Index: SynchronizedPriorityQueue.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/SynchronizedPriorityQueue.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- SynchronizedPriorityQueue.java	29 Nov 2003 17:26:21 -0000	1.9
  +++ SynchronizedPriorityQueue.java	1 Jan 2004 18:57:37 -0000	1.10
  @@ -64,11 +64,11 @@
    * Provides synchronized wrapper methods for all the methods 
    * defined in the PriorityQueue interface.
    *
  - * @deprecated Moved to buffer subpackage. Due to be removed in v4.0.
  + * @deprecated Use PriorityQueueUtils. Due to be removed in v4.0.
    * @since Commons Collections 1.0
    * @version $Revision$ $Date$
    * 
  - * @author  <a href="mailto:ram.chidambaram@telus.com">Ram Chidambaram</a> 
  + * @author Ram Chidambaram
    */
   public final class SynchronizedPriorityQueue implements PriorityQueue {
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org