svn commit: r1051828 - in /commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl: SoftReferenceObjectPool.java SoftReferenceObjectPoolMBean.java
Author: simonetripodi Date: Wed Dec 22 10:59:13 2010 New Revision: 1051828 URL: http://svn.apache.org/viewvc?rev=1051828view=rev Log: added SoftReferenceObjectPool JMX MBean interface Added: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/SoftReferenceObjectPoolMBean.java (with props) Modified: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java Modified: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java?rev=1051828r1=1051827r2=1051828view=diff == --- commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java (original) +++ commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java Wed Dec 22 10:59:13 2010 @@ -38,7 +38,7 @@ import org.apache.commons.pool2.Poolable * @version $Revision$ $Date$ * @since Pool 1.0 */ -public class SoftReferenceObjectPoolT extends BaseObjectPoolT implements ObjectPoolT { +public class SoftReferenceObjectPoolT extends BaseObjectPoolT implements ObjectPoolT, SoftReferenceObjectPoolMBean { /** * Create a codeSoftReferenceObjectPool/code with the specified factory. Added: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/SoftReferenceObjectPoolMBean.java URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/SoftReferenceObjectPoolMBean.java?rev=1051828view=auto == --- commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/SoftReferenceObjectPoolMBean.java (added) +++ commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/SoftReferenceObjectPoolMBean.java Wed Dec 22 10:59:13 2010 @@ -0,0 +1,41 @@ +/* + * 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 org.apache.commons.pool2.impl; + +/** + * The codeSoftReference/code-based codeObjectPool/code JMX interface. + * + * @version $Revision$ $Date$ + * @since 2.0 + */ +public interface SoftReferenceObjectPoolMBean { + +/** + * Returns an approximation not less than the of the number of idle instances in the pool. + * + * @return estimated number of idle instances in the pool + */ +int getNumIdle(); + +/** + * Return the number of instances currently borrowed from this pool. + * + * @return the number of instances currently borrowed from this pool + */ +int getNumActive(); + +} \ No newline at end of file Propchange: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/SoftReferenceObjectPoolMBean.java -- svn:eol-style = native Propchange: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/SoftReferenceObjectPoolMBean.java -- svn:keywords = Date Author Id Revision HeadURL Propchange: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/SoftReferenceObjectPoolMBean.java -- svn:mime-type = text/plain
svn commit: r1051849 - /commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java
Author: simonetripodi Date: Wed Dec 22 11:28:16 2010 New Revision: 1051849 URL: http://svn.apache.org/viewvc?rev=1051849view=rev Log: getFactory() method doesn't need to be synchronized since _factory is private final Modified: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java Modified: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java?rev=1051849r1=1051848r2=1051849view=diff == --- commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java (original) +++ commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java Wed Dec 22 11:28:16 2010 @@ -345,7 +345,7 @@ public class StackObjectPoolT extends * @return the factory * @since 1.5.5 */ -public synchronized PoolableObjectFactoryT getFactory() { +public PoolableObjectFactoryT getFactory() { return _factory; }
svn commit: r1051852 - in /commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl: StackObjectPool.java StackObjectPoolFactory.java
Author: simonetripodi Date: Wed Dec 22 11:36:49 2010 New Revision: 1051852 URL: http://svn.apache.org/viewvc?rev=1051852view=rev Log: made classes fields volatile removed synchronization on getters/setters methods Modified: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPoolFactory.java Modified: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java?rev=1051852r1=1051851r2=1051852view=diff == --- commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java (original) +++ commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java Wed Dec 22 11:36:49 2010 @@ -226,7 +226,7 @@ public class StackObjectPoolT extends * @return the number of instances currently borrowed from this pool */ @Override -public synchronized int getNumActive() { +public int getNumActive() { return _numActive; } @@ -332,12 +332,12 @@ public class StackObjectPoolT extends /** * cap on the number of sleeping instances in the pool */ -private int maxSleeping; // @GuardedBy(this) +private volatile int maxSleeping; // @GuardedBy(this) /** * Number of objects borrowed but not yet returned to the pool. */ -private int _numActive = 0; // @GuardedBy(this) +private volatile int _numActive = 0; // @GuardedBy(this) /** * Returns the {...@link PoolableObjectFactory} used by this pool to create and manage object instances. @@ -355,7 +355,7 @@ public class StackObjectPoolT extends * @return maxSleeping * @since 1.5.5 */ -public synchronized int getMaxSleeping() { +public int getMaxSleeping() { return this.maxSleeping; } @@ -365,7 +365,7 @@ public class StackObjectPoolT extends * @param maxSleeping * @since 2.0 */ -public synchronized void setMaxSleeping(int maxSleeping) { +public void setMaxSleeping(int maxSleeping) { this.maxSleeping = maxSleeping; } } Modified: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPoolFactory.java URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPoolFactory.java?rev=1051852r1=1051851r2=1051852view=diff == --- commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPoolFactory.java (original) +++ commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPoolFactory.java Wed Dec 22 11:36:49 2010 @@ -80,13 +80,13 @@ public class StackObjectPoolFactoryT i /** * cap on the number of sleeping instances in the pool */ -private int maxSleeping; // @GuardedBy(this) +private volatile int maxSleeping; // @GuardedBy(this) /** * initial size of the pool (this specifies the size of the container, * it does not cause the pool to be pre-populated.) */ -private int initIdleCapacity; // @GuardedBy(this) +private volatile int initIdleCapacity; // @GuardedBy(this) /** * Returns the factory used by created pools. @@ -104,7 +104,7 @@ public class StackObjectPoolFactoryT i * @return the maximum number of idle instances in created pools * @since 1.5.5 */ -public synchronized int getMaxSleeping() { +public int getMaxSleeping() { return this.maxSleeping; } @@ -114,7 +114,7 @@ public class StackObjectPoolFactoryT i * @param maxSleeping * @since 2.0 */ -public synchronized void setMaxSleeping(int maxSleeping) { +public void setMaxSleeping(int maxSleeping) { this.maxSleeping = maxSleeping; } @@ -124,7 +124,7 @@ public class StackObjectPoolFactoryT i * @return size of created containers (created pools are not pre-populated) * @since 1.5.5 */ -public synchronized int getInitCapacity() { +public int getInitCapacity() { return this.initIdleCapacity; } @@ -133,7 +133,7 @@ public class StackObjectPoolFactoryT i * * @param initIdleCapacity size of created containers (created pools are not pre-populated) */ -public synchronized void setInitCapacity(int initIdleCapacity) { +public void setInitCapacity(int initIdleCapacity) { this.initIdleCapacity = initIdleCapacity; }
svn commit: r1051854 - /commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackKeyedObjectPoolFactory.java
Author: simonetripodi Date: Wed Dec 22 11:39:31 2010 New Revision: 1051854 URL: http://svn.apache.org/viewvc?rev=1051854view=rev Log: getFactory() method doesn't need to be synchronized since _factory is private final Modified: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackKeyedObjectPoolFactory.java Modified: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackKeyedObjectPoolFactory.java URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackKeyedObjectPoolFactory.java?rev=1051854r1=1051853r2=1051854view=diff == --- commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackKeyedObjectPoolFactory.java (original) +++ commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackKeyedObjectPoolFactory.java Wed Dec 22 11:39:31 2010 @@ -95,7 +95,7 @@ public class StackKeyedObjectPoolFactory * @return factory setting for created pools * @since 1.5.5 */ -public synchronized KeyedPoolableObjectFactoryK,V getFactory() { +public KeyedPoolableObjectFactoryK,V getFactory() { return _factory; }
svn commit: r1051863 - /commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackKeyedObjectPoolFactory.java
Author: simonetripodi Date: Wed Dec 22 11:52:09 2010 New Revision: 1051863 URL: http://svn.apache.org/viewvc?rev=1051863view=rev Log: made fields volatile removed synchronization on getters/setters methods Modified: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackKeyedObjectPoolFactory.java Modified: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackKeyedObjectPoolFactory.java URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackKeyedObjectPoolFactory.java?rev=1051863r1=1051862r2=1051863view=diff == --- commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackKeyedObjectPoolFactory.java (original) +++ commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackKeyedObjectPoolFactory.java Wed Dec 22 11:52:09 2010 @@ -81,13 +81,13 @@ public class StackKeyedObjectPoolFactory /** * cap on the number of sleeping instances in the pool */ -private int maxSleeping; // @GuardedBy(this) +private volatile int maxSleeping; // @GuardedBy(this) /** * initial size of the pool (this specifies the size of the container, * it does not cause the pool to be pre-populated.) */ -private int initIdleCapacity; // @GuardedBy(this) +private volatile int initIdleCapacity; // @GuardedBy(this) /** * Returns the KeyedPoolableObjectFactory used by StackKeyedObjectPools created by this factory @@ -105,7 +105,7 @@ public class StackKeyedObjectPoolFactory * @return maxSleeping setting for created pools * @since 1.5.5 */ -public synchronized int getMaxSleeping() { +public int getMaxSleeping() { return this.maxSleeping; } @@ -115,7 +115,7 @@ public class StackKeyedObjectPoolFactory * @param maxSleeping * @since 2.0 */ -public synchronized void setMaxSleeping(int maxSleeping) { +public void setMaxSleeping(int maxSleeping) { this.maxSleeping = maxSleeping; } @@ -125,7 +125,7 @@ public class StackKeyedObjectPoolFactory * @return initial capacity setting for created pools * @since 1.5.5 */ -public synchronized int getInitialCapacity() { +public int getInitialCapacity() { return this.initIdleCapacity; } @@ -135,7 +135,7 @@ public class StackKeyedObjectPoolFactory * @param initIdleCapacity * @since 2.0 */ -public synchronized void setInitIdleCapacity(int initIdleCapacity) { +public void setInitIdleCapacity(int initIdleCapacity) { this.initIdleCapacity = initIdleCapacity; }
svn commit: r1051946 - in /commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl: StackKeyedObjectPoolFactory.java StackObjectPool.java StackObjectPoolFactory.java
Author: simonetripodi Date: Wed Dec 22 15:21:18 2010 New Revision: 1051946 URL: http://svn.apache.org/viewvc?rev=1051946view=rev Log: removed no more needed @GuardedBy(this) comments Modified: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackKeyedObjectPoolFactory.java commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPoolFactory.java Modified: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackKeyedObjectPoolFactory.java URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackKeyedObjectPoolFactory.java?rev=1051946r1=1051945r2=1051946view=diff == --- commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackKeyedObjectPoolFactory.java (original) +++ commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackKeyedObjectPoolFactory.java Wed Dec 22 15:21:18 2010 @@ -81,13 +81,13 @@ public class StackKeyedObjectPoolFactory /** * cap on the number of sleeping instances in the pool */ -private volatile int maxSleeping; // @GuardedBy(this) +private volatile int maxSleeping; /** * initial size of the pool (this specifies the size of the container, * it does not cause the pool to be pre-populated.) */ -private volatile int initIdleCapacity; // @GuardedBy(this) +private volatile int initIdleCapacity; /** * Returns the KeyedPoolableObjectFactory used by StackKeyedObjectPools created by this factory Modified: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java?rev=1051946r1=1051945r2=1051946view=diff == --- commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java (original) +++ commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java Wed Dec 22 15:21:18 2010 @@ -332,12 +332,12 @@ public class StackObjectPoolT extends /** * cap on the number of sleeping instances in the pool */ -private volatile int maxSleeping; // @GuardedBy(this) +private volatile int maxSleeping; /** * Number of objects borrowed but not yet returned to the pool. */ -private volatile int _numActive = 0; // @GuardedBy(this) +private volatile int _numActive = 0; /** * Returns the {...@link PoolableObjectFactory} used by this pool to create and manage object instances. Modified: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPoolFactory.java URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPoolFactory.java?rev=1051946r1=1051945r2=1051946view=diff == --- commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPoolFactory.java (original) +++ commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPoolFactory.java Wed Dec 22 15:21:18 2010 @@ -80,13 +80,13 @@ public class StackObjectPoolFactoryT i /** * cap on the number of sleeping instances in the pool */ -private volatile int maxSleeping; // @GuardedBy(this) +private volatile int maxSleeping; /** * initial size of the pool (this specifies the size of the container, * it does not cause the pool to be pre-populated.) */ -private volatile int initIdleCapacity; // @GuardedBy(this) +private volatile int initIdleCapacity; /** * Returns the factory used by created pools.
svn commit: r1052095 - in /commons/proper/io/trunk/src: main/java/org/apache/commons/io/input/BOMInputStream.java test/java/org/apache/commons/io/input/BOMInputStreamTest.java
Author: niallp Date: Wed Dec 22 23:03:20 2010 New Revision: 1052095 URL: http://svn.apache.org/viewvc?rev=1052095view=rev Log: IO-257 Fix BOMInputStream's read(byte[]) can return 0 which it should not - thanks to Teemu Lång Modified: commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/BOMInputStream.java commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/BOMInputStreamTest.java Modified: commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/BOMInputStream.java URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/BOMInputStream.java?rev=1052095r1=1052094r2=1052095view=diff == --- commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/BOMInputStream.java (original) +++ commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/BOMInputStream.java Wed Dec 22 23:03:20 2010 @@ -284,7 +284,7 @@ public class BOMInputStream extends Prox } } int secondCount = in.read(buf, off, len); -return (secondCount 0) ? firstCount : firstCount + secondCount; +return (secondCount 0) ? (firstCount 0 ? firstCount : -1) : firstCount + secondCount; } /** Modified: commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/BOMInputStreamTest.java URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/BOMInputStreamTest.java?rev=1052095r1=1052094r2=1052095view=diff == --- commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/BOMInputStreamTest.java (original) +++ commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/BOMInputStreamTest.java Wed Dec 22 23:03:20 2010 @@ -204,6 +204,20 @@ public class BOMInputStreamTest extends assertEquals(getBOM, ByteOrderMark.UTF_8, in.getBOM()); } +public void testEmptyBufferWithoutBOM() throws Exception { +byte[] data = new byte[] {}; +InputStream in = new BOMInputStream(createDataStream(data, false)); +byte[] buf = new byte[1024]; +assertEquals(-1, in.read(buf)); +} + +public void testEmptyBufferWithBOM() throws Exception { +byte[] data = new byte[] {}; +InputStream in = new BOMInputStream(createDataStream(data, true)); +byte[] buf = new byte[1024]; +assertEquals(-1, in.read(buf)); +} + public void testLargeBufferWithoutBOM() throws Exception { byte[] data = new byte[] { 'A', 'B', 'C' }; InputStream in = new BOMInputStream(createDataStream(data, false));
svn commit: r1052102 - /commons/proper/io/trunk/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java
Author: niallp Date: Wed Dec 22 23:40:58 2010 New Revision: 1052102 URL: http://svn.apache.org/viewvc?rev=1052102view=rev Log: Minor code re-organization Modified: commons/proper/io/trunk/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java Modified: commons/proper/io/trunk/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java?rev=1052102r1=1052101r2=1052102view=diff == --- commons/proper/io/trunk/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java (original) +++ commons/proper/io/trunk/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java Wed Dec 22 23:40:58 2010 @@ -52,15 +52,6 @@ public final class FileAlterationMonitor } /** - * Return the interval. - * - * @return the interval - */ -public long getInterval() { -return interval; -} - -/** * Construct a monitor with the specified interval and set of observers. * * @param interval The amount of time in miliseconds to wait between @@ -77,6 +68,15 @@ public final class FileAlterationMonitor } /** + * Return the interval. + * + * @return the interval + */ +public long getInterval() { +return interval; +} + +/** * Add a file system observer to this monitor. * * @param observer The file system observer to add
svn commit: r1052114 - in /commons/proper/io/trunk/src: main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java test/java/org/apache/commons/io/monitor/FileAlterationMonitorTestCase.java
Author: niallp Date: Thu Dec 23 00:13:25 2010 New Revision: 1052114 URL: http://svn.apache.org/viewvc?rev=1052114view=rev Log: IO-256 - Provide ThreadFactory for FileAlternationMonitor - thanks to Martin Beránek Modified: commons/proper/io/trunk/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java commons/proper/io/trunk/src/test/java/org/apache/commons/io/monitor/FileAlterationMonitorTestCase.java Modified: commons/proper/io/trunk/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java?rev=1052114r1=1052113r2=1052114view=diff == --- commons/proper/io/trunk/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java (original) +++ commons/proper/io/trunk/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java Thu Dec 23 00:13:25 2010 @@ -18,6 +18,7 @@ package org.apache.commons.io.monitor; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.ThreadFactory; /** * A runnable that spawns a monitoring thread triggering any @@ -32,6 +33,7 @@ public final class FileAlterationMonitor private final long interval; private final ListFileAlterationObserver observers = new CopyOnWriteArrayListFileAlterationObserver(); private Thread thread = null; +private ThreadFactory threadFactory; private volatile boolean running = false; /** @@ -77,6 +79,24 @@ public final class FileAlterationMonitor } /** + * Return the thread factory. + * + * @return the threadFactory + */ +public ThreadFactory getThreadFactory() { +return threadFactory; +} + +/** + * Set the thread factory. + * + * @param threadFactory the thread factory + */ +public void setThreadFactory(ThreadFactory threadFactory) { +this.threadFactory = threadFactory; +} + +/** * Add a file system observer to this monitor. * * @param observer The file system observer to add @@ -122,7 +142,11 @@ public final class FileAlterationMonitor observer.initialize(); } running = true; -thread = new Thread(this); +if (threadFactory != null) { +thread = threadFactory.newThread(this); +} else { +thread = new Thread(this); +} thread.start(); } Modified: commons/proper/io/trunk/src/test/java/org/apache/commons/io/monitor/FileAlterationMonitorTestCase.java URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/test/java/org/apache/commons/io/monitor/FileAlterationMonitorTestCase.java?rev=1052114r1=1052113r2=1052114view=diff == --- commons/proper/io/trunk/src/test/java/org/apache/commons/io/monitor/FileAlterationMonitorTestCase.java (original) +++ commons/proper/io/trunk/src/test/java/org/apache/commons/io/monitor/FileAlterationMonitorTestCase.java Thu Dec 23 00:13:25 2010 @@ -19,6 +19,7 @@ package org.apache.commons.io.monitor; import java.io.File; import java.util.Collection; import java.util.Iterator; +import java.util.concurrent.Executors; /** * {...@link FileAlterationMonitor} Test Case. @@ -90,8 +91,10 @@ public class FileAlterationMonitorTestCa public void testMonitor() { try { long interval = 100; +listener.clear(); FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer); assertEquals(Interval, interval, monitor.getInterval()); +assertNull(Thread Factory, monitor.getThreadFactory()); monitor.start(); try { @@ -133,6 +136,40 @@ public class FileAlterationMonitorTestCa } /** + * Test using a thread factory. + */ +public void testThreadFactory() { +try { +long interval = 100; +listener.clear(); +FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer); +monitor.setThreadFactory(Executors.defaultThreadFactory()); +assertEquals(Interval, interval, monitor.getInterval()); +assertNotNull(Thread Factory, monitor.getThreadFactory()); +monitor.start(); + +// Create a File +checkCollectionsEmpty(A); +File file2 = touch(new File(testDir, file2.java)); +checkFile(Create, file2, listener.getCreatedFiles()); +listener.clear(); + +// Delete a file +checkCollectionsEmpty(B); +file2.delete(); +checkFile(Delete, file2, listener.getDeletedFiles()); +listener.clear(); + +// Stop monitoring +monitor.stop(); + +} catch (Exception
svn commit: r1052118 - in /commons/proper/io/trunk/src: main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java test/java/org/apache/commons/io/monitor/FileAlterationMonitorTestCase.java
Author: niallp Date: Thu Dec 23 00:32:34 2010 New Revision: 1052118 URL: http://svn.apache.org/viewvc?rev=1052118view=rev Log: IO-256 - Fix Inconsistent Synchonization on new ThreadFactory highlighted by FindBugs Modified: commons/proper/io/trunk/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java commons/proper/io/trunk/src/test/java/org/apache/commons/io/monitor/FileAlterationMonitorTestCase.java Modified: commons/proper/io/trunk/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java?rev=1052118r1=1052117r2=1052118view=diff == --- commons/proper/io/trunk/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java (original) +++ commons/proper/io/trunk/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java Thu Dec 23 00:32:34 2010 @@ -79,20 +79,11 @@ public final class FileAlterationMonitor } /** - * Return the thread factory. - * - * @return the threadFactory - */ -public ThreadFactory getThreadFactory() { -return threadFactory; -} - -/** * Set the thread factory. * * @param threadFactory the thread factory */ -public void setThreadFactory(ThreadFactory threadFactory) { +public synchronized void setThreadFactory(ThreadFactory threadFactory) { this.threadFactory = threadFactory; } Modified: commons/proper/io/trunk/src/test/java/org/apache/commons/io/monitor/FileAlterationMonitorTestCase.java URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/test/java/org/apache/commons/io/monitor/FileAlterationMonitorTestCase.java?rev=1052118r1=1052117r2=1052118view=diff == --- commons/proper/io/trunk/src/test/java/org/apache/commons/io/monitor/FileAlterationMonitorTestCase.java (original) +++ commons/proper/io/trunk/src/test/java/org/apache/commons/io/monitor/FileAlterationMonitorTestCase.java Thu Dec 23 00:32:34 2010 @@ -94,7 +94,6 @@ public class FileAlterationMonitorTestCa listener.clear(); FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer); assertEquals(Interval, interval, monitor.getInterval()); -assertNull(Thread Factory, monitor.getThreadFactory()); monitor.start(); try { @@ -145,7 +144,6 @@ public class FileAlterationMonitorTestCa FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer); monitor.setThreadFactory(Executors.defaultThreadFactory()); assertEquals(Interval, interval, monitor.getInterval()); -assertNotNull(Thread Factory, monitor.getThreadFactory()); monitor.start(); // Create a File
svn commit: r1052161 - in /commons/proper/io/trunk/src: main/java/org/apache/commons/io/input/XmlStreamReader.java test/java/org/apache/commons/io/input/XmlStreamReaderTest.java
Author: niallp Date: Thu Dec 23 03:12:09 2010 New Revision: 1052161 URL: http://svn.apache.org/viewvc?rev=1052161view=rev Log: IO-258 - Fix XmlStreamReader consumes the stream during encoding detection Modified: commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/XmlStreamReader.java commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/XmlStreamReaderTest.java Modified: commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/XmlStreamReader.java URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/XmlStreamReader.java?rev=1052161r1=1052160r2=1052161view=diff == --- commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/XmlStreamReader.java (original) +++ commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/XmlStreamReader.java Thu Dec 23 03:12:09 2010 @@ -201,8 +201,10 @@ public class XmlStreamReader extends Rea */ public XmlStreamReader(InputStream is, boolean lenient, String defaultEncoding) throws IOException { this.defaultEncoding = defaultEncoding; -this.encoding = doRawStream(is, lenient); -this.reader = new InputStreamReader(is, encoding); +BOMInputStream bom = new BOMInputStream(new BufferedInputStream(is, BUFFER_SIZE), false, BOMS); +BOMInputStream pis = new BOMInputStream(bom, true, XML_GUESS_BYTES); +this.encoding = doRawStream(bom, pis, lenient); +this.reader = new InputStreamReader(pis, encoding); } /** @@ -250,12 +252,14 @@ public class XmlStreamReader extends Rea boolean lenient = true; String contentType = conn.getContentType(); InputStream is = conn.getInputStream(); +BOMInputStream bom = new BOMInputStream(new BufferedInputStream(is, BUFFER_SIZE), false, BOMS); +BOMInputStream pis = new BOMInputStream(bom, true, XML_GUESS_BYTES); if (conn instanceof HttpURLConnection || contentType != null) { -this.encoding = doHttpStream(is, contentType, lenient); +this.encoding = doHttpStream(bom, pis, contentType, lenient); } else { -this.encoding = doRawStream(is, lenient); +this.encoding = doRawStream(bom, pis, lenient); } -this.reader = new InputStreamReader(is, encoding); +this.reader = new InputStreamReader(pis, encoding); } /** @@ -317,8 +321,10 @@ public class XmlStreamReader extends Rea public XmlStreamReader(InputStream is, String httpContentType, boolean lenient, String defaultEncoding) throws IOException { this.defaultEncoding = defaultEncoding; -this.encoding = doHttpStream(is, httpContentType, lenient); -this.reader = new InputStreamReader(is, encoding); +BOMInputStream bom = new BOMInputStream(new BufferedInputStream(is, BUFFER_SIZE), false, BOMS); +BOMInputStream pis = new BOMInputStream(bom, true, XML_GUESS_BYTES); +this.encoding = doHttpStream(bom, pis, httpContentType, lenient); +this.reader = new InputStreamReader(pis, encoding); } /** @@ -394,16 +400,15 @@ public class XmlStreamReader extends Rea /** * Process the raw stream. * - * @param is InputStream to create the reader from. + * @param bom BOMInputStream to detect byte order marks + * @param pis BOMInputStream to guess XML encoding * @param lenient indicates if the charset encoding detection should be *relaxed. * @return the encoding to be used * @throws IOException thrown if there is a problem reading the stream. */ -private String doRawStream(InputStream is, boolean lenient) +private String doRawStream(BOMInputStream bom, BOMInputStream pis, boolean lenient) throws IOException { -BOMInputStream bom = new BOMInputStream(new BufferedInputStream(is, BUFFER_SIZE), false, BOMS); -BOMInputStream pis = new BOMInputStream(bom, true, XML_GUESS_BYTES); String bomEnc = bom.getBOMCharsetName(); String xmlGuessEnc = pis.getBOMCharsetName(); String xmlEnc = getXmlProlog(pis, xmlGuessEnc); @@ -411,7 +416,7 @@ public class XmlStreamReader extends Rea return calculateRawEncoding(bomEnc, xmlGuessEnc, xmlEnc); } catch (XmlStreamReaderException ex) { if (lenient) { -return doLenientDetection(null, is, ex); +return doLenientDetection(null, ex); } else { throw ex; } @@ -421,17 +426,16 @@ public class XmlStreamReader extends Rea /** * Process a HTTP stream. * - * @param is InputStream to create the reader from. + * @param bom BOMInputStream to detect byte order marks + * @param pis BOMInputStream to guess XML encoding * @param httpContentType The HTTP content
svn commit: r1052167 - in /commons/proper/io/trunk: RELEASE-NOTES.txt build.xml pom.xml src/site/site.xml src/site/xdoc/building.xml src/site/xdoc/download_io.xml src/site/xdoc/index.xml src/site/xdoc
Author: niallp Date: Thu Dec 23 03:32:58 2010 New Revision: 1052167 URL: http://svn.apache.org/viewvc?rev=1052167view=rev Log: prepare for IO 2.0.1 release Added: commons/proper/io/trunk/src/site/xdoc/upgradeto2_0_1.xml (with props) Modified: commons/proper/io/trunk/RELEASE-NOTES.txt commons/proper/io/trunk/build.xml commons/proper/io/trunk/pom.xml commons/proper/io/trunk/src/site/site.xml commons/proper/io/trunk/src/site/xdoc/building.xml commons/proper/io/trunk/src/site/xdoc/download_io.xml commons/proper/io/trunk/src/site/xdoc/index.xml Modified: commons/proper/io/trunk/RELEASE-NOTES.txt URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/RELEASE-NOTES.txt?rev=1052167r1=1052166r2=1052167view=diff == --- commons/proper/io/trunk/RELEASE-NOTES.txt (original) +++ commons/proper/io/trunk/RELEASE-NOTES.txt Thu Dec 23 03:32:58 2010 @@ -1,7 +1,7 @@ $Id$ Commons IO Package - Version 2.0 + Version 2.0.1 Release Notes @@ -15,8 +15,8 @@ Commons IO contains utility classes, str file comparators and endian transformation classes. -Compatibility with 1.4 --- +Compatibility with 2.0 and 1.4 +-- Binary compatible - Yes Source compatible - Yes @@ -24,112 +24,21 @@ Source compatible - Yes Semantic compatible - Yes Check the bug fixes section for semantic bug fixes -Commons IO 2.0 requires a minimum of JDK 1.5 +Commons IO 2.0.1 requires a minimum of JDK 1.5 (Commons IO 1.4 had a minimum of JDK 1.3) -Deprecations from 1.4 +Enhancements from 2.0 - -- IOUtils - - write(StringBuffer, Writer) in favour of write(CharSequence, Writer) - - write(StringBuffer, OutputStream) in favour of write(CharSequence, OutputStream) - - write(StringBuffer, OutputStream, String) in favour of write(CharSequence, OutputStream, String) - -- FileFilterUtils - - andFileFilter(IOFileFilter, IOFileFilter) in favour of and(IOFileFilter...) - - orFileFilter(IOFileFilter, IOFileFilter) in favour of or(IOFileFilter...) - - -Enhancements from 1.4 -- + * [IO-256] - Provide thread factory for FileAlternationMonitor - * [IO-140] Move minimum Java requirement from JDK 1.3 to JDK 1.5 - - use Generics - - add new CharSequence write() flavour methods to IOUtils and FileUtils - - replace StringBuffer with StringBuilder, where appropriate - - add new Reader/Writer methods to ProxyReader and ProxyWriter - - Annotate with @Override and @Deprecated - - * [IO-178] New BOMInputStream and ByteOrderMark implementations - to detect and optionally exclude an initial Byte Order mark (BOM) - * [IO-197] New BoundedInputStream (copied from from Apache JackRabbit) - * [IO-193] New Broken Input and Output streams - * [IO-132] New File Listener/Monitor facility - * [IO-158] New ReaderInputStream and WriterOutputStream implementations - * [IO-139] New StringBuilder Writer implementation - * [IO-192] New Tagged Input and Output streams - * [IO-177] New Tailer class - simple implementation of the Unix tail -f functionality - * [IO-162] New XML Stream Reader/Writer implementations (from ROME via plexus-utils) - - * [IO-142] Comparators - add facility to sort file lists/arrays - * [IO-186] Comparators - new Composite and Directory File Comparator implementations - * [IO-176] DirectoryWalker - add filterDirectoryContents() callback method for filtering directory contents - * [IO-210] FileFilter - new Magic Number FileFilter - * [IO-221] FileFilterUtils - add methods for suffix and prefix filters which take an IOCase object - * [IO-232] FileFilterUtils - add method for name filters which take an IOCase object - * [IO-229] FileFilterUtils - add varargs and() and or() methods - * [IO-198] FileFilterUtils - add ability to apply file filters to collections and arrays - * [IO-156] FilenameUtils - add normalize() and normalizeNoEndSeparator() methods which allow the separator character to be specified - * [IO-194] FileSystemUtils - add freeSpaceKb() method with no input arguments - * [IO-185] FileSystemUtils - add freeSpaceKb() methods that take a timeout parameter - fixes freeSpaceWindows() blocks - * [IO-155] FileUtils - use NIO to copy files - * [IO-168] FileUtils - add new isSymlink() method - * [IO-219] FileUtils - throw FileExistsException when moving a file or directory if the destination already exists - * [IO-234] FileUtils - add Methods for retrieving System User/Temp directories/paths - * [IO-208] FileUtils - add timeout (connection and read) support for copyURLToFile() method - * [IO-238] FileUtils - add sizeOf(File) method - * [IO-181] LineIterator now implements Iterable - * [IO-224] IOUtils - add closeQuietly(Closeable) and
svn commit: r1052168 - in /commons/proper/io/tags/commons-io-2.0.1-rc1: ./ build.xml pom.xml
Author: niallp Date: Thu Dec 23 03:42:30 2010 New Revision: 1052168 URL: http://svn.apache.org/viewvc?rev=1052168view=rev Log: Tag IO 2.0.1 RC1 Added: commons/proper/io/tags/commons-io-2.0.1-rc1/ - copied from r1052167, commons/proper/io/trunk/ Modified: commons/proper/io/tags/commons-io-2.0.1-rc1/build.xml commons/proper/io/tags/commons-io-2.0.1-rc1/pom.xml Modified: commons/proper/io/tags/commons-io-2.0.1-rc1/build.xml URL: http://svn.apache.org/viewvc/commons/proper/io/tags/commons-io-2.0.1-rc1/build.xml?rev=1052168r1=1052167r2=1052168view=diff == --- commons/proper/io/tags/commons-io-2.0.1-rc1/build.xml (original) +++ commons/proper/io/tags/commons-io-2.0.1-rc1/build.xml Thu Dec 23 03:42:30 2010 @@ -56,7 +56,7 @@ property name=component.title value=Commons IO/ !-- The current version number of this component -- - property name=component.version value=2.0.1-SNAPSHOT/ + property name=component.version value=2.0.1/ !-- The base directory for component sources -- property name=source.home value=src/main/java/ Modified: commons/proper/io/tags/commons-io-2.0.1-rc1/pom.xml URL: http://svn.apache.org/viewvc/commons/proper/io/tags/commons-io-2.0.1-rc1/pom.xml?rev=1052168r1=1052167r2=1052168view=diff == --- commons/proper/io/tags/commons-io-2.0.1-rc1/pom.xml (original) +++ commons/proper/io/tags/commons-io-2.0.1-rc1/pom.xml Thu Dec 23 03:42:30 2010 @@ -24,7 +24,7 @@ modelVersion4.0.0/modelVersion groupIdcommons-io/groupId artifactIdcommons-io/artifactId - version2.0.1-SNAPSHOT/version + version2.0.1/version nameCommons IO/name inceptionYear2002/inceptionYear
svn commit: r1052190 - /commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java
Author: simonetripodi Date: Thu Dec 23 07:34:41 2010 New Revision: 1052190 URL: http://svn.apache.org/viewvc?rev=1052190view=rev Log: _numActive is also incremented in borrowObject() method, so access to this data member needs to be protected, thanks Phil Modified: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java Modified: commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java?rev=1052190r1=1052189r2=1052190view=diff == --- commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java (original) +++ commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/StackObjectPool.java Thu Dec 23 07:34:41 2010 @@ -226,7 +226,7 @@ public class StackObjectPoolT extends * @return the number of instances currently borrowed from this pool */ @Override -public int getNumActive() { +public synchronized int getNumActive() { return _numActive; } @@ -337,7 +337,7 @@ public class StackObjectPoolT extends /** * Number of objects borrowed but not yet returned to the pool. */ -private volatile int _numActive = 0; +private int _numActive = 0; /** * Returns the {...@link PoolableObjectFactory} used by this pool to create and manage object instances.