[infinispan-commits] Infinispan SVN: r129 - in trunk/core/src: test/java/org/infinispan/config/parsing and 1 other directory.
infinispan-commits at lists.jboss.org
infinispan-commits at lists.jboss.org
Wed Apr 15 12:07:09 EDT 2009
Author: manik.surtani at jboss.com
Date: 2009-04-15 12:07:05 -0400 (Wed, 15 Apr 2009)
New Revision: 129
Modified:
trunk/core/src/main/java/org/infinispan/config/parsing/XmlConfigurationParserImpl.java
trunk/core/src/test/java/org/infinispan/config/parsing/ConfigurationParserTest.java
Log:
[ISPN-30] (DIST - Distributed cache) XML parsing and sanity checks
Modified: trunk/core/src/main/java/org/infinispan/config/parsing/XmlConfigurationParserImpl.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/config/parsing/XmlConfigurationParserImpl.java 2009-04-15 15:09:46 UTC (rev 128)
+++ trunk/core/src/main/java/org/infinispan/config/parsing/XmlConfigurationParserImpl.java 2009-04-15 16:07:05 UTC (rev 129)
@@ -216,8 +216,12 @@
config.setFetchInMemoryState(false);
// sanity check against the presence of a stateRetrieval element
- if (getSingleElementInCoreNS("stateRetrieval", e) != null)
- throw new ConfigurationException("stateRetrieval cannot be used with cache mode 'DISTRIBUTION'!");
+ Element ste = null;
+ if ((ste = getSingleElementInCoreNS("stateRetrieval", e)) != null) {
+ tmp = getAttributeValue(ste, "fetchInMemoryState");
+ if (!existsAttribute(tmp) || getBoolean(tmp))
+ throw new ConfigurationException("stateRetrieval cannot be used with cache mode 'DISTRIBUTION'!");
+ }
} else {
configureStateRetrieval(getSingleElementInCoreNS("stateRetrieval", e), config);
if (getSingleElementInCoreNS("l1", e) != null || getSingleElementInCoreNS("hash", e) != null)
Modified: trunk/core/src/test/java/org/infinispan/config/parsing/ConfigurationParserTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/config/parsing/ConfigurationParserTest.java 2009-04-15 15:09:46 UTC (rev 128)
+++ trunk/core/src/test/java/org/infinispan/config/parsing/ConfigurationParserTest.java 2009-04-15 16:07:05 UTC (rev 129)
@@ -2,6 +2,7 @@
import org.infinispan.config.CacheLoaderManagerConfig;
import org.infinispan.config.Configuration;
+import org.infinispan.config.ConfigurationException;
import org.infinispan.eviction.EvictionStrategy;
import org.infinispan.loader.CacheStoreConfig;
import org.infinispan.loader.decorators.SingletonStoreConfig;
@@ -302,4 +303,75 @@
assert c.getL1Lifespan() == 600000;
assert c.isL1OnRehash();
}
+
+ public void testInvalidClusteringCombinations() throws Exception {
+ XmlConfigurationParserImpl parser = new XmlConfigurationParserImpl();
+ String xml = "<clustering mode=\"d\"><sync/><async/></clustering>";
+ try {
+ parser.configureClustering(XmlConfigHelper.stringToElement(xml), new Configuration());
+ assert false: "Should fail";
+ } catch (ConfigurationException ce) {
+ // expected
+ }
+
+ xml = "<clustering mode=\"d\"><stateRetrieval /></clustering>";
+
+ try {
+ parser.configureClustering(XmlConfigHelper.stringToElement(xml), new Configuration());
+ assert false: "Should fail";
+ } catch (ConfigurationException ce) {
+ // expected
+ }
+
+ xml = "<clustering mode=\"d\"><stateRetrieval fetchInMemoryState=\"true\"/></clustering>";
+
+ try {
+ parser.configureClustering(XmlConfigHelper.stringToElement(xml), new Configuration());
+ assert false: "Should fail";
+ } catch (ConfigurationException ce) {
+ // expected
+ }
+
+ xml = "<clustering mode=\"d\"><stateRetrieval fetchInMemoryState=\"false\"/></clustering>";
+ parser.configureClustering(XmlConfigHelper.stringToElement(xml), new Configuration());
+
+ xml = "<clustering mode=\"r\"><l1 /></clustering>";
+
+ try {
+ parser.configureClustering(XmlConfigHelper.stringToElement(xml), new Configuration());
+ assert false: "Should fail";
+ } catch (ConfigurationException ce) {
+ // expected
+ }
+
+ xml = "<clustering mode=\"i\"><l1 /></clustering>";
+
+ try {
+ parser.configureClustering(XmlConfigHelper.stringToElement(xml), new Configuration());
+ assert false: "Should fail";
+ } catch (ConfigurationException ce) {
+ // expected
+ }
+
+xml = "<clustering mode=\"r\"><hash /></clustering>";
+
+ try {
+ parser.configureClustering(XmlConfigHelper.stringToElement(xml), new Configuration());
+ assert false: "Should fail";
+ } catch (ConfigurationException ce) {
+ // expected
+ }
+
+ xml = "<clustering mode=\"i\"><hash /></clustering>";
+
+ try {
+ parser.configureClustering(XmlConfigHelper.stringToElement(xml), new Configuration());
+ assert false: "Should fail";
+ } catch (ConfigurationException ce) {
+ // expected
+ }
+
+
+
+ }
}
More information about the infinispan-commits
mailing list