[infinispan-commits] Infinispan SVN: r630 - in trunk: cachestore/bdbje/src/test/java/org/infinispan/loaders/bdbje and 10 other directories.
infinispan-commits at lists.jboss.org
infinispan-commits at lists.jboss.org
Tue Aug 4 14:51:05 EDT 2009
Author: mircea.markus
Date: 2009-08-04 14:51:05 -0400 (Tue, 04 Aug 2009)
New Revision: 630
Removed:
trunk/core/src/main/java/org/infinispan/config/RuntimeConfig.java
Modified:
trunk/cachestore/bdbje/src/main/java/org/infinispan/loaders/bdbje/BdbjeCacheStore.java
trunk/cachestore/bdbje/src/main/java/org/infinispan/loaders/bdbje/BdbjeCacheStoreConfig.java
trunk/cachestore/bdbje/src/test/java/org/infinispan/loaders/bdbje/BdbjeCacheStoreConfigTest.java
trunk/cachestore/bdbje/src/test/java/org/infinispan/loaders/bdbje/BdbjeCacheStoreTest.java
trunk/core/src/main/java/org/infinispan/config/CacheLoaderManagerConfig.java
trunk/core/src/main/java/org/infinispan/config/Configuration.java
trunk/core/src/main/java/org/infinispan/config/CustomInterceptorConfig.java
trunk/core/src/main/java/org/infinispan/config/GlobalConfiguration.java
trunk/core/src/main/java/org/infinispan/factories/AbstractComponentRegistry.java
trunk/core/src/main/java/org/infinispan/factories/RpcManagerFactory.java
trunk/core/src/main/java/org/infinispan/loaders/AbstractCacheStore.java
trunk/core/src/main/java/org/infinispan/loaders/AbstractCacheStoreConfig.java
trunk/core/src/main/java/org/infinispan/loaders/CacheStore.java
trunk/core/src/main/java/org/infinispan/loaders/decorators/AbstractDelegatingStore.java
trunk/core/src/main/java/org/infinispan/loaders/decorators/ChainingCacheStore.java
trunk/core/src/main/java/org/infinispan/manager/CacheManager.java
trunk/core/src/main/java/org/infinispan/manager/DefaultCacheManager.java
trunk/core/src/test/java/org/infinispan/jmx/RpcManagerMBeanTest.java
trunk/core/src/test/java/org/infinispan/loaders/BaseCacheStoreTest.java
trunk/core/src/test/java/org/infinispan/loaders/decorators/ChainingCacheLoaderTest.java
trunk/core/src/test/java/org/infinispan/profiling/DeadlockDetectionPerformanceTest.java
trunk/core/src/test/java/org/infinispan/remoting/TransportInvokeTest.java
Log:
[ISPN-106] (JdbcXyzCacheStore should honor cache name) - added UT to reproduce the issue on all cache stores. Fixed the issue in rest of cache stores as well. Reimplemented Configuration.clonable (and aggregated classes)
Modified: trunk/cachestore/bdbje/src/main/java/org/infinispan/loaders/bdbje/BdbjeCacheStore.java
===================================================================
--- trunk/cachestore/bdbje/src/main/java/org/infinispan/loaders/bdbje/BdbjeCacheStore.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/cachestore/bdbje/src/main/java/org/infinispan/loaders/bdbje/BdbjeCacheStore.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -129,9 +129,9 @@
private void openSleepyCatResources() throws CacheLoaderException {
if (trace) log.trace("creating je environment with home dir {0}", cfg.getLocation());
- if (cfg.getCacheDbName() == null) cfg.setCacheDbName(cache.getName());
- if (cfg.getCatalogDbName() == null) cfg.setCatalogDbName(cfg.getCacheDbName() + "_class_catalog");
- if (cfg.getExpiryDbName() == null) cfg.setExpiryDbName(cfg.getCacheDbName() + "_expiry");
+ cfg.setCacheName(cache.getName());
+ if (cfg.getCatalogDbName() == null)
+ cfg.setCatalogDbName(cfg.getCacheDbName() + "_class_catalog");
File location = verifyOrCreateEnvironmentDirectory(new File(cfg.getLocation()));
try {
Modified: trunk/cachestore/bdbje/src/main/java/org/infinispan/loaders/bdbje/BdbjeCacheStoreConfig.java
===================================================================
--- trunk/cachestore/bdbje/src/main/java/org/infinispan/loaders/bdbje/BdbjeCacheStoreConfig.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/cachestore/bdbje/src/main/java/org/infinispan/loaders/bdbje/BdbjeCacheStoreConfig.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -29,90 +29,108 @@
* @since 4.0
*/
@ConfigurationElements(elements = {
- @ConfigurationElement(name = "loader", parent = "loaders",
- description = "org.infinispan.loaders.bdbje.BdbjeCacheStore",
- cardinalityInParent=Cardinality.UNBOUNDED),
- @ConfigurationElement(name = "properties", parent = "loader") })
+ @ConfigurationElement(name = "loader", parent = "loaders",
+ description = "org.infinispan.loaders.bdbje.BdbjeCacheStore",
+ cardinalityInParent = Cardinality.UNBOUNDED),
+ @ConfigurationElement(name = "properties", parent = "loader")})
public class BdbjeCacheStoreConfig extends AbstractCacheStoreConfig {
- private String location = "Infinispan-BdbjeCacheStore";
- private long lockAcquistionTimeout = 60 * 1000;
- private int maxTxRetries = 5;
- private String cacheDbName;
- private String catalogDbName;
- private String expiryDbName;
+ private String location = "Infinispan-BdbjeCacheStore";
+ private long lockAcquistionTimeout = 60 * 1000;
+ private int maxTxRetries = 5;
+ private String cacheDbNamePrefix;
+ private String catalogDbName;
+ private String expiryDbPrefix;
+ private String cacheName;
- public String getExpiryDbName() {
- return expiryDbName;
- }
+ public String getExpiryDbPrefix() {
+ return expiryDbPrefix;
+ }
+ public String getExpiryDbName() {
+ if (expiryDbPrefix != null) {
+ return expiryDbPrefix + "_" + cacheName;
+ } else {
+ return cacheName + "_expiry";
+ }
+ }
- @ConfigurationProperty(name="expiryDbName",
- parentElement="properties")
- public void setExpiryDbName(String expiryDbName) {
- this.expiryDbName = expiryDbName;
- }
+ @ConfigurationProperty(name = "expiryDbNamePrefix", parentElement = "properties")
+ public void setExpiryDbNamePrefix(String expiryDbName) {
+ this.expiryDbPrefix = expiryDbName;
+ }
- public BdbjeCacheStoreConfig() {
- setCacheLoaderClassName(BdbjeCacheStore.class.getName());
- }
+ public BdbjeCacheStoreConfig() {
+ setCacheLoaderClassName(BdbjeCacheStore.class.getName());
+ }
- public int getMaxTxRetries() {
- return maxTxRetries;
- }
+ public int getMaxTxRetries() {
+ return maxTxRetries;
+ }
- @ConfigurationProperty(name="maxTxRetries",
- parentElement="properties")
- public void setMaxTxRetries(int maxTxRetries) {
- this.maxTxRetries = maxTxRetries;
- }
+ @ConfigurationProperty(name = "maxTxRetries",
+ parentElement = "properties")
+ public void setMaxTxRetries(int maxTxRetries) {
+ this.maxTxRetries = maxTxRetries;
+ }
- public long getLockAcquistionTimeout() {
- return lockAcquistionTimeout;
- }
+ public long getLockAcquistionTimeout() {
+ return lockAcquistionTimeout;
+ }
- @ConfigurationProperty(name="lockAcquistionTimeout",
- parentElement="properties")
- public void setLockAcquistionTimeout(long lockAcquistionTimeout) {
- this.lockAcquistionTimeout = lockAcquistionTimeout;
- }
+ @ConfigurationProperty(name = "lockAcquistionTimeout",
+ parentElement = "properties")
+ public void setLockAcquistionTimeout(long lockAcquistionTimeout) {
+ this.lockAcquistionTimeout = lockAcquistionTimeout;
+ }
- public String getLocation() {
- return location;
- }
+ public String getLocation() {
+ return location;
+ }
- @ConfigurationProperty(name="location",
- parentElement="properties")
- public void setLocation(String location) {
- testImmutability("location");
- this.location = location;
- }
+ @ConfigurationProperty(name = "location",
+ parentElement = "properties")
+ public void setLocation(String location) {
+ testImmutability("location");
+ this.location = location;
+ }
- public String getCacheDbName() {
- return cacheDbName;
- }
+ public String getCacheDbNamePrefix() {
+ return cacheDbNamePrefix;
+ }
- @ConfigurationProperty(name="cacheDbName",
- parentElement="properties")
- public void setCacheDbName(String cacheDbName) {
- this.cacheDbName = cacheDbName;
- }
+ @ConfigurationProperty(name = "cacheDbNamePrefix",
+ parentElement = "properties")
+ public void setCacheDbNamePrefix(String cacheDbNamePrefix) {
+ this.cacheDbNamePrefix = cacheDbNamePrefix;
+ }
- public String getCatalogDbName() {
- return catalogDbName;
- }
+ public String getCatalogDbName() {
+ return catalogDbName;
+ }
- @ConfigurationProperty(name="catalogDbName",
- parentElement="properties")
- public void setCatalogDbName(String catalogDbName) {
- this.catalogDbName = catalogDbName;
- }
+ @ConfigurationProperty(name = "catalogDbName",
+ parentElement = "properties")
+ public void setCatalogDbName(String catalogDbName) {
+ this.catalogDbName = catalogDbName;
+ }
+ void setCacheName(String name) {
+ this.cacheName = name;
+ }
+
+ public String getCacheDbName() {
+ if (cacheDbNamePrefix != null) {
+ return cacheDbNamePrefix + "_" + cacheName;
+ } else {
+ return cacheName;
+ }
+ }
}
Modified: trunk/cachestore/bdbje/src/test/java/org/infinispan/loaders/bdbje/BdbjeCacheStoreConfigTest.java
===================================================================
--- trunk/cachestore/bdbje/src/test/java/org/infinispan/loaders/bdbje/BdbjeCacheStoreConfigTest.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/cachestore/bdbje/src/test/java/org/infinispan/loaders/bdbje/BdbjeCacheStoreConfigTest.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -67,8 +67,8 @@
@Test
public void testSetCacheDb() {
- config.setCacheDbName("foo");
- assert config.getCacheDbName().equals("foo");
+ config.setCacheDbNamePrefix("foo");
+ assert config.getCacheDbNamePrefix().equals("foo");
}
@Test
@@ -79,8 +79,8 @@
@Test
public void testSetExpiryDb() {
- config.setExpiryDbName("foo");
- assert config.getExpiryDbName().equals("foo");
+ config.setExpiryDbNamePrefix("foo");
+ assert config.getExpiryDbPrefix().equals("foo");
}
}
Modified: trunk/cachestore/bdbje/src/test/java/org/infinispan/loaders/bdbje/BdbjeCacheStoreTest.java
===================================================================
--- trunk/cachestore/bdbje/src/test/java/org/infinispan/loaders/bdbje/BdbjeCacheStoreTest.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/cachestore/bdbje/src/test/java/org/infinispan/loaders/bdbje/BdbjeCacheStoreTest.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -82,8 +82,9 @@
return cacheDb;
else if (name.equals(cfg.getCatalogDbName()))
return catalogDb;
- else
+ else if (name.equals(cfg.getExpiryDbName()))
return expiryDb;
+ else throw new IllegalStateException("Unknown name:" + name);
}
@Override
Modified: trunk/core/src/main/java/org/infinispan/config/CacheLoaderManagerConfig.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/config/CacheLoaderManagerConfig.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/core/src/main/java/org/infinispan/config/CacheLoaderManagerConfig.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -21,19 +21,18 @@
*/
package org.infinispan.config;
-import java.util.LinkedList;
-import java.util.List;
+import org.infinispan.config.parsing.CacheLoaderManagerConfigReader;
+import org.infinispan.loaders.CacheLoaderConfig;
+import org.infinispan.loaders.CacheStoreConfig;
+import org.infinispan.util.Util;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
+import java.util.LinkedList;
+import java.util.List;
-import org.infinispan.config.parsing.CacheLoaderManagerConfigReader;
-import org.infinispan.loaders.CacheLoaderConfig;
-import org.infinispan.loaders.CacheStoreConfig;
-import org.infinispan.util.Util;
-
/**
* Holds the configuration of the cache loader chain. ALL cache loaders should be defined using this class, adding
* individual cache loaders to the chain by calling {@link CacheLoaderManagerConfig#addCacheLoaderConfig}
@@ -165,7 +164,7 @@
for (CacheLoaderConfig clc : cacheLoaderConfigs) {
clcs.add(clc.clone());
}
- clone.setCacheLoaderConfigs(clcs);
+ clone.cacheLoaderConfigs = clcs;
}
return clone;
}
Modified: trunk/core/src/main/java/org/infinispan/config/Configuration.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/config/Configuration.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/core/src/main/java/org/infinispan/config/Configuration.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -21,23 +21,6 @@
*/
package org.infinispan.config;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
import org.infinispan.config.parsing.ClusteringConfigReader;
import org.infinispan.config.parsing.CustomInterceptorConfigReader;
import org.infinispan.distribution.DefaultConsistentHash;
@@ -47,7 +30,19 @@
import org.infinispan.factories.annotations.Start;
import org.infinispan.transaction.lookup.GenericTransactionManagerLookup;
import org.infinispan.util.concurrent.IsolationLevel;
+import org.infinispan.CacheException;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
/**
* Encapsulates the configuration of a Cache.
*
@@ -98,95 +93,6 @@
private String name;
- /**
- * Cache replication mode.
- */
- public static enum CacheMode {
- /**
- * Data is not replicated.
- */
- LOCAL,
-
- /**
- * Data replicated synchronously.
- */
- REPL_SYNC,
-
- /**
- * Data replicated asynchronously.
- */
- REPL_ASYNC,
-
- /**
- * Data invalidated synchronously.
- */
- INVALIDATION_SYNC,
-
- /**
- * Data invalidated asynchronously.
- */
- INVALIDATION_ASYNC,
-
- /**
- * Synchronous DIST
- */
- DIST_SYNC,
-
- /**
- * Async DIST
- */
- DIST_ASYNC;
-
- /**
- * Returns true if the mode is invalidation, either sync or async.
- */
- public boolean isInvalidation() {
- return this == INVALIDATION_SYNC || this == INVALIDATION_ASYNC;
- }
-
- public boolean isSynchronous() {
- return this == REPL_SYNC || this == DIST_SYNC || this == INVALIDATION_SYNC || this == LOCAL;
- }
-
- public boolean isClustered() {
- return this != LOCAL;
- }
-
- public boolean isDistributed() {
- return this == DIST_SYNC || this == DIST_ASYNC;
- }
-
- public boolean isReplicated() {
- return this == REPL_SYNC || this == REPL_ASYNC;
- }
-
- public CacheMode toSync() {
- switch (this) {
- case REPL_ASYNC:
- return REPL_SYNC;
- case INVALIDATION_ASYNC:
- return INVALIDATION_SYNC;
- case DIST_ASYNC:
- return DIST_SYNC;
- default:
- return this;
- }
- }
-
- public CacheMode toAsync() {
- switch (this) {
- case REPL_SYNC:
- return REPL_ASYNC;
- case INVALIDATION_SYNC:
- return INVALIDATION_ASYNC;
- case DIST_SYNC:
- return DIST_ASYNC;
- default:
- return this;
- }
- }
- }
-
// ------------------------------------------------------------------------------------------------------------
// CONFIGURATION OPTIONS
// ------------------------------------------------------------------------------------------------------------
@@ -796,29 +702,25 @@
@Override
public Configuration clone() {
-
- Configuration obj = null;
try {
- // Write the object out to a byte array
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- ObjectOutputStream out = new ObjectOutputStream(bos);
- out.writeObject(this);
- out.flush();
- out.close();
-
- // Make an input stream from the byte array and read
- // a copy of the object back in.
- ObjectInputStream in = new ObjectInputStream(
- new ByteArrayInputStream(bos.toByteArray()));
- obj= (Configuration) in.readObject();
+ Configuration dolly = (Configuration) super.clone();
+ if (globalConfiguration!= null) dolly.globalConfiguration = globalConfiguration.clone();
+ if (locking != null) dolly.locking = (LockingType) locking.clone();
+ if (loaders != null) dolly.loaders = loaders.clone();
+ if (transaction != null) dolly.transaction = (TransactionType) transaction.clone();
+ if (customInterceptors != null) dolly.customInterceptors = customInterceptors.clone();
+ if (eviction != null) dolly.eviction = (EvictionType) eviction.clone();
+ if (expiration != null) dolly.expiration = (ExpirationType) expiration.clone();
+ if (unsafe != null) dolly.unsafe = (UnsafeType) unsafe.clone();
+ if (clustering != null) dolly.clustering = clustering.clone();
+ if (jmxStatistics != null) dolly.jmxStatistics = (BooleanAttributeType) jmxStatistics.clone();
+ if (lazyDeserialization != null) dolly.lazyDeserialization = (BooleanAttributeType) lazyDeserialization.clone();
+ if (invocationBatching != null) dolly.invocationBatching = (BooleanAttributeType) invocationBatching.clone();
+ if (deadlockDetection != null) dolly.deadlockDetection = (DeadlockDetectionType) deadlockDetection.clone();
+ return dolly;
+ } catch (CloneNotSupportedException e) {
+ throw new CacheException("Unexpected!",e);
}
- catch(IOException e) {
- e.printStackTrace();
- }
- catch(ClassNotFoundException cnfe) {
- cnfe.printStackTrace();
- }
- return obj;
}
public boolean isUsingCacheLoaders() {
@@ -983,6 +885,17 @@
testImmutability("mode");
this.mode = mode;
}
+
+ @Override
+ public ClusteringType clone() throws CloneNotSupportedException {
+ ClusteringType dolly = (ClusteringType) super.clone();
+ dolly.sync = (SyncType) sync.clone();
+ dolly.stateRetrieval = (StateRetrievalType) stateRetrieval.clone();
+ dolly.l1 = (L1Type) l1.clone();
+ dolly.async = (AsyncType) async.clone();
+ dolly.hash = (HashType) hash.clone();
+ return dolly;
+ }
}
@XmlAccessorType(XmlAccessType.PROPERTY)
@@ -1247,5 +1160,107 @@
@XmlElement(name="interceptor")
private List<CustomInterceptorConfig> customInterceptors= new ArrayList<CustomInterceptorConfig>();
+
+ @Override
+ public CustomInterceptorsType clone() throws CloneNotSupportedException {
+ CustomInterceptorsType dolly = (CustomInterceptorsType) super.clone();
+ if (customInterceptors != null) {
+ dolly.customInterceptors = new ArrayList<CustomInterceptorConfig>();
+ for (CustomInterceptorConfig config: customInterceptors) {
+ CustomInterceptorConfig clone = config.clone();
+ dolly.customInterceptors.add(clone);
+ }
+ }
+ return dolly;
+ }
}
+
+ /**
+ * Cache replication mode.
+ */
+ public static enum CacheMode {
+ /**
+ * Data is not replicated.
+ */
+ LOCAL,
+
+ /**
+ * Data replicated synchronously.
+ */
+ REPL_SYNC,
+
+ /**
+ * Data replicated asynchronously.
+ */
+ REPL_ASYNC,
+
+ /**
+ * Data invalidated synchronously.
+ */
+ INVALIDATION_SYNC,
+
+ /**
+ * Data invalidated asynchronously.
+ */
+ INVALIDATION_ASYNC,
+
+ /**
+ * Synchronous DIST
+ */
+ DIST_SYNC,
+
+ /**
+ * Async DIST
+ */
+ DIST_ASYNC;
+
+ /**
+ * Returns true if the mode is invalidation, either sync or async.
+ */
+ public boolean isInvalidation() {
+ return this == INVALIDATION_SYNC || this == INVALIDATION_ASYNC;
+ }
+
+ public boolean isSynchronous() {
+ return this == REPL_SYNC || this == DIST_SYNC || this == INVALIDATION_SYNC || this == LOCAL;
+ }
+
+ public boolean isClustered() {
+ return this != LOCAL;
+ }
+
+ public boolean isDistributed() {
+ return this == DIST_SYNC || this == DIST_ASYNC;
+ }
+
+ public boolean isReplicated() {
+ return this == REPL_SYNC || this == REPL_ASYNC;
+ }
+
+ public CacheMode toSync() {
+ switch (this) {
+ case REPL_ASYNC:
+ return REPL_SYNC;
+ case INVALIDATION_ASYNC:
+ return INVALIDATION_SYNC;
+ case DIST_ASYNC:
+ return DIST_SYNC;
+ default:
+ return this;
+ }
+ }
+
+ public CacheMode toAsync() {
+ switch (this) {
+ case REPL_SYNC:
+ return REPL_ASYNC;
+ case INVALIDATION_SYNC:
+ return INVALIDATION_ASYNC;
+ case DIST_SYNC:
+ return DIST_ASYNC;
+ default:
+ return this;
+ }
+ }
+ }
}
\ No newline at end of file
Modified: trunk/core/src/main/java/org/infinispan/config/CustomInterceptorConfig.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/config/CustomInterceptorConfig.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/core/src/main/java/org/infinispan/config/CustomInterceptorConfig.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -21,8 +21,10 @@
*/
package org.infinispan.config;
-import java.util.Locale;
-import java.util.Properties;
+import net.jcip.annotations.Immutable;
+import org.infinispan.config.ConfigurationElement.Cardinality;
+import org.infinispan.interceptors.base.CommandInterceptor;
+import org.infinispan.util.TypedProperties;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
@@ -30,13 +32,9 @@
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
+import java.util.Locale;
+import java.util.Properties;
-import net.jcip.annotations.Immutable;
-
-import org.infinispan.config.ConfigurationElement.Cardinality;
-import org.infinispan.interceptors.base.CommandInterceptor;
-import org.infinispan.util.TypedProperties;
-
/**
* Holds information about the custom interceptors defined in the configuration file.
*
@@ -326,11 +324,7 @@
@Override
public CustomInterceptorConfig clone() throws CloneNotSupportedException {
CustomInterceptorConfig dolly = (CustomInterceptorConfig) super.clone();
- dolly.interceptor = interceptor;
- dolly.isFirst = isFirst;
- dolly.isLast = isLast;
- dolly.after = after;
- dolly.before = before;
+ if (properties != null) dolly.properties = (TypedProperties) properties.clone();
return dolly;
}
Modified: trunk/core/src/main/java/org/infinispan/config/GlobalConfiguration.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/config/GlobalConfiguration.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/core/src/main/java/org/infinispan/config/GlobalConfiguration.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -1,14 +1,5 @@
package org.infinispan.config;
-import java.util.Properties;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
import org.infinispan.CacheException;
import org.infinispan.Version;
import org.infinispan.executors.DefaultExecutorFactory;
@@ -24,6 +15,14 @@
import org.infinispan.remoting.transport.jgroups.JGroupsTransport;
import org.infinispan.util.TypedProperties;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+import java.util.Properties;
+
/**
* Configuration component that encapsulates the global configuration.
*
@@ -520,7 +519,14 @@
public void setProperties(TypedProperties properties) {
testImmutability("properties");
this.properties = properties;
- }
+ }
+
+ @Override
+ public FactoryClassWithPropertiesType clone() throws CloneNotSupportedException {
+ FactoryClassWithPropertiesType dolly = (FactoryClassWithPropertiesType) super.clone();
+ dolly.properties = (TypedProperties) properties.clone();
+ return dolly;
+ }
}
@XmlAccessorType(XmlAccessType.PROPERTY)
@@ -557,7 +563,14 @@
//testImmutability("properties");
//TODO fails JmxStatsFunctionalTest#testMultipleManagersOnSameServerFails
this.properties = properties;
- }
+ }
+
+ @Override
+ public TransportType clone() throws CloneNotSupportedException {
+ TransportType dolly = (TransportType) super.clone();
+ dolly.properties = (TypedProperties) properties.clone();
+ return dolly;
+ }
}
@XmlAccessorType(XmlAccessType.PROPERTY)
Deleted: trunk/core/src/main/java/org/infinispan/config/RuntimeConfig.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/config/RuntimeConfig.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/core/src/main/java/org/infinispan/config/RuntimeConfig.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -1,140 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2000 - 2008, 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.config;
-
-import org.infinispan.remoting.rpc.RpcManager;
-import org.infinispan.util.Util;
-
-import javax.transaction.TransactionManager;
-import java.util.concurrent.ExecutorService;
-
-public class RuntimeConfig extends AbstractNamedCacheConfigurationBean {
- /**
- * The serialVersionUID
- */
- private static final long serialVersionUID = 5626847485703341794L;
-
- private transient TransactionManager transactionManager;
- private RpcManager rpcManager;
- private transient ExecutorService asyncSerializationExecutor;
- private transient ExecutorService asyncCacheListenerExecutor;
-
- /**
- * Resets the runtime to default values.
- */
- public void reset() {
- rpcManager = null;
- }
-
-
- public TransactionManager getTransactionManager() {
- return transactionManager;
- }
-
- public void setTransactionManager(TransactionManager transactionManager) {
- testImmutability("transactionManager");
- this.transactionManager = transactionManager;
- }
-
- /**
- * This is only relevant if the async cache replication executor has been set using {@link
- * #setAsyncSerializationExecutor(ExecutorService)}. If the executor is created internally, this method will return
- * null.
- * <p/>
- *
- * @return the executor used for async replication.
- */
- public ExecutorService getAsyncSerializationExecutor() {
- return asyncSerializationExecutor;
- }
-
- /**
- * This is used to set the executor to use for asynchronous cache operations.
- *
- * @param asyncSerializationExecutor executor to set
- */
- public void setAsyncSerializationExecutor(ExecutorService asyncSerializationExecutor) {
- this.asyncSerializationExecutor = asyncSerializationExecutor;
- }
-
- /**
- * This is only relevant if the async cache listener executor has been set using {@link
- * #setAsyncCacheListenerExecutor(java.util.concurrent.ExecutorService)}. If the executor is created internally, this
- * method will return null.
- * <p/>
- *
- * @return the executor to use for async cache listeners
- */
- public ExecutorService getAsyncCacheListenerExecutor() {
- return asyncCacheListenerExecutor;
- }
-
- /**
- * This is used to set the executor to use for asynchronous cache listeners.
- * <p/>
- *
- * @param asyncCacheListenerExecutor the executor to use for async cache listeners
- */
- public void setAsyncCacheListenerExecutor(ExecutorService asyncCacheListenerExecutor) {
- this.asyncCacheListenerExecutor = asyncCacheListenerExecutor;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
-
- if (obj instanceof RuntimeConfig) {
- RuntimeConfig other = (RuntimeConfig) obj;
- return Util.safeEquals(transactionManager, other.transactionManager)
- && Util.safeEquals(rpcManager, other.rpcManager)
- && Util.safeEquals(asyncCacheListenerExecutor, other.asyncCacheListenerExecutor)
- && Util.safeEquals(asyncSerializationExecutor, other.asyncSerializationExecutor);
- }
-
- return false;
- }
-
- @Override
- public int hashCode() {
- int result = 17;
- result = result * 29 + (transactionManager == null ? 0 : transactionManager.hashCode());
- result = result * 29 + (rpcManager == null ? 0 : rpcManager.hashCode());
- result = result * 29 + (asyncCacheListenerExecutor == null ? 0 : asyncCacheListenerExecutor.hashCode());
- result = result * 29 + (asyncSerializationExecutor == null ? 0 : asyncSerializationExecutor.hashCode());
- return result;
- }
-
- public void setRPCManager(RpcManager rpcManager) {
- this.rpcManager = rpcManager;
- }
-
- public RpcManager getRPCManager() {
- return rpcManager;
- }
-
- @Override
- public RuntimeConfig clone() throws CloneNotSupportedException {
- return (RuntimeConfig) super.clone();
- }
-}
Modified: trunk/core/src/main/java/org/infinispan/factories/AbstractComponentRegistry.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/factories/AbstractComponentRegistry.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/core/src/main/java/org/infinispan/factories/AbstractComponentRegistry.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -25,7 +25,6 @@
import org.infinispan.Version;
import org.infinispan.config.Configuration;
import org.infinispan.config.ConfigurationException;
-import org.infinispan.config.RuntimeConfig;
import org.infinispan.factories.annotations.ComponentName;
import org.infinispan.factories.annotations.DefaultFactoryFor;
import org.infinispan.factories.annotations.Inject;
Modified: trunk/core/src/main/java/org/infinispan/factories/RpcManagerFactory.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/factories/RpcManagerFactory.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/core/src/main/java/org/infinispan/factories/RpcManagerFactory.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -21,7 +21,6 @@
*/
package org.infinispan.factories;
-import org.infinispan.config.RuntimeConfig;
import org.infinispan.factories.annotations.DefaultFactoryFor;
import org.infinispan.remoting.rpc.RpcManager;
Modified: trunk/core/src/main/java/org/infinispan/loaders/AbstractCacheStore.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/loaders/AbstractCacheStore.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/core/src/main/java/org/infinispan/loaders/AbstractCacheStore.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -105,6 +105,10 @@
transactions.remove(tx);
}
+ public CacheStoreConfig getCacheStoreConfig() {
+ return config;
+ }
+
public void commit(GlobalTransaction tx) throws CacheLoaderException {
List<? extends Modification> list = transactions.remove(tx);
if (list != null && !list.isEmpty()) applyModifications(list);
Modified: trunk/core/src/main/java/org/infinispan/loaders/AbstractCacheStoreConfig.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/loaders/AbstractCacheStoreConfig.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/core/src/main/java/org/infinispan/loaders/AbstractCacheStoreConfig.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -1,16 +1,16 @@
package org.infinispan.loaders;
+import org.infinispan.config.ConfigurationAttribute;
+import org.infinispan.loaders.decorators.AsyncStoreConfig;
+import org.infinispan.loaders.decorators.SingletonStoreConfig;
+import org.infinispan.util.Util;
+
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
-import org.infinispan.config.ConfigurationAttribute;
-import org.infinispan.loaders.decorators.AsyncStoreConfig;
-import org.infinispan.loaders.decorators.SingletonStoreConfig;
-import org.infinispan.util.Util;
-
/**
* Configures {@link AbstractCacheStore}. This allows you to tune a number of characteristics of the {@link
* AbstractCacheStore}.
@@ -169,8 +169,7 @@
@Override
public AbstractCacheStoreConfig clone() {
- AbstractCacheStoreConfig clone = null;
- clone = (AbstractCacheStoreConfig) super.clone();
+ AbstractCacheStoreConfig clone = (AbstractCacheStoreConfig) super.clone();
if (singletonStore != null) clone.setSingletonStoreConfig(singletonStore.clone());
if (async != null) clone.setAsyncStoreConfig(async.clone());
return clone;
Modified: trunk/core/src/main/java/org/infinispan/loaders/CacheStore.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/loaders/CacheStore.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/core/src/main/java/org/infinispan/loaders/CacheStore.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -147,4 +147,9 @@
* @param tx tx to roll back
*/
void rollback(GlobalTransaction tx);
+
+ /**
+ * Returns the configuration object associated to this cache store config.
+ */
+ public CacheStoreConfig getCacheStoreConfig();
}
Modified: trunk/core/src/main/java/org/infinispan/loaders/decorators/AbstractDelegatingStore.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/loaders/decorators/AbstractDelegatingStore.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/core/src/main/java/org/infinispan/loaders/decorators/AbstractDelegatingStore.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -6,6 +6,7 @@
import org.infinispan.loaders.CacheLoaderConfig;
import org.infinispan.loaders.CacheLoaderException;
import org.infinispan.loaders.CacheStore;
+import org.infinispan.loaders.CacheStoreConfig;
import org.infinispan.loaders.modifications.Modification;
import org.infinispan.marshall.Marshaller;
@@ -104,4 +105,8 @@
public void stop() throws CacheLoaderException {
delegate.stop();
}
+
+ public CacheStoreConfig getCacheStoreConfig() {
+ return delegate.getCacheStoreConfig();
+ }
}
Modified: trunk/core/src/main/java/org/infinispan/loaders/decorators/ChainingCacheStore.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/loaders/decorators/ChainingCacheStore.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/core/src/main/java/org/infinispan/loaders/decorators/ChainingCacheStore.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -150,4 +150,8 @@
public LinkedHashMap<CacheStore, CacheLoaderConfig> getStores() {
return stores;
}
+
+ public CacheStoreConfig getCacheStoreConfig() {
+ return null;
+ }
}
Modified: trunk/core/src/main/java/org/infinispan/manager/CacheManager.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/manager/CacheManager.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/core/src/main/java/org/infinispan/manager/CacheManager.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -3,6 +3,7 @@
import org.infinispan.Cache;
import org.infinispan.config.Configuration;
import org.infinispan.config.DuplicateCacheNameException;
+import org.infinispan.config.GlobalConfiguration;
import org.infinispan.factories.annotations.NonVolatile;
import org.infinispan.factories.scopes.Scope;
import org.infinispan.factories.scopes.Scopes;
@@ -102,4 +103,9 @@
boolean isCoordinator();
ComponentStatus getStatus();
+
+ /**
+ * Returns the global configuration object associated to this CacheManager.
+ */
+ public GlobalConfiguration getGlobalConfiguration();
}
Modified: trunk/core/src/main/java/org/infinispan/manager/DefaultCacheManager.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/manager/DefaultCacheManager.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/core/src/main/java/org/infinispan/manager/DefaultCacheManager.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -29,7 +29,6 @@
import org.infinispan.config.GlobalConfiguration;
import org.infinispan.config.InfinispanConfiguration;
import org.infinispan.config.parsing.XmlConfigurationParser;
-import org.infinispan.config.parsing.XmlConfigurationParserImpl;
import org.infinispan.factories.GlobalComponentRegistry;
import org.infinispan.factories.InternalCacheFactory;
import org.infinispan.factories.annotations.NonVolatile;
@@ -385,6 +384,10 @@
return globalComponentRegistry.getStatus();
}
+ public GlobalConfiguration getGlobalConfiguration() {
+ return globalConfiguration;
+ }
+
@ManagedAttribute(description = "the defined cache names and their status")
public String getDefinedCacheNames() {
StringBuilder result = new StringBuilder("[");
Modified: trunk/core/src/test/java/org/infinispan/jmx/RpcManagerMBeanTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/jmx/RpcManagerMBeanTest.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/core/src/test/java/org/infinispan/jmx/RpcManagerMBeanTest.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -118,11 +118,13 @@
memberList.add(mockAddress2);
Transport transport = createMock(Transport.class);
EasyMock.expect(transport.getMembers()).andReturn(memberList).anyTimes();
+ EasyMock.expect(transport.getAddress()).andReturn(null).anyTimes();
replay(transport);
rpcManager.setTransport(transport);
cache1.put("a5", "b5");
assert false : "rpc manager should had thrown an expception";
} catch (Throwable e) {
+ e.printStackTrace();
//expected
assertEquals(mBeanServer.getAttribute(rpcManager1, "SuccessRatio"), ("80%"));
}
Modified: trunk/core/src/test/java/org/infinispan/loaders/BaseCacheStoreTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/loaders/BaseCacheStoreTest.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/core/src/test/java/org/infinispan/loaders/BaseCacheStoreTest.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -2,6 +2,9 @@
import org.easymock.EasyMock;
import org.infinispan.Cache;
+import org.infinispan.config.CacheLoaderManagerConfig;
+import org.infinispan.config.Configuration;
+import org.infinispan.config.GlobalConfiguration;
import org.infinispan.container.entries.InternalCacheEntry;
import org.infinispan.container.entries.InternalEntryFactory;
import org.infinispan.io.UnclosableObjectInputStream;
@@ -10,8 +13,12 @@
import org.infinispan.loaders.modifications.Modification;
import org.infinispan.loaders.modifications.Remove;
import org.infinispan.loaders.modifications.Store;
+import org.infinispan.manager.CacheManager;
import org.infinispan.marshall.Marshaller;
import org.infinispan.marshall.TestObjectStreamMarshaller;
+import org.infinispan.marshall.VersionAwareMarshaller;
+import org.infinispan.test.fwk.TestCacheManagerFactory;
+import org.infinispan.test.TestingUtil;
import org.infinispan.transaction.xa.GlobalTransaction;
import org.infinispan.transaction.xa.GlobalTransactionFactory;
import org.infinispan.util.Util;
@@ -25,6 +32,7 @@
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
@@ -582,4 +590,35 @@
if (!exceptions.isEmpty()) throw exceptions.get(0);
}
+ public void testTwoCachesSameCacheStore() {
+ CacheManager localCacheManager = TestCacheManagerFactory.createLocalCacheManager();
+ GlobalConfiguration configuration = localCacheManager.getGlobalConfiguration();
+ CacheStoreConfig config = cs.getCacheStoreConfig();
+ assert config != null;
+ CacheLoaderManagerConfig clmConfig = new CacheLoaderManagerConfig();
+ clmConfig.setCacheLoaderConfigs(Collections.singletonList((CacheLoaderConfig)config));
+ configuration.getDefaultConfiguration().setCacheLoaderManagerConfig(clmConfig);
+ localCacheManager.defineCache("first", new Configuration());
+ localCacheManager.defineCache("second", new Configuration());
+
+ Cache first = localCacheManager.getCache("first");
+ Cache second = localCacheManager.getCache("second");
+ assert first.getConfiguration().getCacheLoaderManagerConfig().getCacheLoaderConfigs().size() == 1;
+ assert second.getConfiguration().getCacheLoaderManagerConfig().getCacheLoaderConfigs().size() == 1;
+
+ //TODO - this is a hack as VAM.start does not get called, for some reason. This should be removed.
+ VersionAwareMarshaller firstVam = (VersionAwareMarshaller) TestingUtil.extractComponent(first, Marshaller.class);
+ firstVam.start();
+ VersionAwareMarshaller secondVam = (VersionAwareMarshaller) TestingUtil.extractComponent(first, Marshaller.class);
+ secondVam.start();
+
+
+ first.put("key", "val");
+ assert first.get("key").equals("val");
+ assert second.get("key") == null;
+
+ second.put("key2","val2");
+ assert second.get("key2").equals("val2");
+ assert first.get("key2") == null;
+ }
}
\ No newline at end of file
Modified: trunk/core/src/test/java/org/infinispan/loaders/decorators/ChainingCacheLoaderTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/loaders/decorators/ChainingCacheLoaderTest.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/core/src/test/java/org/infinispan/loaders/decorators/ChainingCacheLoaderTest.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -282,5 +282,10 @@
public void testConfigFile() {
// no op
}
+
+ @Override
+ public void testTwoCachesSameCacheStore() {
+ //this does not apply
+ }
}
Modified: trunk/core/src/test/java/org/infinispan/profiling/DeadlockDetectionPerformanceTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/profiling/DeadlockDetectionPerformanceTest.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/core/src/test/java/org/infinispan/profiling/DeadlockDetectionPerformanceTest.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -6,6 +6,8 @@
import org.infinispan.test.TestingUtil;
import org.infinispan.test.fwk.TestCacheManagerFactory;
import org.infinispan.transaction.lookup.DummyTransactionManagerLookup;
+import org.infinispan.util.logging.Log;
+import org.infinispan.util.logging.LogFactory;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
@@ -41,6 +43,8 @@
@Test(groups = "profiling", enabled = true, testName = "profiling.DeadlockDetectionPerformanceTest")
public class DeadlockDetectionPerformanceTest {
+ private static Log log = LogFactory.getLog(DeadlockDetectionPerformanceTest.class);
+
public static final int KEY_POOL_SIZE = 10;
public static int TX_SIZE = 5;
@@ -107,6 +111,16 @@
}
}
+ @Test(invocationCount = 5, enabled = false)
+ public void testReplDifferentTxSizeDldOnly() throws Exception {
+ THREAD_COUNT = 3;
+ USE_DLD = true;
+ for (int i = 2; i < KEY_POOL_SIZE; i++) {
+ TX_SIZE = i;
+ runDistributedTest();
+ }
+ }
+
private void runDistributedTest() throws Exception {
CacheManager cm = null;
List<CacheManager> managers = new ArrayList<CacheManager>();
@@ -128,6 +142,7 @@
Thread.sleep(BENCHMARK_DURATION);
joinThreadsAndPrintResult(executorThreads);
} finally {
+ log.trace("About to kill cache managers: " + managers);
TestingUtil.killCacheManagers(managers);
}
}
@@ -213,8 +228,14 @@
failedTx++;
}
}
+ info("Exiting thread " + getName() + " which lived " + (System.currentTimeMillis() - start) + " milliseconds");
}
+ private void info(String s) {
+ System.out.println( "[" + getName() + "] " + s);
+ log.trace(s);
+ }
+
public int getFailedTx() {
return failedTx;
}
Modified: trunk/core/src/test/java/org/infinispan/remoting/TransportInvokeTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/remoting/TransportInvokeTest.java 2009-08-04 13:10:26 UTC (rev 629)
+++ trunk/core/src/test/java/org/infinispan/remoting/TransportInvokeTest.java 2009-08-04 18:51:05 UTC (rev 630)
@@ -21,19 +21,11 @@
*/
package org.infinispan.remoting;
-import static org.easymock.EasyMock.createNiceMock;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.transaction.TransactionManager;
-
+import static org.easymock.EasyMock.*;
import org.infinispan.Cache;
import org.infinispan.config.Configuration;
+import org.infinispan.remoting.rpc.RpcManager;
+import org.infinispan.remoting.rpc.RpcManagerImpl;
import org.infinispan.remoting.transport.Address;
import org.infinispan.remoting.transport.Transport;
import org.infinispan.test.MultipleCacheManagersTest;
@@ -41,9 +33,11 @@
import org.infinispan.test.TestingUtil;
import org.infinispan.transaction.lookup.DummyTransactionManagerLookup;
import org.testng.annotations.Test;
-import org.infinispan.remoting.rpc.RpcManager;
-import org.infinispan.remoting.rpc.RpcManagerImpl;
+import javax.transaction.TransactionManager;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* TransportInvokeTest.
*
@@ -77,6 +71,7 @@
List<Address> memberList = new ArrayList<Address>(1);
memberList.add(mockAddress1);
expect(mockTransport.getMembers()).andReturn(memberList).anyTimes();
+ expect(mockTransport.getAddress()).andReturn(null).anyTimes();
rpcManager.setTransport(mockTransport);
// Transport invoke remote should not be called.
replay(mockAddress1, mockTransport);
More information about the infinispan-commits
mailing list