[infinispan-commits] Infinispan SVN: r2324 - in branches/4.2.x: cachestore/cloud/src/main/java/org/infinispan/loaders/cloud and 99 other directories.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Sun Sep 5 08:05:45 EDT 2010


Author: mircea.markus
Date: 2010-09-05 08:05:39 -0400 (Sun, 05 Sep 2010)
New Revision: 2324

Added:
   branches/4.2.x/core/src/main/java/org/infinispan/loaders/modifications/ModificationsList.java
   branches/4.2.x/core/src/test/java/org/infinispan/loaders/decorators/BatchAsyncCacheStoreTest.java
   branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/locking/package-info.java
   branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/package-info.java
   branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/readlocks/package-info.java
   branches/4.2.x/query/src/test/java/org/infinispan/query/config/CacheModeTest.java
Removed:
   branches/4.2.x/core/src/main/java/org/infinispan/factories/context/
   branches/4.2.x/query/src/main/java/org/infinispan/query/config/
   branches/4.2.x/server/websocket/src/main/java/org/infinispan/websocket/
Modified:
   branches/4.2.x/cachestore/bdbje/src/main/java/org/infinispan/loaders/bdbje/PreparableTransactionRunner.java
   branches/4.2.x/cachestore/cloud/src/main/java/org/infinispan/loaders/cloud/CloudCacheStoreConfig.java
   branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/AbstractJdbcCacheStoreConfig.java
   branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/AbstractNonDelegatingJdbcCacheStoreConfig.java
   branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/DataManipulationHelper.java
   branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/DatabaseType.java
   branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/JdbcUtil.java
   branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/TableManipulation.java
   branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/connectionfactory/PooledConnectionFactory.java
   branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/connectionfactory/SimpleConnectionFactory.java
   branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStore.java
   branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStoreConfig.java
   branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStore.java
   branches/4.2.x/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/TableManipulationTest.java
   branches/4.2.x/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/binary/JdbcBinaryCacheStoreTest.java
   branches/4.2.x/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStoreTest.java
   branches/4.2.x/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStoreTest2.java
   branches/4.2.x/cachestore/jdbm/src/main/java/org/infinispan/loaders/jdbm/JdbmCacheStoreConfig.java
   branches/4.2.x/cachestore/jdbm/src/main/java/org/infinispan/loaders/jdbm/JdbmSerializer.java
   branches/4.2.x/cachestore/jdbm/src/test/java/org/infinispan/loaders/jdbm/JdbmCacheStoreFunctionalTest.java
   branches/4.2.x/cachestore/jdbm/src/test/java/org/infinispan/loaders/jdbm/JdbmCacheStoreTest.java
   branches/4.2.x/cachestore/remote/src/main/java/org/infinispan/loaders/remote/RemoteCacheStore.java
   branches/4.2.x/cachestore/remote/src/main/java/org/infinispan/loaders/remote/RemoteCacheStoreConfig.java
   branches/4.2.x/cachestore/remote/src/test/java/org/infinispan/loaders/remote/RemoteCacheStoreTest.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/RemoteCacheManager.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/ServerStatistics.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/exceptions/TransportException.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/ConfigurationProperties.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/RemoteCacheImpl.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/ServerStatisticsImpl.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/async/DefaultAsyncExecutorFactory.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/consistenthash/ConsistentHash.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/consistenthash/ConsistentHashFactory.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/consistenthash/ConsistentHashV1.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/AbstractKeyOperation.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/ContainsKeyOperation.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/GetWithVersionOperation.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/HotRodOperation.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/PingOperation.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/PutIfAbsentOperation.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/RemoveIfUnmodifiedOperation.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/ReplaceIfUnmodifiedOperation.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/RetryOnFailureOperation.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/protocol/HotRodConstants.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/protocol/HotRodOperations.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/AbstractTransport.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/TransportFactory.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/PropsKeyedObjectPoolFactory.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/RoundRobinBalancingStrategy.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/TcpTransport.java
   branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/TcpTransportFactory.java
   branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/CSAIntegrationTest.java
   branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/HitsAwareCacheManagersTest.java
   branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/HotRodIntegrationTest.java
   branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/RoundRobinBalancingIntegrationTest.java
   branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/RoundRobinBalancingStrategyTest.java
   branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/ServerRestartTest.java
   branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/WorkerThread.java
   branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/retry/AbstractRetryTest.java
   branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/retry/DistributionRetryTest.java
   branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/retry/ReplicationRetryTest.java
   branches/4.2.x/core/
   branches/4.2.x/core/src/main/java/org/infinispan/affinity/KeyAffinityService.java
   branches/4.2.x/core/src/main/java/org/infinispan/affinity/KeyAffinityServiceFactory.java
   branches/4.2.x/core/src/main/java/org/infinispan/affinity/KeyAffinityServiceImpl.java
   branches/4.2.x/core/src/main/java/org/infinispan/affinity/KeyGenerator.java
   branches/4.2.x/core/src/main/java/org/infinispan/atomic/AtomicMapLookup.java
   branches/4.2.x/core/src/main/java/org/infinispan/commands/control/LockControlCommand.java
   branches/4.2.x/core/src/main/java/org/infinispan/commands/read/EntrySetCommand.java
   branches/4.2.x/core/src/main/java/org/infinispan/commands/read/KeySetCommand.java
   branches/4.2.x/core/src/main/java/org/infinispan/commands/read/SizeCommand.java
   branches/4.2.x/core/src/main/java/org/infinispan/commands/read/ValuesCommand.java
   branches/4.2.x/core/src/main/java/org/infinispan/commands/tx/AbstractTransactionBoundaryCommand.java
   branches/4.2.x/core/src/main/java/org/infinispan/commands/tx/PrepareCommand.java
   branches/4.2.x/core/src/main/java/org/infinispan/commands/write/RemoveCommand.java
   branches/4.2.x/core/src/main/java/org/infinispan/config/Configuration.java
   branches/4.2.x/core/src/main/java/org/infinispan/config/ConfigurationValidatingVisitor.java
   branches/4.2.x/core/src/main/java/org/infinispan/config/GlobalConfiguration.java
   branches/4.2.x/core/src/main/java/org/infinispan/config/parsing/ConfigFilesConvertor.java
   branches/4.2.x/core/src/main/java/org/infinispan/container/EntryFactory.java
   branches/4.2.x/core/src/main/java/org/infinispan/container/entries/TransientCacheEntry.java
   branches/4.2.x/core/src/main/java/org/infinispan/context/InvocationContext.java
   branches/4.2.x/core/src/main/java/org/infinispan/distribution/ConsistentHashHelper.java
   branches/4.2.x/core/src/main/java/org/infinispan/distribution/DefaultConsistentHash.java
   branches/4.2.x/core/src/main/java/org/infinispan/factories/EmptyConstructorFactory.java
   branches/4.2.x/core/src/main/java/org/infinispan/factories/MarshallerFactory.java
   branches/4.2.x/core/src/main/java/org/infinispan/factories/StateTransferManagerFactory.java
   branches/4.2.x/core/src/main/java/org/infinispan/factories/TransactionManagerFactory.java
   branches/4.2.x/core/src/main/java/org/infinispan/factories/TransportFactory.java
   branches/4.2.x/core/src/main/java/org/infinispan/factories/scopes/ScopeDetector.java
   branches/4.2.x/core/src/main/java/org/infinispan/factories/scopes/Scopes.java
   branches/4.2.x/core/src/main/java/org/infinispan/interceptors/DistCacheStoreInterceptor.java
   branches/4.2.x/core/src/main/java/org/infinispan/interceptors/DistLockingInterceptor.java
   branches/4.2.x/core/src/main/java/org/infinispan/interceptors/DistributionInterceptor.java
   branches/4.2.x/core/src/main/java/org/infinispan/interceptors/InterceptorChain.java
   branches/4.2.x/core/src/main/java/org/infinispan/interceptors/PassivationInterceptor.java
   branches/4.2.x/core/src/main/java/org/infinispan/io/GridFile.java
   branches/4.2.x/core/src/main/java/org/infinispan/io/UnsignedNumeric.java
   branches/4.2.x/core/src/main/java/org/infinispan/jmx/AbstractJmxRegistration.java
   branches/4.2.x/core/src/main/java/org/infinispan/jmx/ResourceDMBean.java
   branches/4.2.x/core/src/main/java/org/infinispan/jmx/annotations/MBean.java
   branches/4.2.x/core/src/main/java/org/infinispan/loaders/AbstractCacheLoaderConfig.java
   branches/4.2.x/core/src/main/java/org/infinispan/loaders/AbstractCacheStore.java
   branches/4.2.x/core/src/main/java/org/infinispan/loaders/CacheLoaderManagerImpl.java
   branches/4.2.x/core/src/main/java/org/infinispan/loaders/cluster/ClusterCacheLoader.java
   branches/4.2.x/core/src/main/java/org/infinispan/loaders/decorators/AsyncStore.java
   branches/4.2.x/core/src/main/java/org/infinispan/loaders/decorators/AsyncStoreConfig.java
   branches/4.2.x/core/src/main/java/org/infinispan/loaders/decorators/SingletonStore.java
   branches/4.2.x/core/src/main/java/org/infinispan/loaders/modifications/Commit.java
   branches/4.2.x/core/src/main/java/org/infinispan/loaders/modifications/Modification.java
   branches/4.2.x/core/src/main/java/org/infinispan/loaders/modifications/Prepare.java
   branches/4.2.x/core/src/main/java/org/infinispan/manager/CacheContainer.java
   branches/4.2.x/core/src/main/java/org/infinispan/manager/DefaultCacheManager.java
   branches/4.2.x/core/src/main/java/org/infinispan/marshall/AbstractMarshaller.java
   branches/4.2.x/core/src/main/java/org/infinispan/marshall/AbstractStreamingMarshaller.java
   branches/4.2.x/core/src/main/java/org/infinispan/marshall/MarshalledValue.java
   branches/4.2.x/core/src/main/java/org/infinispan/marshall/StreamingMarshaller.java
   branches/4.2.x/core/src/main/java/org/infinispan/marshall/jboss/GenericJBossMarshaller.java
   branches/4.2.x/core/src/main/java/org/infinispan/marshall/jboss/JBossMarshaller.java
   branches/4.2.x/core/src/main/java/org/infinispan/remoting/ReplicationQueue.java
   branches/4.2.x/core/src/main/java/org/infinispan/remoting/transport/jgroups/CommandAwareRpcDispatcher.java
   branches/4.2.x/core/src/main/java/org/infinispan/statetransfer/StateTransferManagerImpl.java
   branches/4.2.x/core/src/main/java/org/infinispan/transaction/TransactionLog.java
   branches/4.2.x/core/src/main/java/org/infinispan/transaction/xa/CacheTransaction.java
   branches/4.2.x/core/src/main/java/org/infinispan/transaction/xa/DeadlockDetectingGlobalTransaction.java
   branches/4.2.x/core/src/main/java/org/infinispan/transaction/xa/RemoteTransaction.java
   branches/4.2.x/core/src/main/java/org/infinispan/transaction/xa/TransactionTable.java
   branches/4.2.x/core/src/main/java/org/infinispan/transaction/xa/TransactionXaAdapter.java
   branches/4.2.x/core/src/main/java/org/infinispan/util/FileLookup.java
   branches/4.2.x/core/src/main/java/org/infinispan/util/InfinispanCollections.java
   branches/4.2.x/core/src/main/java/org/infinispan/util/LegacyKeySupportSystemProperties.java
   branches/4.2.x/core/src/main/java/org/infinispan/util/Proxies.java
   branches/4.2.x/core/src/main/java/org/infinispan/util/concurrent/AbstractInProcessNotifyingFuture.java
   branches/4.2.x/core/src/main/java/org/infinispan/util/concurrent/IsolationLevel.java
   branches/4.2.x/core/src/main/java/org/infinispan/util/concurrent/locks/StripedLock.java
   branches/4.2.x/core/src/main/java/org/infinispan/util/concurrent/locks/containers/AbstractPerEntryLockContainer.java
   branches/4.2.x/core/src/main/java/org/infinispan/util/concurrent/locks/containers/AbstractStripedLockContainer.java
   branches/4.2.x/core/src/main/java/org/infinispan/util/hash/MurmurHash2.java
   branches/4.2.x/core/src/main/resources/config-samples/all.xml
   branches/4.2.x/core/src/test/java/org/infinispan/affinity/BaseFilterKeyAffinityServiceTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/affinity/FilteredKeyAffinityService.java
   branches/4.2.x/core/src/test/java/org/infinispan/affinity/LocalKeyAffinityServiceTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/api/mvcc/read_committed/CacheAPIMVCCTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/config/parsing/MinimalConfigurationParsingTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/config/parsing/XmlFileParsingTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/context/MarshalledValueContextTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/distribution/BaseDistFunctionalTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/distribution/HashFunctionComparisonTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/distribution/SyncDistImplicitLockingTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/eviction/EvictionManagerTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/invalidation/BaseInvalidationTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/jmx/RpcManagerMBeanTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/loaders/FlushingAsyncStoreTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/loaders/UnnnecessaryLoadingTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/loaders/decorators/AsyncTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/loaders/dummy/DummyInMemoryCacheStoreFunctionalTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/lock/EagerLockingDisabledTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/profiling/DeadlockDetectionPerformanceTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/replication/SyncCacheListenerTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/replication/SyncReplTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/statetransfer/StateTransferFileCacheLoaderFunctionalTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/statetransfer/StateTransferReplicationQueueTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/test/AbstractInfinispanTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/test/PerCacheExecutorThread.java
   branches/4.2.x/core/src/test/java/org/infinispan/test/TestingUtil.java
   branches/4.2.x/core/src/test/java/org/infinispan/test/fwk/SuiteResourcesAndLogTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/test/fwk/TestCacheManagerFactory.java
   branches/4.2.x/core/src/test/java/org/infinispan/tx/LargeTransactionTest.java
   branches/4.2.x/core/src/test/java/org/infinispan/tx/TransactionManagerLookupTest.java
   branches/4.2.x/core/src/test/resources/configs/named-cache-test.xml
   branches/4.2.x/core/src/test/resources/configs/no-flush.xml
   branches/4.2.x/core/src/test/resources/configs/string-property-replaced.xml
   branches/4.2.x/core/src/test/resources/log4j.xml
   branches/4.2.x/demos/ec2-ui/src/main/java/org/infinispan/ec2demo/web/CacheSearchServlet.java
   branches/4.2.x/demos/ec2-ui/src/main/java/org/infinispan/ec2demo/web/CacheServletListener.java
   branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/CacheBuilder.java
   branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/InfinispanFluDemo.java
   branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/InfluenzaDataLoader.java
   branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/InfluenzaVirusCache.java
   branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/Influenza_N_P_CR_Element.java
   branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/Influenza_Parser.java
   branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/NucleotideCache.java
   branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/Nucleotide_Protein_Element.java
   branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/Nucleotide_Protein_Parser.java
   branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/ProteinCache.java
   branches/4.2.x/demos/gridfs-webdav/src/main/java/org/infinispan/demos/gridfs/GridStore.java
   branches/4.2.x/demos/gui/src/main/java/org/infinispan/demo/InfinispanDemo.java
   branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/FileListOperations.java
   branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/InfinispanDirectory.java
   branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/locking/TransactionalLockFactory.java
   branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/readlocks/SegmentReadLocker.java
   branches/4.2.x/parent/pom.xml
   branches/4.2.x/query/src/main/java/org/infinispan/query/backend/KeyTransformationHandler.java
   branches/4.2.x/query/src/main/java/org/infinispan/query/backend/QueryHelper.java
   branches/4.2.x/query/src/main/java/org/infinispan/query/backend/QueryInterceptor.java
   branches/4.2.x/query/src/test/java/org/infinispan/query/test/AnotherGrassEater.java
   branches/4.2.x/server/rest/src/main/resources/sample_python_REST_client.py
   branches/4.2.x/server/rest/src/main/resources/sample_ruby_REST_client.rb
   branches/4.2.x/server/websocket/
   branches/4.2.x/tree/
   branches/4.2.x/tree/src/main/java/org/infinispan/tree/TreeStructureSupport.java
   branches/4.2.x/tree/src/test/java/org/infinispan/api/tree/LazyDeserializationTreeCacheTest.java
   branches/4.2.x/tree/src/test/java/org/infinispan/tx/TransactionManagerLookupTreeTest.java
Log:
merged from trunk r2274 through r2323

Modified: branches/4.2.x/cachestore/bdbje/src/main/java/org/infinispan/loaders/bdbje/PreparableTransactionRunner.java
===================================================================
--- branches/4.2.x/cachestore/bdbje/src/main/java/org/infinispan/loaders/bdbje/PreparableTransactionRunner.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/bdbje/src/main/java/org/infinispan/loaders/bdbje/PreparableTransactionRunner.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -9,7 +9,6 @@
 import com.sleepycat.je.Transaction;
 import com.sleepycat.je.TransactionConfig;
 import com.sleepycat.util.ExceptionUnwrapper;
