Class 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 Detail

      • log

        @Nonnull
        private final org.slf4j.Logger log
        Class logger.
      • 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 Detail

      • SchemaBuilder

        public SchemaBuilder()
        Constructor.
    • Method Detail

      • 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
      • 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