Package net.shibboleth.shared.xml

# Class SchemaBuilder

java.lang.Object
net.shibboleth.shared.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 enum`
`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 final 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 the `SchemaFactory` to be built.
`void`
`setProperty(String name, Object object)`
Set the value of a property for the `SchemaFactory` 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).

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### log

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

### schemaLang

@Nonnull private SchemaBuilder.SchemaLanguage schemaLang
Language of schemas.

### sources

@Nonnull 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 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 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