You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by Simone Tripodi <si...@apache.org> on 2011/05/11 15:19:12 UTC

Re: svn commit: r1101862 - in /commons/proper/pool/trunk: ./ src/changes/ src/java/org/apache/commons/pool2/impl/

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-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org