[infinispan-commits] Infinispan SVN: r706 - 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 Aug 19 06:18:49 EDT 2009
Author: manik.surtani at jboss.com
Date: 2009-08-19 06:18:49 -0400 (Wed, 19 Aug 2009)
New Revision: 706
Modified:
trunk/core/src/main/java/org/infinispan/config/InfinispanConfiguration.java
trunk/core/src/test/java/org/infinispan/config/parsing/XmlFileParsingTest.java
Log:
[ISPN-163] (XML parser breaks with a NPE when no named cache elemets are specificed in a config file)
Modified: trunk/core/src/main/java/org/infinispan/config/InfinispanConfiguration.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/config/InfinispanConfiguration.java 2009-08-19 09:35:21 UTC (rev 705)
+++ trunk/core/src/main/java/org/infinispan/config/InfinispanConfiguration.java 2009-08-19 10:18:49 UTC (rev 706)
@@ -37,6 +37,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -59,15 +60,15 @@
public class InfinispanConfiguration implements XmlConfigurationParser {
public static final String VALIDATING_SYSTEM_PROPERTY = "infinispan.config.validate";
-
+
public static final String SCHEMA_SYSTEM_PROPERTY = "infinispan.config.schema";
-
- private static final String DEFAULT_SCHEMA_LOCATION = "schema/infinispan-config-" + Version.getMajorVersion()+ ".xsd";
-
+
+ private static final String DEFAULT_SCHEMA_LOCATION = "schema/infinispan-config-" + Version.getMajorVersion() + ".xsd";
+
public static final String SCHEMA_URL_SYSTEM_PROPERTY = "infinispan.config.schema.url";
-
- private static final String DEFAULT_SCHEMA_URL= "http://www.jboss.org/infinispan/infinispan-config-" + Version.getMajorVersion()+ ".xsd";
+ private static final String DEFAULT_SCHEMA_URL = "http://www.jboss.org/infinispan/infinispan-config-" + Version.getMajorVersion() + ".xsd";
+
@XmlElement
private GlobalConfiguration global;
@@ -224,6 +225,7 @@
}
public Map<String, Configuration> parseNamedConfigurations() throws ConfigurationException {
+ if (namedCaches == null) return Collections.emptyMap();
Map<String, Configuration> map = new HashMap<String, Configuration>(7);
for (Configuration conf : namedCaches) {
map.put(conf.getName(), conf);
Modified: trunk/core/src/test/java/org/infinispan/config/parsing/XmlFileParsingTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/config/parsing/XmlFileParsingTest.java 2009-08-19 09:35:21 UTC (rev 705)
+++ trunk/core/src/test/java/org/infinispan/config/parsing/XmlFileParsingTest.java 2009-08-19 10:18:49 UTC (rev 706)
@@ -1,37 +1,68 @@
package org.infinispan.config.parsing;
-import java.io.IOException;
-import java.util.Map;
-
import org.infinispan.Version;
import org.infinispan.config.CacheLoaderManagerConfig;
import org.infinispan.config.Configuration;
import org.infinispan.config.GlobalConfiguration;
+import org.infinispan.config.GlobalConfiguration.ShutdownHookBehavior;
import org.infinispan.config.InfinispanConfiguration;
-import org.infinispan.config.GlobalConfiguration.ShutdownHookBehavior;
import org.infinispan.distribution.DefaultConsistentHash;
import org.infinispan.eviction.EvictionStrategy;
import org.infinispan.loaders.file.FileCacheStoreConfig;
+import org.infinispan.remoting.transport.jgroups.JGroupsTransport;
import org.infinispan.util.concurrent.IsolationLevel;
import org.testng.annotations.Test;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Map;
+
@Test(groups = "unit", testName = "config.parsing.XmlFileParsingTest")
public class XmlFileParsingTest {
-
+
public void testNamedCacheFileJaxb() throws Exception {
- String schemaFileName = "infinispan-config-" +Version.getMajorVersion()+ ".xsd";
+ String schemaFileName = "infinispan-config-" + Version.getMajorVersion() + ".xsd";
testNamedCacheFile(InfinispanConfiguration.newInfinispanConfiguration(
- "configs/named-cache-test.xml","schema/"+schemaFileName));
+ "configs/named-cache-test.xml", "schema/" + schemaFileName));
}
public void testConfigurationMergingJaxb() throws Exception {
testConfigurationMerging(InfinispanConfiguration
- .newInfinispanConfiguration("configs/named-cache-test.xml"));
+ .newInfinispanConfiguration("configs/named-cache-test.xml"));
}
-
-
+
+ public void testNoNamedCaches() throws Exception {
+ String config = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+ "\n" +
+ "<infinispan xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"urn:infinispan:config:4.0\">\n" +
+ " <global>\n" +
+ " <transport clusterName=\"demoCluster\"/>\n" +
+ " </global>\n" +
+ "\n" +
+ " <default>\n" +
+ " <clustering mode=\"replication\">\n" +
+ " </clustering>\n" +
+ " </default>\n" +
+ "</infinispan>";
+
+ InputStream is = new ByteArrayInputStream(config.getBytes());
+ InfinispanConfiguration c = InfinispanConfiguration.newInfinispanConfiguration(is);
+ 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();
+ }
+
+
private void testNamedCacheFile(XmlConfigurationParser parser) throws IOException {
-
+
GlobalConfiguration gc = parser.parseGlobalConfiguration();
assert gc.getAsyncListenerExecutorFactoryClass().equals("org.infinispan.executors.DefaultExecutorFactory");
@@ -51,9 +82,9 @@
assert gc.getTransportClass().equals("org.infinispan.remoting.transport.jgroups.JGroupsTransport");
assert gc.getClusterName().equals("infinispan-cluster");
assert gc.getDistributedSyncTimeout() == 50000;
-
+
assert gc.getShutdownHookBehavior().equals(ShutdownHookBehavior.REGISTER);
-
+
assert gc.getMarshallerClass().equals("org.infinispan.marshall.VersionAwareMarshaller");
assert gc.getMarshallVersionString().equals("1.0");
@@ -114,7 +145,7 @@
CacheLoaderManagerConfig loaderManagerConfig = c.getCacheLoaderManagerConfig();
assert loaderManagerConfig.isPreload();
assert !loaderManagerConfig.isPassivation();
- assert !loaderManagerConfig.isShared();
+ assert !loaderManagerConfig.isShared();
assert loaderManagerConfig.getCacheLoaderConfigs().size() == 1;
FileCacheStoreConfig csConf = (FileCacheStoreConfig) loaderManagerConfig.getFirstCacheLoaderConfig();
assert csConf.getCacheLoaderClassName().equals("org.infinispan.loaders.file.FileCacheStore");
@@ -142,11 +173,11 @@
assert c.getConsistentHashClass().equals(DefaultConsistentHash.class.getName());
assert c.getNumOwners() == 3;
assert c.isL1CacheEnabled();
-
+
c = namedCaches.get("cacheWithCustomInterceptors");
assert !c.getCustomInterceptors().isEmpty();
assert c.getCustomInterceptors().size() == 5;
-
+
c = namedCaches.get("evictionCache");
assert c.getEvictionMaxEntries() == 5000;
assert c.getEvictionStrategy().equals(EvictionStrategy.FIFO);
@@ -159,7 +190,7 @@
}
private void testConfigurationMerging(XmlConfigurationParser parser) throws IOException {
-
+
Configuration defaultCfg = parser.parseDefaultConfiguration();
Map<String, Configuration> namedCaches = parser.parseNamedConfigurations();
More information about the infinispan-commits
mailing list