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.-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SchemaBuilder.SchemaLanguage
Language of the schema files. -
Field Summary
Fields Modifier and Type Field Description private boolean
alreadyBuilt
One time-init flag.private ErrorHandler
errorHandler
Custom error handler.private Map<String,Boolean>
features
Features to set on factory.private org.slf4j.Logger
log
Class logger.private Map<String,Object>
properties
Properties to set on factory.private LSResourceResolver
resourceResolver
Mechanism for resolving nested resources like included/imported schemas.private SchemaBuilder.SchemaLanguage
schemaLang
Language of schemas.private List<Source>
sources
Sources of schema material compatible with JAXP. -
Constructor Summary
Constructors Constructor Description SchemaBuilder()
Constructor. -
Method Summary
Modifier and Type Method Description SchemaBuilder
addSchema(InputStream schemaSource)
Add schemas from the given schema input streams.SchemaBuilder
addSchema(Source schemaSource)
Add schemas from the given schema sources.SchemaBuilder
addSchema(Resource resource)
Add schemas from the given schema resource.Schema
buildSchema()
Build a schema from the given schema sources.SchemaBuilder
resetSchemas()
Clear the schemas to be included.SchemaBuilder
setErrorHandler(ErrorHandler handler)
Set a custom error handler to use.void
setFeature(String name, boolean value)
Set a feature for theSchemaFactory
to be built.void
setProperty(String name, Object object)
Set the value of a property for theSchemaFactory
to be built.SchemaBuilder
setResourceResolver(LSResourceResolver resolver)
Set the resource resolver to use for included/imported schemas.SchemaBuilder
setSchemaLanguage(SchemaBuilder.SchemaLanguage lang)
Set the schema language.void
setSchemaResources(Collection<Resource> schemaResources)
Set the schemas to load from the given schema resources (replaces any previously added).void
setSchemas(Collection<Source> schemaSources)
Set the schemas to load from the given schema sources (replaces any previously added).
-
Field Details
-
log
@Nonnull private final org.slf4j.Logger logClass logger. -
schemaLang
Language of schemas. -
sources
Sources of schema material compatible with JAXP. -
resourceResolver
Mechanism for resolving nested resources like included/imported schemas. -
errorHandler
Custom error handler. -
features
Features to set on factory. -
properties
Properties to set on factory. -
alreadyBuilt
private boolean alreadyBuiltOne time-init flag.
-
-
Constructor Details
-
SchemaBuilder
public SchemaBuilder()Constructor.
-
-
Method Details
-
setSchemaLanguage
Set the schema language.- Parameters:
lang
- the schema language- Returns:
- this builder
-
setResourceResolver
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
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
Set a feature for theSchemaFactory
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
Set the value of a property for theSchemaFactory
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
Clear the schemas to be included.- Returns:
- this builder
-
setSchemas
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
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
Add schemas from the given schema input streams.- Parameters:
schemaSource
- schema input stream- Returns:
- this builder
-
addSchema
Add schemas from the given schema sources.- Parameters:
schemaSource
- schema source- Returns:
- this builder
-
addSchema
Add schemas from the given schema resource.- Parameters:
resource
- schema input resource- Returns:
- this builder
-
buildSchema
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
-