Package org.jboss.security.util.xml
Class JBossEntityResolver
- java.lang.Object
-
- org.jboss.security.util.xml.JBossEntityResolver
-
- All Implemented Interfaces:
EntityResolver
public class JBossEntityResolver extends Object implements EntityResolver
Local entity resolver to handle standard J2EE DTDs and Schemas as well as JBoss specific DTDs. Function boolean isEntityResolved() is here to avoid validation errors in descriptors that do not have a DOCTYPE declaration.- Version:
- $Revision$
- Author:
- Scott.Stark@jboss.org, Thomas.Diesler@jboss.org, Dimitris.Andreadis@jboss.org
-
-
Constructor Summary
Constructors Constructor Description JBossEntityResolver()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static Map
getEntityMap()
Obtain a read-only view of the current entity map.boolean
isEntityResolved()
Returns the boolean value to inform id DTD was found in the XML file or notboolean
isReplaceSystemProperties()
static boolean
isWarnOnNonFileURLs()
protected InputStream
loadClasspathResource(String resource)
Look for the resource name on the thread context loader resource path.static void
registerEntity(String id, String dtdFileName)
Register the mapping from the public id/system id to the dtd/xsd file name.void
registerLocalEntity(String id, String dtdOrSchema)
Register the mapping from the public id/system id to the dtd/xsd file name.protected InputSource
resolveClasspathName(String systemId)
Resolve the systemId as a classpath resource.InputSource
resolveEntity(String publicId, String systemId)
Returns DTD/Schema inputSource.protected InputSource
resolvePublicID(String publicId)
Load the schema from the class entity to schema file mapping.protected InputSource
resolveSystemID(String systemId)
Attempt to use the systemId as a URL from which the schema can be read.protected InputSource
resolveSystemIDasURL(String systemId)
Attempt to use the systemId as a URL from which the schema can be read.void
setReplaceSystemProperties(boolean replaceSystemProperties)
static void
setWarnOnNonFileURLs(boolean warnOnNonFileURLs)
-
-
-
Method Detail
-
getEntityMap
public static Map getEntityMap()
Obtain a read-only view of the current entity map.- Returns:
- Map
of the publicID/systemID to dtd/schema file name
-
isWarnOnNonFileURLs
public static boolean isWarnOnNonFileURLs()
-
setWarnOnNonFileURLs
public static void setWarnOnNonFileURLs(boolean warnOnNonFileURLs)
-
registerEntity
public static void registerEntity(String id, String dtdFileName)
Register the mapping from the public id/system id to the dtd/xsd file name. This overwrites any existing mapping.- Parameters:
id
- the DOCTYPE public id or system id such as "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN"dtdFileName
- the simple dtd/xsd file name, "ejb-jar.dtd"
-
isReplaceSystemProperties
public boolean isReplaceSystemProperties()
-
setReplaceSystemProperties
public void setReplaceSystemProperties(boolean replaceSystemProperties)
-
registerLocalEntity
public void registerLocalEntity(String id, String dtdOrSchema)
Register the mapping from the public id/system id to the dtd/xsd file name. This overwrites any existing mapping.- Parameters:
id
- the DOCTYPE public id or system id such as "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN"dtdOrSchema
- the simple dtd/xsd file name, "ejb-jar.dtd"
-
resolveEntity
public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException
Returns DTD/Schema inputSource. The resolution logic is: 1. Check the publicId against the current registered values in the class mapping of entity name to dtd/schema file name. If found, the resulting file name is passed to the loadClasspathResource to locate the file as a classpath resource. 2. Check the systemId against the current registered values in the class mapping of entity name to dtd/schema file name. If found, the resulting file name is passed to the loadClasspathResource to locate the file as a classpath resource. 3. Strip the systemId name down to the simple file name by removing an URL style path elements (myschemas/x.dtd becomes x.dtd), and call loadClasspathResource to locate the simple file name as a classpath resource. 4. Attempt to resolve the systemId as a URL from which the schema can be read. If the URL input stream can be opened this returned as the resolved input.- Specified by:
resolveEntity
in interfaceEntityResolver
- Parameters:
publicId
- - Public ID of DTD, or null if it is a schemasystemId
- - the system ID of DTD or Schema- Returns:
- InputSource of entity
- Throws:
SAXException
IOException
-
isEntityResolved
public boolean isEntityResolved()
Returns the boolean value to inform id DTD was found in the XML file or not- Returns:
- boolean - true if DTD was found in XML
-
resolvePublicID
protected InputSource resolvePublicID(String publicId)
Load the schema from the class entity to schema file mapping.- Parameters:
publicId
- - the public entity name of the schema- Returns:
- the InputSource for the schema file found on the classpath, null if the publicId is not registered or found.
- See Also:
registerEntity(String, String)
-
resolveSystemID
protected InputSource resolveSystemID(String systemId)
Attempt to use the systemId as a URL from which the schema can be read. This checks to see whether the systemId is a key to an entry in the class entity map.- Parameters:
systemId
- - the systemId- Returns:
- the URL InputSource if the URL input stream can be opened, null if the systemId is not a URL or could not be opened.
-
resolveSystemIDasURL
protected InputSource resolveSystemIDasURL(String systemId)
Attempt to use the systemId as a URL from which the schema can be read. This uses the systemID as a URL.- Parameters:
systemId
- - the systemId- Returns:
- the URL InputSource if the URL input stream can be opened, null if the systemId is not a URL or could not be opened.
-
resolveClasspathName
protected InputSource resolveClasspathName(String systemId)
Resolve the systemId as a classpath resource. If not found, the systemId is simply used as a classpath resource name.- Parameters:
systemId
- - the system ID of DTD or Schema- Returns:
- the InputSource for the schema file found on the classpath, null if the systemId is not registered or found.
-
loadClasspathResource
protected InputStream loadClasspathResource(String resource)
Look for the resource name on the thread context loader resource path. This first simply tries the resource name as is, and if not found, the resource is prepended with either "dtd/" or "schema/" depending on whether the resource ends in ".dtd" or ".xsd".- Parameters:
resource
- - the classpath resource name of the schema- Returns:
- the resource InputStream if found, null if not found.
-
-