public class Metadata
extends java.lang.Object
Metadata stores information in a number of maps, relating XML name tokens to Java class names and Java field names. Metadata supports the conversion of XML name tokens, which allow a more liberal syntax, to Java name tokens with a more restricted syntax. Metadata also records bindings from XML namespaces to Java packages, such that XML elements from different XML namespaces may be bound to Java classes from different associated Java packages. Each bound namespace ID relates to a single Java package, which must come from a specified Internet DNS domain. The XML-to-Java bindings may be declared in Java programs, or read from the XML input source as XML processing instructions; and the same processing instructions are created when writing a Java model to an XML output sink.
All other XML properties, such as XML version and character encoding, XML doctype, schema, or stylesheet declarations and all XML namespace-to-URI mappings are stored as general metadata properties.
Modifier and Type | Field and Description |
---|---|
private java.util.Map<java.lang.String,java.lang.String> |
javaClassMap
The map from XML name tokens to Java class names.
|
private java.util.Map<java.lang.String,java.lang.String> |
javaDomainMap
The map from Java package prefixes to domain names.
|
private java.util.Map<java.lang.String,java.lang.String> |
javaFieldMap
The map from XML name tokens to Java field names.
|
private java.util.Map<java.lang.String,java.lang.String> |
javaPackageMap
The map from XML namespace prefixes to Java package names.
|
private java.util.Map<java.lang.String,java.lang.String> |
nameTokenMap
The inverse map from Java class or field names to XML name tokens.
|
private java.util.Map<java.lang.String,java.lang.String> |
propertyMap
The map storing all other attributes as metadata.
|
Constructor and Description |
---|
Metadata()
Creates a Metadata object.
|
Modifier and Type | Method and Description |
---|---|
void |
addDomain(java.lang.String domain)
Adds a DNS domain name to the set of recognised domain names.
|
void |
bindNamespace(java.lang.String namespace,
java.lang.String packageName)
Associates a short XML namespace identifier with a Java package name
in the namespace-to-package bindings.
|
private void |
checkDomainName(java.lang.String domainName)
Validates the syntax of a domain name or Java package name.
|
private void |
checkNamespaceID(java.lang.String namespace)
Validates the syntax of a short XML namespace identifier.
|
private java.lang.String |
createNamespaceURI(java.lang.String namespace)
Creates an XML namespace URI for a short XML namespace identifier.
|
java.util.Set<java.lang.String> |
getAttributeNames()
Returns the set of XML attribute names that were previously mapped to
Java field identifiers.
|
java.util.Set<java.lang.String> |
getElementNames()
Returns the set of XML element names that were previously mapped to
Java class identifiers.
|
private java.lang.String |
getNamespacePrefix(java.lang.String packageID)
Returns the short XML namespace prefix used to qualify XML elements
representing objects from the given Java package.
|
java.util.Set<java.lang.String> |
getNamespaces()
Returns the set of short XML namespace identifiers that were mapped to
Java packages in the namespace-to-package bindings.
|
java.util.Set<java.lang.String> |
getProperties()
Returns the set of XML metadata attributes that were previously stored
as properties of this Metadata.
|
java.lang.String |
getProperty(java.lang.String identifier)
Retrieves the value of an XML metadata attribute.
|
void |
processEntities(Lexicon lexicon,
java.lang.String encoding)
Processes the external and internal grammar subsets in order to find
any extra entity definitions.
|
void |
setProperty(java.lang.String identifier,
java.lang.String value)
Stores the value of an XML metadata attribute.
|
java.lang.String |
toJavaClassID(java.lang.String nameToken)
Converts an XML name token into a Java class identifier.
|
java.lang.String |
toJavaFieldID(java.lang.String nameToken)
Converts an XML name token into a Java field identifier.
|
private java.lang.String |
toJavaIdentifier(java.lang.String nameToken,
boolean isType)
Converts an XML name token into a legal Java identifier.
|
java.lang.String |
toJavaPackage(java.lang.String namespace)
Returns the name of the Java package associated with a given short
XML namespace identifier in the namespace-to-package bindings.
|
java.lang.String |
toNamespaceURI(java.lang.String namespace)
Returns the full XML namespace URI associated with a given short XML
namespace identifier in the Metadata properties.
|
java.lang.String |
toNameToken(java.lang.String javaName)
Converts a Java class or field identifer back into an XML name token.
|
private java.util.Map<java.lang.String,java.lang.String> javaClassMap
private java.util.Map<java.lang.String,java.lang.String> javaFieldMap
private java.util.Map<java.lang.String,java.lang.String> nameTokenMap
private java.util.Map<java.lang.String,java.lang.String> javaPackageMap
private java.util.Map<java.lang.String,java.lang.String> javaDomainMap
private java.util.Map<java.lang.String,java.lang.String> propertyMap
public Metadata()
public java.util.Set<java.lang.String> getProperties()
public java.lang.String getProperty(java.lang.String identifier)
identifier
- the name of the attribute.public void setProperty(java.lang.String identifier, java.lang.String value)
identifier
- the name of the attribute.value
- the value of the attribute.private java.lang.String toJavaIdentifier(java.lang.String nameToken, boolean isType)
nameToken
- an XML name token.isType
- flag indicating a type (when true) or field (when
false).public java.util.Set<java.lang.String> getElementNames()
public java.util.Set<java.lang.String> getAttributeNames()
public java.lang.String toJavaClassID(java.lang.String nameToken)
nameToken
- the XML name token.public java.lang.String toJavaFieldID(java.lang.String nameToken)
nameToken
- the XML name token.public java.lang.String toNameToken(java.lang.String javaName)
javaName
- a Java class or field identifier.private java.lang.String getNamespacePrefix(java.lang.String packageID)
packageID
- the Java package name.public void addDomain(java.lang.String domain)
domain
- a DNS domain name.public void bindNamespace(java.lang.String namespace, java.lang.String packageName) throws SyntaxError
namespace
- the XML namespace identifier.packageName
- the Java package name.SyntaxError
private java.lang.String createNamespaceURI(java.lang.String namespace)
namespace
- a short XML namespace identifier.private void checkNamespaceID(java.lang.String namespace) throws SyntaxError
namespace
- a namespace short name.SyntaxError
- if the short name is not valid.private void checkDomainName(java.lang.String domainName) throws SyntaxError
domainName
- a DNS domain name or Java package name.SyntaxError
- if the domain or package name is not valid.public java.util.Set<java.lang.String> getNamespaces()
public java.lang.String toJavaPackage(java.lang.String namespace)
namespace
- the short XML namespace identifier.public java.lang.String toNamespaceURI(java.lang.String namespace)
namespace
- the short XML namespace identifier.public void processEntities(Lexicon lexicon, java.lang.String encoding) throws java.io.IOException, SyntaxError
lexicon
- the Lexicon from an ASTReader or ASTBuilder.encoding
- the expected character encoding, typically "UTF-8".java.io.IOException
- if the DTDReader reader fails.SyntaxError
- if the DTD syntax is faulty.