[infinispan-commits] Infinispan SVN: r676 - trunk/core/src/main/java/org/infinispan/config.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Thu Aug 13 11:51:18 EDT 2009


Author: manik.surtani at jboss.com
Date: 2009-08-13 11:51:17 -0400 (Thu, 13 Aug 2009)
New Revision: 676

Modified:
   trunk/core/src/main/java/org/infinispan/config/InfinispanConfiguration.java
Log:
skip schema file loading if validation is skipped

Modified: trunk/core/src/main/java/org/infinispan/config/InfinispanConfiguration.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/config/InfinispanConfiguration.java	2009-08-13 15:41:23 UTC (rev 675)
+++ trunk/core/src/main/java/org/infinispan/config/InfinispanConfiguration.java	2009-08-13 15:51:17 UTC (rev 676)
@@ -20,14 +20,10 @@
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.infinispan.config;
- 
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 
+import org.infinispan.config.parsing.XmlConfigurationParser;
+import org.infinispan.util.FileLookup;
+
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.Unmarshaller;
 import javax.xml.bind.annotation.XmlAccessType;
@@ -36,17 +32,21 @@
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.transform.stream.StreamSource;
 import javax.xml.validation.SchemaFactory;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
-import org.infinispan.config.parsing.XmlConfigurationParser;
-import org.infinispan.util.FileLookup;
 /**
  * InfinispanConfiguration encapsulates root component of Infinispan XML configuration
- * 
- * <p>
- * Note that class InfinispanConfiguration contains JAXB annotations. These annotations determine how XML
- * configuration files are read into instances of configuration class hierarchy as well as they
- * provide meta data for configuration file XML schema generation. Please modify these annotations
- * and Java element types they annotate with utmost understanding and care.
+ * <p/>
+ * <p/>
+ * Note that class InfinispanConfiguration contains JAXB annotations. These annotations determine how XML configuration
+ * files are read into instances of configuration class hierarchy as well as they provide meta data for configuration
+ * file XML schema generation. Please modify these annotations and Java element types they annotate with utmost
+ * understanding and care.
  *
  * @author Vladimir Blagojevic
  * @since 4.0
@@ -55,98 +55,88 @@
 @XmlRootElement(name = "infinispan")
 @XmlAccessorType(XmlAccessType.FIELD)
 public class InfinispanConfiguration implements XmlConfigurationParser {
-   
+
    public static final String VALIDATING_SYSTEM_PROPERTY = "infinispan.config.validate";
-   
+
    @XmlElement
    private GlobalConfiguration global;
-   
-   @XmlElement(name="default")
+
+   @XmlElement(name = "default")
    private Configuration defaultConfiguration;
-   
-   @XmlElement(name="namedCache")
+
+   @XmlElement(name = "namedCache")
    private List<Configuration> namedCaches;
-   
+
    /**
-    * Factory method to create an instance of Infinispan configuration. If users want to verify
-    * configuration file correctness against Infinispan schema then appropriate schema file name
-    * should be provided as well.
-    * <p>
+    * Factory method to create an instance of Infinispan configuration. If users want to verify configuration file
+    * correctness against Infinispan schema then appropriate schema file name should be provided as well.
+    * <p/>
     * Both configuration file and schema file are looked up in following order:
-    * <p>
-    *  <ol> 
-    *  <li> using current thread's context ClassLoader</li> 
-    *  <li> if fails, the system ClassLoader</li> 
-    *  <li> if fails, attempt is made to load it as a file from the disk </li> 
-    *  </ol> 
-    * 
+    * <p/>
+    * <ol> <li> using current thread's context ClassLoader</li> <li> if fails, the system ClassLoader</li> <li> if
+    * fails, attempt is made to load it as a file from the disk </li> </ol>
+    *
     * @param configFileName configuration file name
     * @param schemaFileName schema file name
     * @return infinispan configuration
-    * @throws IOException if there are any issues creating InfinispanConfiguration object 
+    * @throws IOException if there are any issues creating InfinispanConfiguration object
     */
    public static InfinispanConfiguration newInfinispanConfiguration(String configFileName,
-            String schemaFileName) throws IOException {
+                                                                    String schemaFileName) throws IOException {
 
       InputStream inputStream = configFileName != null ? findInputStream(configFileName) : null;
-      InputStream schemaIS = schemaFileName != null ? findInputStream(schemaFileName) : null;
+      InputStream schemaIS = schemaFileName != null && !skipSchemaValidation() ? findInputStream(schemaFileName) : null;
       return newInfinispanConfiguration(inputStream, schemaIS);
    }
