that is *great*, congrats!!! Simo http://people.apache.org/~simonetripodi/ http://www.99soft.org/
On Wed, May 11, 2011 at 2:50 PM, <ma...@apache.org> wrote: > Author: markt > Date: Wed May 11 12:50:33 2011 > New Revision: 1101862 > > URL: http://svn.apache.org/viewvc?rev=1101862&view=rev > Log: > Restore Java 1.5 support by using the LinkedBlockingDeque from Apache Harmony. > > Added: > > commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java > (contents, props changed) > - copied, changed from r1101857, > harmony/enhanced/java/branches/java6/classlib/modules/concurrent/src/main/java/java/util/concurrent/LinkedBlockingDeque.java > Modified: > commons/proper/pool/trunk/NOTICE.txt > commons/proper/pool/trunk/build.xml > commons/proper/pool/trunk/pom.xml > commons/proper/pool/trunk/src/changes/changes.xml > > commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericObjectPool.java > > commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/PooledObject.java > > Modified: commons/proper/pool/trunk/NOTICE.txt > URL: > http://svn.apache.org/viewvc/commons/proper/pool/trunk/NOTICE.txt?rev=1101862&r1=1101861&r2=1101862&view=diff > ============================================================================== > --- commons/proper/pool/trunk/NOTICE.txt (original) > +++ commons/proper/pool/trunk/NOTICE.txt Wed May 11 12:50:33 2011 > @@ -3,3 +3,8 @@ Copyright 2001-2011 The Apache Software > > This product includes software developed by > The Apache Software Foundation (http://www.apache.org/). > + > +The LinkedBlockingDeque implementation is based on an implementation written > by > +Doug Lea with assistance from members of JCP JSR-166 Expert Group and > released > +to the public domain, as explained at > +http://creativecommons.org/licenses/publicdomain > \ No newline at end of file > > Modified: commons/proper/pool/trunk/build.xml > URL: > http://svn.apache.org/viewvc/commons/proper/pool/trunk/build.xml?rev=1101862&r1=1101861&r2=1101862&view=diff > ============================================================================== > --- commons/proper/pool/trunk/build.xml (original) > +++ commons/proper/pool/trunk/build.xml Wed May 11 12:50:33 2011 > @@ -61,8 +61,8 @@ > <property name="javac.optimize" value="false"/> > <property name="javac.debug" value="true"/> > <property name="javac.deprecation" value="true"/> > - <property name="javac.target.version" value="1.6"/> > - <property name="javac.src.version" value="1.6"/> > + <property name="javac.target.version" value="1.5"/> > + <property name="javac.src.version" value="1.5"/> > </target> > > <!-- ######################################################### --> > > Modified: commons/proper/pool/trunk/pom.xml > URL: > http://svn.apache.org/viewvc/commons/proper/pool/trunk/pom.xml?rev=1101862&r1=1101861&r2=1101862&view=diff > ============================================================================== > --- commons/proper/pool/trunk/pom.xml (original) > +++ commons/proper/pool/trunk/pom.xml Wed May 11 12:50:33 2011 > @@ -135,8 +135,8 @@ > <properties> > <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> > <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> > - <maven.compile.source>1.6</maven.compile.source> > - <maven.compile.target>1.6</maven.compile.target> > + <maven.compile.source>1.5</maven.compile.source> > + <maven.compile.target>1.5</maven.compile.target> > <commons.componentid>pool</commons.componentid> > <commons.release.version>2.0</commons.release.version> > <commons.jira.id>POOL</commons.jira.id> > > Modified: commons/proper/pool/trunk/src/changes/changes.xml > URL: > http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/changes/changes.xml?rev=1101862&r1=1101861&r2=1101862&view=diff > ============================================================================== > --- commons/proper/pool/trunk/src/changes/changes.xml (original) > +++ commons/proper/pool/trunk/src/changes/changes.xml Wed May 11 12:50:33 2011 > @@ -28,7 +28,9 @@ > Developer documentation and examples have to be updated once the 2.0 > repackaging has been done > </action> > <action dev="markt" type="update"> > - Switch GOP to use a pooling mechanism based on java.util.concurrent. > + Switch GOP to use a pooling mechanism based on java.util.concurrent > and a > + LinkedBlockingQueue implementation from Apache Harmony (originally by > Doug > + Lea and the JSR-166 expert group). > </action> > </release> > <release version="1.5.6" date="2011-04-03" description="This is a patch > release, including bugfixes only."> > > Modified: > commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericObjectPool.java > URL: > http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericObjectPool.java?rev=1101862&r1=1101861&r2=1101862&view=diff > ============================================================================== > --- > commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericObjectPool.java > (original) > +++ > commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericObjectPool.java > Wed May 11 12:50:33 2011 > @@ -21,9 +21,7 @@ import java.util.Iterator; > import java.util.Map; > import java.util.NoSuchElementException; > import java.util.TimerTask; > -import java.util.concurrent.BlockingDeque; > import java.util.concurrent.ConcurrentHashMap; > -import java.util.concurrent.LinkedBlockingDeque; > import java.util.concurrent.TimeUnit; > import java.util.concurrent.atomic.AtomicInteger; > > @@ -1823,7 +1821,7 @@ public class GenericObjectPool<T> extend > private AtomicInteger _numObjects = new AtomicInteger(0); > > /** The queue of idle objects */ > - private BlockingDeque<PooledObject<T>> _idleObjects = null; > + private LinkedBlockingDeque<PooledObject<T>> _idleObjects = null; > > /** An iterator for {@link #_idleObjects} that is used by the evictor. */ > private Iterator<PooledObject<T>> _evictionIterator = null; > > Copied: > commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java > (from r1101857, > harmony/enhanced/java/branches/java6/classlib/modules/concurrent/src/main/java/java/util/concurrent/LinkedBlockingDeque.java) > URL: > http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java?p2=commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java&p1=harmony/enhanced/java/branches/java6/classlib/modules/concurrent/src/main/java/java/util/concurrent/LinkedBlockingDeque.java&r1=1101857&r2=1101862&rev=1101862&view=diff > ============================================================================== > --- > harmony/enhanced/java/branches/java6/classlib/modules/concurrent/src/main/java/java/util/concurrent/LinkedBlockingDeque.java > (original) > +++ > commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java > Wed May 11 12:50:33 2011 > @@ -1,15 +1,27 @@ > /* > - * Written by Doug Lea with assistance from members of JCP JSR-166 > - * Expert Group and released to the public domain, as explained at > - * http://creativecommons.org/licenses/publicdomain > + * 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 java.util.concurrent; > +package org.apache.commons.pool2.impl; > > import java.util.AbstractQueue; > import java.util.Collection; > import java.util.Iterator; > import java.util.NoSuchElementException; > +import java.util.concurrent.TimeUnit; > import java.util.concurrent.locks.Condition; > import java.util.concurrent.locks.ReentrantLock; > > @@ -38,13 +50,14 @@ import java.util.concurrent.locks.Reentr > * <a href="{@docRoot}/../technotes/guides/collections/index.html"> > * Java Collections Framework</a>. > * > - * @since 1.6 > - * @author Doug Lea > * @param <E> the type of elements held in this collection > + * > + * Note: This was copied from Apache Harmony and modified to suit the needs > of > + * Commons Pool. > */ > public class LinkedBlockingDeque<E> > extends AbstractQueue<E> > - implements BlockingDeque<E>, java.io.Serializable { > + implements java.io.Serializable { > > /* > * Implemented as a simple doubly-linked list protected by a > @@ -594,6 +607,7 @@ public class LinkedBlockingDeque<E> > * time due to capacity restrictions > * @throws NullPointerException if the specified element is null > */ > + @Override > public boolean add(E e) { > addLast(e); > return true; > @@ -633,6 +647,7 @@ public class LinkedBlockingDeque<E> > * @return the head of the queue represented by this deque > * @throws NoSuchElementException if this deque is empty > */ > + @Override > public E remove() { > return removeFirst(); > } > @@ -659,6 +674,7 @@ public class LinkedBlockingDeque<E> > * @return the head of the queue represented by this deque > * @throws NoSuchElementException if this deque is empty > */ > + @Override > public E element() { > return getFirst(); > } > @@ -756,6 +772,7 @@ public class LinkedBlockingDeque<E> > * @param o element to be removed from this deque, if present > * @return {@code true} if this deque changed as a result of the call > */ > + @Override > public boolean remove(Object o) { > return removeFirstOccurrence(o); > } > @@ -765,6 +782,7 @@ public class LinkedBlockingDeque<E> > * > * @return the number of elements in this deque > */ > + @Override > public int size() { > final ReentrantLock lock = this.lock; > lock.lock(); > @@ -783,6 +801,7 @@ public class LinkedBlockingDeque<E> > * @param o object to be checked for containment in this deque > * @return {@code true} if this deque contains the specified element > */ > + @Override > public boolean contains(Object o) { > if (o == null) return false; > final ReentrantLock lock = this.lock; > @@ -851,7 +870,7 @@ public class LinkedBlockingDeque<E> > * > * @return an array containing all of the elements in this deque > */ > - @SuppressWarnings("unchecked") > + @Override > public Object[] toArray() { > final ReentrantLock lock = this.lock; > lock.lock(); > @@ -902,6 +921,7 @@ public class LinkedBlockingDeque<E> > * this deque > * @throws NullPointerException if the specified array is null > */ > + @Override > @SuppressWarnings("unchecked") > public <T> T[] toArray(T[] a) { > final ReentrantLock lock = this.lock; > @@ -922,6 +942,7 @@ public class LinkedBlockingDeque<E> > } > } > > + @Override > public String toString() { > final ReentrantLock lock = this.lock; > lock.lock(); > @@ -936,6 +957,7 @@ public class LinkedBlockingDeque<E> > * Atomically removes all of the elements from this deque. > * The deque will be empty after this call returns. > */ > + @Override > public void clear() { > final ReentrantLock lock = this.lock; > lock.lock(); > @@ -967,6 +989,7 @@ public class LinkedBlockingDeque<E> > * > * @return an iterator over the elements in this deque in proper sequence > */ > + @Override > public Iterator<E> iterator() { > return new Itr(); > } > @@ -1079,13 +1102,17 @@ public class LinkedBlockingDeque<E> > > /** Forward iterator */ > private class Itr extends AbstractItr { > + @Override > Node<E> firstNode() { return first; } > + @Override > Node<E> nextNode(Node<E> n) { return n.next; } > } > > /** Descending iterator */ > private class DescendingItr extends AbstractItr { > + @Override > Node<E> firstNode() { return last; } > + @Override > Node<E> nextNode(Node<E> n) { return n.prev; } > } > > > Propchange: > commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java > ------------------------------------------------------------------------------ > svn:eol-style = native > > Propchange: > commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java > ------------------------------------------------------------------------------ > --- svn:mergeinfo (added) > +++ svn:mergeinfo Wed May 11 12:50:33 2011 > @@ -0,0 +1,8 @@ > +/harmony/enhanced/classlib/trunk/modules/concurrent/src/main/java/java/util/concurrent/LinkedBlockingDeque.java:713674-735919,765923-926091,926318-926838 > +/harmony/enhanced/classlib/trunk/working_classlib/modules/concurrent/src/main/java/java/util/concurrent/LinkedBlockingDeque.java:884014-884286 > +/harmony/enhanced/java/branches/mrh/classlib/modules/concurrent/src/main/java/java/util/concurrent/LinkedBlockingDeque.java:935751-941490 > +/harmony/enhanced/java/trunk/classlib/modules/concurrent/src/main/java/java/util/concurrent/LinkedBlockingDeque.java:929253-1049534 > +/harmony/enhanced/trunk/classlib/modules/concurrent/src/main/java/java/util/concurrent/LinkedBlockingDeque.java:476395-929252 > +/harmony/enhanced/trunk/working_classlib/modules/concurrent/src/main/java/java/util/concurrent/LinkedBlockingDeque.java:476396-920147 > +/incubator/harmony/enhanced/trunk/classlib/modules/concurrent/src/main/java/java/util/concurrent/LinkedBlockingDeque.java:292550-476394 > +/incubator/harmony/enhanced/trunk/working_classlib/modules/concurrent/src/main/java/java/util/concurrent/LinkedBlockingDeque.java:423974-476394 > > Modified: > commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/PooledObject.java > URL: > http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/PooledObject.java?rev=1101862&r1=1101861&r2=1101862&view=diff > ============================================================================== > --- > commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/PooledObject.java > (original) > +++ > commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/PooledObject.java > Wed May 11 12:50:33 2011 > @@ -16,8 +16,6 @@ > */ > package org.apache.commons.pool2.impl; > > -import java.util.concurrent.BlockingDeque; > - > /** > * This wrapper is used to track the additional information, such as state, > for > * the pooled objects. > @@ -71,7 +69,7 @@ public class PooledObject<T> { > } > > public synchronized boolean endEvictionTest( > - BlockingDeque<PooledObject<T>> idleQueue) { > + LinkedBlockingDeque<PooledObject<T>> idleQueue) { > if (_state == PooledObjectState.MAINTAIN_EVICTION) { > _state = PooledObjectState.IDLE; > return true; > > > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org