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