-   
+
    /**
-    * Factory method to create an instance of Infinispan configuration. 
-    * <p>
+    * Factory method to create an instance of Infinispan configuration.
+    * <p/>
     * Configuration file is looked up in following order:
-    * <p>
-    *  <ol> 
-    *  <li> using current thread's context ClassLoader</li> 
-    *  <li> if fails, the system ClassLoader</li> 
-    *  <li> if fails, attempt is made to load it as a file from the disk </li> 
-    *  </ol> 
-    * 
+    * <p/>
+    * <ol> <li> using current thread's context ClassLoader</li> <li> if fails, the system ClassLoader</li> <li> if
+    * fails, attempt is made to load it as a file from the disk </li> </ol>
+    *
     * @param configFileName configuration file name
     * @return returns infinispan configuration
-    * @throws IOException if there are any issues creating InfinispanConfiguration object 
+    * @throws IOException if there are any issues creating InfinispanConfiguration object
     */
    public static InfinispanConfiguration newInfinispanConfiguration(String configFileName)
-            throws IOException {
-      return newInfinispanConfiguration(configFileName,null);
-     
+         throws IOException {
+      return newInfinispanConfiguration(configFileName, null);
+
    }
-   
+
    /**
-    * Factory method to create an instance of Infinispan configuration. 
-    * 
+    * Factory method to create an instance of Infinispan configuration.
+    *
     * @param config configuration input stream
     * @return returns infinispan configuration
-    * @throws IOException if there are any issues creating InfinispanConfiguration object 
+    * @throws IOException if there are any issues creating InfinispanConfiguration object
     */
    public static InfinispanConfiguration newInfinispanConfiguration(InputStream config)
-            throws IOException {
-      return newInfinispanConfiguration(config, null); 
+         throws IOException {
+      return newInfinispanConfiguration(config, null);
    }
-   
+
    /**
-    * Factory method to create an instance of Infinispan configuration. If users want to verify
-    * configuration file correctness against Infinispan schema then appropriate schema input stream
-    * should be provided as well.
+    * Factory method to create an instance of Infinispan configuration. If users want to verify configuration file
+    * correctness against Infinispan schema then appropriate schema input stream should be provided as well.
     *
     * @param config configuration input stream
     * @param schema schema inputstream
     * @return infinispan configuration
-    * @throws IOException if there are any issues creating InfinispanConfiguration object 
+    * @throws IOException if there are any issues creating InfinispanConfiguration object
     */
    public static InfinispanConfiguration newInfinispanConfiguration(InputStream config,
-            InputStream schema) throws IOException {
+                                                                    InputStream schema) throws IOException {
       try {
          JAXBContext jc = JAXBContext.newInstance(InfinispanConfiguration.class);
          Unmarshaller u = jc.createUnmarshaller();
-         String s = System.getProperty(VALIDATING_SYSTEM_PROPERTY);
-         boolean isValidatingOff = s!=null && !Boolean.parseBoolean(s);
-         
-         if (schema != null && !isValidatingOff) {
+
+         if (schema != null && !skipSchemaValidation()) {
             SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
-            u.setSchema(factory.newSchema(new StreamSource(schema)));      
+            u.setSchema(factory.newSchema(new StreamSource(schema)));
          }
          InfinispanConfiguration doc = (InfinispanConfiguration) u.unmarshal(config);
          //legacy, don't ask
@@ -159,16 +149,20 @@
       }
    }
 
+   private static boolean skipSchemaValidation() {
+      String s = System.getProperty(VALIDATING_SYSTEM_PROPERTY);
+      return s != null && !Boolean.parseBoolean(s);
+   }
+
    /**
     * Should never called. Construct InfinispanConfiguration with constructor other than no-arg constructor
-    * <p>
+    * <p/>
     * Needed for reflection
-    * 
     */
    public InfinispanConfiguration() {
       super();
    }
-  
+
    private static InputStream findInputStream(String fileName) throws FileNotFoundException {
       if (fileName == null)
          throw new NullPointerException("File name cannot be null!");
@@ -176,20 +170,20 @@
       InputStream is = fileLookup.lookupFile(fileName);
       if (is == null)
          throw new FileNotFoundException("File " + fileName
-                  + " could not be found, either on the classpath or on the file system!");
+               + " could not be found, either on the classpath or on the file system!");
       return is;
-   } 
+   }
 
    public Configuration parseDefaultConfiguration() throws ConfigurationException {
       return defaultConfiguration;
    }
 
    public GlobalConfiguration parseGlobalConfiguration() {
-      return  global;
+      return global;
    }
 
    public Map<String, Configuration> parseNamedConfigurations() throws ConfigurationException {
-      Map<String,Configuration> map = new HashMap<String, Configuration>(7);
+      Map<String, Configuration> map = new HashMap<String, Configuration>(7);
       for (Configuration conf : namedCaches) {
          map.put(conf.getName(), conf);
       }



More information about the infinispan-commits mailing list