|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectnet.shibboleth.utilities.java.support.component.AbstractDestructableInitializableComponent
net.shibboleth.utilities.java.support.xml.BasicParserPool
@ThreadSafe public class BasicParserPool
A pool of JAXP 1.3 DocumentBuilders.
This is a pool implementation of the caching factory variety, and as such imposes no upper bound on the number of
DocumentBuilders allowed to be concurrently checked out and in use. It does however impose a limit on the size of the
internal cache of idle builder instances via the value configured via setMaxPoolSize(int).
Builders retrieved from this pool may (but are not required to) be returned to the pool with the method
returnBuilder(DocumentBuilder).
References to builders are kept by way of SoftReference so that the garbage collector may reap the builders
if the system is running out of memory.
This implementation of ParserPool does not allow its properties to be modified once it has been initialized.
| Nested Class Summary | |
|---|---|
protected class |
BasicParserPool.DocumentBuilderProxy
A proxy that prevents the manages document builders retrieved from the parser pool. |
| Field Summary | |
|---|---|
private Map<String,Object> |
builderAttributes
Builder attributes. |
private DocumentBuilderFactory |
builderFactory
Factory used to create new builders. |
private Map<String,Boolean> |
builderFeatures
Builder features. |
private Stack<SoftReference<DocumentBuilder>> |
builderPool
Cache of document builders. |
private boolean |
coalescing
Whether the builders are coalescing. |
private boolean |
dtdValidating
Whether the builder should validate. |
private EntityResolver |
entityResolver
Entity resolver used by builders. |
private ErrorHandler |
errorHandler
Error handler used by builders. |
private boolean |
expandEntityReferences
Whether the builders expand entity references. |
private boolean |
ignoreComments
Whether the builders ignore comments. |
private boolean |
ignoreElementContentWhitespace
Whether the builders ignore element content whitespace. |
private Logger |
log
Class logger. |
private int |
maxPoolSize
Max number of builders allowed in the pool. |
private boolean |
namespaceAware
Whether the builders are namespace aware. |
private Schema |
schema
Schema used to validate parsed content. |
private boolean |
xincludeAware
Whether the builders are XInclude aware. |
| Constructor Summary | |
|---|---|
BasicParserPool()
Constructor. |
|
| Method Summary | |
|---|---|
private void |
checkInitializedNotDestroyed()
Helper method to test class state. |
private void |
checkNotInitializedNotDestroyed()
Helper method to test class state. |
protected DocumentBuilder |
createBuilder()
Creates a new document builder. |
protected void |
doDestroy()
Performs component specific destruction logic. |
protected void |
doInitialize()
Initialize the pool. |
DocumentBuilder |
getBuilder()
Gets a builder from the pool. |
Map<String,Object> |
getBuilderAttributes()
Gets the builder attributes used when creating builders. |
Map<String,Boolean> |
getBuilderFeatures()
Gets the builders' features. |
int |
getMaxPoolSize()
Gets the max number of builders the pool will hold. |
protected int |
getPoolSize()
Gets the size of the current pool storage. |
Schema |
getSchema()
Gets the schema used to validate the XML document during the parsing process. |
boolean |
isCoalescing()
Gets whether the builders are coalescing. |
boolean |
isDTDValidating()
Gets whether the builders are validating. |
boolean |
isExpandEntityReferences()
Gets whether builders expand entity references. |
boolean |
isIgnoreComments()
Gets whether the builders ignore comments. |
boolean |
isIgnoreElementContentWhitespace()
Get whether the builders ignore element content whitespace. |
boolean |
isNamespaceAware()
Gets whether the builders are namespace aware. |
boolean |
isXincludeAware()
Gets whether the builders are XInclude aware. |
Document |
newDocument()
Convenience method for creating a new document with a pooled builder. |
Document |
parse(InputStream input)
Convenience method for parsing an XML file using a pooled builder. |
Document |
parse(Reader input)
Convenience method for parsing an XML file using a pooled builder. |
void |
returnBuilder(DocumentBuilder builder)
Returns a builder to the pool. |
void |
setBuilderAttributes(Map<String,Object> newAttributes)
Sets the builder attributes used when creating builders. |
void |
setBuilderFeatures(Map<String,Boolean> newFeatures)
Sets the the builders' features. |
void |
setCoalescing(boolean isCoalescing)
Sets whether the builders are coalescing. |
void |
setDTDValidating(boolean isValidating)
Sets whether the builders are validating. |
void |
setExpandEntityReferences(boolean expand)
Sets whether builders expand entity references. |
void |
setIgnoreComments(boolean ignore)
Sets whether the builders ignore comments. |
void |
setIgnoreElementContentWhitespace(boolean ignore)
Sets whether the builders ignore element content whitespace. |
void |
setMaxPoolSize(int newSize)
Sets the max number of builders the pool will hold. |
void |
setNamespaceAware(boolean isNamespaceAware)
Sets whether the builders are namespace aware. |
void |
setSchema(Schema newSchema)
Sets the schema used to validate the XML document during the parsing process. |
void |
setXincludeAware(boolean isXIncludeAware)
Sets whether the builders are XInclude aware. |
| Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractDestructableInitializableComponent |
|---|
destroy, initialize, isDestroyed, isInitialized |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Methods inherited from interface net.shibboleth.utilities.java.support.component.DestructableComponent |
|---|
destroy, isDestroyed |
| Field Detail |
|---|
private final Logger log
private DocumentBuilderFactory builderFactory
private Stack<SoftReference<DocumentBuilder>> builderPool
private int maxPoolSize
private Map<String,Object> builderAttributes
private boolean coalescing
private boolean expandEntityReferences
private Map<String,Boolean> builderFeatures
private boolean ignoreComments
private boolean ignoreElementContentWhitespace
private boolean namespaceAware
private Schema schema
private boolean dtdValidating
private boolean xincludeAware
private EntityResolver entityResolver
private ErrorHandler errorHandler
| Constructor Detail |
|---|
public BasicParserPool()
| Method Detail |
|---|
@Nonnull
public DocumentBuilder getBuilder()
throws XMLParserException
getBuilder in interface ParserPoolXMLParserException - thrown if the document builder factory is misconfigured
public void returnBuilder(@Nullable
DocumentBuilder builder)
returnBuilder in interface ParserPoolbuilder - the builder to return
@Nonnull
public Document newDocument()
throws XMLParserException
newDocument in interface ParserPoolXMLParserException - thrown if there is a problem retrieving a builder
@Nonnull
public Document parse(@Nonnull
InputStream input)
throws XMLParserException
parse in interface ParserPoolinput - XML to parse
XMLParserException - thrown if there is a problem retrieving a builder, the input stream can not be read,
or the XML was invalid
@Nonnull
public Document parse(@Nonnull
Reader input)
throws XMLParserException
parse in interface ParserPoolinput - XML to parse
XMLParserException - thrown if there is a problem retrieving a builder, the input stream can not be read,
or the XML was invalidpublic int getMaxPoolSize()
public void setMaxPoolSize(int newSize)
newSize - max number of builders the pool will hold@Nonnull @NonnullElements public Map<String,Object> getBuilderAttributes()
public void setBuilderAttributes(@Nullable@NullableElements
Map<String,Object> newAttributes)
newAttributes - builder attributes used when creating builderspublic boolean isCoalescing()
public void setCoalescing(boolean isCoalescing)
isCoalescing - whether the builders are coalescingpublic boolean isExpandEntityReferences()
public void setExpandEntityReferences(boolean expand)
expand - whether builders expand entity references@Nonnull @NonnullElements @Unmodifiable public Map<String,Boolean> getBuilderFeatures()
public void setBuilderFeatures(@Nullable@NullableElements
Map<String,Boolean> newFeatures)
newFeatures - the builders' featurespublic boolean isIgnoreComments()
public void setIgnoreComments(boolean ignore)
ignore - The ignoreComments to set.public boolean isIgnoreElementContentWhitespace()
public void setIgnoreElementContentWhitespace(boolean ignore)
ignore - whether the builders ignore element content whitespacepublic boolean isNamespaceAware()
public void setNamespaceAware(boolean isNamespaceAware)
isNamespaceAware - whether the builders are namespace aware@Nullable public Schema getSchema()
public void setSchema(@Nullable
Schema newSchema)
newSchema - schema used to validate the XML document during the parsing processpublic boolean isDTDValidating()
public void setDTDValidating(boolean isValidating)
isValidating - whether the builders are validatingpublic boolean isXincludeAware()
public void setXincludeAware(boolean isXIncludeAware)
isXIncludeAware - whether the builders are XInclude awareprotected int getPoolSize()
@Nonnull
protected DocumentBuilder createBuilder()
throws XMLParserException
XMLParserException - thrown if their is a configuration error with the builder factory
protected void doInitialize()
throws ComponentInitializationException
doInitialize in class AbstractDestructableInitializableComponentComponentInitializationException - thrown if pool can not be initialized, or if it is already initialized
thrown if there is a problem initializing the componentprotected void doDestroy()
doDestroy in class AbstractDestructableInitializableComponentprivate void checkInitializedNotDestroyed()
private void checkNotInitializedNotDestroyed()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||