[infinispan-commits] Infinispan SVN: r683 - in trunk/core/src/main/java/org/infinispan: manager and 1 other directory.
infinispan-commits at lists.jboss.org
infinispan-commits at lists.jboss.org
Fri Aug 14 05:35:40 EDT 2009
Author: vblagojevic at jboss.com
Date: 2009-08-14 05:35:40 -0400 (Fri, 14 Aug 2009)
New Revision: 683
Modified:
trunk/core/src/main/java/org/infinispan/config/InfinispanConfiguration.java
trunk/core/src/main/java/org/infinispan/manager/DefaultCacheManager.java
Log:
[ISPN-154] - DefaultCacheManager should validate XML configurations by default
fix broken test
Modified: trunk/core/src/main/java/org/infinispan/config/InfinispanConfiguration.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/config/InfinispanConfiguration.java 2009-08-14 08:22:49 UTC (rev 682)
+++ trunk/core/src/main/java/org/infinispan/config/InfinispanConfiguration.java 2009-08-14 09:35:40 UTC (rev 683)
@@ -21,6 +21,7 @@
*/
package org.infinispan.config;
+import org.infinispan.Version;
import org.infinispan.config.parsing.XmlConfigurationParser;
import org.infinispan.util.FileLookup;
@@ -35,6 +36,7 @@
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -57,6 +59,14 @@
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";
+
+ 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";
@XmlElement
private GlobalConfiguration global;
@@ -85,10 +95,7 @@
String schemaFileName) throws IOException {
InputStream inputStream = configFileName != null ? findInputStream(configFileName) : null;
- // TODO the skipSchemaValidation() bit is a temporary fix until the proper schema location algorithm detailed in
- // http://lists.jboss.org/pipermail/infinispan-dev/2009-August/001110.html
- // is implemented
- InputStream schemaIS = schemaFileName != null && !skipSchemaValidation() ? findInputStream(schemaFileName) : null;
+ InputStream schemaIS = schemaFileName != null ? findInputStream(schemaFileName) : null;
return newInfinispanConfiguration(inputStream, schemaIS);
}
@@ -107,7 +114,6 @@
public static InfinispanConfiguration newInfinispanConfiguration(String configFileName)
throws IOException {
return newInfinispanConfiguration(configFileName, null);
-
}
/**
@@ -137,7 +143,7 @@
JAXBContext jc = JAXBContext.newInstance(InfinispanConfiguration.class);
Unmarshaller u = jc.createUnmarshaller();
- if (schema != null && !skipSchemaValidation()) {
+ if (schema != null) {
SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
u.setSchema(factory.newSchema(new StreamSource(schema)));
}
@@ -157,6 +163,38 @@
return s != null && !Boolean.parseBoolean(s);
}
+ public static InputStream findSchemaInputStream() {
+ boolean validating = !skipSchemaValidation();
+ if (!validating)
+ return null;
+
+ FileLookup fileLookup = new FileLookup();
+ InputStream is = fileLookup.lookupFile(schemaPath());
+ if (is != null)
+ return is;
+ try {
+ is = new URL(schemaURL()).openStream();
+ return is;
+ } catch (Exception e) {
+ }
+ return null;
+ }
+
+ public static String resolveSchemaPath() {
+ boolean validating = !skipSchemaValidation();
+ if (!validating)
+ return null;
+ return schemaPath();
+ }
+
+ private static String schemaPath() {
+ return System.getProperty(SCHEMA_SYSTEM_PROPERTY, DEFAULT_SCHEMA_LOCATION);
+ }
+
+ private static String schemaURL() {
+ return System.getProperty(SCHEMA_URL_SYSTEM_PROPERTY, DEFAULT_SCHEMA_URL);
+ }
+
/**
* Should never called. Construct InfinispanConfiguration with constructor other than no-arg constructor
* <p/>
Modified: trunk/core/src/main/java/org/infinispan/manager/DefaultCacheManager.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/manager/DefaultCacheManager.java 2009-08-14 08:22:49 UTC (rev 682)
+++ trunk/core/src/main/java/org/infinispan/manager/DefaultCacheManager.java 2009-08-14 09:35:40 UTC (rev 683)
@@ -204,10 +204,9 @@
* @param start if true, the cache manager is started
* @throws java.io.IOException if there is a problem with the configuration file.
*/
- public DefaultCacheManager(String configurationFile, boolean start) throws IOException {
- String schemaFileName = "schema/infinispan-config-" +Version.getMajorVersion()+ ".xsd";
+ public DefaultCacheManager(String configurationFile, boolean start) throws IOException {
try {
- initialize(InfinispanConfiguration.newInfinispanConfiguration(configurationFile,schemaFileName));
+ initialize(InfinispanConfiguration.newInfinispanConfiguration(configurationFile,InfinispanConfiguration.resolveSchemaPath()));
}
catch (RuntimeException re) {
throw new ConfigurationException(re);
@@ -236,16 +235,9 @@
* @param start if true, the cache manager is started
* @throws java.io.IOException if there is a problem reading the configuration stream
*/
- public DefaultCacheManager(InputStream configurationStream, boolean start) throws IOException {
- String schemaFileName = "schema/infinispan-config-" +Version.getMajorVersion()+ ".xsd";
- FileLookup fileLookup = new FileLookup();
- InputStream schemaStream = fileLookup.lookupFile(schemaFileName);
- if (schemaStream == null)
- throw new FileNotFoundException("Schema file " +schemaFileName
- + " could not be found, either on the classpath or on the file system!");
-
+ public DefaultCacheManager(InputStream configurationStream, boolean start) throws IOException {
try {
- initialize(InfinispanConfiguration.newInfinispanConfiguration(configurationStream,schemaStream));
+ initialize(InfinispanConfiguration.newInfinispanConfiguration(configurationStream,InfinispanConfiguration.findSchemaInputStream()));
} catch (ConfigurationException ce) {
throw ce;
} catch (RuntimeException re) {
More information about the infinispan-commits
mailing list