-import org.infinispan.loaders.CacheLoaderException;
 
 /**
  * Adapted version of {@link TransactionRunner}, which allows us to prepare a transaction without committing it.<p/> The

Modified: branches/4.2.x/cachestore/cloud/src/main/java/org/infinispan/loaders/cloud/CloudCacheStoreConfig.java
===================================================================
--- branches/4.2.x/cachestore/cloud/src/main/java/org/infinispan/loaders/cloud/CloudCacheStoreConfig.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/cloud/src/main/java/org/infinispan/loaders/cloud/CloudCacheStoreConfig.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -21,7 +21,7 @@
  * <li><tt>requestTimeout</tt> - A timeout to use when communicating with the cloud storage
  * provider, in milliseconds. Defaults to 10000.</li>
  * <li><tt>lazyPurgingOnly</tt> - If enabled, then expired entries are only purged on access,
- * lazily, rather than by using the periodic eviction thread. Defaults to <tt>true</tt>.</li>
+ * lazily, rather than by using the periodic eviction thread. Defaults to <tt>false</tt>.</li>
  * <li><tt>cloudService</tt> - The cloud service to use. Supported values are <tt>s3</tt> (Amazon
  * AWS), <tt>cloudfiles</tt> (Rackspace Cloud), <tt>azureblob</tt> (Microsoft Azure), and
  * <tt>atmos</tt> (Atmos Online Storage Service).</li>
@@ -45,8 +45,7 @@
    private String proxyHost;
    private String proxyPort;
    private long requestTimeout = 10000;
-   // TODO Once ISPN-334 is closed, consider setting this to false by default.
-   private boolean lazyPurgingOnly = true;
+   private boolean lazyPurgingOnly = false;
    private String cloudService;
    private int maxConnections = 10000;
    private boolean secure = true;

Modified: branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/AbstractJdbcCacheStoreConfig.java
===================================================================
--- branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/AbstractJdbcCacheStoreConfig.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/AbstractJdbcCacheStoreConfig.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,6 +1,5 @@
 package org.infinispan.loaders.jdbc;
 
-import org.infinispan.loaders.AbstractCacheStoreConfig;
 import org.infinispan.loaders.LockSupportCacheStoreConfig;
 import org.infinispan.loaders.jdbc.connectionfactory.ConnectionFactoryConfig;
 

Modified: branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/AbstractNonDelegatingJdbcCacheStoreConfig.java
===================================================================
--- branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/AbstractNonDelegatingJdbcCacheStoreConfig.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/AbstractNonDelegatingJdbcCacheStoreConfig.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,7 +1,5 @@
 package org.infinispan.loaders.jdbc;
 
-import org.infinispan.loaders.LockSupportCacheStoreConfig;
-
 /**
  * An abstract configuration for JDBC cache stores which have support for locking.
  *

Modified: branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/DataManipulationHelper.java
===================================================================
--- branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/DataManipulationHelper.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/DataManipulationHelper.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -47,7 +47,7 @@
  */
 public abstract class DataManipulationHelper {
 
-   private static Log log = LogFactory.getLog(DataManipulationHelper.class);
+   private static final Log log = LogFactory.getLog(DataManipulationHelper.class);
 
    private ConnectionFactory connectionFactory;
    private TableManipulation tableManipulation;

Modified: branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/DatabaseType.java
===================================================================
--- branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/DatabaseType.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/DatabaseType.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,9 +1,7 @@
 package org.infinispan.loaders.jdbc;
 
-import java.util.Arrays;
-
 /**
- * Supported database dialects for the Jdbc cache stores
+ * Supported database dialects for the JDBC cache stores
  *
  * @author Manik Surtani
  * @since 4.1

Modified: branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/JdbcUtil.java
===================================================================
--- branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/JdbcUtil.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/JdbcUtil.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -35,13 +35,13 @@
 import java.sql.Statement;
 
 /**
- * Contains common methods used by jdbc CacheStores.
+ * Contains common methods used by JDBC CacheStores.
  *
  * @author Mircea.Markus at jboss.com
  */
 public class JdbcUtil {
 
-   private static Log log = LogFactory.getLog(JdbcUtil.class);
+   private static final Log log = LogFactory.getLog(JdbcUtil.class);
 
    public static void safeClose(Statement ps) {
       if (ps != null) {

Modified: branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/TableManipulation.java
===================================================================
--- branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/TableManipulation.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/TableManipulation.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -43,7 +43,7 @@
  */
 public class TableManipulation implements Cloneable {
 
-   private static Log log = LogFactory.getLog(TableManipulation.class);
+   private static final Log log = LogFactory.getLog(TableManipulation.class);
 
    public static final int DEFAULT_FETCH_SIZE = 100;
 
@@ -179,7 +179,7 @@
          statement = conn.createStatement();
          statement.executeUpdate(sql);
       } catch (SQLException e) {
-         log.error("Error while creating table", e);
+         log.error("Error while creating table; used DDL statement: '" + sql + "'", e);
          throw new CacheLoaderException(e);
       } finally {
          JdbcUtil.safeClose(statement);

Modified: branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/connectionfactory/PooledConnectionFactory.java
===================================================================
--- branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/connectionfactory/PooledConnectionFactory.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/connectionfactory/PooledConnectionFactory.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -45,7 +45,7 @@
  */
 public class PooledConnectionFactory extends ConnectionFactory {
 
-   private static Log log = LogFactory.getLog(PooledConnectionFactory.class);
+   private static final Log log = LogFactory.getLog(PooledConnectionFactory.class);
    private ComboPooledDataSource pooledDataSource;
 
    @Override

Modified: branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/connectionfactory/SimpleConnectionFactory.java
===================================================================
--- branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/connectionfactory/SimpleConnectionFactory.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/connectionfactory/SimpleConnectionFactory.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -38,7 +38,7 @@
  */
 public class SimpleConnectionFactory extends ConnectionFactory {
 
-   private static Log log = LogFactory.getLog(SimpleConnectionFactory.class);
+   private static final Log log = LogFactory.getLog(SimpleConnectionFactory.class);
 
    private String connectionUrl;
    private String userName;

Modified: branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStore.java
===================================================================
--- branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStore.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStore.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -68,7 +68,7 @@
 @CacheLoaderMetadata(configurationClass = JdbcMixedCacheStoreConfig.class)
 public class JdbcMixedCacheStore extends AbstractCacheStore {
 
-   private static Log log = LogFactory.getLog(JdbcMixedCacheStore.class);
+   private static final Log log = LogFactory.getLog(JdbcMixedCacheStore.class);
 
    private JdbcMixedCacheStoreConfig config;
    private JdbcBinaryCacheStore binaryCacheStore = new JdbcBinaryCacheStore();

Modified: branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStoreConfig.java
===================================================================
--- branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStoreConfig.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStoreConfig.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -21,7 +21,6 @@
  */
 package org.infinispan.loaders.jdbc.mixed;
 
-import org.infinispan.loaders.AbstractCacheStoreConfig;
 import org.infinispan.loaders.LockSupportCacheStoreConfig;
 import org.infinispan.loaders.jdbc.AbstractJdbcCacheStoreConfig;
 import org.infinispan.loaders.jdbc.DatabaseType;

Modified: branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStore.java
===================================================================
--- branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStore.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStore.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -22,7 +22,6 @@
 package org.infinispan.loaders.jdbc.stringbased;
 
 import org.infinispan.Cache;
-import org.infinispan.config.Configuration;
 import org.infinispan.container.entries.InternalCacheEntry;
 import org.infinispan.container.entries.InternalCacheValue;
 import org.infinispan.io.ByteBuffer;
@@ -81,7 +80,7 @@
 @CacheLoaderMetadata(configurationClass = JdbcStringBasedCacheStoreConfig.class)
 public class JdbcStringBasedCacheStore extends LockSupportCacheStore {
 
-   private static Log log = LogFactory.getLog(JdbcStringBasedCacheStore.class);
+   private static final Log log = LogFactory.getLog(JdbcStringBasedCacheStore.class);
 
    /**
     * delimits the stream for stream transfer operations

Modified: branches/4.2.x/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/TableManipulationTest.java
===================================================================
--- branches/4.2.x/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/TableManipulationTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/TableManipulationTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -79,7 +79,6 @@
          assert false : "missing config param, exception expected";
       } catch (CacheLoaderException e) {
          other.setDataColumnType("VARCHAR(255)");
-         assert true : "We do not expect a failure here";
       }
 
       other.createTable(mockConnection);
@@ -90,7 +89,6 @@
          assert false : "missing config param, exception expected";
       } catch (CacheLoaderException e) {
          other.setIdColumnName("abc");
-         assert true : "We do not expect a failure here";
       }
 
       other.createTable(mockConnection);
@@ -101,7 +99,6 @@
          assert false : "missing config param, exception expected";
       } catch (CacheLoaderException e) {
          other.setDataColumnName("abc");
-         assert true : "We do not expect a failure here";
       }
 
       other.createTable(mockConnection);
@@ -112,7 +109,6 @@
          assert false : "missing config param, exception expected";
       } catch (CacheLoaderException e) {
          other.setDataColumnName("abc");
-         assert true : "We do not expect a failure here";
       }
 
       other.createTable(mockConnection);
@@ -123,7 +119,6 @@
          assert false : "missing config param, exception expected";
       } catch (CacheLoaderException e) {
          other.setDataColumnName("timestamp");
-         assert true : "We do not expect a failure here";
       }
 
       other.setTimestampColumnType(null);
@@ -132,7 +127,6 @@
          assert false : "missing config param, exception expected";
       } catch (CacheLoaderException e) {
          other.setIdColumnType("BIGINT");
-         assert true : "We do not expect a failure here";
       }
    }
 

Modified: branches/4.2.x/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/binary/JdbcBinaryCacheStoreTest.java
===================================================================
--- branches/4.2.x/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/binary/JdbcBinaryCacheStoreTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/binary/JdbcBinaryCacheStoreTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -37,7 +37,6 @@
 import org.testng.annotations.Test;
 
 import java.io.Serializable;
-import java.util.concurrent.TimeUnit;
 
 /**
  * Tester class for {@link JdbcBinaryCacheStore}

Modified: branches/4.2.x/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStoreTest.java
===================================================================
--- branches/4.2.x/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStoreTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStoreTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -31,7 +31,6 @@
 import org.infinispan.loaders.jdbc.TableManipulation;
 import org.infinispan.loaders.jdbc.connectionfactory.ConnectionFactory;
 import org.infinispan.loaders.jdbc.connectionfactory.ConnectionFactoryConfig;
-import org.infinispan.loaders.jdbc.stringbased.DefaultKey2StringMapper;
 import org.infinispan.loaders.jdbc.stringbased.DefaultTwoWayKey2StringMapper;
 import org.infinispan.loaders.jdbc.stringbased.Person;
 import org.infinispan.marshall.StreamingMarshaller;

Modified: branches/4.2.x/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStoreTest2.java
===================================================================
--- branches/4.2.x/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStoreTest2.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStoreTest2.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -83,7 +83,7 @@
    }
 
    /**
-    * When trying to perists an unsupported object an exception is expected.
+    * When trying to persist an unsupported object an exception is expected.
     */
    public void persistUnsupportedObject() throws Exception {
       try {

Modified: branches/4.2.x/cachestore/jdbm/src/main/java/org/infinispan/loaders/jdbm/JdbmCacheStoreConfig.java
===================================================================
--- branches/4.2.x/cachestore/jdbm/src/main/java/org/infinispan/loaders/jdbm/JdbmCacheStoreConfig.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/jdbm/src/main/java/org/infinispan/loaders/jdbm/JdbmCacheStoreConfig.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -2,7 +2,6 @@
 
 import java.util.Comparator;
 
-import org.infinispan.CacheException;
 import org.infinispan.config.Dynamic;
 import org.infinispan.loaders.LockSupportCacheStoreConfig;
 import org.infinispan.util.Util;

Modified: branches/4.2.x/cachestore/jdbm/src/main/java/org/infinispan/loaders/jdbm/JdbmSerializer.java
===================================================================
--- branches/4.2.x/cachestore/jdbm/src/main/java/org/infinispan/loaders/jdbm/JdbmSerializer.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/jdbm/src/main/java/org/infinispan/loaders/jdbm/JdbmSerializer.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -8,7 +8,7 @@
 
 /**
  * Uses the configured (runtime) {@link org.infinispan.marshall.StreamingMarshaller} of the cache.
- * This Serializer is thus not really serializiable.
+ * This Serializer is thus not really serializable.
  * 
  * @author Elias Ross
  */

Modified: branches/4.2.x/cachestore/jdbm/src/test/java/org/infinispan/loaders/jdbm/JdbmCacheStoreFunctionalTest.java
===================================================================
--- branches/4.2.x/cachestore/jdbm/src/test/java/org/infinispan/loaders/jdbm/JdbmCacheStoreFunctionalTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/jdbm/src/test/java/org/infinispan/loaders/jdbm/JdbmCacheStoreFunctionalTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -28,7 +28,6 @@
 import org.infinispan.test.TestingUtil;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeTest;
 import org.testng.annotations.Optional;
 import org.testng.annotations.Parameters;
 import org.testng.annotations.Test;

Modified: branches/4.2.x/cachestore/jdbm/src/test/java/org/infinispan/loaders/jdbm/JdbmCacheStoreTest.java
===================================================================
--- branches/4.2.x/cachestore/jdbm/src/test/java/org/infinispan/loaders/jdbm/JdbmCacheStoreTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/jdbm/src/test/java/org/infinispan/loaders/jdbm/JdbmCacheStoreTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -13,7 +13,6 @@
 import org.infinispan.test.TestingUtil;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeTest;
 import org.testng.annotations.Optional;
 import org.testng.annotations.Parameters;
 import org.testng.annotations.Test;

Modified: branches/4.2.x/cachestore/remote/src/main/java/org/infinispan/loaders/remote/RemoteCacheStore.java
===================================================================
--- branches/4.2.x/cachestore/remote/src/main/java/org/infinispan/loaders/remote/RemoteCacheStore.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/remote/src/main/java/org/infinispan/loaders/remote/RemoteCacheStore.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -5,7 +5,6 @@
 import org.infinispan.client.hotrod.RemoteCache;
 import org.infinispan.client.hotrod.RemoteCacheManager;
 import org.infinispan.container.entries.InternalCacheEntry;
-import org.infinispan.container.entries.InternalEntryFactory;
 import org.infinispan.loaders.AbstractCacheStore;
 import org.infinispan.loaders.CacheLoaderConfig;
 import org.infinispan.loaders.CacheLoaderException;
@@ -42,7 +41,7 @@
 @CacheLoaderMetadata(configurationClass = RemoteCacheStoreConfig.class)
 public class RemoteCacheStore extends AbstractCacheStore {
 
-   private static Log log = LogFactory.getLog(RemoteCacheStore.class);
+   private static final Log log = LogFactory.getLog(RemoteCacheStore.class);
 
    private volatile RemoteCacheStoreConfig config;
    private volatile RemoteCacheManager remoteCacheManager;

Modified: branches/4.2.x/cachestore/remote/src/main/java/org/infinispan/loaders/remote/RemoteCacheStoreConfig.java
===================================================================
--- branches/4.2.x/cachestore/remote/src/main/java/org/infinispan/loaders/remote/RemoteCacheStoreConfig.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/remote/src/main/java/org/infinispan/loaders/remote/RemoteCacheStoreConfig.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -14,8 +14,8 @@
  * <p/>
  * Parameters:
  * <ul>
- * <li>HotRodClientPropertiesFile-the file that contains the configuration of hotrod client. See <a href="http://community.jboss.org/wiki/JavaHotRodclient">Hotrod Java Client</a>
- *     for more details on the hotrod client. 
+ * <li>HotRodClientPropertiesFile-the file that contains the configuration of Hot Rod client. See <a href="http://community.jboss.org/wiki/JavaHotRodclient">Hotrod Java Client</a>
+ *     for more details on the Hot Rod client. 
  * <li>remoteCacheName-the name of the remote cache in the remote infinispan cluster, to which to connect to</li>
  * <li>UseDefaultRemoteCache-if set to true, the default remote cache will be used, as obtained by {@link org.infinispan.manager.CacheContainer#getCache()}.
  * </ul>

Modified: branches/4.2.x/cachestore/remote/src/test/java/org/infinispan/loaders/remote/RemoteCacheStoreTest.java
===================================================================
--- branches/4.2.x/cachestore/remote/src/test/java/org/infinispan/loaders/remote/RemoteCacheStoreTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/cachestore/remote/src/test/java/org/infinispan/loaders/remote/RemoteCacheStoreTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -12,7 +12,6 @@
 import org.testng.annotations.AfterTest;
 import org.testng.annotations.Test;
 
-import java.io.IOException;
 import java.util.Properties;
 
 /**

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/RemoteCacheManager.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/RemoteCacheManager.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/RemoteCacheManager.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -2,7 +2,6 @@
 
 import org.infinispan.client.hotrod.exceptions.HotRodClientException;
 import org.infinispan.client.hotrod.impl.ConfigurationProperties;
-import org.infinispan.client.hotrod.impl.async.DefaultAsyncExecutorFactory;
 import org.infinispan.client.hotrod.impl.operations.OperationsFactory;
 import org.infinispan.client.hotrod.impl.RemoteCacheImpl;
 import org.infinispan.client.hotrod.impl.transport.TransportFactory;
@@ -28,12 +27,12 @@
 /**
  * Factory for {@link org.infinispan.client.hotrod.RemoteCache}s. <p/> <p> <b>Lifecycle:</b> </p> In order to be able to
  * use an {@link org.infinispan.client.hotrod.RemoteCache}, the {@link org.infinispan.client.hotrod.RemoteCacheManager}
- * must be started first: beside other things, this instantiates connections to Hotrod server(s). Starting the {@link
+ * must be started first: beside other things, this instantiates connections to Hot Rod server(s). Starting the {@link
  * org.infinispan.client.hotrod.RemoteCacheManager} can be done either at creation by passing start==true to constructor
  * or by using a constructor that does that for you (see C-tor documentation); or after construction by calling {@link
  * #start()}.
  * <p/>
- * This is an "expensive" object, as it manages a set of persistent TCP connections to the hotrod servers. It is recommended
+ * This is an "expensive" object, as it manages a set of persistent TCP connections to the Hot Rod servers. It is recommended
  * to only have one instance of this per JVM, and to cache it between calls to the server (i.e. remoteCache
  * operations).
  * <p/>
@@ -47,9 +46,9 @@
  * <p/>
  * Below is the list of supported configuration elements:
  * <ul>
- * <li><tt>infinispan.client.hotrod.request_balancing_strategy</tt>, default = org.infinispan.client.hotrod.impl.transport.tcp.RoundRobinBalancingStrategy.  For replicated (vs distributed) hotrod server clusters, the client balances requests to the
+ * <li><tt>infinispan.client.hotrod.request_balancing_strategy</tt>, default = org.infinispan.client.hotrod.impl.transport.tcp.RoundRobinBalancingStrategy.  For replicated (vs distributed) Hot Rod server clusters, the client balances requests to the
  * servers according to this strategy.</li>
- * <li><tt>infinispan.client.hotrod.server_list</tt>, default = 127.0.0.1:11311.  This is the initial list of hotrod servers to connect to, specified in the following format: host1:port1;host2:port2...
+ * <li><tt>infinispan.client.hotrod.server_list</tt>, default = 127.0.0.1:11311.  This is the initial list of Hot Rod servers to connect to, specified in the following format: host1:port1;host2:port2...
  * At least one host:port must be specified.</li>
  * <li><tt>infinispan.client.hotrod.force_return_values</tt>, default = false.  Whether or not to implicitly {@link org.infinispan.client.hotrod.Flag#FORCE_RETURN_VALUE} for all calls.</li>
  * <li><tt>infinispan.client.hotrod.tcp_no_delay</tt>, default = true.  Affects TCP NODELAY on the TCP stack.</li>
@@ -84,7 +83,7 @@
  * <ul>
  * <li> <tt>0</tt> - an exception will be thrown to the calling user</li>
  * <li> <tt>1</tt> - the caller will block (invoke waits until a new or idle connections is available.
- * <li> <tt>2</tt> - a new persistent connection will be created and and returned (essentially making maxActive meaningless.) </li>
+ * <li> <tt>2</tt> - a new persistent connection will be created and returned (essentially making maxActive meaningless.) </li>
  * </ul>
  * The default whenExhaustedAction setting is 1.
  * </li>
@@ -120,7 +119,7 @@
  */
 public class RemoteCacheManager implements CacheContainer {
 
-   private static Log log = LogFactory.getLog(RemoteCacheManager.class);
+   private static final Log log = LogFactory.getLog(RemoteCacheManager.class);
 
    public static final String HOTROD_CLIENT_PROPERTIES = "hotrod-client.properties";
 
@@ -200,7 +199,7 @@
    }
 
    /**
-    * Creates a remote cache manager aware of the hotrod server listening at host:port.
+    * Creates a remote cache manager aware of the Hot Rod server listening at host:port.
     *
     * @param start weather or not to start the RemoteCacheManager.
     */

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/ServerStatistics.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/ServerStatistics.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/ServerStatistics.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -3,7 +3,7 @@
 import java.util.Map;
 
 /**
- * Defines the possible list of statistics defined by the hotrod server.
+ * Defines the possible list of statistics defined by the Hot Rod server.
  * Can be obtained through {@link RemoteCache#stats()}
  *
  * @author Mircea.Markus at jboss.com

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/exceptions/TransportException.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/exceptions/TransportException.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/exceptions/TransportException.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,7 +1,7 @@
 package org.infinispan.client.hotrod.exceptions;
 
 /**
- * Indicates a communication exception with the hotrod server: e.g. TCP connection is broken while reading a response
+ * Indicates a communication exception with the Hot Rod server: e.g. TCP connection is broken while reading a response
  * from the server.
  *
  * @author Mircea.Markus at jboss.com

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/ConfigurationProperties.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/ConfigurationProperties.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/ConfigurationProperties.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -9,13 +9,11 @@
 import java.net.InetSocketAddress;
 import java.util.Collection;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Properties;
 import java.util.Set;
-import java.util.StringTokenizer;
 
 /**
- * Encpasulate all config properties here
+ * Encapsulate all config properties here
  *
  * @author Manik Surtani
  * @version 4.1

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/RemoteCacheImpl.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/RemoteCacheImpl.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/RemoteCacheImpl.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -30,7 +30,7 @@
  */
 public class RemoteCacheImpl<K, V> extends RemoteCacheSupport<K, V> {
 
-   private static Log log = LogFactory.getLog(RemoteCacheImpl.class);
+   private static final Log log = LogFactory.getLog(RemoteCacheImpl.class);
 
    private Marshaller marshaller;
    private final String name;

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/ServerStatisticsImpl.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/ServerStatisticsImpl.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/ServerStatisticsImpl.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -4,9 +4,7 @@
 
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Map;
-import java.util.Set;
 
 /**
  * @author Mircea.Markus at jboss.com

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/async/DefaultAsyncExecutorFactory.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/async/DefaultAsyncExecutorFactory.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/async/DefaultAsyncExecutorFactory.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,6 +1,5 @@
 package org.infinispan.client.hotrod.impl.async;
 
-import com.sun.corba.se.impl.orb.ORBConfiguratorImpl;
 import org.infinispan.client.hotrod.impl.ConfigurationProperties;
 import org.infinispan.executors.ExecutorFactory;
 import org.infinispan.util.TypedProperties;

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/consistenthash/ConsistentHash.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/consistenthash/ConsistentHash.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/consistenthash/ConsistentHash.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -2,7 +2,6 @@
 
 import java.net.InetSocketAddress;
 import java.util.LinkedHashMap;
-import java.util.Map;
 
 /**
  * Abstraction for the used consistent hash.

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/consistenthash/ConsistentHashFactory.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/consistenthash/ConsistentHashFactory.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/consistenthash/ConsistentHashFactory.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -9,7 +9,6 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.Properties;
 
 import static org.infinispan.client.hotrod.impl.ConfigurationProperties.HASH_FUNCTION_PREFIX;
 
@@ -29,7 +28,7 @@
  */
 public class ConsistentHashFactory {
 
-   private static Log log = LogFactory.getLog(ConsistentHashFactory.class);
+   private static final Log log = LogFactory.getLog(ConsistentHashFactory.class);
 
    private final Map<Integer, String> version2ConsistentHash = new HashMap<Integer, String>();
 

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/consistenthash/ConsistentHashV1.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/consistenthash/ConsistentHashV1.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/consistenthash/ConsistentHashV1.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -18,7 +18,7 @@
  */
 public class ConsistentHashV1 implements ConsistentHash {
 
-   private static Log log = LogFactory.getLog(ConsistentHashV1.class);
+   private static final Log log = LogFactory.getLog(ConsistentHashV1.class);
    
    private final SortedMap<Integer, InetSocketAddress> positions = new TreeMap<Integer, InetSocketAddress>();
 

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/AbstractKeyOperation.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/AbstractKeyOperation.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/AbstractKeyOperation.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -20,7 +20,7 @@
 @Immutable
 public abstract class AbstractKeyOperation extends RetryOnFailureOperation {
 
-   private static Log log = LogFactory.getLog(AbstractKeyOperation.class);
+   private static final Log log = LogFactory.getLog(AbstractKeyOperation.class);
 
    protected final byte[] key;
 

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/ContainsKeyOperation.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/ContainsKeyOperation.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/ContainsKeyOperation.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -8,7 +8,7 @@
 import java.util.concurrent.atomic.AtomicInteger;
 
 /**
- * Implemets "containsKey" operation as described in <a href="http://community.jboss.org/wiki/HotRodProtocol">Hot Rod protocol specification</a>.
+ * Implements "containsKey" operation as described in <a href="http://community.jboss.org/wiki/HotRodProtocol">Hot Rod protocol specification</a>.
  *
  * @author Mircea.Markus at jboss.com
  * @since 4.1

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/GetWithVersionOperation.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/GetWithVersionOperation.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/GetWithVersionOperation.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -20,7 +20,7 @@
 @Immutable
 public class GetWithVersionOperation extends AbstractKeyOperation {
 
-   private static Log log = LogFactory.getLog(GetWithVersionOperation.class);
+   private static final Log log = LogFactory.getLog(GetWithVersionOperation.class);
 
    public GetWithVersionOperation(TransportFactory transportFactory, byte[] key, byte[] cacheName,
                                   AtomicInteger topologyId, Flag[] flags) {

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/HotRodOperation.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/HotRodOperation.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/HotRodOperation.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -16,7 +16,7 @@
 import java.util.concurrent.atomic.AtomicLong;
 
 /**
- * Generic hotrod operation. It is aware of {@link org.infinispan.client.hotrod.Flag}s and it is targeted against a
+ * Generic Hot Rod operation. It is aware of {@link org.infinispan.client.hotrod.Flag}s and it is targeted against a
  * cache name. This base class encapsulates the knowledge of writing and reading a header, as described in the
  * <a href="http://community.jboss.org/wiki/HotRodProtocol">Hot Rod protocol specification</a>
  *
@@ -28,7 +28,7 @@
 
    static final AtomicLong MSG_ID = new AtomicLong();
 
-   private static Log log = LogFactory.getLog(HotRodOperation.class);
+   private static final Log log = LogFactory.getLog(HotRodOperation.class);
 
    protected final Flag[] flags;
 

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/PingOperation.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/PingOperation.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/PingOperation.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -18,7 +18,7 @@
 @Immutable
 public class PingOperation extends HotRodOperation {
 
-   private static Log log = LogFactory.getLog(PingOperation.class);
+   private static final Log log = LogFactory.getLog(PingOperation.class);
 
    private final Transport transport;
 

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/PutIfAbsentOperation.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/PutIfAbsentOperation.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/PutIfAbsentOperation.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -20,7 +20,7 @@
 @Immutable
 public class PutIfAbsentOperation extends AbstractKeyValueOperation {
 
-   private static Log log = LogFactory.getLog(PutIfAbsentOperation.class);
+   private static final Log log = LogFactory.getLog(PutIfAbsentOperation.class);
 
    public PutIfAbsentOperation(TransportFactory transportFactory, byte[] key, byte[] cacheName, AtomicInteger topologyId,
                                Flag[] flags, byte[] value, int lifespan, int maxIdle) {

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/RemoveIfUnmodifiedOperation.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/RemoveIfUnmodifiedOperation.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/RemoveIfUnmodifiedOperation.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -2,7 +2,6 @@
 
 import net.jcip.annotations.Immutable;
 import org.infinispan.client.hotrod.Flag;
-import org.infinispan.client.hotrod.impl.VersionedOperationResponse;
 import org.infinispan.client.hotrod.impl.transport.Transport;
 import org.infinispan.client.hotrod.impl.transport.TransportFactory;
 

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/ReplaceIfUnmodifiedOperation.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/ReplaceIfUnmodifiedOperation.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/ReplaceIfUnmodifiedOperation.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,7 +1,6 @@
 package org.infinispan.client.hotrod.impl.operations;
 
 import org.infinispan.client.hotrod.Flag;
-import org.infinispan.client.hotrod.impl.VersionedOperationResponse;
 import org.infinispan.client.hotrod.impl.transport.Transport;
 import org.infinispan.client.hotrod.impl.transport.TransportFactory;
 

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/RetryOnFailureOperation.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/RetryOnFailureOperation.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/operations/RetryOnFailureOperation.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -20,7 +20,7 @@
 @Immutable
 public abstract class RetryOnFailureOperation extends HotRodOperation {
 
-   private static Log log = LogFactory.getLog(RetryOnFailureOperation.class);
+   private static final Log log = LogFactory.getLog(RetryOnFailureOperation.class);
 
    protected final TransportFactory transportFactory;
 

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/protocol/HotRodConstants.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/protocol/HotRodConstants.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/protocol/HotRodConstants.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -3,7 +3,7 @@
 import java.nio.charset.Charset;
 
 /**
- * Defines constants defined by Hotrod specifications.
+ * Defines constants defined by Hot Rod specifications.
  *
  * @author Mircea.Markus at jboss.com
  * @since 4.1

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/protocol/HotRodOperations.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/protocol/HotRodOperations.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/protocol/HotRodOperations.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -8,7 +8,7 @@
 import java.util.Map;
 
 /**
- * Defines the hotrod operations as described in the protocol spec: http://community.jboss.org/wiki/HotRodProtocol
+ * Defines the Hot Rod operations as described in the protocol spec: http://community.jboss.org/wiki/HotRodProtocol
  *
  * @author Mircea.Markus at jboss.com
  * @since 4.1

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/AbstractTransport.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/AbstractTransport.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/AbstractTransport.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -12,7 +12,7 @@
  */
 public abstract class AbstractTransport implements Transport {
 
-   private static Log log = LogFactory.getLog(AbstractTransport.class);
+   private static final Log log = LogFactory.getLog(AbstractTransport.class);
 
    private final TransportFactory transportFactory;
 

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/TransportFactory.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/TransportFactory.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/TransportFactory.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -5,8 +5,6 @@
 import java.net.InetSocketAddress;
 import java.util.Collection;
 import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Properties;
 import java.util.concurrent.atomic.AtomicInteger;
 
 /**

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/PropsKeyedObjectPoolFactory.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/PropsKeyedObjectPoolFactory.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/PropsKeyedObjectPoolFactory.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -15,7 +15,7 @@
 public class PropsKeyedObjectPoolFactory extends GenericKeyedObjectPoolFactory {
 
 
-   private static Log log = LogFactory.getLog(PropsKeyedObjectPoolFactory.class);
+   private static final Log log = LogFactory.getLog(PropsKeyedObjectPoolFactory.class);
 
    public PropsKeyedObjectPoolFactory(KeyedPoolableObjectFactory factory, Properties props) {
       super(factory);

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/RoundRobinBalancingStrategy.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/RoundRobinBalancingStrategy.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/RoundRobinBalancingStrategy.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -21,7 +21,7 @@
 @ThreadSafe
 public class RoundRobinBalancingStrategy implements RequestBalancingStrategy {
 
-   private static Log log = LogFactory.getLog(RoundRobinBalancingStrategy.class);
+   private static final Log log = LogFactory.getLog(RoundRobinBalancingStrategy.class);
 
    private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
    private final Lock readLock = readWriteLock.readLock();

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/TcpTransport.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/TcpTransport.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/TcpTransport.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -4,7 +4,6 @@
 import org.infinispan.client.hotrod.impl.transport.AbstractTransport;
 import org.infinispan.client.hotrod.exceptions.TransportException;
 import org.infinispan.client.hotrod.impl.transport.TransportFactory;
-import org.infinispan.io.UnsignedNumeric;
 import org.infinispan.util.logging.Log;
 import org.infinispan.util.logging.LogFactory;
 
@@ -28,7 +27,7 @@
    //needed for debugging
    private static AtomicLong ID_COUNTER = new AtomicLong(0);
 
-   private static Log log = LogFactory.getLog(TcpTransport.class);
+   private static final Log log = LogFactory.getLog(TcpTransport.class);
    private static final boolean trace = log.isTraceEnabled();
 
    private final Socket socket;

Modified: branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/TcpTransportFactory.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/TcpTransportFactory.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/impl/transport/tcp/TcpTransportFactory.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -17,7 +17,6 @@
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
-import java.util.Properties;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicInteger;
 

Modified: branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/CSAIntegrationTest.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/CSAIntegrationTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/CSAIntegrationTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -21,9 +21,6 @@
 import org.testng.annotations.BeforeTest;
 import org.testng.annotations.Test;
 
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.ObjectOutputStream;
 import java.net.InetSocketAddress;
 import java.util.ArrayList;
 import java.util.List;
@@ -47,7 +44,7 @@
    private RemoteCache<Object, Object> remoteCache;
    private TcpTransportFactory tcpConnectionFactory;
 
-   private static Log log = LogFactory.getLog(CSAIntegrationTest.class);
+   private static final Log log = LogFactory.getLog(CSAIntegrationTest.class);
 
    private Marshaller m;
 

Modified: branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/HitsAwareCacheManagersTest.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/HitsAwareCacheManagersTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/HitsAwareCacheManagersTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -3,7 +3,6 @@
 import org.infinispan.Cache;
 import org.infinispan.commands.VisitableCommand;
 import org.infinispan.context.InvocationContext;
-import org.infinispan.interceptors.CacheMgmtInterceptor;
 import org.infinispan.interceptors.base.CommandInterceptor;
 import org.infinispan.manager.CacheContainer;
 import org.infinispan.manager.EmbeddedCacheManager;

Modified: branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/HotRodIntegrationTest.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/HotRodIntegrationTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/HotRodIntegrationTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -30,7 +30,7 @@
 @Test (testName = "client.hotrod.HotRodClientIntegrationTest", groups = "functional" )
 public class HotRodIntegrationTest extends SingleCacheManagerTest {
 
-   private static Log log = LogFactory.getLog(HotRodIntegrationTest.class);
+   private static final Log log = LogFactory.getLog(HotRodIntegrationTest.class);
 
    private static final String CACHE_NAME = "replSync";
    private Cache cache;

Modified: branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/RoundRobinBalancingIntegrationTest.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/RoundRobinBalancingIntegrationTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/RoundRobinBalancingIntegrationTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -26,7 +26,7 @@
 @Test(testName = "client.hotrod.RoundRobinBalancingTest")
 public class RoundRobinBalancingIntegrationTest extends MultipleCacheManagersTest {
 
-   private static Log log = LogFactory.getLog(RoundRobinBalancingIntegrationTest.class);
+   private static final Log log = LogFactory.getLog(RoundRobinBalancingIntegrationTest.class);
 
    Cache c1;
    Cache c2;

Modified: branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/RoundRobinBalancingStrategyTest.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/RoundRobinBalancingStrategyTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/RoundRobinBalancingStrategyTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -5,7 +5,6 @@
 import org.testng.annotations.Test;
 
 import java.net.InetSocketAddress;
-import java.net.SocketAddress;
 import java.util.ArrayList;
 import java.util.List;
 

Modified: branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/ServerRestartTest.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/ServerRestartTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/ServerRestartTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -9,8 +9,6 @@
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.Test;
 
-import java.util.HashMap;
-import java.util.Map;
 import java.util.Properties;
 
 /**
@@ -20,7 +18,7 @@
 @Test
 public class ServerRestartTest extends SingleCacheManagerTest {
 
-   private static Log log = LogFactory.getLog(HotRodIntegrationTest.class);
+   private static final Log log = LogFactory.getLog(HotRodIntegrationTest.class);
 
    RemoteCache defaultRemote;
    private RemoteCacheManager remoteCacheManager;

Modified: branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/WorkerThread.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/WorkerThread.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/WorkerThread.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -16,7 +16,7 @@
 
    private static final AtomicInteger WORKER_INDEX = new AtomicInteger();
 
-   private static Log log = LogFactory.getLog(WorkerThread.class);
+   private static final Log log = LogFactory.getLog(WorkerThread.class);
 
    public static final String NULL = "_null_";
    public static final String PUT_SYNC = "_put_sync_";

Modified: branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/retry/AbstractRetryTest.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/retry/AbstractRetryTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/retry/AbstractRetryTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,7 +1,6 @@
 package org.infinispan.client.hotrod.retry;
 
 import org.infinispan.client.hotrod.HitsAwareCacheManagersTest;
-import org.infinispan.client.hotrod.RemoteCache;
 import org.infinispan.client.hotrod.RemoteCacheManager;
 import org.infinispan.client.hotrod.TestHelper;
 import org.infinispan.client.hotrod.impl.RemoteCacheImpl;

Modified: branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/retry/DistributionRetryTest.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/retry/DistributionRetryTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/retry/DistributionRetryTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -125,7 +125,7 @@
       }
       
 
-      log.info("About to stop hotrod server 2");
+      log.info("About to stop Hot Rod server 2");
       hotRodServer2.stop();
 
 

Modified: branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/retry/ReplicationRetryTest.java
===================================================================
--- branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/retry/ReplicationRetryTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/retry/ReplicationRetryTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,26 +1,15 @@
 package org.infinispan.client.hotrod.retry;
 
-import org.infinispan.client.hotrod.HitsAwareCacheManagersTest;
-import org.infinispan.client.hotrod.RemoteCache;
-import org.infinispan.client.hotrod.RemoteCacheManager;
-import org.infinispan.client.hotrod.TestHelper;
+import static org.testng.Assert.assertEquals;
+
+import java.net.InetSocketAddress;
+import java.util.Map;
+
 import org.infinispan.client.hotrod.VersionedValue;
-import org.infinispan.client.hotrod.impl.transport.tcp.RoundRobinBalancingStrategy;
-import org.infinispan.client.hotrod.impl.transport.tcp.TcpTransportFactory;
 import org.infinispan.config.Configuration;
-import org.infinispan.lifecycle.ComponentStatus;
-import org.infinispan.manager.CacheContainer;
 import org.infinispan.server.hotrod.HotRodServer;
-import org.infinispan.test.TestingUtil;
-import org.infinispan.test.fwk.TestCacheManagerFactory;
 import org.testng.annotations.Test;
 
-import java.net.InetSocketAddress;
-import java.util.Map;
-import java.util.Properties;
-
-import static org.testng.Assert.assertEquals;
-
 /**
  * @author Mircea.Markus at jboss.com
  * @since 4.1


Property changes on: branches/4.2.x/core
___________________________________________________________________
Name: svn:ignore
   - target
.settings
eclipse-output
test-output
output
.classpath
.project
temp-testng-customsuite.xml
Infinispan-FileCacheStore
*.iml
*.log

   + target
.settings
eclipse-output
test-output
output
.classpath
.project
temp-testng-customsuite.xml
Infinispan-FileCacheStore
*.iml
*.log
PutObjectStoreDirHere


Modified: branches/4.2.x/core/src/main/java/org/infinispan/affinity/KeyAffinityService.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/affinity/KeyAffinityService.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/affinity/KeyAffinityService.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -3,8 +3,6 @@
 import org.infinispan.lifecycle.Lifecycle;
 import org.infinispan.remoting.transport.Address;
 
-import java.util.concurrent.Executor;
-
 /**
  * Defines a service that generates keys to be mapped to specific nodes in a distributed(vs. replicated) cluster.
  * The service is instantiated through through one of the factory methods from {@link org.infinispan.affinity.KeyAffinityServiceFactory}.

Modified: branches/4.2.x/core/src/main/java/org/infinispan/affinity/KeyAffinityServiceFactory.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/affinity/KeyAffinityServiceFactory.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/affinity/KeyAffinityServiceFactory.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,15 +1,11 @@
 package org.infinispan.affinity;
 
 import org.infinispan.Cache;
-import org.infinispan.executors.ExecutorFactory;
 import org.infinispan.remoting.transport.Address;
 
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Properties;
 import java.util.concurrent.Executor;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
 
 /**
  * Factory for {@link org.infinispan.affinity.KeyAffinityService}.

Modified: branches/4.2.x/core/src/main/java/org/infinispan/affinity/KeyAffinityServiceImpl.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/affinity/KeyAffinityServiceImpl.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/affinity/KeyAffinityServiceImpl.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -38,7 +38,7 @@
 
    private final float THRESHOLD = 0.5f;
    
-   private static Log log = LogFactory.getLog(KeyAffinityServiceImpl.class);
+   private static final Log log = LogFactory.getLog(KeyAffinityServiceImpl.class);
 
    private final Set<Address> filter;
 

Modified: branches/4.2.x/core/src/main/java/org/infinispan/affinity/KeyGenerator.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/affinity/KeyGenerator.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/affinity/KeyGenerator.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,7 +1,5 @@
 package org.infinispan.affinity;
 
-import java.io.IOException;
-
 /**
  * Used for generating keys; used by {@link org.infinispan.affinity.KeyAffinityService} to generate the affinity keys.
  * It offers the possibility to generate keys in a particular format.

Modified: branches/4.2.x/core/src/main/java/org/infinispan/atomic/AtomicMapLookup.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/atomic/AtomicMapLookup.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/atomic/AtomicMapLookup.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,7 +1,6 @@
 package org.infinispan.atomic;
 
 import org.infinispan.Cache;
-import org.infinispan.util.Immutables;
 
 import java.util.Collections;
 import java.util.Map;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/commands/control/LockControlCommand.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/commands/control/LockControlCommand.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/commands/control/LockControlCommand.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -45,7 +45,6 @@
  * For more details refer to: https://jira.jboss.org/jira/browse/ISPN-70 https://jira.jboss.org/jira/browse/ISPN-48
  *
  * @author Vladimir Blagojevic (<a href="mailto:vblagoje at redhat.com">vblagoje at redhat.com</a>)
- * @param
  * @since 4.0
  */
 @Marshallable(externalizer = ReplicableCommandExternalizer.class, id = Ids.LOCK_CONTROL_COMMAND)

Modified: branches/4.2.x/core/src/main/java/org/infinispan/commands/read/EntrySetCommand.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/commands/read/EntrySetCommand.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/commands/read/EntrySetCommand.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -21,7 +21,6 @@
  */
 package org.infinispan.commands.read;
 
-import org.infinispan.commands.LocalCommand;
 import org.infinispan.commands.VisitableCommand;
 import org.infinispan.commands.Visitor;
 import org.infinispan.container.DataContainer;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/commands/read/KeySetCommand.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/commands/read/KeySetCommand.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/commands/read/KeySetCommand.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -21,7 +21,6 @@
  */
 package org.infinispan.commands.read;
 
-import org.infinispan.commands.LocalCommand;
 import org.infinispan.commands.VisitableCommand;
 import org.infinispan.commands.Visitor;
 import org.infinispan.container.DataContainer;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/commands/read/SizeCommand.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/commands/read/SizeCommand.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/commands/read/SizeCommand.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -21,7 +21,6 @@
  */
 package org.infinispan.commands.read;
 
-import org.infinispan.commands.LocalCommand;
 import org.infinispan.commands.VisitableCommand;
 import org.infinispan.commands.Visitor;
 import org.infinispan.container.DataContainer;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/commands/read/ValuesCommand.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/commands/read/ValuesCommand.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/commands/read/ValuesCommand.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -21,7 +21,6 @@
  */
 package org.infinispan.commands.read;
 
-import org.infinispan.commands.LocalCommand;
 import org.infinispan.commands.VisitableCommand;
 import org.infinispan.commands.Visitor;
 import org.infinispan.container.DataContainer;
@@ -38,7 +37,6 @@
  */
 public class ValuesCommand extends AbstractLocalCommand implements VisitableCommand {
    private final DataContainer container;
-   private static final Object[] EMPTY_ARRAY = new Object[0];
 
    public ValuesCommand(DataContainer container) {
       this.container = container;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/commands/tx/AbstractTransactionBoundaryCommand.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/commands/tx/AbstractTransactionBoundaryCommand.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/commands/tx/AbstractTransactionBoundaryCommand.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -40,7 +40,7 @@
  */
 public abstract class AbstractTransactionBoundaryCommand implements TransactionBoundaryCommand {
 
-   private static Log log = LogFactory.getLog(AbstractTransactionBoundaryCommand.class);
+   private static final Log log = LogFactory.getLog(AbstractTransactionBoundaryCommand.class);
    private static boolean trace = log.isTraceEnabled();
 
    protected GlobalTransaction globalTx;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/commands/tx/PrepareCommand.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/commands/tx/PrepareCommand.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/commands/tx/PrepareCommand.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -52,7 +52,7 @@
 @Marshallable(externalizer = ReplicableCommandExternalizer.class, id = Ids.PREPARE_COMMAND)
 public class PrepareCommand extends AbstractTransactionBoundaryCommand {
 
-   private static Log log = LogFactory.getLog(PrepareCommand.class);
+   private static final Log log = LogFactory.getLog(PrepareCommand.class);
    private boolean trace = log.isTraceEnabled();
 
    public static final byte COMMAND_ID = 12;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/commands/write/RemoveCommand.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/commands/write/RemoveCommand.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/commands/write/RemoveCommand.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -40,7 +40,6 @@
 @Marshallable(externalizer = ReplicableCommandExternalizer.class, id = Ids.REMOVE_COMMAND)
 public class RemoveCommand extends AbstractDataWriteCommand {
    private static final Log log = LogFactory.getLog(RemoveCommand.class);
-   private static final boolean trace = log.isTraceEnabled();
    public static final byte COMMAND_ID = 10;
    protected CacheNotifier notifier;
    boolean successful = true;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/config/Configuration.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/config/Configuration.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/config/Configuration.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -50,13 +50,11 @@
 
 /**
  * Encapsulates the configuration of a Cache.
- * 
  * <p>
- * Note that class Configuration contains JAXB annotations. These annotations determine how XML
- * configuration files are read into instances of configuration class hierarchy as well as they
- * provide meta data for configuration file XML schema generation. Please modify these annotations
- * and Java element types they annotate with utmost understanding and care.
- * 
+ * A default instance of this bean takes default values for each attribute.  Please see the individual setters for
+ * details of what these defaults are.
+ * </p>
+ *
  * @configRef name="default",desc="Configures the default cache which can be retrieved via CacheManager.getCache().
  *                                 These default settings are also used as a starting point when configuring namedCaches,
  *                                 since the default settings are inherited by any named cache."
@@ -72,6 +70,13 @@
  * 
  * @see <a href="../../../config.html#ce_infinispan_default">Configuration reference</a>
  */
+
+//Note that class Configuration contains JAXB annotations. These annotations determine how XML
+//configuration files are read into instances of configuration class hierarchy as well as they
+//provide meta data for configuration file XML schema generation. Please modify these annotations
+//and Java element types they annotate with utmost understanding and care.
+
+
 @SurvivesRestarts
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(propOrder={})
@@ -280,6 +285,10 @@
       this.clustering.stateRetrieval.setFetchInMemoryState(fetchInMemoryState);
    }
 
+   public void setAlwaysProvideInMemoryState(boolean alwaysProvideInMemoryState) {
+      this.clustering.stateRetrieval.setAlwaysProvideInMemoryState(alwaysProvideInMemoryState);
+   }
+
    public void setLockAcquisitionTimeout(long lockAcquisitionTimeout) {
       locking.setLockAcquisitionTimeout(lockAcquisitionTimeout);
    }
@@ -552,6 +561,11 @@
       return clustering.stateRetrieval.fetchInMemoryState;
    }
 
+   public boolean isAlwaysProvideInMemoryState() {
+      return clustering.stateRetrieval.alwaysProvideInMemoryState;
+   }
+
+
    public long getLockAcquisitionTimeout() {
       return locking.lockAcquisitionTimeout;
    }
@@ -773,7 +787,7 @@
    public boolean isOnePhaseCommit() {
       return !getCacheMode().isSynchronous();
    }
-   
+
    /**
     * 
     * @configRef name="transaction",desc="Defines transactional (JTA) characteristics of the cache."
@@ -1392,6 +1406,12 @@
       @Dynamic
       protected Boolean fetchInMemoryState = false;
 
+      /**
+       * @configRef desc="If true, this will allow the cache to provide in-memory state to a neighbor, even if the
+       *                  cache is not configured to fetch state from its neighbors (fetchInMemoryState is false).
+       */
+      protected Boolean alwaysProvideInMemoryState = false;
+
       /** @configRef desc="This is the maximum amount of time - in milliseconds - to wait for state from neighboring 
        *             caches, before throwing an exception and aborting startup. " */
       @Dynamic      
@@ -1413,6 +1433,12 @@
       }
 
       @XmlAttribute
+      public void setAlwaysProvideInMemoryState(Boolean alwaysProvideInMemoryState) {
+         testImmutability("alwaysProvideInMemoryState");
+         this.alwaysProvideInMemoryState = alwaysProvideInMemoryState;
+      }
+
+      @XmlAttribute
       public void setInitialRetryWaitTime(Long initialRetryWaitTime) {
          testImmutability("initialWaitTime");
          this.initialRetryWaitTime = initialRetryWaitTime;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/config/ConfigurationValidatingVisitor.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/config/ConfigurationValidatingVisitor.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/config/ConfigurationValidatingVisitor.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -22,7 +22,6 @@
 package org.infinispan.config;
 
 import org.infinispan.config.GlobalConfiguration.TransportType;
-import org.infinispan.eviction.EvictionStrategy;
 import org.infinispan.loaders.decorators.SingletonStoreConfig;
 
 /**

Modified: branches/4.2.x/core/src/main/java/org/infinispan/config/GlobalConfiguration.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/config/GlobalConfiguration.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/config/GlobalConfiguration.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -26,11 +26,9 @@
 /**
  * Configuration component that encapsulates the global configuration.
  * <p/>
+ * A default instance of this bean takes default values for each attribute.  Please see the individual setters for
+ * details of what these defaults are.
  * <p/>
- * Note that class GlobalConfiguration contains JAXB annotations. These annotations determine how XML configuration
- * files are read into instances of configuration class hierarchy as well as they provide meta data for configuration
- * file XML schema generation. Please modify these annotations and Java element types they annotate with utmost
- * understanding and care.
  *
  * @author Manik Surtani
  * @author Vladimir Blagojevic
@@ -41,6 +39,12 @@
  * @see <a href="../../../config.html#ce_infinispan_global">Configuration reference</a>
  * 
  */
+
+// Note that class GlobalConfiguration contains JAXB annotations. These annotations determine how XML configuration
+// files are read into instances of configuration class hierarchy as well as they provide meta data for configuration
+// file XML schema generation. Please modify these annotations and Java element types they annotate with utmost
+// understanding and care.
+
 @SurvivesRestarts
 @Scope(Scopes.GLOBAL)
 @XmlAccessorType(XmlAccessType.FIELD)

Modified: branches/4.2.x/core/src/main/java/org/infinispan/config/parsing/ConfigFilesConvertor.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/config/parsing/ConfigFilesConvertor.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/config/parsing/ConfigFilesConvertor.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -43,14 +43,10 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.util.Arrays;
-import java.util.Collections;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import static java.util.Collections.sort;
 

Modified: branches/4.2.x/core/src/main/java/org/infinispan/container/EntryFactory.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/container/EntryFactory.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/container/EntryFactory.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -64,7 +64,7 @@
     * @param forceLockIfAbsent forces a lock even if the entry is absent
     * @param alreadyLocked if true, this hint prevents the method from acquiring any locks and the existence and ownership of the lock is presumed.
     * @param forRemoval if true, this hint informs this method that the lock is being acquired for removal.
-    * @param undeleteIfNeeded if true, if the entry is found in the current scope (perhaps a transaction) and is deleteed, it will be undeleted.  If false, it will be considered deleted.
+    * @param undeleteIfNeeded if true, if the entry is found in the current scope (perhaps a transaction) and is deleted, it will be undeleted.  If false, it will be considered deleted.
     * @return an MVCCEntry instance
     * @throws InterruptedException when things go wrong, usually trying to acquire a lock
     */
@@ -80,7 +80,7 @@
     * @param forceLockIfAbsent forces a lock even if the entry is absent
     * @param alreadyLocked if true, this hint prevents the method from acquiring any locks and the existence and ownership of the lock is presumed.
     * @param forRemoval if true, this hint informs this method that the lock is being acquired for removal.
-* @param undeleteIfNeeded if true, if the entry is found in the current scope (perhaps a transaction) and is deleteed, it will be undeleted.  If false, it will be considered deleted.    * @return an MVCCEntry instance
+* @param undeleteIfNeeded if true, if the entry is found in the current scope (perhaps a transaction) and is deleted, it will be undeleted.  If false, it will be considered deleted.    * @return an MVCCEntry instance
     * @throws InterruptedException when things go wrong, usually trying to acquire a lock
     */
    MVCCEntry wrapEntryForWriting(InvocationContext ctx, InternalCacheEntry entry, boolean createIfAbsent, boolean forceLockIfAbsent, boolean alreadyLocked, boolean forRemoval, boolean undeleteIfNeeded) throws InterruptedException;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/container/entries/TransientCacheEntry.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/container/entries/TransientCacheEntry.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/container/entries/TransientCacheEntry.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -8,10 +8,8 @@
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 
-import static java.lang.Math.min;
-
 /**
- * A cache entry that is transient, i.e., it can be considered expired afer a period of not being used.
+ * A cache entry that is transient, i.e., it can be considered expired after a period of not being used.
  *
  * @author Manik Surtani
  * @since 4.0

Modified: branches/4.2.x/core/src/main/java/org/infinispan/context/InvocationContext.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/context/InvocationContext.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/context/InvocationContext.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -21,7 +21,6 @@
  */
 package org.infinispan.context;
 
-import java.util.Collections;
 import java.util.Set;
 
 /**

Modified: branches/4.2.x/core/src/main/java/org/infinispan/distribution/ConsistentHashHelper.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/distribution/ConsistentHashHelper.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/distribution/ConsistentHashHelper.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,7 +1,6 @@
 package org.infinispan.distribution;
 
 import org.infinispan.config.Configuration;
-import org.infinispan.config.ConfigurationException;
 import org.infinispan.remoting.transport.Address;
 import org.infinispan.util.Util;
 

Modified: branches/4.2.x/core/src/main/java/org/infinispan/distribution/DefaultConsistentHash.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/distribution/DefaultConsistentHash.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/distribution/DefaultConsistentHash.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -3,9 +3,6 @@
 import org.infinispan.marshall.Ids;
 import org.infinispan.marshall.Marshallable;
 import org.infinispan.remoting.transport.Address;
-import org.infinispan.util.hash.MurmurHash2;
-import org.infinispan.util.logging.Log;
-import org.infinispan.util.logging.LogFactory;
 
 import java.io.IOException;
 import java.io.ObjectInput;
@@ -14,7 +11,6 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Random;
 import java.util.SortedMap;
 import java.util.TreeMap;
 

Modified: branches/4.2.x/core/src/main/java/org/infinispan/factories/EmptyConstructorFactory.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/factories/EmptyConstructorFactory.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/factories/EmptyConstructorFactory.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,11 +1,9 @@
 package org.infinispan.factories;
 
 import org.infinispan.commands.RemoteCommandsFactory;
-import org.infinispan.config.ConfigurationException;
 import org.infinispan.factories.annotations.DefaultFactoryFor;
 import org.infinispan.factories.scopes.Scope;
 import org.infinispan.factories.scopes.Scopes;
-import org.infinispan.notifications.cachemanagerlistener.CacheManagerNotifier;
 import org.infinispan.remoting.InboundInvocationHandler;
 import org.infinispan.transaction.xa.GlobalTransactionFactory;
 import org.infinispan.transaction.xa.TransactionTable;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/factories/MarshallerFactory.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/factories/MarshallerFactory.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/factories/MarshallerFactory.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -21,7 +21,6 @@
  */
 package org.infinispan.factories;
 
-import org.infinispan.config.ConfigurationException;
 import org.infinispan.factories.annotations.DefaultFactoryFor;
 import org.infinispan.marshall.StreamingMarshaller;
 import org.infinispan.util.Util;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/factories/StateTransferManagerFactory.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/factories/StateTransferManagerFactory.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/factories/StateTransferManagerFactory.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -34,7 +34,7 @@
 @DefaultFactoryFor(classes = StateTransferManager.class)
 public class StateTransferManagerFactory extends AbstractNamedCacheComponentFactory implements AutoInstantiableFactory {
    public <T> T construct(Class<T> componentType) {
-      if (configuration.getCacheMode().isClustered() && configuration.isStateTransferEnabled())
+      if (configuration.getCacheMode().isClustered() && !configuration.getCacheMode().isDistributed())
          return componentType.cast(new StateTransferManagerImpl());
       else
          return null;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/factories/TransactionManagerFactory.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/factories/TransactionManagerFactory.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/factories/TransactionManagerFactory.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -21,7 +21,6 @@
  */
 package org.infinispan.factories;
 
-import org.infinispan.config.ConfigurationException;
 import org.infinispan.factories.annotations.DefaultFactoryFor;
 import org.infinispan.transaction.tm.BatchModeTransactionManager;
 import org.infinispan.transaction.lookup.TransactionManagerLookup;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/factories/TransportFactory.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/factories/TransportFactory.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/factories/TransportFactory.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,6 +1,5 @@
 package org.infinispan.factories;
 
-import org.infinispan.CacheException;
 import org.infinispan.factories.annotations.DefaultFactoryFor;
 import org.infinispan.remoting.transport.Transport;
 import org.infinispan.util.Util;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/factories/scopes/ScopeDetector.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/factories/scopes/ScopeDetector.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/factories/scopes/ScopeDetector.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -3,7 +3,7 @@
 import org.infinispan.util.ReflectionUtil;
 
 /**
- * Retrieves the declated scope of a component
+ * Retrieves the declared scope of a component
  *
  * @author Manik Surtani
  * @since 4.0

Modified: branches/4.2.x/core/src/main/java/org/infinispan/factories/scopes/Scopes.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/factories/scopes/Scopes.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/factories/scopes/Scopes.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -2,7 +2,7 @@
 
 /**
  * The different scopes that can be declared for a component in the cache system.  If components are not bounded to a
- * specific scope explicity, then it defaults to the {@link #NAMED_CACHE} scope.
+ * specific scope explicitly, then it defaults to the {@link #NAMED_CACHE} scope.
  *
  * @author Manik Surtani
  * @see Scope

Modified: branches/4.2.x/core/src/main/java/org/infinispan/interceptors/DistCacheStoreInterceptor.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/interceptors/DistCacheStoreInterceptor.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/interceptors/DistCacheStoreInterceptor.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -39,7 +39,7 @@
 
 /**
  * Cache store interceptor specific for the distribution cache mode. Put operations has been modified in such way that
- * if they put operation is the result of an L1 put, storing in the cache store is ignore. This is done so that inmortal
+ * if they put operation is the result of an L1 put, storing in the cache store is ignore. This is done so that immortal
  * entries that get converted into mortal ones when putting into L1 don't get propagated to the cache store.
  * <p/>
  * Secondly, in a replicated environment where a shared cache store is used, the node in which the cache operation is

Modified: branches/4.2.x/core/src/main/java/org/infinispan/interceptors/DistLockingInterceptor.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/interceptors/DistLockingInterceptor.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/interceptors/DistLockingInterceptor.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,7 +1,6 @@
 package org.infinispan.interceptors;
 
 import org.infinispan.container.entries.CacheEntry;
-import org.infinispan.context.InvocationContext;
 import org.infinispan.distribution.DistributionManager;
 import org.infinispan.factories.annotations.Inject;
 

Modified: branches/4.2.x/core/src/main/java/org/infinispan/interceptors/DistributionInterceptor.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/interceptors/DistributionInterceptor.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/interceptors/DistributionInterceptor.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -40,7 +40,7 @@
 /**
  * The interceptor that handles distribution of entries across a cluster, as well as transparent lookup
  *
- * @author manik
+ * @author Manik Surtani
  * @since 4.0
  */
 public class DistributionInterceptor extends BaseRpcInterceptor {

Modified: branches/4.2.x/core/src/main/java/org/infinispan/interceptors/InterceptorChain.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/interceptors/InterceptorChain.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/interceptors/InterceptorChain.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -63,8 +63,10 @@
 
    @Start
    private void printChainInfo() {
-      if (log.isDebugEnabled()) log.debug("Interceptor chain size: " + size());
-      if (log.isDebugEnabled()) log.debug("Interceptor chain is: " + toString());
+      if (log.isDebugEnabled()) {
+         log.debug("Interceptor chain size: " + size());
+         log.debug("Interceptor chain is: " + toString());
+      }
    }
 
    /**

Modified: branches/4.2.x/core/src/main/java/org/infinispan/interceptors/PassivationInterceptor.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/interceptors/PassivationInterceptor.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/interceptors/PassivationInterceptor.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,27 +1,18 @@
 package org.infinispan.interceptors;
 
 import org.infinispan.commands.write.EvictCommand;
-import org.infinispan.config.ConfigurationException;
 import org.infinispan.container.DataContainer;
-import org.infinispan.container.entries.InternalCacheEntry;
 import org.infinispan.context.InvocationContext;
 import org.infinispan.eviction.PassivationManager;
 import org.infinispan.factories.annotations.Inject;
-import org.infinispan.factories.annotations.Start;
 import org.infinispan.interceptors.base.JmxStatsCommandInterceptor;
 import org.infinispan.jmx.annotations.MBean;
 import org.infinispan.jmx.annotations.ManagedAttribute;
 import org.infinispan.jmx.annotations.ManagedOperation;
-import org.infinispan.loaders.CacheLoaderException;
-import org.infinispan.loaders.CacheLoaderManager;
-import org.infinispan.loaders.CacheStore;
-import org.infinispan.notifications.cachelistener.CacheNotifier;
 import org.rhq.helpers.pluginAnnotations.agent.MeasurementType;
 import org.rhq.helpers.pluginAnnotations.agent.Metric;
 import org.rhq.helpers.pluginAnnotations.agent.Operation;
 
-import java.util.concurrent.atomic.AtomicLong;
-
 /**
  * Writes evicted entries back to the store on the way in through the CacheStore
  *

Modified: branches/4.2.x/core/src/main/java/org/infinispan/io/GridFile.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/io/GridFile.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/io/GridFile.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -2,12 +2,8 @@
 
 import org.infinispan.AdvancedCache;
 import org.infinispan.Cache;
-import org.infinispan.context.Flag;
-import org.jgroups.util.Streamable;
 import org.jgroups.util.Util;
 
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
 import java.io.Externalizable;
 import java.io.File;
 import java.io.FileFilter;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/io/UnsignedNumeric.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/io/UnsignedNumeric.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/io/UnsignedNumeric.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -5,7 +5,6 @@
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.io.OutputStream;
-import java.nio.Buffer;
 
 /**
  * Helper to read and write unsigned numerics

Modified: branches/4.2.x/core/src/main/java/org/infinispan/jmx/AbstractJmxRegistration.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/jmx/AbstractJmxRegistration.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/jmx/AbstractJmxRegistration.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -26,12 +26,9 @@
 
 import javax.management.MBeanServer;
 
-import org.infinispan.CacheException;
 import org.infinispan.config.GlobalConfiguration;
 import org.infinispan.factories.AbstractComponentRegistry;
 import org.infinispan.util.Util;
-import org.infinispan.util.logging.Log;
-import org.infinispan.util.logging.LogFactory;
 
 /**
  * Parent class for top level JMX component registration.
@@ -40,7 +37,6 @@
  * @since 4.0
  */
 public abstract class AbstractJmxRegistration {
-   private static final Log log = LogFactory.getLog(AbstractJmxRegistration.class);
    String jmxDomain;
    MBeanServer mBeanServer;
    GlobalConfiguration globalConfig;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/jmx/ResourceDMBean.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/jmx/ResourceDMBean.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/jmx/ResourceDMBean.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -50,13 +50,13 @@
 import java.util.regex.Pattern;
 
 /**
- * This class was entirely copied from jgroups 2.7 (same name there). Couldn't simply reuse it
- * because jgroups does not ship with MBean, ManagedAttribute and ManagedOperation. Once jgroups
- * will ship these classes, the code can be dinalmically reused from there.
+ * This class was entirely copied from JGroups 2.7 (same name there). Couldn't simply reuse it
+ * because JGroups does not ship with MBean, ManagedAttribute and ManagedOperation. Once JGroups
+ * will ship these classes, the code can be dynamically reused from there.
  * <p/>
  * The original JGroup's ResourceDMBean logic has been modified so that {@link #invoke()} method checks
  * whether the operation called has been exposed as a {@link ManagedOperation}, otherwise the call
- * fails. JGroups deviated from this logic on purpouse because they liked the fact that you could expose
+ * fails. JGroups deviated from this logic on purpose because they liked the fact that you could expose
  * all class methods by simply annotating class with {@link MBean} annotation.
  *
  * @author Mircea.Markus at jboss.com

Modified: branches/4.2.x/core/src/main/java/org/infinispan/jmx/annotations/MBean.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/jmx/annotations/MBean.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/jmx/annotations/MBean.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -28,7 +28,7 @@
 import java.lang.annotation.Target;
 
 /**
- * Classes anotaded with this will be exposed as MBeans. If you are looking for more fined grained way of exposing jmx
+ * Classes annotated with this will be exposed as MBeans. If you are looking for more fined grained way of exposing JMX
  * attributes/operations, take a look at {@link org.infinispan.jmx.annotations.ManagedAttribute} and {@link
  * org.infinispan.jmx.annotations.ManagedOperation}
  *

Modified: branches/4.2.x/core/src/main/java/org/infinispan/loaders/AbstractCacheLoaderConfig.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/loaders/AbstractCacheLoaderConfig.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/loaders/AbstractCacheLoaderConfig.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -18,7 +18,7 @@
  * and Java element types they annotate with utmost understanding and care.
  *
  * @author Mircea.Markus at jboss.com
- * @autor Vladimir Blagojevic
+ * @author Vladimir Blagojevic
  * @since 4.0
  * 
  */

Modified: branches/4.2.x/core/src/main/java/org/infinispan/loaders/AbstractCacheStore.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/loaders/AbstractCacheStore.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/loaders/AbstractCacheStore.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -30,7 +30,7 @@
  */
 public abstract class AbstractCacheStore extends AbstractCacheLoader implements CacheStore {
 
-   private static Log log = LogFactory.getLog(AbstractCacheStore.class);
+   private static final Log log = LogFactory.getLog(AbstractCacheStore.class);
 
    private Map<GlobalTransaction, List<? extends Modification>> transactions;
    private AbstractCacheStoreConfig config;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/loaders/CacheLoaderManagerImpl.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/loaders/CacheLoaderManagerImpl.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/loaders/CacheLoaderManagerImpl.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -116,9 +116,12 @@
    public void preload() {
       if (loader != null) {
          if (clmConfig.isPreload()) {
-            log.debug("Preloading transient state from cache loader {0}", loader);
-            long start = 0, stop = 0, total = 0;
-            if (log.isDebugEnabled()) start = System.currentTimeMillis();
+            long start = 0;
+            boolean debugTiming = log.isDebugEnabled();
+            if (debugTiming) {
+               start = System.currentTimeMillis();
+               log.debug("Preloading transient state from cache loader {0}", loader);
+            }
             Set<InternalCacheEntry> state;
             try {
                state = loadState();
@@ -129,9 +132,10 @@
             for (InternalCacheEntry e : state)
                cache.getAdvancedCache().withFlags(SKIP_CACHE_STATUS_CHECK, CACHE_MODE_LOCAL).put(e.getKey(), e.getValue(), e.getLifespan(), MILLISECONDS, e.getMaxIdle(), MILLISECONDS);
 
-            if (log.isDebugEnabled()) stop = System.currentTimeMillis();
-            if (log.isDebugEnabled()) total = stop - start;
-            log.debug("Preloaded {0} keys in {1} milliseconds", state.size(), total);
+            if (debugTiming) {
+               long stop = System.currentTimeMillis();
+               log.debug("Preloaded {0} keys in {1} milliseconds", state.size(), stop - start);
+            }
          }
       }
    }

Modified: branches/4.2.x/core/src/main/java/org/infinispan/loaders/cluster/ClusterCacheLoader.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/loaders/cluster/ClusterCacheLoader.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/loaders/cluster/ClusterCacheLoader.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -36,7 +36,7 @@
  */
 @CacheLoaderMetadata(configurationClass = ClusterCacheLoaderConfig.class)
 public class ClusterCacheLoader extends AbstractCacheLoader {
-   private static Log log = LogFactory.getLog(ClusterCacheLoader.class);
+   private static final Log log = LogFactory.getLog(ClusterCacheLoader.class);
 
    private ClusterCacheLoaderConfig config;
    private RpcManager rpcManager;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/loaders/decorators/AsyncStore.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/loaders/decorators/AsyncStore.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/loaders/decorators/AsyncStore.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -8,10 +8,8 @@
 import org.infinispan.loaders.CacheLoaderException;
 import org.infinispan.loaders.CacheStore;
 import org.infinispan.loaders.modifications.Clear;
-import org.infinispan.loaders.modifications.Commit;
 import org.infinispan.loaders.modifications.Modification;
-import org.infinispan.loaders.modifications.Prepare;
-import org.infinispan.loaders.modifications.PurgeExpired;
+import org.infinispan.loaders.modifications.ModificationsList;
 import org.infinispan.loaders.modifications.Remove;
 import org.infinispan.loaders.modifications.Store;
 import org.infinispan.marshall.StreamingMarshaller;
@@ -20,8 +18,6 @@
 import org.infinispan.util.logging.Log;
 import org.infinispan.util.logging.LogFactory;
 
-import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -30,12 +26,12 @@
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
+import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.locks.Condition;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantLock;
@@ -61,6 +57,7 @@
  *
  * @author Manik Surtani
  * @author Galder Zamarreño
+ * @author Sanne Grinovero
  * @since 4.0
  */
 public class AsyncStore extends AbstractDelegatingStore {
@@ -68,24 +65,31 @@
    private static final boolean trace = log.isTraceEnabled();
    private static final AtomicInteger threadId = new AtomicInteger(0);
    private final AtomicBoolean stopped = new AtomicBoolean(true);
+   
    private final AsyncStoreConfig asyncStoreConfig;
-
+   private Map<GlobalTransaction, List<? extends Modification>> transactions;
+   
    /**
-    * Approximate count of number of modified keys. At points, it could contain negative values.
+    * This is used as marker to shutdown the AsyncStoreCoordinator
     */
-   private final AtomicInteger count = new AtomicInteger(0);
-   private final ReentrantLock lock = new ReentrantLock();
-   private final Condition notEmpty = lock.newCondition();
-
+   private static final Modification QUIT_SIGNAL = new Clear();
+   
+   /**
+    * clear() is performed in sync by the one thread of storeCoordinator, while blocking all
+    * other threads interacting with the decorated store.
+    */
+   private final ReadWriteLock clearAllLock = new ReentrantReadWriteLock();
+   private final Lock clearAllReadLock = clearAllLock.readLock();
+   private final Lock clearAllWriteLock = clearAllLock.writeLock();
+   private final Lock stateMapLock = new ReentrantLock();
+   
    ExecutorService executor;
-   private List<Future> processorFutures;
-   private final ReadWriteLock mapLock = new ReentrantReadWriteLock();
-   private final Lock read = mapLock.readLock();
-   private final Lock write = mapLock.writeLock();
    private int concurrencyLevel;
-   @GuardedBy("mapLock")
+   @GuardedBy("stateMapLock")
    protected ConcurrentMap<Object, Modification> state;
    private ReleaseAllLockContainer lockContainer;
+   private final LinkedBlockingQueue<Modification> changesDeque = new LinkedBlockingQueue<Modification>();
+   public volatile boolean lastAsyncProcessorShutsDownExecutor = false;
 
    public AsyncStore(CacheStore delegate, AsyncStoreConfig asyncStoreConfig) {
       super(delegate);
@@ -97,77 +101,97 @@
       super.init(config, cache, m);
       concurrencyLevel = cache == null || cache.getConfiguration() == null ? 16 : cache.getConfiguration().getConcurrencyLevel();
       lockContainer = new ReleaseAllLockContainer(concurrencyLevel);
+      transactions = new ConcurrentHashMap<GlobalTransaction, List<? extends Modification>>(64, 0.75f, concurrencyLevel);
    }
 
    @Override
    public void store(InternalCacheEntry ed) {
-      enqueue(ed.getKey(), new Store(ed));
+      enqueue(new Store(ed));
    }
 
    @Override
    public boolean remove(Object key) {
-      enqueue(key, new Remove(key));
+      enqueue(new Remove(key));
       return true;
    }
 
    @Override
    public void clear() {
       Clear clear = new Clear();
-      enqueue(clear, clear);
+      checkNotStopped(); //check we can change the changesDeque
+      changesDeque.clear();
+      enqueue(clear);
    }
 
    @Override
-   public void purgeExpired() {
-      PurgeExpired purge = new PurgeExpired();
-      enqueue(purge, purge);
+   public void prepare(List<? extends Modification> mods, GlobalTransaction tx, boolean isOnePhase) throws CacheLoaderException {
+      if (isOnePhase) {
+         enqueueModificationsList(mods);
+      } else {
+         transactions.put(tx, mods);
+      }
    }
-
+   
    @Override
-   public void prepare(List<? extends Modification> list, GlobalTransaction tx, boolean isOnePhase) {
-      Prepare prepare = new Prepare(list, tx, isOnePhase);
-      enqueue(prepare, prepare);
+   public void rollback(GlobalTransaction tx) {
+      transactions.remove(tx);
    }
 
    @Override
    public void commit(GlobalTransaction tx) throws CacheLoaderException {
-      Commit commit = new Commit(tx);
-      enqueue(commit, commit);
+      List<? extends Modification> list = transactions.remove(tx);
+      enqueueModificationsList(list);
    }
+   
+   protected void enqueueModificationsList(List<? extends Modification> mods) throws CacheLoaderException {
+      if (mods != null && !mods.isEmpty()) {
+         enqueue(new ModificationsList(mods));
+      }
+   }
 
    @Override
    public void start() throws CacheLoaderException {
       state = newStateMap();
       log.info("Async cache loader starting {0}", this);
       stopped.set(false);
+      lastAsyncProcessorShutsDownExecutor = false;
       super.start();
       int poolSize = asyncStoreConfig.getThreadPoolSize();
-      executor = Executors.newFixedThreadPool(poolSize, new ThreadFactory() {
-         public Thread newThread(Runnable r) {
-            Thread t = new Thread(r, "CoalescedAsyncStore-" + threadId.getAndIncrement());
-            t.setDaemon(true);
-            return t;
-         }
-      });
-      processorFutures = new ArrayList<Future>(poolSize);
-      for (int i = 0; i < poolSize; i++) processorFutures.add(executor.submit(createAsyncProcessor()));
+      executor = new ThreadPoolExecutor(poolSize, poolSize, 0L, TimeUnit.MILLISECONDS,
+               // note the use of poolSize+1 as maximum workingQueue together with DiscardPolicy:
+               // this way when a new AsyncProcessor is started unnecessarily we discard it
+               // before it takes locks to perform no work
+               // this way we save memory from the executor queue, CPU, and also avoid
+               // any possible RejectedExecutionException.
+               new LinkedBlockingQueue<Runnable>(poolSize + 1),
+               new ThreadFactory() {
+                  public Thread newThread(Runnable r) {
+                     Thread t = new Thread(r, "CoalescedAsyncStore-" + threadId.getAndIncrement());
+                     t.setDaemon(true);
+                     return t;
+                  }
+               },
+               new ThreadPoolExecutor.DiscardPolicy()
+         );
+      startStoreCoordinator();
    }
 
+   private void startStoreCoordinator() {
+      ExecutorService storeCoordinator = Executors.newFixedThreadPool(1);
+      storeCoordinator.execute( new AsyncStoreCoordinator() );
+      storeCoordinator.shutdown();
+   }
+
    @Override
    public void stop() throws CacheLoaderException {
       stopped.set(true);
-      if (executor != null) {
-         for (Future f : processorFutures) f.cancel(true);
-         executor.shutdown();
-         try {
-            boolean terminated = executor.isTerminated();
-            while (!terminated) {
-               terminated = executor.awaitTermination(60, TimeUnit.SECONDS);
-            }
-         } catch (InterruptedException e) {
-            Thread.currentThread().interrupt();
-         }
+      try {
+         changesDeque.put(QUIT_SIGNAL);
+         executor.awaitTermination(asyncStoreConfig.getShutdownTimeout(), TimeUnit.SECONDS);
+      } catch (InterruptedException e) {
+         log.error("Interrupted or timeout while waiting for AsyncStore worker threads to push all state to the decorated store", e);
+         Thread.currentThread().interrupt();
       }
-      executor = null;
       super.stop();
    }
 
@@ -182,81 +206,46 @@
             case REMOVE:
                super.remove(entry.getKey());
                break;
-            case CLEAR:
-               super.clear();
-               break;
-            case PURGE_EXPIRED:
-               super.purgeExpired();
-               break;
-            case PREPARE:
-               List<? extends Modification> coalesced = coalesceModificationList(((Prepare) mod).getList());
-               super.prepare(coalesced, ((Prepare) mod).getTx(), ((Prepare) mod).isOnePhase());
-               break;
-            case COMMIT:
-               super.commit(((Commit) mod).getTx());
-               break;
+            default:
+               throw new IllegalArgumentException("Unexpected modification type " + mod.getType());
          }
       }
    }
-
-   protected Runnable createAsyncProcessor() {
-      return new AsyncProcessor();
+   
+   protected boolean applyClear() {
+      try {
+         super.clear();
+         return true;
+      } catch (CacheLoaderException e) {
+         log.error("Error performing clear in AsyncStore", e);
+         return false;
+      }
    }
-
-   private List<? extends Modification> coalesceModificationList(List<? extends Modification> mods) {
-      Map<Object, Modification> keyMods = new HashMap<Object, Modification>();
-      List<Modification> coalesced = new ArrayList<Modification>();
-      for (Modification mod : mods) {
-         switch (mod.getType()) {
-            case STORE:
-               keyMods.put(((Store) mod).getStoredEntry().getKey(), mod);
-               break;
-            case CLEAR:
-               keyMods.clear(); // remove all pending key modifications
-               coalesced.add(mod); // add a clear so that future put/removes do not need to do anything
-               break;
-            case REMOVE:
-               if (!coalesced.isEmpty() && keyMods.containsKey(((Remove) mod).getKey())) {
-                  keyMods.remove(((Remove) mod).getKey()); // clear, p(k), r(k) sequence should result in no-op for k
-               } else if (coalesced.isEmpty()) {
-                  keyMods.put(((Remove) mod).getKey(), mod);
-               }
-               break;
-            default:
-               throw new IllegalArgumentException("Unknown modification type " + mod.getType());
-         }
+   
+   protected void delegatePurgeExpired() {
+      try {
+         super.purgeExpired();
+      } catch (CacheLoaderException e) {
+         log.error("Error performing PurgeExpired in AsyncStore", e);
       }
-      coalesced.addAll(keyMods.values());
-      return coalesced;
    }
 
-   private void enqueue(Object key, Modification mod) {
+   private void enqueue(Modification mod) {
       try {
-         if (stopped.get()) {
-            throw new CacheException("AsyncStore stopped; no longer accepting more entries.");
-         }
+         checkNotStopped();
          if (trace) log.trace("Enqueuing modification {0}", mod);
-         Modification prev = null;
-         int c = -1;
-         boolean unlock = false;
-         try {
-            acquireLock(read);
-            unlock = true;
-            prev = state.put(key, mod); // put the key's latest state in updates
-         } finally {
-            if (unlock) read.unlock();
-         }
-         /* Increment can happen outside the lock cos worst case scenario a false not empty would 
-          * be sent if the swap and decrement happened between the put and the increment. In this 
-          * case, the corresponding processor would see the map empty and would wait again. This 
-          * means that we're allowing count to potentially go negative but that's not a problem. */
-         if (prev == null) c = count.getAndIncrement();
-         if (c == 0) signalNotEmpty();
+         changesDeque.add(mod);
       } catch (Exception e) {
          throw new CacheException("Unable to enqueue asynchronous task", e);
       }
    }
 
+   private void checkNotStopped() {
+      if (stopped.get()) {
+         throw new CacheException("AsyncStore stopped; no longer accepting more entries.");
+      }
+   }
+
    private void acquireLock(Lock lock) {
       try {
          if (!lock.tryLock(asyncStoreConfig.getFlushLockTimeout(), TimeUnit.MILLISECONDS))
@@ -267,105 +256,85 @@
       }
    }
 
-   private void signalNotEmpty() {
-      lock.lock();
-      try {
-         notEmpty.signal();
-      } finally {
-         lock.unlock();
-      }
-   }
-
-   private void awaitNotEmptyOrStopped() throws InterruptedException {
-      lock.lockInterruptibly();
-      try {
-         try {
-            while (count.get() == 0) {
-               if (stopped.get()) {
-                  notEmpty.signal();
-                  return;
-               }
-               notEmpty.await();
-            }
-         } catch (InterruptedException ie) {
-            notEmpty.signal(); // propagate to a non-interrupted thread
-            throw ie;
-         }
-      } finally {
-         lock.unlock();
-      }
-   }
-
-   private int decrementAndGet(int delta) {
-      for (; ;) {
-         int current = count.get();
-         int next = current - delta;
-         if (count.compareAndSet(current, next)) return next;
-      }
-   }
-
    /**
     * Processes modifications taking the latest updates from a state map.
     */
    class AsyncProcessor implements Runnable {
-      private ConcurrentMap<Object, Modification> swap = newStateMap();
       private final Set<Object> lockedKeys = new HashSet<Object>();
+      boolean runAgainAfterWaiting = false;
 
       public void run() {
-         while (!Thread.interrupted() && !stopped.get()) {
+         clearAllReadLock.lock();
+         try {
+            innerRun();
+         } catch (Throwable t) {
+            runAgainAfterWaiting = false;
+            log.error("Unexpected error", t);
+         } finally {
+            clearAllReadLock.unlock();
+         }
+         if (runAgainAfterWaiting) {
             try {
-               run0();
+               Thread.sleep(10);
+            } catch (InterruptedException e) {
+               // just speedup ignoring more sleep but still make sure to store all data
             }
-            catch (InterruptedException e) {
-               break;
-            }
+            ensureMoreWorkIsHandled();
          }
-
-         try {
-            if (trace) log.trace("Process remaining batch {0}", swap.size());
-            put(swap);
-            if (trace) log.trace("Process remaining queued {0}", state.size());
-            while (!state.isEmpty()) run0();
-         } catch (InterruptedException e) {
-            if (trace) log.trace("Remaining interrupted");
-         }
       }
-
-      void run0() throws InterruptedException {
+      
+      private void innerRun() {
+         final ConcurrentMap<Object, Modification> swap;
          if (trace) log.trace("Checking for modifications");
-         boolean unlock = false;
-
          try {
-            acquireLock(write);
-            unlock = true;
-            swap = state;
-            state = newStateMap();
+            acquireLock(stateMapLock);
+            try {
+               swap = state;
+               state = newStateMap();
 
-            // This needs doing within the WL section, because if a key is in use, we need to put it back in the state
-            // map for later processing and we don't wanna do it in such way that we override a newer value that might 
-            // have been enqueued by a user thread.
-            for (Object key : swap.keySet()) {
-               boolean acquired = lockContainer.acquireLock(key, 0, TimeUnit.NANOSECONDS) != null;
-               if (trace) log.trace("Lock for key {0} was acquired={1}", key, acquired);
-               if (!acquired) {
-                  Modification prev = swap.remove(key);
-                  state.put(key, prev);
-               } else {
-                  lockedKeys.add(key);
+               // This needs to be done within the stateMapLock section, because if a key is in use,
+               // we need to put it back in the state
+               // map for later processing and we don't wanna do it in such way that we override a
+               // newer value that might
+               // have been taken already for processing by another instance of this same code.
+               // AsyncStoreCoordinator doesn't need to acquired the same lock as values put by it
+               // will never be overwritten (putIfAbsent below)
+               for (Object key : swap.keySet()) {
+                  if (trace) log.trace("Going to process mod key: {0}", key);
+                  boolean acquired = false;
+                  try {
+                     acquired = lockContainer.acquireLock(key, 0, TimeUnit.NANOSECONDS) != null;
+                  } catch (InterruptedException e) {
+                     log.error("interrupted on acquireLock {0}, 0 nanoseconds!", e);
+                     Thread.currentThread().interrupt();
+                     return;
+                  }
+                  if (trace)
+                     log.trace("Lock for key {0} was acquired={1}", key, acquired);
+                  if (!acquired) {
+                     Modification prev = swap.remove(key);
+                     Modification didPut = state.putIfAbsent(key, prev); // don't overwrite more recently put work
+                     if (didPut == null) {
+                        // otherwise a new job is being spawned by the arbiter, so no need to create
+                        // a new worker
+                        runAgainAfterWaiting = true;
+                     }
+                  } else {
+                     lockedKeys.add(key);
+                  }
                }
+            } finally {
+               stateMapLock.unlock();
             }
-         } finally {
-            if (unlock) write.unlock();
-         }
 
-         try {
-            int size = swap.size();
             if (swap.isEmpty()) {
-               awaitNotEmptyOrStopped();
+               if (lastAsyncProcessorShutsDownExecutor && runAgainAfterWaiting == false) {
+                  executor.shutdown();
+               }
+               return;
             } else {
-               decrementAndGet(size);
-
-               if (trace) log.trace("Apply {0} modifications", size);
+               if (trace)
+                  log.trace("Apply {0} modifications", swap.size());
                int maxRetries = 3;
                int attemptNumber = 0;
                boolean successful;
@@ -386,22 +355,12 @@
          }
       }
 
-      boolean put(ConcurrentMap<Object, Modification> mods) throws InterruptedException {
+      boolean put(ConcurrentMap<Object, Modification> mods) {
          try {
             AsyncStore.this.applyModificationsSync(mods);
             return true;
          } catch (Exception e) {
-            boolean isDebug = log.isDebugEnabled();
-            if (isDebug) log.debug("Failed to process async modifications", e);
-            Throwable cause = e;
-            while (cause != null) {
-                if (cause instanceof InterruptedException) {
-                    // 3rd party code may have cleared the thread interrupt status
-                    if (isDebug) log.debug("Rethrowing InterruptedException");
-                    throw (InterruptedException) cause;
-                }
-                cause = cause.getCause();
-            }
+            if (log.isDebugEnabled()) log.debug("Failed to process async modifications", e);
             return false;
          }
       }
@@ -410,7 +369,7 @@
    private ConcurrentMap<Object, Modification> newStateMap() {
       return new ConcurrentHashMap<Object, Modification>(64, 0.75f, concurrencyLevel);
    }
-
+   
    private static class ReleaseAllLockContainer extends ReentrantPerEntryLockContainer {
       private ReleaseAllLockContainer(int concurrencyLevel) {
          super(concurrencyLevel);
@@ -423,4 +382,112 @@
          }
       }
    }
+
+   private void ensureMoreWorkIsHandled() {
+           executor.execute(new AsyncProcessor());
+   }
+   
+   private class AsyncStoreCoordinator implements Runnable {
+
+      @Override
+      public void run() {
+         while (true) {
+            try {
+               Modification take = changesDeque.take();
+               if (take == QUIT_SIGNAL) {
+                  lastAsyncProcessorShutsDownExecutor = true;
+                  ensureMoreWorkIsHandled();
+                  return;
+               }
+               else {
+                  handleSafely(take);
+               }
+            } catch (InterruptedException e) {
+               log.error("AsyncStoreCoordinator interrupted", e);
+               return;
+            } catch (Throwable t) {
+               log.error("Unexpected error in AsyncStoreCoordinator thread. AsyncStore is dead!", t);
+            }
+         }
+      }
+
+      private void handleSafely(Modification mod) {
+         try {
+            if (trace) log.trace("taking from modification queue: {0}", mod);
+            handle(mod, false);
+         } catch (Exception e) {
+            log.error("Error while handling Modification in AsyncStore", e);
+         }
+      }
+
+      private void handle(Modification mod, boolean nested) {
+         boolean asyncProcessorNeeded = false;
+         switch (mod.getType()) {
+            case STORE:
+               Store store = (Store) mod;
+               stateMapLock.lock();
+               state.put(store.getStoredEntry().getKey(), store);
+               stateMapLock.unlock();
+               asyncProcessorNeeded = true;
+               break;
+            case REMOVE:
+               Remove remove = (Remove) mod;
+               stateMapLock.lock();
+               state.put(remove.getKey(), remove);
+               stateMapLock.unlock();
+               asyncProcessorNeeded = true;
+               break;
+            case CLEAR:
+               performClear();
+               break;
+            case PURGE_EXPIRED:
+               delegatePurgeExpired();
+               break;
+            case LIST:
+               applyModificationsList((ModificationsList) mod);
+               asyncProcessorNeeded = true;
+               break;
+            default:
+               throw new IllegalArgumentException("Unexpected modification type " + mod.getType());
+         }
+         if (asyncProcessorNeeded && !nested) {
+            // we know when it's possible for some work to be done, starting short-lived
+            // AsyncProcessor(s) simplifies shutdown process.
+             ensureMoreWorkIsHandled();
+         }
+      }
+
+      private void applyModificationsList(ModificationsList mod) {
+         for (Modification m : mod.getList()) {
+            handle(m, true);
+         }
+      }
+
+      private void performClear() {
+         state.clear(); // cancel any other scheduled changes
+         clearAllWriteLock.lock(); // ensure no other tasks concurrently working
+         try {
+            // to acquire clearAllWriteLock we might have had to wait for N AsyncProcessor to have finished
+            // (as they have to release all clearAllReadLock),
+            // so as they might have put back some work to the state map, clear the state map again inside the writeLock:
+            state.clear();
+            if (trace) log.trace("Performed clear operation");
+            int maxRetries = 3;
+            int attemptNumber = 0;
+            boolean successful = false;
+            do {
+               if (attemptNumber > 0 && log.isDebugEnabled())
+                  log.debug("Retrying clear() due to previous failure. {0} attempts left.", maxRetries - attemptNumber);
+               successful = applyClear();
+               attemptNumber++;
+            } while (!successful && attemptNumber <= maxRetries);
+            if (!successful) {
+               log.error("Clear() operation in async store could not be performed");
+            }
+         } finally {
+            clearAllWriteLock.unlock();
+         }
+      }
+
+   }
 }

Modified: branches/4.2.x/core/src/main/java/org/infinispan/loaders/decorators/AsyncStoreConfig.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/loaders/decorators/AsyncStoreConfig.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/loaders/decorators/AsyncStoreConfig.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -42,6 +42,11 @@
    @Dynamic
    protected Long flushLockTimeout = 5000L;
 
+   /** @configRef desc="Timeout to stop the cache store. When the store is stopped it's possible that some modifications still need to be applied;
+    *             you likely want to set a very large timeout to make sure to not loose data." */
+   @Dynamic
+   protected Long shutdownTimeout = 7200L;
+
    @XmlAttribute
    public Boolean isEnabled() {
       return enabled;
@@ -70,8 +75,18 @@
    public void setFlushLockTimeout(Long stateLockTimeout) {
       testImmutability("flushLockTimeout");
       this.flushLockTimeout = stateLockTimeout;
-   }   
+   }
 
+   @XmlAttribute
+   public Long getShutdownTimeout() {
+      return shutdownTimeout;
+   }
+
+   public void setShutdownTimeout(Long shutdownTimeout) {
+      testImmutability("shutdownTimeout");
+      this.shutdownTimeout = shutdownTimeout;
+   }
+
    @Override
    public AsyncStoreConfig clone() {
       try {

Modified: branches/4.2.x/core/src/main/java/org/infinispan/loaders/decorators/SingletonStore.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/loaders/decorators/SingletonStore.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/loaders/decorators/SingletonStore.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -36,7 +36,7 @@
  * SingletonStore is a simply facade to a real CacheStore implementation. It always delegates reads to the real
  * CacheStore.
  * <p/>
- * Writes are delegated <i>only if,/i> this SingletonStore is currently the cordinator. This avoids having all stores in
+ * Writes are delegated <i>only if</i> this SingletonStore is currently the coordinator. This avoids having all stores in
  * a cluster writing the same data to the same underlying store. Although not incorrect (e.g. a DB will just discard
  * additional INSERTs for the same key, and throw an exception), this will avoid a lot of redundant work.
  * <p/>

Modified: branches/4.2.x/core/src/main/java/org/infinispan/loaders/modifications/Commit.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/loaders/modifications/Commit.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/loaders/modifications/Commit.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -62,5 +62,10 @@
       Commit other = (Commit) obj;
       return tx.equals(other.tx);
    }
+   
+   @Override
+   public String toString() {
+      return "Commit: " + tx;
+   }
 
 }

Modified: branches/4.2.x/core/src/main/java/org/infinispan/loaders/modifications/Modification.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/loaders/modifications/Modification.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/loaders/modifications/Modification.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -8,7 +8,7 @@
  */
 public interface Modification {
    public static enum Type {
-      STORE, REMOVE, CLEAR, PURGE_EXPIRED, PREPARE, COMMIT
+      STORE, REMOVE, CLEAR, PURGE_EXPIRED, PREPARE, COMMIT, LIST
    }
 
    Type getType();

Copied: branches/4.2.x/core/src/main/java/org/infinispan/loaders/modifications/ModificationsList.java (from rev 2323, branches/4.1.x/core/src/main/java/org/infinispan/loaders/modifications/ModificationsList.java)
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/loaders/modifications/ModificationsList.java	                        (rev 0)
+++ branches/4.2.x/core/src/main/java/org/infinispan/loaders/modifications/ModificationsList.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -0,0 +1,79 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.infinispan.loaders.modifications;
+
+import java.util.List;
+
+/**
+ * ModificationsList contains a List<Modification>
+ * 
+ * @author Sanne Grinovero
+ * @since 4.1
+ */
+public class ModificationsList implements Modification {
+   
+   private final List<? extends Modification> list;
+
+   public ModificationsList(List<? extends Modification> list) {
+      this.list = list;
+   }
+
+   @Override
+   public Type getType() {
+      return Modification.Type.LIST;
+   }
+
+   public List<? extends Modification> getList() {
+      return list;
+   }
+
+   @Override
+   public int hashCode() {
+      final int prime = 31;
+      int result = 1;
+      result = prime * result + ((list == null) ? 0 : list.hashCode());
+      return result;
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj)
+         return true;
+      if (obj == null)
+         return false;
+      if (getClass() != obj.getClass())
+         return false;
+      ModificationsList other = (ModificationsList) obj;
+      if (list == null) {
+         if (other.list != null)
+            return false;
+      } else if (!list.equals(other.list))
+         return false;
+      return true;
+   }
+   
+   @Override
+   public String toString() {
+      return "ModificationsList: [" + list + "]";
+   }
+
+}

Modified: branches/4.2.x/core/src/main/java/org/infinispan/loaders/modifications/Prepare.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/loaders/modifications/Prepare.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/loaders/modifications/Prepare.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -80,5 +80,16 @@
       result = 31 * result + (isOnePhase ? 1 : 0);
       return result;
    }
+   
+   @Override
+   public String toString() {
+      StringBuilder sb = new StringBuilder();
+      sb.append("Prepare:");
+      sb.append(tx);
+      sb.append(" isOnePhase:");
+      sb.append(String.valueOf(isOnePhase));
+      sb.append(";[").append(list).append("]");
+      return sb.toString();
+   }
 
 }

Modified: branches/4.2.x/core/src/main/java/org/infinispan/manager/CacheContainer.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/manager/CacheContainer.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/manager/CacheContainer.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,19 +1,8 @@
 package org.infinispan.manager;
 
 import org.infinispan.Cache;
-import org.infinispan.config.Configuration;
-import org.infinispan.config.GlobalConfiguration;
-import org.infinispan.factories.annotations.SurvivesRestarts;
-import org.infinispan.factories.scopes.Scope;
-import org.infinispan.factories.scopes.Scopes;
-import org.infinispan.lifecycle.ComponentStatus;
 import org.infinispan.lifecycle.Lifecycle;
-import org.infinispan.notifications.Listenable;
-import org.infinispan.remoting.transport.Address;
 
-import java.util.List;
-import java.util.Set;
-
 /**
  * A <tt>CacheContainer</tt> is the primary mechanism for retrieving a {@link org.infinispan.Cache} instance, and is often
  * used as a starting point to using the {@link org.infinispan.Cache}.

Modified: branches/4.2.x/core/src/main/java/org/infinispan/manager/DefaultCacheManager.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/manager/DefaultCacheManager.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/manager/DefaultCacheManager.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -24,7 +24,6 @@
 import org.infinispan.Cache;
 import org.infinispan.Version;
 import org.infinispan.config.Configuration;
-import org.infinispan.config.ConfigurationBeanVisitor;
 import org.infinispan.config.ConfigurationException;
 import org.infinispan.config.ConfigurationValidatingVisitor;
 import org.infinispan.config.GlobalConfiguration;
@@ -116,14 +115,16 @@
    private final GlobalComponentRegistry globalComponentRegistry;
 
    /**
-    * Constructs and starts a default instance of the CacheManager, using configuration defaults.
+    * Constructs and starts a default instance of the CacheManager, using configuration defaults.  See {@link Configuration}
+    * and {@link GlobalConfiguration} for details of these defaults.
     */
    public DefaultCacheManager() {
       this(null, null, true);
    }
 
    /**
-    * Constructs a default instance of the CacheManager, using configuration defaults.
+    * Constructs a default instance of the CacheManager, using configuration defaults.  See {@link Configuration}
+    * and {@link GlobalConfiguration} for details of these defaults.
     *
     * @param start if true, the cache manager is started
     */
@@ -133,7 +134,7 @@
 
    /**
     * Constructs and starts a new instance of the CacheManager, using the default configuration passed in. Uses defaults
-    * for a {@link org.infinispan.config.GlobalConfiguration}.
+    * for a {@link GlobalConfiguration}.  See {@link GlobalConfiguration} for details of these defaults. 
     *
     * @param defaultConfiguration configuration to use as a template for all caches created
     */
@@ -143,7 +144,7 @@
 
    /**
     * Constructs a new instance of the CacheManager, using the default configuration passed in. Uses defaults for a {@link
-    * org.infinispan.config.GlobalConfiguration}.
+    * org.infinispan.config.GlobalConfiguration}.  See {@link GlobalConfiguration} for details of these defaults.
     *
     * @param defaultConfiguration configuration file to use as a template for all caches created
     * @param start                if true, the cache manager is started
@@ -154,7 +155,7 @@
 
    /**
     * Constructs and starts a new instance of the CacheManager, using the global configuration passed in, and system
-    * defaults for the default named cache configuration.
+    * defaults for the default named cache configuration.  See {@link Configuration} for details of these defaults.
     *
     * @param globalConfiguration GlobalConfiguration to use for all caches created
     */
@@ -164,7 +165,7 @@
 
    /**
     * Constructs a new instance of the CacheManager, using the global configuration passed in, and system defaults for the
-    * default named cache configuration.
+    * default named cache configuration.  See {@link Configuration} for details of these defaults.
     *
     * @param globalConfiguration GlobalConfiguration to use for all caches created
     * @param start               if true, the cache manager is started.

Modified: branches/4.2.x/core/src/main/java/org/infinispan/marshall/AbstractMarshaller.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/marshall/AbstractMarshaller.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/marshall/AbstractMarshaller.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -7,7 +7,7 @@
 /**
  * Abstract Marshaller implementation containing shared implementations.
  *
- * @author Galder Zamarre�o
+ * @author Galder Zamarreño
  * @since 4.1
  */
 public abstract class AbstractMarshaller implements Marshaller {

Modified: branches/4.2.x/core/src/main/java/org/infinispan/marshall/AbstractStreamingMarshaller.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/marshall/AbstractStreamingMarshaller.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/marshall/AbstractStreamingMarshaller.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,6 +1,5 @@
 package org.infinispan.marshall;
 
-import org.infinispan.io.ByteBuffer;
 import org.infinispan.io.ExposedByteArrayOutputStream;
 
 import java.io.*;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/marshall/MarshalledValue.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/marshall/MarshalledValue.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/marshall/MarshalledValue.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -33,7 +33,6 @@
 import java.io.NotSerializableException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
-import java.io.Serializable;
 import java.util.Arrays;
 
 /**

Modified: branches/4.2.x/core/src/main/java/org/infinispan/marshall/StreamingMarshaller.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/marshall/StreamingMarshaller.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/marshall/StreamingMarshaller.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -24,7 +24,6 @@
 import net.jcip.annotations.ThreadSafe;
 import org.infinispan.factories.scopes.Scope;
 import org.infinispan.factories.scopes.Scopes;
-import org.infinispan.io.ByteBuffer;
 
 import java.io.IOException;
 import java.io.InputStream;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/marshall/jboss/GenericJBossMarshaller.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/marshall/jboss/GenericJBossMarshaller.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/marshall/jboss/GenericJBossMarshaller.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -4,7 +4,6 @@
 import org.infinispan.io.ByteBuffer;
 import org.infinispan.io.ExposedByteArrayOutputStream;
 import org.infinispan.marshall.AbstractMarshaller;
-import org.infinispan.marshall.Marshaller;
 import org.infinispan.util.Util;
 import org.infinispan.util.logging.Log;
 import org.infinispan.util.logging.LogFactory;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/marshall/jboss/JBossMarshaller.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/marshall/jboss/JBossMarshaller.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/marshall/jboss/JBossMarshaller.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -21,34 +21,14 @@
  */
 package org.infinispan.marshall.jboss;
 
-import org.infinispan.CacheException;
 import org.infinispan.commands.RemoteCommandsFactory;
-import org.infinispan.io.ByteBuffer;
 import org.infinispan.io.ExposedByteArrayOutputStream;
-import org.infinispan.marshall.AbstractStreamingMarshaller;
 import org.infinispan.marshall.Marshallable;
 import org.infinispan.marshall.StreamingMarshaller;
 import org.infinispan.util.ReflectionUtil;
-import org.infinispan.util.Util;
-import org.infinispan.util.logging.Log;
-import org.infinispan.util.logging.LogFactory;
-import org.jboss.marshalling.ContextClassResolver;
-import org.jboss.marshalling.ExceptionListener;
-import org.jboss.marshalling.MarshallerFactory;
-import org.jboss.marshalling.Marshalling;
-import org.jboss.marshalling.MarshallingConfiguration;
-import org.jboss.marshalling.TraceInformation;
-import org.jboss.marshalling.Unmarshaller;
-import org.jboss.marshalling.reflect.SunReflectiveCreator;
 
-import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.io.OutputStream;
-import java.lang.reflect.Method;
-import java.net.URL;
 
 /**
  * A specialized form of the {@link GenericJBossMarshaller}, making use of a custom object table for types internal to

Modified: branches/4.2.x/core/src/main/java/org/infinispan/remoting/ReplicationQueue.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/remoting/ReplicationQueue.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/remoting/ReplicationQueue.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -35,7 +35,6 @@
 import org.infinispan.util.logging.Log;
 import org.infinispan.util.logging.LogFactory;
 
-import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.concurrent.BlockingQueue;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/remoting/transport/jgroups/CommandAwareRpcDispatcher.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/remoting/transport/jgroups/CommandAwareRpcDispatcher.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/remoting/transport/jgroups/CommandAwareRpcDispatcher.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -31,7 +31,6 @@
 import org.infinispan.remoting.responses.RequestIgnoredResponse;
 import org.infinispan.remoting.responses.Response;
 import org.infinispan.remoting.transport.DistributedSync;
-import org.infinispan.util.Util;
 import org.infinispan.util.concurrent.TimeoutException;
 import org.infinispan.util.logging.Log;
 import org.infinispan.util.logging.LogFactory;
@@ -57,7 +56,6 @@
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import static java.util.concurrent.TimeUnit.MILLISECONDS;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/statetransfer/StateTransferManagerImpl.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/statetransfer/StateTransferManagerImpl.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/statetransfer/StateTransferManagerImpl.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -83,7 +83,7 @@
    private static final boolean trace = log.isTraceEnabled();
    private static final Byte DELIMITER = (byte) 123;
 
-   boolean transientState, persistentState;
+   boolean transientState, persistentState, alwaysProvideTransientState;
    volatile boolean needToUnblockRPC = false;
    volatile Address stateSender;
 
@@ -112,19 +112,22 @@
       log.trace("Data container is {0}", System.identityHashCode(dataContainer));
       cs = clm == null ? null : clm.getCacheStore();
       transientState = configuration.isFetchInMemoryState();
+      alwaysProvideTransientState = configuration.isAlwaysProvideInMemoryState();
       persistentState = cs != null && clm.isEnabled() && clm.isFetchPersistentState() && !clm.isShared();
 
-      long startTime = 0;
-      if (log.isDebugEnabled()) {
-         log.debug("Initiating state transfer process");
-         startTime = System.currentTimeMillis();
-      }
+      if (transientState || persistentState) {
+         long startTime = 0;
+            if (log.isDebugEnabled()) {
+            log.debug("Initiating state transfer process");
+            startTime = System.currentTimeMillis();
+         }
 
-      rpcManager.retrieveState(cache.getName(), configuration.getStateRetrievalTimeout());
+         rpcManager.retrieveState(cache.getName(), configuration.getStateRetrievalTimeout());
 
-      if (log.isDebugEnabled()) {
-         long duration = System.currentTimeMillis() - startTime;
-         log.debug("State transfer process completed in {0}", Util.prettyPrintTime(duration));
+         if (log.isDebugEnabled()) {
+            long duration = System.currentTimeMillis() - startTime;
+            log.debug("State transfer process completed in {0}", Util.prettyPrintTime(duration));
+         }
       }
    }
 
@@ -141,8 +144,7 @@
       ObjectOutput oo = null;
       boolean txLogActivated = false;
       try {
-         boolean canProvideState = (transientState || persistentState)
-               && (txLogActivated = transactionLog.activate());
+         boolean canProvideState = (txLogActivated = transactionLog.activate());
          if (log.isDebugEnabled()) log.debug("Generating state.  Can provide? {0}", canProvideState);
          oo = marshaller.startObjectOutput(out, false);
 
@@ -152,7 +154,7 @@
 
          if (canProvideState) {
             delimit(oo);
-            if (transientState) generateInMemoryState(oo);
+            if (transientState || alwaysProvideTransientState) generateInMemoryState(oo); // always provide in-memory state if requested.  ISPN-610.
             delimit(oo);
             if (persistentState) generatePersistentState(oo);
             delimit(oo);

Modified: branches/4.2.x/core/src/main/java/org/infinispan/transaction/TransactionLog.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/transaction/TransactionLog.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/transaction/TransactionLog.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -89,7 +89,7 @@
       }
    }
 
-   private static Log log = LogFactory.getLog(TransactionLog.class);
+   private static final Log log = LogFactory.getLog(TransactionLog.class);
 
    public void logPrepare(PrepareCommand command) {
       pendingPrepares.put(command.getGlobalTransaction(), command);

Modified: branches/4.2.x/core/src/main/java/org/infinispan/transaction/xa/CacheTransaction.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/transaction/xa/CacheTransaction.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/transaction/xa/CacheTransaction.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -5,7 +5,6 @@
 import org.infinispan.util.BidirectionalMap;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * Defines the state a infinispan transaction should have.

Modified: branches/4.2.x/core/src/main/java/org/infinispan/transaction/xa/DeadlockDetectingGlobalTransaction.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/transaction/xa/DeadlockDetectingGlobalTransaction.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/transaction/xa/DeadlockDetectingGlobalTransaction.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -20,7 +20,7 @@
 @Marshallable(externalizer = DeadlockDetectingGlobalTransaction.Externalizer.class, id = Ids.DEADLOCK_DETECTING_GLOBAL_TRANSACTION)
 public class DeadlockDetectingGlobalTransaction extends GlobalTransaction {
 
-   private static Log log = LogFactory.getLog(DeadlockDetectingGlobalTransaction.class);
+   private static final Log log = LogFactory.getLog(DeadlockDetectingGlobalTransaction.class);
 
    public static final boolean trace = log.isTraceEnabled();
 

Modified: branches/4.2.x/core/src/main/java/org/infinispan/transaction/xa/RemoteTransaction.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/transaction/xa/RemoteTransaction.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/transaction/xa/RemoteTransaction.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -9,7 +9,6 @@
 import java.util.Arrays;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Map;
 
 /**
  * Defines the state of a remotely originated transaction.

Modified: branches/4.2.x/core/src/main/java/org/infinispan/transaction/xa/TransactionTable.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/transaction/xa/TransactionTable.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/transaction/xa/TransactionTable.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -41,7 +41,7 @@
  */
 public class TransactionTable {
 
-   private static Log log = LogFactory.getLog(TransactionTable.class);
+   private static final Log log = LogFactory.getLog(TransactionTable.class);
    private static boolean trace = log.isTraceEnabled();
 
    private final Map<Transaction, TransactionXaAdapter> localTransactions = new HashMap<Transaction, TransactionXaAdapter>();

Modified: branches/4.2.x/core/src/main/java/org/infinispan/transaction/xa/TransactionXaAdapter.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/transaction/xa/TransactionXaAdapter.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/transaction/xa/TransactionXaAdapter.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -22,7 +22,6 @@
 import javax.transaction.xa.Xid;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 
 /**
  * This acts both as an local {@link org.infinispan.transaction.xa.CacheTransaction} and implementor of an {@link
@@ -33,7 +32,7 @@
  */
 public class TransactionXaAdapter implements CacheTransaction, XAResource {
 
-   private static Log log = LogFactory.getLog(TransactionXaAdapter.class);
+   private static final Log log = LogFactory.getLog(TransactionXaAdapter.class);
    private static boolean trace = log.isTraceEnabled();
 
    private int txTimeout;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/util/FileLookup.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/util/FileLookup.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/util/FileLookup.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -32,9 +32,9 @@
 import java.net.URL;
 
 /**
- * Holds the logic of looking up a file, in the following sequence: <ol> <li> try to load it with the curent thread's
+ * Holds the logic of looking up a file, in the following sequence: <ol> <li> try to load it with the current thread's
  * context ClassLoader</li> <li> if fails, the system ClassLoader</li> <li> if fails, try to load it as a file from the
- * disck </li> </ol>
+ * disk </li> </ol>
  *
  * @author Mircea.Markus at jboss.com
  * @since 4.0

Modified: branches/4.2.x/core/src/main/java/org/infinispan/util/InfinispanCollections.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/util/InfinispanCollections.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/util/InfinispanCollections.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -19,12 +19,12 @@
 
    @SuppressWarnings("unchecked")
    public static <T> ReversibleOrderedSet<T> emptyReversibleOrderedSet() {
-      return (ReversibleOrderedSet<T>) EMPTY_ROS;
+      return EMPTY_ROS;
    }
 
    @SuppressWarnings("unchecked")
    public static <K, V> BidirectionalMap<K, V> emptyBidirectionalMap() {
-      return (BidirectionalMap<K, V>) EMPTY_BIDI_MAP;
+      return EMPTY_BIDI_MAP;
    }
 
    private static final class EmptyReversibleOrderedSet extends AbstractSet implements ReversibleOrderedSet {

Modified: branches/4.2.x/core/src/main/java/org/infinispan/util/LegacyKeySupportSystemProperties.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/util/LegacyKeySupportSystemProperties.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/util/LegacyKeySupportSystemProperties.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -3,8 +3,6 @@
 import org.infinispan.util.logging.Log;
 import org.infinispan.util.logging.LogFactory;
 
-import java.util.Properties;
-
 /**
  * A wrapper around system properties that supports legacy keys
  *

Modified: branches/4.2.x/core/src/main/java/org/infinispan/util/Proxies.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/util/Proxies.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/util/Proxies.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -22,8 +22,6 @@
 package org.infinispan.util;
 
 import java.lang.reflect.Method;
-import java.util.HashSet;
-import java.util.Set;
 
 import org.infinispan.util.logging.Log;
 import org.infinispan.util.logging.LogFactory;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/util/concurrent/AbstractInProcessNotifyingFuture.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/util/concurrent/AbstractInProcessNotifyingFuture.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/util/concurrent/AbstractInProcessNotifyingFuture.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,7 +1,5 @@
 package org.infinispan.util.concurrent;
 
-import java.util.concurrent.ExecutionException;
-
 /**
  * An abstract NotifyingFuture that has "completed"
  *

Modified: branches/4.2.x/core/src/main/java/org/infinispan/util/concurrent/IsolationLevel.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/util/concurrent/IsolationLevel.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/util/concurrent/IsolationLevel.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -21,9 +21,6 @@
  */
 package org.infinispan.util.concurrent;
 
-import javax.xml.bind.annotation.XmlNsForm;
-import javax.xml.bind.annotation.XmlSchema;
-
 /**
  * Various transaction isolation levels as an enumerated class.  Note that <a href="http://wiki.jboss.org/wiki/JBossCacheMVCC">MVCC</a>
  * only supports {@link #READ_COMMITTED} and {@link #REPEATABLE_READ}, upgrading where possible.

Modified: branches/4.2.x/core/src/main/java/org/infinispan/util/concurrent/locks/StripedLock.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/util/concurrent/locks/StripedLock.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/util/concurrent/locks/StripedLock.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -48,7 +48,7 @@
 @ThreadSafe
 public class StripedLock {
 
-   private static Log log = LogFactory.getLog(StripedLock.class);
+   private static final Log log = LogFactory.getLog(StripedLock.class);
 
    private static final int DEFAULT_CONCURRENCY = 20;
    private final int lockSegmentMask;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/util/concurrent/locks/containers/AbstractPerEntryLockContainer.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/util/concurrent/locks/containers/AbstractPerEntryLockContainer.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/util/concurrent/locks/containers/AbstractPerEntryLockContainer.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,7 +1,5 @@
 package org.infinispan.util.concurrent.locks.containers;
 
-import org.infinispan.util.Util;
-
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.TimeUnit;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/util/concurrent/locks/containers/AbstractStripedLockContainer.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/util/concurrent/locks/containers/AbstractStripedLockContainer.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/util/concurrent/locks/containers/AbstractStripedLockContainer.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -22,7 +22,6 @@
 package org.infinispan.util.concurrent.locks.containers;
 
 import net.jcip.annotations.ThreadSafe;
-import org.infinispan.util.Util;
 
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.Lock;

Modified: branches/4.2.x/core/src/main/java/org/infinispan/util/hash/MurmurHash2.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/util/hash/MurmurHash2.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/java/org/infinispan/util/hash/MurmurHash2.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -2,8 +2,6 @@
 
 import org.infinispan.util.ByteArrayKey;
 
-import java.util.Random;
-
 /**
  * An implementation of Austin Appleby's MurmurHash2.0 algorithm, as documented on <a href="http://sites.google.com/site/murmurhash/">his website</a>.
  * <p />

Modified: branches/4.2.x/core/src/main/resources/config-samples/all.xml
===================================================================
--- branches/4.2.x/core/src/main/resources/config-samples/all.xml	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/main/resources/config-samples/all.xml	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <infinispan
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-      xsi:schemaLocation="urn:infinispan:config:4.0 http://www.infinispan.org/schemas/infinispan-config-4.0.xsd"
-      xmlns="urn:infinispan:config:4.0">
+      xsi:schemaLocation="urn:infinispan:config:4.1 http://www.infinispan.org/schemas/infinispan-config-4.1.xsd"
+      xmlns="urn:infinispan:config:4.1">
 
    <!-- *************************** -->
    <!-- System-wide global settings -->
@@ -104,7 +104,7 @@
          <!--
             Defines whether to retrieve state on startup
          -->
-         <stateRetrieval timeout="20000" fetchInMemoryState="false"/>
+         <stateRetrieval timeout="20000" fetchInMemoryState="false" alwaysProvideInMemoryState="false"/>
 
          <!--
             Network calls are synchronous.

Modified: branches/4.2.x/core/src/test/java/org/infinispan/affinity/BaseFilterKeyAffinityServiceTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/affinity/BaseFilterKeyAffinityServiceTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/affinity/BaseFilterKeyAffinityServiceTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -7,7 +7,6 @@
 import org.infinispan.test.TestingUtil;
 import org.infinispan.util.logging.Log;
 import org.infinispan.util.logging.LogFactory;
-import org.testng.annotations.Test;
 
 import java.util.List;
 import java.util.Map;
@@ -21,7 +20,7 @@
  */
 public abstract class BaseFilterKeyAffinityServiceTest extends BaseKeyAffinityServiceTest {
 
-   private static Log log = LogFactory.getLog(BaseFilterKeyAffinityServiceTest.class);
+   private static final Log log = LogFactory.getLog(BaseFilterKeyAffinityServiceTest.class);
 
    protected EmbeddedCacheManager cacheManager;
 

Modified: branches/4.2.x/core/src/test/java/org/infinispan/affinity/FilteredKeyAffinityService.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/affinity/FilteredKeyAffinityService.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/affinity/FilteredKeyAffinityService.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -5,7 +5,6 @@
 import org.testng.annotations.Test;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ThreadFactory;

Modified: branches/4.2.x/core/src/test/java/org/infinispan/affinity/LocalKeyAffinityServiceTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/affinity/LocalKeyAffinityServiceTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/affinity/LocalKeyAffinityServiceTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,10 +1,7 @@
 package org.infinispan.affinity;
 
-import junit.framework.Assert;
-import org.infinispan.Cache;
 import org.infinispan.manager.EmbeddedCacheManager;
 import org.infinispan.remoting.transport.Address;
-import org.infinispan.test.TestingUtil;
 import org.testng.annotations.Test;
 
 import java.util.Collections;

Modified: branches/4.2.x/core/src/test/java/org/infinispan/api/mvcc/read_committed/CacheAPIMVCCTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/api/mvcc/read_committed/CacheAPIMVCCTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/api/mvcc/read_committed/CacheAPIMVCCTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -2,7 +2,6 @@
 
 import org.infinispan.api.CacheAPITest;
 import org.infinispan.util.concurrent.IsolationLevel;
-import org.testng.annotations.AfterClass;
 import org.testng.annotations.Test;
 
 @Test(groups = "functional", testName = "api.mvcc.read_committed.CacheAPIMVCCTest")

Modified: branches/4.2.x/core/src/test/java/org/infinispan/config/parsing/MinimalConfigurationParsingTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/config/parsing/MinimalConfigurationParsingTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/config/parsing/MinimalConfigurationParsingTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,7 +1,6 @@
 package org.infinispan.config.parsing;
 
 import org.infinispan.config.InfinispanConfiguration;
-import org.infinispan.test.TestingUtil;
 import org.testng.annotations.Test;
 
 import java.io.ByteArrayInputStream;

Modified: branches/4.2.x/core/src/test/java/org/infinispan/config/parsing/XmlFileParsingTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/config/parsing/XmlFileParsingTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/config/parsing/XmlFileParsingTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -18,12 +18,15 @@
 import org.testng.annotations.Test;
 
 import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Map;
 
 import static org.infinispan.test.TestingUtil.INFINISPAN_END_TAG;
 import static org.infinispan.test.TestingUtil.INFINISPAN_START_TAG;
+import static org.infinispan.test.TestingUtil.INFINISPAN_START_TAG_40;
 import static org.infinispan.test.TestingUtil.INFINISPAN_START_TAG_NO_SCHEMA;
 
 @Test(groups = "unit", testName = "config.parsing.XmlFileParsingTest")
@@ -70,8 +73,40 @@
       assert named != null;
       assert named.isEmpty();
    }
+   
+   public void testBackwardCompatibleInputCacheConfiguration() throws Exception {
+      
+      //read 4.0 configuration file against 4.1 schema
+      String config = INFINISPAN_START_TAG_40 +
+            "   <global>\n" +
+            "      <transport clusterName=\"demoCluster\"/>\n" +
+            "   </global>\n" +
+            "\n" +
+            "   <default>\n" +
+            "      <clustering mode=\"replication\">\n" +
+            "      </clustering>\n" +
+            "   </default>\n" +
+            TestingUtil.INFINISPAN_END_TAG;
 
+      String schemaFileName = "schema/infinispan-config-" + Version.getMajorVersion() + ".xsd";
+      
+      InputStream is = new ByteArrayInputStream(config.getBytes());      
+      InfinispanConfiguration c = InfinispanConfiguration.newInfinispanConfiguration(is,
+               InfinispanConfiguration.findSchemaInputStream(schemaFileName));
+      GlobalConfiguration gc = c.parseGlobalConfiguration();
+      
+      assert gc.getTransportClass().equals(JGroupsTransport.class.getName());
+      assert gc.getClusterName().equals("demoCluster");
 
+      Configuration def = c.parseDefaultConfiguration();
+      assert def.getCacheMode() == Configuration.CacheMode.REPL_SYNC;
+
+      Map<String, Configuration> named = c.parseNamedConfigurations();
+      assert named != null;
+      assert named.isEmpty();
+   }
+
+
    public void testNoSchemaWithStuff() throws IOException {
       String xml = INFINISPAN_START_TAG_NO_SCHEMA +
               "    <default>\n" +

Modified: branches/4.2.x/core/src/test/java/org/infinispan/context/MarshalledValueContextTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/context/MarshalledValueContextTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/context/MarshalledValueContextTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -4,16 +4,13 @@
 import org.infinispan.config.Configuration;
 import org.infinispan.context.InvocationContext;
 import org.infinispan.context.InvocationContextContainer;
-import org.infinispan.context.InvocationContextContainerImpl;
 import org.infinispan.context.impl.LocalTxInvocationContext;
 import org.infinispan.manager.DefaultCacheManager;
 import org.infinispan.manager.EmbeddedCacheManager;
 import org.infinispan.test.SingleCacheManagerTest;
 import org.infinispan.test.TestingUtil;
 import org.infinispan.test.fwk.TestCacheManagerFactory;
-import org.infinispan.transaction.lookup.DummyTransactionManagerLookup;
 import org.infinispan.util.concurrent.locks.LockManager;
-import org.infinispan.util.concurrent.locks.containers.LockContainer;
 import org.testng.annotations.Test;
 
 import javax.transaction.TransactionManager;

Modified: branches/4.2.x/core/src/test/java/org/infinispan/distribution/BaseDistFunctionalTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/distribution/BaseDistFunctionalTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/distribution/BaseDistFunctionalTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -100,7 +100,7 @@
     * This is a separate class because some tools try and run this method as a test 
     */
    public static class RehashWaiter {
-      private static Log log = LogFactory.getLog(RehashWaiter.class);
+      private static final Log log = LogFactory.getLog(RehashWaiter.class);
       public static void waitForInitRehashToComplete(Cache... caches) {
          int gracetime = 60000; // 60 seconds?
          long giveup = System.currentTimeMillis() + gracetime;

Modified: branches/4.2.x/core/src/test/java/org/infinispan/distribution/HashFunctionComparisonTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/distribution/HashFunctionComparisonTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/distribution/HashFunctionComparisonTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,9 +1,7 @@
 package org.infinispan.distribution;
 
 import org.apache.commons.math.stat.descriptive.DescriptiveStatistics;
-import org.infinispan.profiling.testinternals.Generator;
 import org.infinispan.remoting.transport.Address;
-import org.infinispan.util.Util;
 import org.infinispan.util.hash.MurmurHash2;
 import org.testng.annotations.Test;
 

Modified: branches/4.2.x/core/src/test/java/org/infinispan/distribution/SyncDistImplicitLockingTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/distribution/SyncDistImplicitLockingTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/distribution/SyncDistImplicitLockingTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -21,24 +21,11 @@
  */
 package org.infinispan.distribution;
 
-import org.infinispan.Cache;
 import org.infinispan.config.Configuration;
 import org.infinispan.replication.SyncReplImplicitLockingTest;
-import org.infinispan.test.MultipleCacheManagersTest;
-import org.infinispan.test.TestingUtil;
-import org.infinispan.util.concurrent.locks.LockManager;
 
-import static org.testng.AssertJUnit.assertEquals;
-import static org.testng.AssertJUnit.assertNull;
-
 import org.testng.annotations.Test;
 
-import javax.transaction.TransactionManager;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
 /**
  * Tests for implicit locking
  * <p/>

Modified: branches/4.2.x/core/src/test/java/org/infinispan/eviction/EvictionManagerTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/eviction/EvictionManagerTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/eviction/EvictionManagerTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -2,18 +2,10 @@
 
 import static org.easymock.EasyMock.*;
 
-import org.easymock.EasyMock;
-import org.easymock.IAnswer;
-import org.infinispan.AdvancedCache;
-import org.infinispan.Cache;
 import org.infinispan.config.Configuration;
-import org.infinispan.container.DataContainer;
-import org.infinispan.container.entries.InternalEntryFactory;
-import org.infinispan.context.Flag;
 import org.infinispan.test.AbstractInfinispanTest;
 import org.testng.annotations.Test;
 
-import java.util.Iterator;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;

Modified: branches/4.2.x/core/src/test/java/org/infinispan/invalidation/BaseInvalidationTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/invalidation/BaseInvalidationTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/invalidation/BaseInvalidationTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -149,29 +149,18 @@
          replListener(cache2).expect(InvalidateCommand.class);
          mgr1.commit();
          if (isSync) {
-            fail("Ought to have failed!");
+            assert false: "isSync should be false";
          } else {
-            assert true : "Ought to have succeeded";
             replListener(cache2).waitForRpc();
          }
+      } catch (RollbackException roll) {
+         assert isSync : "isSync should be true";
       }
-      catch (RollbackException roll) {
-         if (isSync)
-            assertTrue("Ought to have failed!", true);
-         else
-            fail("Ought to have succeeded!");
-      }
 
       mgr2.resume(tx2);
-      try {
-         replListener(cache1).expect(InvalidateCommand.class);
-         mgr2.commit();
-         if (!isSync) replListener(cache1).waitForRpc();
-         assertTrue("Ought to have succeeded!", true);
-      }
-      catch (RollbackException roll) {
-         fail("Ought to have succeeded!");
-      }
+      replListener(cache1).expect(InvalidateCommand.class);
+      mgr2.commit();
+      if (!isSync) replListener(cache1).waitForRpc();
 
       LockManager lm1 = TestingUtil.extractComponent(cache1, LockManager.class);
       LockManager lm2 = TestingUtil.extractComponent(cache2, LockManager.class);

Modified: branches/4.2.x/core/src/test/java/org/infinispan/jmx/RpcManagerMBeanTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/jmx/RpcManagerMBeanTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/jmx/RpcManagerMBeanTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -17,7 +17,6 @@
 import org.infinispan.test.TestingUtil;
 import org.infinispan.test.fwk.TestCacheManagerFactory;
 
-import static org.easymock.EasyMock.expect;
 import static org.testng.Assert.assertEquals;
 import org.testng.annotations.Test;
 

Modified: branches/4.2.x/core/src/test/java/org/infinispan/loaders/FlushingAsyncStoreTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/loaders/FlushingAsyncStoreTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/loaders/FlushingAsyncStoreTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -3,18 +3,15 @@
 import java.io.IOException;
 import java.sql.SQLException;
 
-import org.apache.commons.math.stat.inference.TestUtils;
 import org.infinispan.config.CacheLoaderManagerConfig;
 import org.infinispan.config.Configuration;
 import org.infinispan.container.entries.InternalCacheEntry;
 import org.infinispan.loaders.decorators.AsyncStoreConfig;
 import org.infinispan.loaders.dummy.DummyInMemoryCacheStore;
-import org.infinispan.loaders.file.FileCacheStoreConfig;
 import org.infinispan.manager.EmbeddedCacheManager;
 import org.infinispan.test.SingleCacheManagerTest;
 import org.infinispan.test.TestingUtil;
 import org.infinispan.test.fwk.TestCacheManagerFactory;
-import org.testng.annotations.AfterClass;
 import org.testng.annotations.Test;
 
 /**
@@ -46,7 +43,7 @@
       return TestCacheManagerFactory.createCacheManager(config);
    }
 
-   @Test (timeOut = 10000)
+   @Test(timeOut = 10000)
    public void writeOnStorage() throws IOException, ClassNotFoundException, SQLException, InterruptedException {
       cache = cacheManager.getCache("AsyncStoreInMemory");
       cache.put("key1", "value");
@@ -61,11 +58,6 @@
       assert "value".equals(cache.get("key1"));
    }
    
-   @AfterClass
-   public void removeStore(){
-      TestUtils a; 
-   }
-
    public static class SlowCacheStoreConfig extends DummyInMemoryCacheStore.Cfg {
       public SlowCacheStoreConfig() {
          setCacheLoaderClassName(SlowCacheStore.class.getName());

Modified: branches/4.2.x/core/src/test/java/org/infinispan/loaders/UnnnecessaryLoadingTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/loaders/UnnnecessaryLoadingTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/loaders/UnnnecessaryLoadingTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -45,6 +45,7 @@
       return cm;
    }
 
+   @Test
    public void testRepeatedLoads() throws CacheLoaderException {
       CacheLoaderManager clm = TestingUtil.extractComponent(cache, CacheLoaderManager.class);
       ChainingCacheStore ccs = (ChainingCacheStore) clm.getCacheLoader();
@@ -66,6 +67,7 @@
       assert countingCS.numContains == 0 : "Expected 0, was " + countingCS.numContains;
    }
 
+   @Test
    public void testSkipCacheFlagUsage() throws CacheLoaderException {
       CacheLoaderManager clm = TestingUtil.extractComponent(cache, CacheLoaderManager.class);
       ChainingCacheStore ccs = (ChainingCacheStore) clm.getCacheLoader();

Modified: branches/4.2.x/core/src/test/java/org/infinispan/loaders/decorators/AsyncTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/loaders/decorators/AsyncTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/loaders/decorators/AsyncTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -8,7 +8,6 @@
 import org.infinispan.loaders.dummy.DummyInMemoryCacheStore;
 import org.infinispan.loaders.modifications.Clear;
 import org.infinispan.loaders.modifications.Modification;
-import org.infinispan.loaders.modifications.Prepare;
 import org.infinispan.loaders.modifications.Remove;
 import org.infinispan.loaders.modifications.Store;
 import org.infinispan.test.AbstractInfinispanTest;
@@ -37,7 +36,7 @@
 import static org.infinispan.test.TestingUtil.k;
 import static org.infinispan.test.TestingUtil.v;
 
- at Test(groups = "unit", testName = "loaders.decorators.AsyncTest")
+ at Test(groups = "unit", testName = "loaders.decorators.AsyncTest", sequential=true)
 public class AsyncTest extends AbstractInfinispanTest {
    private static final Log log = LogFactory.getLog(AsyncTest.class);
    AsyncStore store;
@@ -52,7 +51,7 @@
       asyncConfig = new AsyncStoreConfig();
       asyncConfig.setThreadPoolSize(10);
       store = new AsyncStore(underlying, asyncConfig);
-      dummyCfg = new DummyInMemoryCacheStore.Cfg();
+      dummyCfg = new DummyInMemoryCacheStore.Cfg("AsyncStoreTests",false);
       dummyCfg.setStore(AsyncTest.class.getName());
       store.init(dummyCfg, null, null);
       store.start();
@@ -64,6 +63,7 @@
       if (store != null) store.stop();
    }
 
+   @Test(timeOut=10000)
    public void testPutRemove() throws Exception {
       final int number = 1000;
       String key = "testPutRemove-k-";
@@ -72,6 +72,7 @@
       doTestRemove(number, key);
    }
 
+   @Test(timeOut=10000)
    public void testPutClearPut() throws Exception {
       final int number = 1000;
       String key = "testPutClearPut-k-";
@@ -80,10 +81,10 @@
       doTestClear(number, key);
       value = "testPutClearPut-v[2]-";
       doTestPut(number, key, value);
-
       doTestRemove(number, key);
    }
 
+   @Test(timeOut=10000)
    public void testMultiplePutsOnSameKey() throws Exception {
       final int number = 1000;
       String key = "testMultiplePutsOnSameKey-k";
@@ -92,6 +93,7 @@
       doTestSameKeyRemove(key);
    }
 
+   @Test(timeOut=10000)
    public void testRestrictionOnAddingToAsyncQueue() throws Exception {
       store.remove("blah");
 
@@ -174,10 +176,8 @@
          mods.add(new Remove(k1));
          GlobalTransaction tx = gtf.newGlobalTransaction(null, false);
          store.prepare(mods, tx, false);
-         barrier.await(5, TimeUnit.SECONDS);
 
-         assert 1 == localMods.size();
-         assert localMods.entrySet().iterator().next().getKey() instanceof Prepare;
+         assert 0 == localMods.size();
          assert !store.containsKey(k1);
          assert !store.containsKey(k2);
 
@@ -185,6 +185,8 @@
          barrier.await(5, TimeUnit.SECONDS);
          assert store.load(k2).getValue().equals(v2);
          assert !store.containsKey(k1);
+         assert 2 == localMods.size();
+         assert new Remove(k1).equals(localMods.get(k1));
       } finally {
          store.delegate.clear();
          store.stop();
@@ -246,12 +248,12 @@
          mods.add(new Remove(k1));
          GlobalTransaction tx = gtf.newGlobalTransaction(null, false);
          store.prepare(mods, tx, false);
-         barrier.await(5, TimeUnit.SECONDS);
+         Thread.sleep(200); //verify that work is not performed until commit
          assert 0 == storeCount.get();
          assert 0 == removeCount.get();
          assert 0 == clearCount.get();
          store.commit(tx);
-         barrier.await(5, TimeUnit.SECONDS);
+         barrier.await(5, TimeUnit.SECONDS); //modifications applied all at once
          assert 1 == storeCount.get() : "Store count was " + storeCount.get();
          assert 1 == removeCount.get();
          assert 0 == clearCount.get();
@@ -267,14 +269,14 @@
          mods.add(new Remove(k2));
          tx = gtf.newGlobalTransaction(null, false);
          store.prepare(mods, tx, false);
-         barrier.await(5, TimeUnit.SECONDS);
+         Thread.sleep(200); //verify that work is not performed until commit
          assert 0 == storeCount.get();
          assert 0 == removeCount.get();
          assert 0 == clearCount.get();
          store.commit(tx);
          barrier.await(5, TimeUnit.SECONDS);
          assert 0 == storeCount.get() : "Store count was " + storeCount.get();
-         assert 0 == removeCount.get();
+         assert 1 == removeCount.get();
          assert 1 == clearCount.get();
 
          storeCount.set(0);
@@ -288,7 +290,7 @@
          mods.add(new Store(InternalEntryFactory.create(k3, v3)));         
          tx = gtf.newGlobalTransaction(null, false);
          store.prepare(mods, tx, false);
-         barrier.await(5, TimeUnit.SECONDS);
+         Thread.sleep(200);
          assert 0 == storeCount.get();
          assert 0 == removeCount.get();
          assert 0 == clearCount.get();
@@ -306,14 +308,14 @@
          mods.add(new Remove(k1));
          tx = gtf.newGlobalTransaction(null, false);
          store.prepare(mods, tx, false);
-         barrier.await(5, TimeUnit.SECONDS);
+         Thread.sleep(200);
          assert 0 == storeCount.get();
          assert 0 == removeCount.get();
          assert 0 == clearCount.get();
          store.commit(tx);
          barrier.await(5, TimeUnit.SECONDS);
          assert 0 == storeCount.get() : "Store count was " + storeCount.get();
-         assert 0 == removeCount.get();
+         assert 1 == removeCount.get();
          assert 1 == clearCount.get();
 
          storeCount.set(0);
@@ -324,7 +326,7 @@
          mods.add(new Store(InternalEntryFactory.create(k1, v1)));         
          tx = gtf.newGlobalTransaction(null, false);
          store.prepare(mods, tx, false);
-         barrier.await(5, TimeUnit.SECONDS);
+         Thread.sleep(200);
          assert 0 == storeCount.get();
          assert 0 == removeCount.get();
          assert 0 == clearCount.get();
@@ -341,9 +343,13 @@
    }
 
    private void doTestPut(int number, String key, String value) throws Exception {
-      for (int i = 0; i < number; i++) store.store(InternalEntryFactory.create(key + i, value + i));
+      for (int i = 0; i < number; i++) {
+         InternalCacheEntry cacheEntry = InternalEntryFactory.create(key + i, value + i);
+         store.store(cacheEntry);
+      }
 
-      TestingUtil.sleepRandom(1000);
+      store.stop();
+      store.start();
 
       InternalCacheEntry[] entries = new InternalCacheEntry[number];
       for (int i = 0; i < number; i++) {
@@ -360,7 +366,7 @@
                if (entry != null) {
                   assert entry.getValue().equals(value + i);
                } else {
-                  TestingUtil.sleepRandom(1000);
+                  TestingUtil.sleepThread(20, "still waiting for key to appear: " + key + i);
                }
             }
          }
@@ -368,14 +374,16 @@
    }
 
    private void doTestSameKeyPut(int number, String key, String value) throws Exception {
-      for (int i = 0; i < number; i++)
+      for (int i = 0; i < number; i++) {
          store.store(InternalEntryFactory.create(key, value + i));
+      }
 
-      TestingUtil.sleepThread(5000);
+      store.stop();
+      store.start();
       InternalCacheEntry entry;
       boolean success = false;
       for (int i = 0; i < 120; i++) {
-         TestingUtil.sleepRandom(1000);
+         TestingUtil.sleepThread(20);
          entry = store.load(key);
          success = entry.getValue().equals(value + (number - 1));
          if (success) break;
@@ -386,7 +394,8 @@
    private void doTestRemove(int number, String key) throws Exception {
       for (int i = 0; i < number; i++) store.remove(key + i);
 
-      TestingUtil.sleepRandom(1000);
+      store.stop();//makes sure the store is flushed
+      store.start();
 
       InternalCacheEntry[] entries = new InternalCacheEntry[number];
       for (int i = 0; i < number; i++) {
@@ -396,8 +405,7 @@
       for (int i = 0; i < number; i++) {
          InternalCacheEntry entry = entries[i];
          while (entry != null) {
-            log.info("Entry still not null {0}", entry);
-            TestingUtil.sleepRandom(1000);
+            TestingUtil.sleepThread(20, "still waiting for key to be removed: " + key + i);
             entry = store.load(key + i);
          }
       }
@@ -407,14 +415,15 @@
       store.remove(key);
       InternalCacheEntry entry;
       do {
-         TestingUtil.sleepRandom(1000);
+         TestingUtil.sleepThread(20, "still waiting for key to be removed: " + key);
          entry = store.load(key);
       } while (entry != null);
    }
 
    private void doTestClear(int number, String key) throws Exception {
       store.clear();
-      TestingUtil.sleepRandom(1000);
+      store.stop();
+      store.start();
 
       InternalCacheEntry[] entries = new InternalCacheEntry[number];
       for (int i = 0; i < number; i++) {
@@ -424,8 +433,7 @@
       for (int i = 0; i < number; i++) {
          InternalCacheEntry entry = entries[i];
          while (entry != null) {
-            log.info("Entry still not null {0}", entry);
-            TestingUtil.sleepRandom(1000);
+            TestingUtil.sleepThread(20, "still waiting for key to be removed: " + key + i);
             entry = store.load(key + i);
          }
       }

Copied: branches/4.2.x/core/src/test/java/org/infinispan/loaders/decorators/BatchAsyncCacheStoreTest.java (from rev 2323, branches/4.1.x/core/src/test/java/org/infinispan/loaders/decorators/BatchAsyncCacheStoreTest.java)
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/loaders/decorators/BatchAsyncCacheStoreTest.java	                        (rev 0)
+++ branches/4.2.x/core/src/test/java/org/infinispan/loaders/decorators/BatchAsyncCacheStoreTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -0,0 +1,142 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.infinispan.loaders.decorators;
+
+import java.io.File;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.HashMap;
+
+import org.infinispan.AdvancedCache;
+import org.infinispan.config.CacheLoaderManagerConfig;
+import org.infinispan.config.Configuration;
+import org.infinispan.loaders.CacheStoreConfig;
+import org.infinispan.loaders.decorators.AsyncStoreConfig;
+import org.infinispan.loaders.file.FileCacheStoreConfig;
+import org.infinispan.manager.EmbeddedCacheManager;
+import org.infinispan.test.SingleCacheManagerTest;
+import org.infinispan.test.TestingUtil;
+import org.infinispan.test.fwk.TestCacheManagerFactory;
+import org.testng.Assert;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Optional;
+import org.testng.annotations.Parameters;
+import org.testng.annotations.Test;
+
+/**
+ * BatchAsyncCacheStoreTest performs some additional tests on the AsyncStore
+ * but using batches.
+ * 
+ * @author Sanne Grinovero
+ * @since 4.1
+ */
+ at Test(groups = "functional", testName = "loaders.AsyncCacheStoreTest")
+public class BatchAsyncCacheStoreTest extends SingleCacheManagerTest {
+
+   private final HashMap cacheCopy = new HashMap();
+
+   public BatchAsyncCacheStoreTest() {
+      cleanup = CleanupPhase.AFTER_METHOD;
+   }
+
+   @Override
+   protected EmbeddedCacheManager createCacheManager() throws Exception {
+      Configuration configuration = new Configuration();
+      configuration.setCacheMode(Configuration.CacheMode.LOCAL);
+      configuration.setInvocationBatchingEnabled(true);
+      enableTestJdbcStorage(configuration);
+      return TestCacheManagerFactory.createCacheManager(configuration);
+   }
+
+   private void enableTestJdbcStorage(Configuration configuration) throws Exception {
+      CacheStoreConfig fileStoreConfiguration = createCacheStoreConfig();
+      AsyncStoreConfig asyncStoreConfig = new AsyncStoreConfig();
+      asyncStoreConfig.setEnabled(true);
+      asyncStoreConfig.setThreadPoolSize(1);
+      fileStoreConfiguration.setAsyncStoreConfig(asyncStoreConfig);
+      CacheLoaderManagerConfig loaderManagerConfig = configuration.getCacheLoaderManagerConfig();
+      loaderManagerConfig.setPassivation(false);
+      loaderManagerConfig.setPreload(false);
+      loaderManagerConfig.setShared(true);
+      loaderManagerConfig.addCacheLoaderConfig(fileStoreConfiguration);
+   }
+
+   @Test
+   public void sequantialOvewritingInBatches() throws IOException, ClassNotFoundException, SQLException, InterruptedException {
+      cache = cacheManager.getCache();
+      AdvancedCache<Object,Object> advancedCache = cache.getAdvancedCache();
+      for (int i = 0; i < 2000;) {
+         advancedCache.startBatch();
+         putAValue(advancedCache, i++);
+         putAValue(advancedCache, i++);
+         advancedCache.endBatch(true);
+      }
+      cacheCopy.putAll(cache);
+      cache.stop();
+      cacheManager.stop();
+   }
+
+   private void putAValue(AdvancedCache<Object, Object> advancedCache, int i) {
+      String key = "k" + (i % 13);
+      String value = "V" + i;
+      advancedCache.put(key, value);
+   }
+
+   @Test(dependsOnMethods = "sequantialOvewritingInBatches")
+   public void indexWasStored() throws IOException {
+      cache = cacheManager.getCache();
+      assert cache.isEmpty();
+      boolean failed = false;
+      for (Object key : cacheCopy.keySet()) {
+         Object expected = cacheCopy.get(key);
+         Object actual = cache.get(key);
+         if (!expected.equals(actual)) {
+            System.out.println("Failure on key '" + key.toString() + "' expected value: '" + expected + "' actual value: '" + actual + "'");
+            failed = true;
+         }
+      }
+      Assert.assertFalse(failed);
+      Assert.assertEquals(cacheCopy.keySet().size(), cache.keySet().size(), "have a different number of keys");
+   }
+
+   private String tmpDirectory;
+
+   @BeforeClass
+   @Parameters( { "basedir" })
+   protected void setUpTempDir(@Optional(value = "/tmp") String basedir) {
+      tmpDirectory = TestingUtil.tmpDirectory(basedir, this);
+      new File(tmpDirectory).mkdirs();
+   }
+
+   @AfterClass
+   protected void clearTempDir() {
+      TestingUtil.recursiveFileRemove(tmpDirectory);
+   }
+
+   protected CacheStoreConfig createCacheStoreConfig() throws Exception {
+      FileCacheStoreConfig cfg = new FileCacheStoreConfig();
+      cfg.setLocation(tmpDirectory);
+      return cfg;
+   }
+
+}

Modified: branches/4.2.x/core/src/test/java/org/infinispan/loaders/dummy/DummyInMemoryCacheStoreFunctionalTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/loaders/dummy/DummyInMemoryCacheStoreFunctionalTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/loaders/dummy/DummyInMemoryCacheStoreFunctionalTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -2,15 +2,9 @@
 
 import org.infinispan.loaders.BaseCacheStoreFunctionalTest;
 import org.infinispan.loaders.CacheStoreConfig;
-import org.infinispan.loaders.file.FileCacheStoreConfig;
-import org.infinispan.test.TestingUtil;
 import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Parameters;
 import org.testng.annotations.Test;
 
-import java.io.File;
-
 @Test(groups = "unit", testName = "loaders.dummy.DummyInMemoryCacheStoreFunctionalTest")
 public class DummyInMemoryCacheStoreFunctionalTest extends BaseCacheStoreFunctionalTest {
 

Modified: branches/4.2.x/core/src/test/java/org/infinispan/lock/EagerLockingDisabledTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/lock/EagerLockingDisabledTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/lock/EagerLockingDisabledTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,7 +1,6 @@
 package org.infinispan.lock;
 
 import org.infinispan.Cache;
-import org.infinispan.CacheException;
 import org.infinispan.config.Configuration;
 import org.infinispan.config.ConfigurationException;
 import org.infinispan.manager.EmbeddedCacheManager;

Modified: branches/4.2.x/core/src/test/java/org/infinispan/profiling/DeadlockDetectionPerformanceTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/profiling/DeadlockDetectionPerformanceTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/profiling/DeadlockDetectionPerformanceTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -45,7 +45,7 @@
 @Test(groups = "profiling", enabled = true, testName = "profiling.DeadlockDetectionPerformanceTest")
 public class DeadlockDetectionPerformanceTest extends AbstractInfinispanTest {
 
-   private static Log log = LogFactory.getLog(DeadlockDetectionPerformanceTest.class);
+   private static final Log log = LogFactory.getLog(DeadlockDetectionPerformanceTest.class);
 
    public static final int KEY_POOL_SIZE = 10;
 

Modified: branches/4.2.x/core/src/test/java/org/infinispan/replication/SyncCacheListenerTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/replication/SyncCacheListenerTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/replication/SyncCacheListenerTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -10,7 +10,6 @@
 import org.infinispan.Cache;
 import org.infinispan.CacheException;
 import org.infinispan.config.Configuration;
-import org.infinispan.distribution.ConsistentHash;
 import org.infinispan.notifications.Listener;
 import org.infinispan.notifications.cachelistener.annotation.CacheEntryModified;
 import org.infinispan.notifications.cachelistener.annotation.CacheEntryRemoved;

Modified: branches/4.2.x/core/src/test/java/org/infinispan/replication/SyncReplTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/replication/SyncReplTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/replication/SyncReplTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -11,7 +11,6 @@
 import org.infinispan.CacheException;
 import org.infinispan.commands.remote.CacheRpcCommand;
 import org.infinispan.config.Configuration;
-import org.infinispan.manager.NamedCacheNotFoundException;
 import org.infinispan.remoting.rpc.ResponseFilter;
 import org.infinispan.remoting.rpc.ResponseMode;
 import org.infinispan.remoting.rpc.RpcManager;

Modified: branches/4.2.x/core/src/test/java/org/infinispan/statetransfer/StateTransferFileCacheLoaderFunctionalTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/statetransfer/StateTransferFileCacheLoaderFunctionalTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/statetransfer/StateTransferFileCacheLoaderFunctionalTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -73,10 +73,10 @@
    @BeforeTest
    @Parameters({"basedir"})
    protected void setUpTempDir(@Optional(value = "/tmp") String basedir) {
-      tmpDirectory1 = basedir + TestingUtil.TEST_PATH + File.separator + "1" + File.separator + getClass().getSimpleName();
-      tmpDirectory2 = basedir + TestingUtil.TEST_PATH + File.separator + "2" + File.separator + getClass().getSimpleName();
-      tmpDirectory3 = basedir + TestingUtil.TEST_PATH + File.separator + "3" + File.separator + getClass().getSimpleName();
-      tmpDirectory4 = basedir + TestingUtil.TEST_PATH + File.separator + "4" + File.separator + getClass().getSimpleName();
+      tmpDirectory1 = basedir + File.separator + TestingUtil.TEST_PATH + File.separator + "1" + File.separator + getClass().getSimpleName();
+      tmpDirectory2 = basedir + File.separator + TestingUtil.TEST_PATH + File.separator + "2" + File.separator + getClass().getSimpleName();
+      tmpDirectory3 = basedir + File.separator + TestingUtil.TEST_PATH + File.separator + "3" + File.separator + getClass().getSimpleName();
+      tmpDirectory4 = basedir + File.separator + TestingUtil.TEST_PATH + File.separator + "4" + File.separator + getClass().getSimpleName();
    }
 
    @AfterMethod(alwaysRun = true)

Modified: branches/4.2.x/core/src/test/java/org/infinispan/statetransfer/StateTransferReplicationQueueTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/statetransfer/StateTransferReplicationQueueTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/statetransfer/StateTransferReplicationQueueTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -6,7 +6,6 @@
 import org.infinispan.manager.EmbeddedCacheManager;
 import org.infinispan.test.MultipleCacheManagersTest;
 import org.infinispan.test.TestingUtil;
-import org.infinispan.statetransfer.StateTransferFunctionalTest.*;
 import org.infinispan.util.logging.Log;
 import org.infinispan.util.logging.LogFactory;
 import org.testng.annotations.Test;
@@ -18,13 +17,11 @@
 import java.io.ObjectOutput;
 import java.lang.reflect.Method;
 import java.util.Properties;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
- * State transfer and replication queue test veryfying that the interaction between them two works in fine.
+ * State transfer and replication queue test verifying that the interaction between them two works in fine.
  *
  * @author Galder Zamarreño
  * @since 4.1

Modified: branches/4.2.x/core/src/test/java/org/infinispan/test/AbstractInfinispanTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/test/AbstractInfinispanTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/test/AbstractInfinispanTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -24,7 +24,6 @@
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 
-import org.testng.annotations.AfterClass;
 import org.testng.annotations.AfterTest;
 
 /**

Modified: branches/4.2.x/core/src/test/java/org/infinispan/test/PerCacheExecutorThread.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/test/PerCacheExecutorThread.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/test/PerCacheExecutorThread.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -18,7 +18,7 @@
  */
 public final class PerCacheExecutorThread extends Thread {
 
-   private static Log log = LogFactory.getLog(PerCacheExecutorThread.class);
+   private static final Log log = LogFactory.getLog(PerCacheExecutorThread.class);
 
    private Cache<Object, Object> cache;
    private BlockingQueue<Object> toExecute = new ArrayBlockingQueue<Object>(1);

Modified: branches/4.2.x/core/src/test/java/org/infinispan/test/TestingUtil.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/test/TestingUtil.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/test/TestingUtil.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -64,8 +64,12 @@
    public static final String TEST_PATH = "target" + separator + "tempFiles";
    public static final String INFINISPAN_START_TAG = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<infinispan\n" +
          "      xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
-         "      xsi:schemaLocation=\"urn:infinispan:config:4.0 http://www.infinispan.org/schemas/infinispan-config-4.0.xsd\"\n" +
-         "      xmlns=\"urn:infinispan:config:4.0\">";
+         "      xsi:schemaLocation=\"urn:infinispan:config:4.1 http://www.infinispan.org/schemas/infinispan-config-4.1.xsd\"\n" +
+         "      xmlns=\"urn:infinispan:config:4.1\">";
+   public static final String INFINISPAN_START_TAG_40 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<infinispan\n" +
+   "      xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
+   "      xsi:schemaLocation=\"urn:infinispan:config:4.0 http://www.infinispan.org/schemas/infinispan-config-4.0.xsd\"\n" +
+   "      xmlns=\"urn:infinispan:config:4.0\">";
    public static final String INFINISPAN_END_TAG="</infinispan>";
    public static final String INFINISPAN_START_TAG_NO_SCHEMA="<infinispan>";
 
@@ -370,10 +374,16 @@
     * @param sleeptime number of ms to sleep
     */
    public static void sleepThread(long sleeptime) {
+      sleepThread(sleeptime, null);
+   }
+   
+   public static void sleepThread(long sleeptime, String messageOnInterrupt) {
       try {
          Thread.sleep(sleeptime);
       }
       catch (InterruptedException ie) {
+         if (messageOnInterrupt != null)
+            log.error(messageOnInterrupt);
       }
    }
 

Modified: branches/4.2.x/core/src/test/java/org/infinispan/test/fwk/SuiteResourcesAndLogTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/test/fwk/SuiteResourcesAndLogTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/test/fwk/SuiteResourcesAndLogTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -15,7 +15,7 @@
 @Test(groups = "functional", testName = "test.testng.SuiteResourcesAndLogTest", alwaysRun=true)
 public class SuiteResourcesAndLogTest {
 
-   private static Log log = LogFactory.getLog(SuiteResourcesAndLogTest.class);
+   private static final Log log = LogFactory.getLog(SuiteResourcesAndLogTest.class);
 
    @BeforeSuite
    @AfterSuite

Modified: branches/4.2.x/core/src/test/java/org/infinispan/test/fwk/TestCacheManagerFactory.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/test/fwk/TestCacheManagerFactory.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/test/fwk/TestCacheManagerFactory.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -33,7 +33,7 @@
    private static AtomicInteger jmxDomainPostfix = new AtomicInteger();
 
    public static final String MARSHALLER = LegacyKeySupportSystemProperties.getProperty("infinispan.test.marshaller.class", "infinispan.marshaller.class");
-   private static Log log = LogFactory.getLog(TestCacheManagerFactory.class);
+   private static final Log log = LogFactory.getLog(TestCacheManagerFactory.class);
 
    private static ThreadLocal<PerThreadCacheManagers> perThreadCacheManagers = new ThreadLocal<PerThreadCacheManagers>() {
       @Override
@@ -156,6 +156,14 @@
       return newDefaultCacheManager(configuration, new Configuration(), enforceJmxDomain);
    }
 
+   public static EmbeddedCacheManager createCacheManager(Configuration.CacheMode mode, boolean indexing) {
+      GlobalConfiguration gc = mode.isClustered() ? GlobalConfiguration.getClusteredDefault() : GlobalConfiguration.getNonClusteredDefault();
+      Configuration c = new Configuration();
+      if (indexing) c.setIndexingEnabled(true);
+      c.setCacheMode(mode);
+      return createCacheManager(gc, c);
+   }
+
    /**
     * Creates a local cache manager and amends so that it won't conflict (e.g. jmx) with other managers whilst running
     * tests in parallel.  This is a non-transactional cache manager.

Modified: branches/4.2.x/core/src/test/java/org/infinispan/tx/LargeTransactionTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/tx/LargeTransactionTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/tx/LargeTransactionTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -19,7 +19,7 @@
  */
 @Test(testName = "tx.LargeTransactionTest", groups = "functional")
 public class LargeTransactionTest extends MultipleCacheManagersTest {
-   private static Log log = LogFactory.getLog(LargeTransactionTest.class);
+   private static final Log log = LogFactory.getLog(LargeTransactionTest.class);
 
    protected void createCacheManagers() throws Throwable {
 

Modified: branches/4.2.x/core/src/test/java/org/infinispan/tx/TransactionManagerLookupTest.java
===================================================================
--- branches/4.2.x/core/src/test/java/org/infinispan/tx/TransactionManagerLookupTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/java/org/infinispan/tx/TransactionManagerLookupTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -4,7 +4,6 @@
 import org.infinispan.transaction.lookup.DummyTransactionManagerLookup;
 import org.infinispan.transaction.lookup.GenericTransactionManagerLookup;
 import org.infinispan.transaction.lookup.JBossStandaloneJTAManagerLookup;
-import org.infinispan.transaction.lookup.JBossTransactionManagerLookup;
 import org.infinispan.transaction.lookup.TransactionManagerLookup;
 import org.testng.annotations.Test;
 

Modified: branches/4.2.x/core/src/test/resources/configs/named-cache-test.xml
===================================================================
--- branches/4.2.x/core/src/test/resources/configs/named-cache-test.xml	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/resources/configs/named-cache-test.xml	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <infinispan
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-      xsi:schemaLocation="urn:infinispan:config:4.0 http://www.infinispan.org/schemas/infinispan-config-4.0.xsd"
-      xmlns="urn:infinispan:config:4.0">
+      xsi:schemaLocation="urn:infinispan:config:4.1 http://www.infinispan.org/schemas/infinispan-config-4.1.xsd"
+      xmlns="urn:infinispan:config:4.1">
 
    <global>
 

Modified: branches/4.2.x/core/src/test/resources/configs/no-flush.xml
===================================================================
--- branches/4.2.x/core/src/test/resources/configs/no-flush.xml	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/resources/configs/no-flush.xml	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <infinispan
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-      xsi:schemaLocation="urn:infinispan:config:4.0 http://www.infinispan.org/schemas/infinispan-config-4.0.xsd"
-      xmlns="urn:infinispan:config:4.0">
+      xsi:schemaLocation="urn:infinispan:config:4.1 http://www.infinispan.org/schemas/infinispan-config-4.1.xsd"
+      xmlns="urn:infinispan:config:4.1">
 
    <!-- *************************** -->
    <!-- System-wide global settings -->

Modified: branches/4.2.x/core/src/test/resources/configs/string-property-replaced.xml
===================================================================
--- branches/4.2.x/core/src/test/resources/configs/string-property-replaced.xml	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/resources/configs/string-property-replaced.xml	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <infinispan
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-      xsi:schemaLocation="urn:infinispan:config:4.0 http://www.infinispan.org/schemas/infinispan-config-4.0.xsd"
-      xmlns="urn:infinispan:config:4.0">
+      xsi:schemaLocation="urn:infinispan:config:4.1 http://www.infinispan.org/schemas/infinispan-config-4.1.xsd"
+      xmlns="urn:infinispan:config:4.1">
 
    <!-- *************************** -->
    <!-- System-wide global settings -->

Modified: branches/4.2.x/core/src/test/resources/log4j.xml
===================================================================
--- branches/4.2.x/core/src/test/resources/log4j.xml	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/core/src/test/resources/log4j.xml	2010-09-05 12:05:39 UTC (rev 2324)
@@ -45,7 +45,7 @@
    <!-- ================ -->
 
    <category name="org.infinispan">
-      <priority value="INFO"/>
+      <priority value="TRACE"/>
    </category>
 
    <category name="org.infinispan.profiling">
@@ -65,7 +65,7 @@
    <!-- ======================= -->
 
    <root>
-      <priority value="TRACE"/>
+      <priority value="INFO"/>
       <!--<appender-ref ref="CONSOLE"/>-->
       <appender-ref ref="FILE"/>
    </root>

Modified: branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/CacheBuilder.java
===================================================================
--- branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/CacheBuilder.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/CacheBuilder.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,6 +1,3 @@
-/**
- *
- */
 package org.infinispan.ec2demo;
 
 import java.io.IOException;
@@ -8,15 +5,12 @@
 import org.infinispan.manager.CacheContainer;
 import org.infinispan.manager.DefaultCacheManager;
 import org.infinispan.manager.EmbeddedCacheManager;
-import org.infinispan.util.logging.Log;
-import org.infinispan.util.logging.LogFactory;
 
 /**
  * @author noconnor at redhat.com
  */
 public class CacheBuilder {
 	private EmbeddedCacheManager cache_manager;
-	private static final Log myLogger = LogFactory.getLog(CacheBuilder.class);
 
 	public CacheBuilder(String inConfigFile) throws IOException {
 		

Modified: branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/InfinispanFluDemo.java
===================================================================
--- branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/InfinispanFluDemo.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/InfinispanFluDemo.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -14,12 +14,7 @@
 import java.io.InputStreamReader;
 
 /**
- * 
- */
-
-/**
  * @author noconnor at redhat.com
- * 
  */
 public class InfinispanFluDemo {
 
@@ -78,7 +73,7 @@
 
 			} else {
 				try {
-					Thread.currentThread().sleep(2000);
+					Thread.sleep(2000);
 				} catch (InterruptedException e) {
 					e.printStackTrace();
 				}

Modified: branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/InfluenzaDataLoader.java
===================================================================
--- branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/InfluenzaDataLoader.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/InfluenzaDataLoader.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,6 +1,3 @@
-/**
- * 
- */
 package org.infinispan.ec2demo;
 
 import com.martiansoftware.jsap.JSAPResult;
@@ -28,7 +25,7 @@
 	private Nucleotide_Protein_Parser npParser;
 	private Influenza_Parser iParser;
 
-	private static final Log myLogger = LogFactory.getLog(InfluenzaDataLoader.class);
+	private static final Log log = LogFactory.getLog(InfluenzaDataLoader.class);
 
 	public void createCache(String configFile) throws IOException {
 		String cfgFileName = LegacyKeySupportSystemProperties.getProperty("infinispan.configuration", "infinispan.demo.cfg");		
@@ -65,7 +62,7 @@
 			System.out.println("Parsing files....");
 
 			if (config.getString("ifile") != null) {
-				myLogger.info("Parsing Influenza data");
+				log.info("Parsing Influenza data");
 				List<Influenza_N_P_CR_Element> iList = iParser.parseFile(config.getString("ifile"));
 
 				boolean rQuery = config.getBoolean("randomquery");
@@ -81,7 +78,7 @@
 						this.searchCache(curreElem.getGanNucleoid());
 
 						try {
-							Thread.currentThread().sleep(1000);
+							Thread.sleep(1000);
 						} catch (InterruptedException ex) {
 							// do nothing, yea I know its naughty...
 						}
@@ -110,7 +107,7 @@
 			}
 
 			if (config.getString("pfile") != null) {
-				myLogger.info("Parsing Protein data");
+				log.info("Parsing Protein data");
 				List<Nucleotide_Protein_Element> npList = npParser.parseFile(config.getString("pfile"));
 				System.out.println("About to load " + npList.size() + " protein elements into ProteinCache");
 				int loopCount = 0;
@@ -133,7 +130,7 @@
 			}
 
 			if (config.getString("nfile") != null) {
-				myLogger.info("Parsing Nucleotide data");
+				log.info("Parsing Nucleotide data");
 				List<Nucleotide_Protein_Element> npList = npParser.parseFile(config.getString("nfile"));
 				System.out.println("About to load " + npList.size() + " nucleotide elements into NucleiodCache");
 				int loopCount = 0;
@@ -162,14 +159,14 @@
 	}
 
 	public void searchCache(String inGBAN) {
-		myLogger.trace("Searching influenzaCache for " + inGBAN);
+		log.trace("Searching influenzaCache for " + inGBAN);
 		// Find the virus details
 		Influenza_N_P_CR_Element myRec = influenzaCache.get(inGBAN);
 
 		if (myRec != null) {
 			System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
 			System.out.println("Virus Details->" + myRec);
-			myLogger.trace("Searching nucleiodCache for " + myRec.getGanNucleoid());
+			log.trace("Searching nucleiodCache for " + myRec.getGanNucleoid());
 			Nucleotide_Protein_Element nucldet = nucleiodCache.get(myRec.getGanNucleoid());
 			System.out.println("Nucleotide details->" + nucldet);
 
@@ -177,7 +174,7 @@
 			Map<String, String> myProt = myRec.getProtein_Data();
 			for (String x : myProt.keySet()) {
 				System.out.println("=========================================================================");
-				myLogger.trace("Searching proteinCache for " + x);
+				log.trace("Searching proteinCache for " + x);
 				Nucleotide_Protein_Element myProtdet = proteinCache.get(x);
 				System.out.println("Protein->" + myProtdet);
 				String protein_CR = myProt.get(x);
@@ -185,7 +182,7 @@
 			}
 			System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
 		} else {
-			myLogger.trace("No virus data found for " + inGBAN);
+			log.trace("No virus data found for " + inGBAN);
 			System.out.println("No virus data found for " + inGBAN);
 		}
 	}

Modified: branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/InfluenzaVirusCache.java
===================================================================
--- branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/InfluenzaVirusCache.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/InfluenzaVirusCache.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,6 +1,3 @@
-/**
- * 
- */
 package org.infinispan.ec2demo;
 
 import org.infinispan.Cache;
@@ -14,7 +11,7 @@
  * 
  */
 public class InfluenzaVirusCache {
-	private static final Log myLogger = LogFactory.getLog(InfluenzaVirusCache.class);
+	private static final Log log = LogFactory.getLog(InfluenzaVirusCache.class);
 	private Cache<String, Influenza_N_P_CR_Element> myCache;
 
 	public InfluenzaVirusCache(CacheBuilder cacheManger) throws IOException {
@@ -26,7 +23,7 @@
 			return;
 		String myKey = value.getGanNucleoid();
 		if ((myKey == null) || (myKey.isEmpty())) {
-			myLogger.error("Invalid record " + value);
+			log.error("Invalid record " + value);
 		} else {
 			myCache.put(myKey, value);
 		}

Modified: branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/Influenza_N_P_CR_Element.java
===================================================================
--- branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/Influenza_N_P_CR_Element.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/Influenza_N_P_CR_Element.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,6 +1,3 @@
-/**
- * 
- */
 package org.infinispan.ec2demo;
 
 import java.io.Serializable;

Modified: branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/Influenza_Parser.java
===================================================================
--- branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/Influenza_Parser.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/Influenza_Parser.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,6 +1,3 @@
-/**
- * 
- */
 package org.infinispan.ec2demo;
 
 import java.io.File;

Modified: branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/NucleotideCache.java
===================================================================
--- branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/NucleotideCache.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/NucleotideCache.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,6 +1,3 @@
-/**
- * 
- */
 package org.infinispan.ec2demo;
 
 import java.io.IOException;
@@ -12,7 +9,7 @@
  * 
  */
 public class NucleotideCache {
-	Logger myLogger = Logger.getLogger(NucleotideCache.class);
+	private static final Logger log = Logger.getLogger(NucleotideCache.class);
 	private Cache<String, Nucleotide_Protein_Element> myCache;
 
 	public NucleotideCache(CacheBuilder cacheManger) throws IOException {
@@ -24,7 +21,7 @@
 			return;
 		String myKey = value.getGenbankAccessionNumber();
 		if ((myKey == null) || (myKey.isEmpty())) {
-			myLogger.error("Invalid record " + value);
+			log.error("Invalid record " + value);
 		} else {
 			myCache.put(value.getGenbankAccessionNumber(), value);
 		}

Modified: branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/Nucleotide_Protein_Element.java
===================================================================
--- branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/Nucleotide_Protein_Element.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/Nucleotide_Protein_Element.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,6 +1,3 @@
-/**
- * 
- */
 package org.infinispan.ec2demo;
 
 import java.io.Serializable;

Modified: branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/Nucleotide_Protein_Parser.java
===================================================================
--- branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/Nucleotide_Protein_Parser.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/Nucleotide_Protein_Parser.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -10,18 +10,10 @@
 import java.util.List;
 
 /**
- *
- */
-
-/**
  * @author noconnor at redhat.com
  */
 public class Nucleotide_Protein_Parser {
 
-   public Nucleotide_Protein_Parser() {
-
-   }
-
    @SuppressWarnings("unchecked")
    public List<Nucleotide_Protein_Element> parseFile(String fileName) throws IOException, SAXException {
       System.out.println("Parsing [" + fileName + "]");

Modified: branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/ProteinCache.java
===================================================================
--- branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/ProteinCache.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/demos/ec2/src/main/java/org/infinispan/ec2demo/ProteinCache.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,6 +1,3 @@
-/**
- * 
- */
 package org.infinispan.ec2demo;
 
 import org.infinispan.Cache;
@@ -14,7 +11,7 @@
  * 
  */
 public class ProteinCache {
-	private static final Log myLogger = LogFactory.getLog(ProteinCache.class);
+	private static final Log log = LogFactory.getLog(ProteinCache.class);
 	private Cache<String, Nucleotide_Protein_Element> myCache;
 
 	public ProteinCache(CacheBuilder cacheManger) throws IOException {
@@ -26,7 +23,7 @@
 			return;
 		String myKey = value.getGenbankAccessionNumber();
 		if ((myKey == null) || (myKey.isEmpty())) {
-			myLogger.error("Invalid record " + value);
+			log.error("Invalid record " + value);
 		} else {
 			myCache.put(value.getGenbankAccessionNumber(), value);
 		}

Modified: branches/4.2.x/demos/ec2-ui/src/main/java/org/infinispan/ec2demo/web/CacheSearchServlet.java
===================================================================
--- branches/4.2.x/demos/ec2-ui/src/main/java/org/infinispan/ec2demo/web/CacheSearchServlet.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/demos/ec2-ui/src/main/java/org/infinispan/ec2demo/web/CacheSearchServlet.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -24,7 +24,7 @@
  * Servlet implementation class CacheSearchServlet
  */
 public class CacheSearchServlet extends HttpServlet {
-	private Log myLogger = LogFactory.getLog(CacheSearchServlet.class);
+	private static final Log log = LogFactory.getLog(CacheSearchServlet.class);
 	private static final long serialVersionUID = 1L;
 	private Cache<String, Influenza_N_P_CR_Element> influenzaCache;
 	private Cache<String, Nucleotide_Protein_Element> proteinCache;
@@ -59,7 +59,7 @@
 		Influenza_N_P_CR_Element myRec = influenzaCache.get(searchGBAN);
 		
 		if (myRec != null) {
-			myLogger.trace("Searching nucleiodCache for " + myRec.getGanNucleoid());
+			log.trace("Searching nucleiodCache for " + myRec.getGanNucleoid());
 			Nucleotide_Protein_Element nucldet = nucleiodCache.get(myRec.getGanNucleoid());			
 			request.setAttribute("Nucleotide", nucldet);
 
@@ -67,7 +67,7 @@
 			Map<String, String> myProt = myRec.getProtein_Data();
 			Map<String, String> myMap = new HashMap<String, String>();
 			for (String x : myProt.keySet()) {
-				myLogger.trace("Searching proteinCache for " + x);
+				log.trace("Searching proteinCache for " + x);
 				Nucleotide_Protein_Element myProtdet = proteinCache.get(x);
 				String protein_CR = myProt.get(x);		
 				myMap.put(myProtdet.getGenbankAccessionNumber(), protein_CR);

Modified: branches/4.2.x/demos/ec2-ui/src/main/java/org/infinispan/ec2demo/web/CacheServletListener.java
===================================================================
--- branches/4.2.x/demos/ec2-ui/src/main/java/org/infinispan/ec2demo/web/CacheServletListener.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/demos/ec2-ui/src/main/java/org/infinispan/ec2demo/web/CacheServletListener.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -1,6 +1,3 @@
-/**
- * 
- */
 package org.infinispan.ec2demo.web;
 
 import org.infinispan.ec2demo.CacheBuilder;

Modified: branches/4.2.x/demos/gridfs-webdav/src/main/java/org/infinispan/demos/gridfs/GridStore.java
===================================================================
--- branches/4.2.x/demos/gridfs-webdav/src/main/java/org/infinispan/demos/gridfs/GridStore.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/demos/gridfs-webdav/src/main/java/org/infinispan/demos/gridfs/GridStore.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -21,7 +21,7 @@
  * @author Bela Ban
  */
 public class GridStore implements IWebdavStore {
-   private static Log log = LogFactory.getLog(GridStore.class);
+   private static final Log log = LogFactory.getLog(GridStore.class);
    private static int BUF_SIZE = 65536;
    private final Cache<String, byte[]> data;
    private final Cache<String, GridFile.Metadata> metadata;

Modified: branches/4.2.x/demos/gui/src/main/java/org/infinispan/demo/InfinispanDemo.java
===================================================================
--- branches/4.2.x/demos/gui/src/main/java/org/infinispan/demo/InfinispanDemo.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/demos/gui/src/main/java/org/infinispan/demo/InfinispanDemo.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -46,7 +46,7 @@
  * @author Manik Surtani
  */
 public class InfinispanDemo {
-   private static Log log = LogFactory.getLog(InfinispanDemo.class);
+   private static final Log log = LogFactory.getLog(InfinispanDemo.class);
    private static JFrame frame;
    private JTabbedPane mainPane;
    private JPanel panel1;

Modified: branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/FileListOperations.java
===================================================================
--- branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/FileListOperations.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/FileListOperations.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -52,9 +52,14 @@
     */
    Set<String> getFileList() {
       Set<String> fileList = (Set<String>) cache.withFlags(Flag.SKIP_LOCKING).get(fileListCacheKey);
-      if (fileList == null)
+      if (fileList == null) {
          fileList = new ConcurrentHashSet<String>();
-      return fileList;
+         Set<String> prev = (Set<String>) cache.putIfAbsent(fileListCacheKey, fileList);
+         return prev == null ? fileList : prev;
+      }
+      else {
+         return fileList;
+      }
    }
 
    /**
@@ -83,15 +88,11 @@
    
    /**
     * @param fileName
-    * @return the FileMetadata associated with the fileName
-    * @throws FileNotFoundException if the metadata was not found
+    * @return the FileMetadata associated with the fileName, or null if the file wasn't found.
     */
    FileMetadata getFileMetadata(String fileName) throws FileNotFoundException {
       FileCacheKey key = new FileCacheKey(indexName, fileName);
       FileMetadata metadata = (FileMetadata) cache.withFlags(Flag.SKIP_LOCKING).get(key);
-      if (metadata == null) {
-         throw new FileNotFoundException(fileName);
-      }
       return metadata;
    }
 

Modified: branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/InfinispanDirectory.java
===================================================================
--- branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/InfinispanDirectory.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/InfinispanDirectory.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -40,7 +40,7 @@
 import org.infinispan.util.logging.LogFactory;
 
 /**
- * An implementation of Lucene's {@link org.apache.lucene.store.Directory} which uses Infinispan to store Lucene indices.
+ * An implementation of Lucene's {@link org.apache.lucene.store.Directory} which uses Infinispan to store Lucene indexes.
  * As the RAMDirectory the data is stored in memory, but provides some additional flexibility:
  * <p><b>Passivation, LRU or LIRS</b> Bigger indexes can be configured to passivate cleverly selected chunks of data to a cache store.
  * This can be a local filesystem, a network filesystem, a database or custom cloud stores like S3. See Infinispan's core documentation for a full list of available implementations, or {@link org.infinispan.loaders.CacheStore} to implement more.</p>
@@ -74,8 +74,8 @@
 public class InfinispanDirectory extends Directory {
    
    /**
-    * used as default chunk size, can be overriden at construction time
-    * each Lucene index segment is splitted into parts with default size defined here
+    * Used as default chunk size, can be overriden at construction time.
+    * Each Lucene index segment is splitted into parts with default size defined here
     */
    public final static int DEFAULT_BUFFER_SIZE = 16 * 1024;
 
@@ -158,7 +158,13 @@
     */
    public long fileModified(String name) throws IOException {
       checkIsOpen();
-      return fileOps.getFileMetadata(name).getLastModified();
+      FileMetadata fileMetadata = fileOps.getFileMetadata(name);
+      if (fileMetadata == null) {
+         return 0L;
+      }
+      else {
+         return fileMetadata.getLastModified();
+      }
    }
 
    /**
@@ -166,13 +172,15 @@
     */
    public void touchFile(String fileName) throws IOException {
       checkIsOpen();
-      FileCacheKey key = new FileCacheKey(indexName, fileName);
-      FileMetadata file = (FileMetadata) cache.get(key);
+      FileMetadata file = fileOps.getFileMetadata(fileName);
       if (file == null) {
-         throw new FileNotFoundException(fileName);
+         return;
       }
-      file.touch();
-      cache.put(key, file);
+      else {
+         FileCacheKey key = new FileCacheKey(indexName, fileName);
+         file.touch();
+         cache.put(key, file);
+      }
    }
 
    /**
@@ -226,7 +234,13 @@
     */
    public long fileLength(String name) throws IOException {
       checkIsOpen();
-      return fileOps.getFileMetadata(name).getSize();
+      FileMetadata fileMetadata = fileOps.getFileMetadata(name);
+      if (fileMetadata == null) {
+         return 0L;//as in FSDirectory (RAMDirectory throws an exception instead)
+      }
+      else {
+         return fileMetadata.getSize();
+      }
    }
 
    /**

Modified: branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/locking/TransactionalLockFactory.java
===================================================================
--- branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/locking/TransactionalLockFactory.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/locking/TransactionalLockFactory.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -36,14 +36,14 @@
  * <p>Factory for locks obtained in <code>InfinispanDirectory</code>,
  * this factory produces instances of <code>TransactionalSharedLuceneLock</code>.</p>
  * <p>Usually Lucene acquires the lock when creating an IndexWriter and releases it
- * when closing it; this is open-close is mapped to transactions as begin-commit,
- * so all changes are going to be effective at IndexWriter close and could need
- * much memory until it's committed.
+ * when closing it; these open-close operations are mapped to transactions as begin-commit,
+ * so all changes are going to be effective at IndexWriter close.
  * The advantage is that a transaction rollback will be able to undo all changes
- * applied to the index.</p>
+ * applied to the index, but this requires enough memory to hold all the changes until
+ * the commit.</p>
  * <p>Using a TransactionalSharedLuceneLock is not compatible with Lucene's
  * default MergeScheduler: use an in-thread implementation like SerialMergeScheduler
- * <code>iwriter.setMergeScheduler( new SerialMergeScheduler() );</code></p>
+ * <code>indexWriter.setMergeScheduler( new SerialMergeScheduler() );</code></p>
  * 
  * @since 4.0
  * @author Sanne Grinovero

Copied: branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/locking/package-info.java (from rev 2323, branches/4.1.x/lucene-directory/src/main/java/org/infinispan/lucene/locking/package-info.java)
===================================================================
--- branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/locking/package-info.java	                        (rev 0)
+++ branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/locking/package-info.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -0,0 +1,8 @@
+/**
+ * Lucene's IndexWriter instances are threadsafe but you can have only one open on the index, so when opening an IndexWriter an
+ * index-wide lock needs to be acquired. When using Infinispan this lock needs reliable distribution, so two implementations
+ * are provided which where tested with the Infinispan Directory and are suited for distributed locking, but you could provide your own implementation of LockFactory.
+ * You might also disable the locking altogether if you have application level or other external guarantees that no two IndexWriters
+ * will ever be opened.
+ */
+package org.infinispan.lucene.locking;

Copied: branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/package-info.java (from rev 2323, branches/4.1.x/lucene-directory/src/main/java/org/infinispan/lucene/package-info.java)
===================================================================
--- branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/package-info.java	                        (rev 0)
+++ branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/package-info.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -0,0 +1,5 @@
+/**
+ * Lucene Directory implementation which stores the index in Infinispan.
+ * For information about Apache Lucene (Java) see <a href="http://lucene.apache.org/java/docs/index.html">the Lucene homepage</a>.
+ */
+package org.infinispan.lucene;

Modified: branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/readlocks/SegmentReadLocker.java
===================================================================
--- branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/readlocks/SegmentReadLocker.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/readlocks/SegmentReadLocker.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -31,6 +31,10 @@
  * invoked when the stream is closed.</p>
  * <p>The same {@link #deleteOrReleaseReadLock(String)} is invoked when a file is deleted, so if this invocation is not balancing
  * a lock acquire this implementation must delete all segment chunks and the associated metadata.</p>
+ * <p>Note that if you can use and tune the {@link org.apache.lucene.index.LogByteSizeMergePolicy} you could avoid the need
+ * for readlocks by setting a maximum segment size to equal the chunk size used by the InfinispanDirectory; readlocks
+ * will be skipped automatically when not needed, so it's advisable to still configure an appropriate SegmentReadLocker
+ * for the cases you might want to tune the chunk size.</p>
  * 
  * @author Sanne Grinovero
  * @since 4.1

Copied: branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/readlocks/package-info.java (from rev 2323, branches/4.1.x/lucene-directory/src/main/java/org/infinispan/lucene/readlocks/package-info.java)
===================================================================
--- branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/readlocks/package-info.java	                        (rev 0)
+++ branches/4.2.x/lucene-directory/src/main/java/org/infinispan/lucene/readlocks/package-info.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -0,0 +1,7 @@
+/**
+ * Several implementations for a SegmentReadLocker, pick one depending on your use case.
+ * Lucene's default IndexDeletionPolicy could remove a segment while it's still used by another IndexReader;
+ * this is not an issue on a local filesystem, but could happen on Infinispan.
+ * To prevent deletion of in-use segments a read-lock is acquired when a segment is opened.
+ */
+package org.infinispan.lucene.readlocks;

Modified: branches/4.2.x/parent/pom.xml
===================================================================
--- branches/4.2.x/parent/pom.xml	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/parent/pom.xml	2010-09-05 12:05:39 UTC (rev 2324)
@@ -108,7 +108,7 @@
       <version.jta>1.0.1.GA</version.jta>
       <version.log4j>1.2.16</version.log4j>
       <version.mysql.driver>5.1.9</version.mysql.driver>
-      <version.netty>3.2.1.Final</version.netty>
+      <version.netty>3.2.2.Final</version.netty>
       <version.org.jboss.naming>5.0.3.GA</version.org.jboss.naming>
       <version.resteasy>2.0-beta-2</version.resteasy>
       <version.rhq.pluginAnnotations>1.4.0.B01</version.rhq.pluginAnnotations>

Modified: branches/4.2.x/query/src/main/java/org/infinispan/query/backend/KeyTransformationHandler.java
===================================================================
--- branches/4.2.x/query/src/main/java/org/infinispan/query/backend/KeyTransformationHandler.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/query/src/main/java/org/infinispan/query/backend/KeyTransformationHandler.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -44,7 +44,7 @@
  * @since 4.0
  */
 public class KeyTransformationHandler {
-   private static Log log = LogFactory.getLog(KeyTransformationHandler.class);
+   private static final Log log = LogFactory.getLog(KeyTransformationHandler.class);
 
    public static Object stringToKey(String s) {
       char type = s.charAt(0);

Modified: branches/4.2.x/query/src/main/java/org/infinispan/query/backend/QueryHelper.java
===================================================================
--- branches/4.2.x/query/src/main/java/org/infinispan/query/backend/QueryHelper.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/query/src/main/java/org/infinispan/query/backend/QueryHelper.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -30,6 +30,7 @@
 import org.infinispan.config.Configuration;
 import org.infinispan.factories.ComponentRegistry;
 import org.infinispan.factories.InterceptorChainFactory;
+import org.infinispan.interceptors.DistLockingInterceptor;
 import org.infinispan.interceptors.LockingInterceptor;
 import org.infinispan.interceptors.base.CommandInterceptor;
 import org.infinispan.util.logging.Log;
@@ -129,11 +130,11 @@
          try {
             if (cfg.isIndexLocalOnly()) {
                // Add a LocalQueryInterceptor to the chain
-               initComponents(LocalQueryInterceptor.class);
+               initComponents(cfg, LocalQueryInterceptor.class);
             } else {
                // We're indexing data even if it comes from other sources
                // Add in a QueryInterceptor to the chain
-               initComponents(QueryInterceptor.class);
+               initComponents(cfg, QueryInterceptor.class);
             }
          } catch (Exception e) {
             throw new CacheException("Unable to add interceptor", e);
@@ -176,7 +177,7 @@
    // Private method that adds the interceptor from the classname parameter.
 
 
-   private void initComponents(Class<? extends QueryInterceptor> interceptorClass)
+   private void initComponents(Configuration cfg, Class<? extends QueryInterceptor> interceptorClass)
          throws IllegalAccessException, InstantiationException {
 
       // get the component registry and then register the searchFactory.
@@ -189,8 +190,10 @@
       CommandInterceptor inter = icf.createInterceptor(interceptorClass);
       cr.registerComponent(inter, QueryInterceptor.class);
 
-      cache.getAdvancedCache().addInterceptorAfter(inter, LockingInterceptor.class);
-
+      cache.getAdvancedCache().addInterceptorAfter(inter,
+              cfg.getCacheMode().isDistributed() ?
+                      DistLockingInterceptor.class :
+                      LockingInterceptor.class);
    }
 
    //This is to check that both the @ProvidedId is present and the the @DocumentId is not present. This is because

Modified: branches/4.2.x/query/src/main/java/org/infinispan/query/backend/QueryInterceptor.java
===================================================================
--- branches/4.2.x/query/src/main/java/org/infinispan/query/backend/QueryInterceptor.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/query/src/main/java/org/infinispan/query/backend/QueryInterceptor.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -35,7 +35,6 @@
 import org.infinispan.factories.annotations.Inject;
 import org.infinispan.interceptors.base.CommandInterceptor;
 import org.infinispan.marshall.MarshalledValue;
-import org.infinispan.util.logging.Log;
 
 import javax.transaction.TransactionManager;
 import java.io.Serializable;

Copied: branches/4.2.x/query/src/test/java/org/infinispan/query/config/CacheModeTest.java (from rev 2323, branches/4.1.x/query/src/test/java/org/infinispan/query/config/CacheModeTest.java)
===================================================================
--- branches/4.2.x/query/src/test/java/org/infinispan/query/config/CacheModeTest.java	                        (rev 0)
+++ branches/4.2.x/query/src/test/java/org/infinispan/query/config/CacheModeTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -0,0 +1,53 @@
+package org.infinispan.query.config;
+
+import org.infinispan.Cache;
+import org.infinispan.config.Configuration;
+import org.infinispan.interceptors.base.CommandInterceptor;
+import org.infinispan.manager.CacheContainer;
+import org.infinispan.manager.CacheManager;
+import org.infinispan.query.backend.QueryHelper;
+import org.infinispan.query.backend.QueryInterceptor;
+import org.infinispan.query.test.Person;
+import org.infinispan.test.AbstractInfinispanTest;
+import org.infinispan.test.SingleCacheManagerTest;
+import org.infinispan.test.TestingUtil;
+import org.infinispan.test.fwk.TestCacheManagerFactory;
+import org.testng.annotations.Test;
+
+import java.util.Properties;
+
+ at Test(groups = "functional", testName = "query.config.CacheModeTest")
+public class CacheModeTest extends AbstractInfinispanTest {
+   public void testLocal() {
+      doTest(Configuration.CacheMode.LOCAL);
+   }
+
+   public void testReplicated() {
+      doTest(Configuration.CacheMode.REPL_SYNC);
+   }
+
+   public void testInvalidated() {
+      doTest(Configuration.CacheMode.INVALIDATION_SYNC);
+   }
+
+   public void testDistributed() {
+      doTest(Configuration.CacheMode.DIST_SYNC);
+   }
+
+   private void doTest(Configuration.CacheMode m) {
+      CacheContainer cc = null;
+
+      try {
+         cc = TestCacheManagerFactory.createCacheManager(m, true);
+         QueryHelper qh = new QueryHelper(cc.getCache(), new Properties(), Person.class);
+         boolean found = false;
+         for (CommandInterceptor i : cc.getCache().getAdvancedCache().getInterceptorChain()) {
+            System.out.println("  Testing " + i.getClass().getSimpleName());
+            if (i instanceof QueryInterceptor) found = true;
+         }
+         assert found : "Didn't find a query interceptor in the chain!!";
+      } finally {
+         TestingUtil.killCacheManagers(cc);
+      }      
+   }
+}

Modified: branches/4.2.x/query/src/test/java/org/infinispan/query/test/AnotherGrassEater.java
===================================================================
--- branches/4.2.x/query/src/test/java/org/infinispan/query/test/AnotherGrassEater.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/query/src/test/java/org/infinispan/query/test/AnotherGrassEater.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -12,6 +12,7 @@
 @ProvidedId(bridge = @FieldBridge(impl = StringBridge.class))
 @Indexed(index = "anotherclass")
 public class AnotherGrassEater implements Serializable {
+   private static final long serialVersionUID = -5685487467005726138L;
    @Field(store = Store.YES)
    private String name;
    @Field(store = Store.YES)

Modified: branches/4.2.x/server/rest/src/main/resources/sample_python_REST_client.py
===================================================================
--- branches/4.2.x/server/rest/src/main/resources/sample_python_REST_client.py	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/server/rest/src/main/resources/sample_python_REST_client.py	2010-09-05 12:05:39 UTC (rev 2324)
@@ -8,21 +8,32 @@
 
 ## Your Infinispan WAR server host
 hostname = "localhost:8080"
+webapp_name = "infinispan-server-rest"
+cache_name = "___defaultcache"
+key = "my_key"
 
 #putting data in 
-conn = httplib.HTTPConnection(hostname)
-data = "SOME DATA HERE !" #could be string, or a file...
-conn.request("POST", "/infinispan/rest/Bucket/0", data, {"Content-Type": "text/plain"})
-response = conn.getresponse()
-print response.status
+print "Storing data on server %s under key [%s] over REST" % (hostname, key)
+try:
+  conn = httplib.HTTPConnection(hostname)
+  data = "This is some test data." #could be string, or a file...
+  conn.request("POST", "/%s/rest/%s/%s" % (webapp_name, cache_name, key), data, {"Content-Type": "text/plain"})
+  response = conn.getresponse()
+  print "HTTP status: %s" % response.status
+except:
+  print "Unable to connect to the REST server on %s. Is it running?" % hostname  
 
 #getting data out
-import httplib
-conn = httplib.HTTPConnection(hostname)
-conn.request("GET", "/infinispan/rest/Bucket/0")
-response = conn.getresponse()
-print response.status
-print response.read()
+print "Retrieving data from server %s under key [%s]" % (hostname, key)
+try:
+  conn = httplib.HTTPConnection(hostname)
+  conn.request("GET", "/%s/rest/%s/%s" % (webapp_name, cache_name, key))
+  response = conn.getresponse()
+  print "HTTP status: %s" % response.status
+  print "Value retrieved: %s" % response.read()
+except:
+  print "Unable to connect to the REST server on %s.  Is it running?" % hostname
 
-## For more information on usagse see http://www.jboss.org/community/wiki/InfinispanRESTserver
+## For more information on usage see http://community.jboss.org/wiki/InfinispanRESTserver
 
+

Modified: branches/4.2.x/server/rest/src/main/resources/sample_ruby_REST_client.rb
===================================================================
--- branches/4.2.x/server/rest/src/main/resources/sample_ruby_REST_client.rb	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/server/rest/src/main/resources/sample_ruby_REST_client.rb	2010-09-05 12:05:39 UTC (rev 2324)
@@ -11,31 +11,28 @@
 http = Net::HTTP.new('localhost', 8080)
 
 #Create new entry
-http.post('/infinispan/rest/MyData/MyKey', 'DATA HERE', {"Content-Type" => "text/plain"})
+http.post('/infinispan-server-rest/rest/___defaultcache/MyKey', 'DATA HERE', {"Content-Type" => "text/plain"})
 
 #get it back
-puts http.get('/infinispan/rest/MyData/MyKey').body
+puts http.get('/infinispan-server-rest/rest/___defaultcache/MyKey').body
 
 #use PUT to overwrite
-http.put('/infinispan/rest/MyData/MyKey', 'MORE DATA', {"Content-Type" => "text/plain"})
+http.put('/infinispan-server-rest/rest/___defaultcache/MyKey', 'MORE DATA', {"Content-Type" => "text/plain"})
 
 #and remove...
-http.delete('/infinispan/rest/MyData/MyKey')
+http.delete('/infinispan-server-rest/rest/___defaultcache/MyKey')
 
-#Create binary data like this... just the same...
-http.put('/infinispan/rest/MyImages/Image.png', File.read('/Users/michaelneale/logo.png'), {"Content-Type" => "image/png"})
 
-
 #and if you want to do json...
 require 'rubygems'
 require 'json'
 
 #now for fun, lets do some JSON !
 data = {:name => "michael", :age => 42 }
-http.put('/infinispan/rest/Users/data/0', data.to_json, {"Content-Type" => "application/json"})
+http.put('/infinispan-server-rest/rest/___defaultcache/MyKey', data.to_json, {"Content-Type" => "application/json"})
 puts "OK !"
 
-## For more information on usagse see http://www.jboss.org/community/wiki/InfinispanRESTserver
+## For more information on usagse see http://community.jboss.org/wiki/InfinispanRESTserver
 
 
 


Property changes on: branches/4.2.x/server/websocket
___________________________________________________________________
Name: svn:ignore
   - target

   + target
.settings
.classpath
.project



Property changes on: branches/4.2.x/tree
___________________________________________________________________
Name: svn:ignore
   - target
.settings
eclipse-output
test-output
output
.classpath
.project
temp-testng-customsuite.xml
*.iml
*.log

   + target
.settings
eclipse-output
test-output
output
.classpath
.project
temp-testng-customsuite.xml
*.iml
*.log
PutObjectStoreDirHere


Modified: branches/4.2.x/tree/src/main/java/org/infinispan/tree/TreeStructureSupport.java
===================================================================
--- branches/4.2.x/tree/src/main/java/org/infinispan/tree/TreeStructureSupport.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/tree/src/main/java/org/infinispan/tree/TreeStructureSupport.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -33,7 +33,7 @@
 import org.infinispan.util.logging.LogFactory;
 
 public class TreeStructureSupport extends AutoBatchSupport {
-   private static Log log = LogFactory.getLog(TreeStructureSupport.class);
+   private static final Log log = LogFactory.getLog(TreeStructureSupport.class);
 
    protected final Cache<NodeKey, AtomicMap<?, ?>> cache;
    protected final InvocationContextContainer icc;

Modified: branches/4.2.x/tree/src/test/java/org/infinispan/api/tree/LazyDeserializationTreeCacheTest.java
===================================================================
--- branches/4.2.x/tree/src/test/java/org/infinispan/api/tree/LazyDeserializationTreeCacheTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/tree/src/test/java/org/infinispan/api/tree/LazyDeserializationTreeCacheTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -3,7 +3,6 @@
 import org.infinispan.config.Configuration;
 import org.infinispan.manager.EmbeddedCacheManager;
 import org.infinispan.test.SingleCacheManagerTest;
-import org.infinispan.test.TestingUtil;
 import org.infinispan.test.fwk.TestCacheManagerFactory;
 import org.infinispan.tree.TreeCache;
 import org.infinispan.tree.TreeCacheImpl;

Modified: branches/4.2.x/tree/src/test/java/org/infinispan/tx/TransactionManagerLookupTreeTest.java
===================================================================
--- branches/4.2.x/tree/src/test/java/org/infinispan/tx/TransactionManagerLookupTreeTest.java	2010-09-05 11:04:47 UTC (rev 2323)
+++ branches/4.2.x/tree/src/test/java/org/infinispan/tx/TransactionManagerLookupTreeTest.java	2010-09-05 12:05:39 UTC (rev 2324)
@@ -3,11 +3,8 @@
 import org.infinispan.config.Configuration;
 import org.infinispan.manager.DefaultCacheManager;
 import org.infinispan.manager.EmbeddedCacheManager;
-import org.infinispan.test.AbstractInfinispanTest;
-import org.infinispan.test.SingleCacheManagerTest;
 import org.infinispan.test.TestingUtil;
 import org.infinispan.transaction.lookup.TransactionManagerLookup;
-import org.infinispan.tree.Fqn;
 import org.infinispan.tree.TreeCache;
 import org.infinispan.tree.TreeCacheFactory;
 import org.testng.annotations.Test;



More information about the infinispan-commits mailing list