[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