Class SchemaBuilder

java.lang.Object
net.shibboleth.utilities.java.support.xml.SchemaBuilder

@NotThreadSafe
public class SchemaBuilder
extends Object
A class for building a Schema from a set of inputs, allowing for manipulation of the underlying factory.
  • Field Details

    • log

      @Nonnull private final org.slf4j.Logger log
      Class logger.
    • schemaLang

      @Nonnull private SchemaBuilder.SchemaLanguage schemaLang
      Language of schemas.
    • sources

      @Nonnull @NonnullElements private List<Source> sources
      Sources of schema material compatible with JAXP.
    • resourceResolver

      @Nullable private LSResourceResolver resourceResolver
      Mechanism for resolving nested resources like included/imported schemas.
    • errorHandler

      @Nullable private ErrorHandler errorHandler
      Custom error handler.
    • features

      @Nonnull private Map<String,​Boolean> features
      Features to set on factory.
    • properties

      @Nonnull private Map<String,​Object> properties
      Properties to set on factory.
    • alreadyBuilt

      private boolean alreadyBuilt
      One time-init flag.
  • Constructor Details

    • SchemaBuilder

      public SchemaBuilder()
      Constructor.
  • Method Details

    • setSchemaLanguage

      @Nonnull public SchemaBuilder setSchemaLanguage​(@Nonnull SchemaBuilder.SchemaLanguage lang)
      Set the schema language.
      Parameters:
      lang - the schema language
      Returns:
      this builder
    • setResourceResolver

      @Nonnull public SchemaBuilder setResourceResolver​(@Nullable LSResourceResolver resolver)
      Set the resource resolver to use for included/imported schemas.

      If not set, the default resolver will prevent lookup of any schemas not explicitly added.

      Parameters:
      resolver - resource resolver
      Returns:
      this builder
    • setErrorHandler

      @Nonnull public SchemaBuilder setErrorHandler​(@Nullable ErrorHandler handler)
      Set a custom error handler to use.

      If not set, a default handler will be used that logs errors before throwing exceptions.

      Parameters:
      handler - error handler
      Returns:
      this builder
    • setFeature

      public void setFeature​(@Nonnull @NotEmpty String name, boolean value)
      Set a feature for the SchemaFactory to be built.
      Parameters:
      name - The feature name, which is a non-null fully-qualified URI.
      value - The requested value of the feature (true or false).
      See Also:
      SchemaFactory.setFeature(String, boolean)
    • setProperty

      public void setProperty​(@Nonnull @NotEmpty String name, @Nullable Object object)
      Set the value of a property for the SchemaFactory to be built.
      Parameters:
      name - The property name, which is a non-null fully-qualified URI.
      object - The requested value for the property.
      See Also:
      SchemaFactory.setProperty(String, Object)
    • resetSchemas

      @Nonnull public SchemaBuilder resetSchemas()
      Clear the schemas to be included.
      Returns:
      this builder
    • setSchemas

      public void setSchemas​(@Nonnull @NullableElements Collection<Source> schemaSources)
      Set the schemas to load from the given schema sources (replaces any previously added).

      If the caller wishes to ensure the schemas are loaded in a particular order, the Collection implementation provided must be one that preserves order. The method will add the sources in the order returned by the collection.

      Parameters:
      schemaSources - schema sources
    • setSchemaResources

      public void setSchemaResources​(@Nonnull @NullableElements Collection<Resource> schemaResources)
      Set the schemas to load from the given schema resources (replaces any previously added).

      If the caller wishes to ensure the schemas are loaded in a particular order, the Collection implementation provided must be one that preserves order. The method will add the sources in the order returned by the collection.

      Parameters:
      schemaResources - schema resources
    • addSchema

      @Nonnull public SchemaBuilder addSchema​(@Nonnull InputStream schemaSource)
      Add schemas from the given schema input streams.
      Parameters:
      schemaSource - schema input stream
      Returns:
      this builder
    • addSchema

      @Nonnull public SchemaBuilder addSchema​(@Nonnull Source schemaSource)
      Add schemas from the given schema sources.
      Parameters:
      schemaSource - schema source
      Returns:
      this builder
    • addSchema

      @Nonnull public SchemaBuilder addSchema​(@Nonnull Resource resource)
      Add schemas from the given schema resource.
      Parameters:
      resource - schema input resource
      Returns:
      this builder
    • buildSchema

      @Nonnull public Schema buildSchema() throws SAXException
      Build a schema from the given schema sources.

      This method is thread-safe, although the various mutating methods to establish the state of the object are not.

      Returns:
      the constructed schema
      Throws:
      SAXException - thrown if there is a problem converting the schema sources into a schema