[utilities COMMIT] in /java-support/trunk/src: main/java/net/shibboleth/utilities/java/support/xml/SchemaBuilder.java...

noreply at shibboleth.net noreply at shibboleth.net
Wed Jan 15 14:06:49 EST 2014


Author: scantor
Date: Wed Jan 15 14:06:49 2014
New Revision: 509

URL: http://svn.shibboleth.net/view/utilities?rev=509&view=rev
Log:
JSPT-25 - Revamp SchemaBuilder

Modified:
    java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/xml/SchemaBuilder.java
    java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/xml/BasicParserPoolTest.java
    java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/xml/SchemaBuilderTest.java

Modified: java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/xml/SchemaBuilder.java
URL: http://svn.shibboleth.net/view/utilities/java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/xml/SchemaBuilder.java?rev=509&r1=508&r2=509&view=diff
==============================================================================
--- java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/xml/SchemaBuilder.java (original)
+++ java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/xml/SchemaBuilder.java Wed Jan 15 14:06:49 2014
@@ -18,29 +18,40 @@
 package net.shibboleth.utilities.java.support.xml;
 
 import java.io.File;
-import java.io.IOException;
 import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Collection;
+import java.util.Map;
 
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import javax.annotation.concurrent.NotThreadSafe;
 import javax.xml.XMLConstants;
 import javax.xml.transform.Source;
 import javax.xml.transform.stream.StreamSource;
 import javax.xml.validation.Schema;
 import javax.xml.validation.SchemaFactory;
 
+import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.annotation.constraint.NullableElements;
 import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.resource.ShibbolethResource;
+import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.w3c.dom.ls.LSResourceResolver;
+import org.xml.sax.ErrorHandler;
 import org.xml.sax.SAXException;
 
-/** A helper class for building {@link Schema} from a set of input. */
-public final class SchemaBuilder {
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+
+/**
+ * A class for building a {@link Schema} from a set of inputs, allowing for
+ * manipulation of the underlying factory.
+ */
+ at NotThreadSafe
+public class SchemaBuilder {
 
     /** Language of the schema files. */
     public static enum SchemaLanguage {
@@ -52,15 +63,16 @@
         RELAX("rng");
 
         /** File extension used for the schema files. */
-        private String schemaFileExtension;
+        @Nonnull private String schemaFileExtension;
 
         /**
          * Constructor.
          * 
          * @param extension file extension used for the schema files
          */
-        private SchemaLanguage(String extension) {
-            schemaFileExtension = extension;
+        private SchemaLanguage(@Nonnull @NotEmpty String extension) {
+            schemaFileExtension = Constraint.isNotNull(StringSupport.trimOrNull(extension),
+                    "Extension cannot be null or empty");
         }
 
         /**
@@ -68,186 +80,246 @@
          * 
          * @return file extension used for the schema files
          */
-        public String getSchemaFileExtension() {
+        @Nonnull @NotEmpty public String getSchemaFileExtension() {
             return schemaFileExtension;
         }
     };
 
     /** Class logger. */
-    private static final Logger LOG = LoggerFactory.getLogger(SchemaBuilder.class);
-
+    @Nonnull private final Logger log = LoggerFactory.getLogger(SchemaBuilder.class);
+    
+    /** Language of schemas. */
+    @Nonnull private SchemaLanguage schemaLang;
+
+    /** Sources of schema material compatible with JAXP. */
+    @Nonnull @NonnullElements private Collection<Source> sources;
+    
+    /** Mechanism for resolving nested resources like included/imported schemas. */
+    @Nullable private LSResourceResolver resourceResolver;
+    
+    /** Custom error handler. */
+    @Nullable private ErrorHandler errorHandler;
+    
+    /** Features to set on factory. */
+    @Nonnull private Map<String,Boolean> features;
+    
+    /** Properties to set on factory. */
+    @Nonnull private Map<String,Object> properties;
+    
     /** Constructor. */
-    private SchemaBuilder() {
-    }
-
-    /**
-     * Builds a schema from the given schema sources.
-     * 
-     * @param lang schema language, must not be null
+    public SchemaBuilder() {
+        schemaLang = SchemaLanguage.XML;
+        sources = Lists.newArrayList();
+        features = Maps.newHashMap();
+        properties = Maps.newHashMap();
+        errorHandler = new LoggingErrorHandler(log);
+    }
+    
+    /**
+     * Set the schema language.
+     * 
+     * @param lang  the schema language

[... 547 lines stripped ...]


More information about the commits mailing list