[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