[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