All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.xmlbeans.XmlOptions Maven / Gradle / Ivy

Go to download

The Apache Commons Codec package contains simple encoder and decoders for various formats such as Base64 and Hexadecimal. In addition to these widely used encoders and decoders, the codec package also maintains a collection of phonetic encoding utilities.

The newest version!
/*   Copyright 2004 The Apache Software Foundation
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *  limitations under the License.
 */

package org.apache.xmlbeans;

import org.xml.sax.EntityResolver;
import org.xml.sax.XMLReader;

import java.net.URI;
import java.util.HashMap;
import java.util.Map;
import java.util.Collection;
import java.util.Collections;
import java.util.Set;
import javax.xml.namespace.QName;

/**
 * Used to supply options for loading, saving, and compiling, and validating.
 * 

* There are two styles for using XmlOptions: multiline setup, and single-line use. * Here are two examples. First, multiline style: *

 * XmlOptions opts = new XmlOptions();
 * opts.setSavePrettyPrint();
 * opts.setSavePrettyPrintIndent(4);
 * System.out.println(xobj.xmlText(opts));
 * 
* * The alternative is single-line usage: *
 * System.out.println(xobj.xmlText(
 *     new XmlOptions().setSavePrettyPrint().setSavePrettyPrintIndent(4)));
 * 
* * Table showing where each option gets used. * Note that: *
    *
  • options available for newInstance methods will also * apply for parse methods
  • *
  • options used for validate methods are also used for * compile methods, since compilation usually implies * validation against Schema for Schemas
  • *
* * * * * * * * * * * * * * * * *
newInstance methodsparse methodsvalidate methodscompile methodssave and xmlTextmethods
setDocumentType
* setDocumentSourceName
* setValidateOnSet
* setUnsynchronized
setLoad***
* setEntityResolver
setErrorListener
* setValidateTreatLaxAsSkip * setValidateStrict
setErrorListener
* setCompile***
* setEntityResolver
* setBaseURI
* setGenerateJavaVersion
setSave***
* setUseDefaultNamespace
* setCharacterEncoding
*/ public class XmlOptions implements java.io.Serializable { private static final long serialVersionUID = 1L; private Map _map = new HashMap(); /** * Construct a new blank XmlOptions. */ public XmlOptions ( ) { } /** * Construct a new XmlOptions, copying the options. */ public XmlOptions (XmlOptions other) { if (other != null) _map.putAll(other._map); } // // Handy-dandy helper methods for setting some options // /** * This option will cause the saver to save namespace attributes first. * * @see XmlTokenSource#save(java.io.File, XmlOptions) * @see XmlTokenSource#xmlText(XmlOptions) */ public XmlOptions setSaveNamespacesFirst() { return set( SAVE_NAMESPACES_FIRST ); } /** * This option will cause the saver to reformat white space for easier reading. * * @see XmlTokenSource#save(java.io.File, XmlOptions) * @see XmlTokenSource#xmlText(XmlOptions) */ public XmlOptions setSavePrettyPrint() { return set( SAVE_PRETTY_PRINT ); } /** * When used with setSavePrettyPrint this sets the indent * amount to use. * * @param indent the indent amount to use * @see #setSavePrettyPrint * @see XmlTokenSource#save(java.io.File, XmlOptions) * @see XmlTokenSource#xmlText(XmlOptions) */ public XmlOptions setSavePrettyPrintIndent(int indent) { return set( SAVE_PRETTY_PRINT_INDENT, indent ); } /** * When used with setSavePrettyPrint this sets the offset * amount to use. * * @param offset the offset amount to use * @see #setSavePrettyPrint * @see XmlTokenSource#save(java.io.File, XmlOptions) * @see XmlTokenSource#xmlText(XmlOptions) */ public XmlOptions setSavePrettyPrintOffset(int offset) { return set( SAVE_PRETTY_PRINT_OFFSET, offset ); } /** * When writing a document, this sets the character * encoding to use. * * @param encoding the character encoding * @see XmlObject.Factory#parse(java.io.File, XmlOptions) * @see XmlTokenSource#save(java.io.File, XmlOptions) */ public XmlOptions setCharacterEncoding(String encoding) { return set( CHARACTER_ENCODING, encoding ); } /** * When parsing a document, this sets the type of the root * element. If this is set, the parser will not try to guess * the type based on the document's QName. * * @param type The root element's document type. * @see XmlObject.Factory#parse(java.io.File, XmlOptions) */ public XmlOptions setDocumentType(SchemaType type) { return set( DOCUMENT_TYPE, type ); } /** *

Sets a collection object for collecting {@link XmlError} objects * during parsing, validation, and compilation. When set, the collection * will contain all the errors after the operation takes place. Notice that * the errors will only have line numbers if the document was * loaded with line numbers enabled.

* *

The following simple example illustrates using an error listener * during validation.

* *
     * // Create an XmlOptions instance and set the error listener.
     * XmlOptions validateOptions = new XmlOptions();
     * ArrayList errorList = new ArrayList();
     * validateOptions.setErrorListener(errorList);
     * 
     * // Validate the XML.
     * boolean isValid = newEmp.validate(validateOptions);
     * 
     * // If the XML isn't valid, loop through the listener's contents,
     * // printing contained messages.
     * if (!isValid)
     * {
     *      for (int i = 0; i < errorList.size(); i++)
     *      {
     *          XmlError error = (XmlError)errorList.get(i);
     *          
     *          System.out.println("\n");
     *          System.out.println("Message: " + error.getMessage() + "\n");
     *          System.out.println("Location of invalid XML: " + 
     *              error.getCursorLocation().xmlText() + "\n");
     *      }
     * }
     * 
* * @param c A collection that will be filled with {@link XmlError} objects * via {@link Collection#add} * * @see XmlError * @see XmlObject.Factory#parse(java.io.File, XmlOptions) * @see XmlObject#validate(XmlOptions) * @see XmlBeans#compileXsd * @see XmlOptions#setLoadLineNumbers */ public XmlOptions setErrorListener (Collection c) { return set( ERROR_LISTENER, c ); } /** * Causes the saver to reduce the number of namespace prefix declarations. * The saver will do this by passing over the document twice, first to * collect the set of needed namespace declarations, and then second * to actually save the document with the declarations collected * at the root. * * @see XmlTokenSource#save(java.io.File, XmlOptions) * @see XmlTokenSource#xmlText(XmlOptions) */ public XmlOptions setSaveAggressiveNamespaces() { return set( SAVE_AGGRESSIVE_NAMESPACES ); } /** * @deprecated replaced by {@link #setSaveAggressiveNamespaces} */ public XmlOptions setSaveAggresiveNamespaces() { return setSaveAggressiveNamespaces(); } /** * This option causes the saver to wrap the current fragment in * an element with the given name. * * @param name the name to use for the top level element * * @see XmlTokenSource#save(java.io.File, XmlOptions) * @see XmlTokenSource#xmlText(XmlOptions) */ public XmlOptions setSaveSyntheticDocumentElement (QName name) { return set( SAVE_SYNTHETIC_DOCUMENT_ELEMENT, name ); } /** * If this option is set, the saver will try to use the default * namespace for the most commonly used URI. If it is not set * the saver will always created named prefixes. * * @see XmlTokenSource#save(java.io.File, XmlOptions) * @see XmlTokenSource#xmlText(XmlOptions) */ public XmlOptions setUseDefaultNamespace () { return set( SAVE_USE_DEFAULT_NAMESPACE ); } /** * If namespaces have already been declared outside the scope of the * fragment being saved, this allows those mappings to be passed * down to the saver, so the prefixes are not re-declared. * * @param implicitNamespaces a map of prefixes to uris that can be * used by the saver without being declared * * @see XmlTokenSource#save(java.io.File, XmlOptions) * @see XmlTokenSource#xmlText(XmlOptions) */ public XmlOptions setSaveImplicitNamespaces (Map implicitNamespaces) { return set( SAVE_IMPLICIT_NAMESPACES, implicitNamespaces ); } /** * A map of hints to pass to the saver for which prefixes to use * for which namespace URI. * * @param suggestedPrefixes a map from URIs to prefixes * * @see XmlTokenSource#save(java.io.File, XmlOptions) * @see XmlTokenSource#xmlText(XmlOptions) */ public XmlOptions setSaveSuggestedPrefixes (Map suggestedPrefixes) { return set( SAVE_SUGGESTED_PREFIXES, suggestedPrefixes ); } /** * This option causes the saver to filter a Processing Instruction * with the given target * * @param filterProcinst the name of a Processing Instruction to filter * on save * * @see XmlTokenSource#save(java.io.File, XmlOptions) * @see XmlTokenSource#xmlText(XmlOptions) */ public XmlOptions setSaveFilterProcinst (String filterProcinst) { return set( SAVE_FILTER_PROCINST, filterProcinst ); } /** * This option causes the saver to replace characters with other values in * the output stream. It is intended to be used for escaping non-standard * characters during output. * * @param characterReplacementMap is an XmlOptionCharEscapeMap containing * the characters to be escaped. * * @see XmlTokenSource#save(java.io.File, XmlOptions) * @see XmlTokenSource#xmlText(XmlOptions) * @see XmlOptionCharEscapeMap */ public XmlOptions setSaveSubstituteCharacters ( XmlOptionCharEscapeMap characterReplacementMap) { return set( SAVE_SUBSTITUTE_CHARACTERS, characterReplacementMap ); } /** * When saving a fragment, this option changes the qname of the synthesized * root element. Normally <xml-fragment> is used. * * @see XmlTokenSource#save(java.io.File, XmlOptions) * @see XmlTokenSource#xmlText(XmlOptions) */ public XmlOptions setSaveUseOpenFrag () { return set( SAVE_USE_OPEN_FRAGMENT ); } /** * This option controls whether saving begins on the element or its contents * * @see XmlTokenSource#save(java.io.File, XmlOptions) * @see XmlTokenSource#xmlText(XmlOptions) */ public XmlOptions setSaveOuter () { return set( SAVE_OUTER ); } /** * This option controls whether saving begins on the element or its contents * * @see XmlTokenSource#save(java.io.File, XmlOptions) * @see XmlTokenSource#xmlText(XmlOptions) */ public XmlOptions setSaveInner () { return set( SAVE_INNER ); } /** * This option controls whether saving saves out the XML * declaration ( * * @see XmlTokenSource#save(java.io.File, XmlOptions) * @see XmlTokenSource#xmlText(XmlOptions) */ public XmlOptions setSaveNoXmlDecl () { return set( SAVE_NO_XML_DECL ); } /** * This option controls when saving will use CDATA blocks. * CDATA will be used if the folowing condition is true: *
textLength > cdataLengthThreshold && entityCount > cdataEntityCountThreshold *
The default value of cdataLengthThreshold is 32. *
*
Use the folowing values for these cases: * * * * * * * *
Scenario cdataLengthThreshold cdataEntityCountThreshold
Every text is CDATA 0 -1
Only text that has an entity is CDATA 0 0
Only text longer than x chars is CDATA x -1
Only text that has y entitazable chars is CDATA 0 y
Only text longer than x chars and has y entitazable chars is CDATA x y
* @see XmlOptions#setSaveCDataEntityCountThreshold(int) */ public XmlOptions setSaveCDataLengthThreshold (int cdataLengthThreshold) { return set( SAVE_CDATA_LENGTH_THRESHOLD, cdataLengthThreshold ); } /** * This option controls when saving will use CDATA blocks. * CDATA will be used if the folowing condition is true: *
textLength > cdataLengthThreshold && entityCount > cdataEntityCountThreshold *
The default value of cdataEntityCountThreshold is 5. * * @see XmlOptions#setSaveCDataLengthThreshold(int) */ public XmlOptions setSaveCDataEntityCountThreshold (int cdataEntityCountThreshold) { return set( SAVE_CDATA_ENTITY_COUNT_THRESHOLD, cdataEntityCountThreshold ); } /** *

Use this option when parsing and saving XML documents.

* *

For parsing this option will annotate the text fields in the store with CDataBookmark.

* *

For saving this option will save the text fields annotated with CDataBookmark as * CDATA XML text.
* Note: The SaveCDataEntityCountThreshold and SaveCDataLengthThreshold options and * their default values still apply.

* *

Note: Due to the store representation, a CDATA will not be recognized * if it is imediately after non CDATA text and all text following it will * be considered CDATA.
* Example:
*

     * <a><![CDATA[cdata text]]></a>               - is considered as: <a><![CDATA[cdata text]]></a>
     * <b><![CDATA[cdata text]]> regular text</b>  - is considered as: <b><![CDATA[cdata text regular text]]></b>
     * <c>text <![CDATA[cdata text]]></c>          - is considered as: <c>text cdata text</c>
     * 
*

* *

Sample code: *

        String xmlText = "<a>\n" +
                "<a><![CDATA[cdata text]]></a>\n" +
                "<b><![CDATA[cdata text]]> regular text</b>\n" +
                "<c>text <![CDATA[cdata text]]></c>\n" +
                "</a>";
        System.out.println(xmlText);

        XmlOptions opts = new XmlOptions();
        opts.setUseCDataBookmarks();

        XmlObject xo = XmlObject.Factory.parse( xmlText , opts);

        System.out.println("xo1:\n" + xo.xmlText(opts));
        System.out.println("\n");

        opts.setSavePrettyPrint();
        System.out.println("xo2:\n" + xo.xmlText(opts));
     * 
*

* * @see CDataBookmark * @see CDataBookmark#CDATA_BOOKMARK */ public XmlOptions setUseCDataBookmarks() { return set( LOAD_SAVE_CDATA_BOOKMARKS ); } /** * This option controls whether namespace declarations are included as attributes in the * startElement event. By default, up to and including XMLBeans 2.3.0 they were included, in * subsequent versions, they are no longer included. */ public XmlOptions setSaveSaxNoNSDeclsInAttributes () { return set( SAVE_SAX_NO_NSDECLS_IN_ATTRIBUTES ); } /** * If this option is set, the document element is replaced with the * given QName when parsing. If null is supplied, the document element * is removed. * * @see XmlObject.Factory#parse(java.io.File, XmlOptions) */ public XmlOptions setLoadReplaceDocumentElement ( QName replacement ) { return set( LOAD_REPLACE_DOCUMENT_ELEMENT, replacement ); } /** * If this option is set, all insignificant whitespace is stripped * when parsing a document. Can be used to save memory on large * documents when you know there is no mixed content. * * @see XmlObject.Factory#parse(java.io.File, XmlOptions) */ public XmlOptions setLoadStripWhitespace () { return set( LOAD_STRIP_WHITESPACE); } /** * If this option is set, all comments are stripped when parsing * a document. * * @see XmlObject.Factory#parse(java.io.File, XmlOptions) */ public XmlOptions setLoadStripComments() { return set( LOAD_STRIP_COMMENTS ); } /** * If this option is set, all processing instructions * are stripped when parsing a document. * * @see XmlObject.Factory#parse(java.io.File, XmlOptions) */ public XmlOptions setLoadStripProcinsts () { return set( LOAD_STRIP_PROCINSTS ); } /** * If this option is set, line number annotations are placed * in the store when parsing a document. This is particularly * useful when you want {@link XmlError} objects to contain * line numbers. *
Note: This adds line numbers info only for start tags. * For line number info on end tags use: * {@link XmlOptions#setLoadLineNumbers(java.lang.String)} *
Example: xmlOptions.setLoadLineNumbers(XmlOptions.LOAD_LINE_NUMBERS_END_ELEMENT) * * @see XmlObject.Factory#parse(java.io.File, XmlOptions) * @see XmlError */ public XmlOptions setLoadLineNumbers () { return set( LOAD_LINE_NUMBERS ); } /** * If this option is set, line number annotations are placed * in the store when parsing a document. This is particularly * useful when you want {@link XmlError} objects to contain * line numbers. Use the option to load line numbers at the end of an element. *
Example: xmlOptions.setLoadLineNumbers(XmlOptions.LOAD_LINE_NUMBERS_END_ELEMENT) * * @see XmlObject.Factory#parse(java.io.File, XmlOptions) * @see XmlError */ public XmlOptions setLoadLineNumbers (String option) { XmlOptions temp = setLoadLineNumbers(); temp = temp.set( option ); return temp; } /** * This option sets a map of namespace uri substitutions that happen * when parsing a document. *

* This is particularly useful if you * have documents that use no namespace, but you wish to avoid * the name collision problems that occur when you introduce * schema definitions without a target namespace. *

* By mapping the empty string "" (the absence of a URI) to a specific * namespace, you can force the parser to behave as if a no-namespace * document were actually in the specified namespace. This allows you * to type the instance according to a schema in a nonempty namespace, * and therefore avoid the problematic practice of using schema * definitions without a target namespace. * * @param substNamespaces a map of document URIs to replacement URIs * * @see XmlObject.Factory#parse(java.io.File, XmlOptions) */ public XmlOptions setLoadSubstituteNamespaces (Map substNamespaces) { return set( LOAD_SUBSTITUTE_NAMESPACES, substNamespaces ); } /** * If this option is set, the underlying xml text buffer is trimmed * immediately after parsing a document resulting in a smaller memory * footprint. Use this option if you are loading a large number * of unchanging documents that will stay in memory for some time. * * @see XmlObject.Factory#parse(java.io.File, XmlOptions) */ public XmlOptions setLoadTrimTextBuffer () { return set( LOAD_TRIM_TEXT_BUFFER ); } /** * Set additional namespace mappings to be added when parsing * a document. * * @param nses additional namespace mappings * * @see XmlObject.Factory#parse(java.io.File, XmlOptions) */ public XmlOptions setLoadAdditionalNamespaces (Map nses) { return set( LOAD_ADDITIONAL_NAMESPACES, nses ); } /** * If this option is set when loading from an InputStream or File, then * the loader will compute a 160-bit SHA-1 message digest of the XML * file while loading it and make it available via * XmlObject.documentProperties().getMessageDigest(); *
* The schema compiler uses message digests to detect and eliminate * duplicate imported xsd files. * * @see XmlObject.Factory#parse(java.io.File, XmlOptions) */ public XmlOptions setLoadMessageDigest () { return set( LOAD_MESSAGE_DIGEST ); } /** * By default, XmlBeans does not resolve entities when parsing xml * documents (unless an explicit entity resolver is specified). * Use this option to turn on entity resolving by default. * * @see XmlObject.Factory#parse(java.io.File, XmlOptions) */ public XmlOptions setLoadUseDefaultResolver () { return set( LOAD_USE_DEFAULT_RESOLVER ); } /** * By default, XmlBeans creates a JAXP parser, * other parsers can be used by providing an XMLReader. * For using the default JDK's SAX parser use: * xmlOptions.setLoadUseXMLReader( SAXParserFactory.newInstance().newSAXParser().getXMLReader() ); * * @see XmlObject.Factory#parse(java.io.File, XmlOptions) */ public XmlOptions setLoadUseXMLReader (XMLReader xmlReader) { return set( LOAD_USE_XMLREADER, xmlReader ); } /** * Sets the name of the variable that represents * the current node in a query expression. * * @param varName The new variable name to use for the query. * * @see XmlObject#execQuery * @see XmlCursor#execQuery */ public XmlOptions setXqueryCurrentNodeVar (String varName) { return set( XQUERY_CURRENT_NODE_VAR, varName ); } /** * Map the names and values of external variables in an xquery * expression. The keys of the map are the variable names * in the query without the '$' prefix. The values of the map * are objects and can be any of the primitive wrapper classes, * String, XmlObject, or XmlCursor. The mapping only applies to * xquery and has no effect on xpath expressions. * * @param varMap a map from Strings to variable instances. * * @see XmlObject#execQuery * @see XmlCursor#execQuery */ public XmlOptions setXqueryVariables (Map varMap) { return set( XQUERY_VARIABLE_MAP, varMap ); } /** * This option sets the document source name into the xml store * when parsing a document. If a document is parsed from a * File or URI, it is automatically set to the URI of the * source; otherwise, for example, when parsing a String, * you can use this option to specify the source name yourself. * * @see XmlObject.Factory#parse(java.lang.String, XmlOptions) */ public XmlOptions setDocumentSourceName (String documentSourceName) { return set( DOCUMENT_SOURCE_NAME, documentSourceName ); } /** * This option allows for QName substitution during schema compilation. * * @param nameMap a map from QNames to substitute QNames. * * @see XmlBeans#compileXsd */ public XmlOptions setCompileSubstituteNames (Map nameMap) { return set( COMPILE_SUBSTITUTE_NAMES, nameMap ); } /** * If this option is set, validation is not done on the Schema XmlBeans * when building a SchemaTypeSystem * * @see XmlBeans#compileXsd */ public XmlOptions setCompileNoValidation () { return set( COMPILE_NO_VALIDATION ); } /** * If this option is set, the unique particle attribution rule is not * enforced when building a SchemaTypeSystem. See * Appendix H of the XML Schema specification * for information on the UPA rule. * * @see XmlBeans#compileXsd */ public XmlOptions setCompileNoUpaRule () { return set( COMPILE_NO_UPA_RULE ); } /** * If this option is set, the particle valid (restriciton) rule is not * enforced when building a SchemaTypeSystem. See * Section 3.9.6 of the XML Schema specification * for information on the PVR rule. * * @see XmlBeans#compileXsd */ public XmlOptions setCompileNoPvrRule () { return set( COMPILE_NO_PVR_RULE ); } /** * if this option is set, the schema compiler will skip annotations when * processing Schema components. * * @see XmlBeans#compileXsd */ public XmlOptions setCompileNoAnnotations() { return set( COMPILE_NO_ANNOTATIONS ); } /** * If this option is set, then the schema compiler will try to download * schemas that appear in imports and includes from network based URLs. * * @see XmlBeans#compileXsd */ public XmlOptions setCompileDownloadUrls () { return set( COMPILE_DOWNLOAD_URLS); } /** * If this option is set, then the schema compiler will permit and * ignore multiple definitions of the same component (element, attribute, * type, etc) names in the given namespaces. If multiple definitions * with the same name appear, the definitions that happen to be processed * last will be ignored. * * @param mdefNamespaces a set of namespace URIs as Strings * * @see XmlBeans#compileXsd */ public XmlOptions setCompileMdefNamespaces(Set mdefNamespaces) { return set( COMPILE_MDEF_NAMESPACES, mdefNamespaces ); } /** * If this option is set when an instance is created, then value * facets will be checked on each call to a setter or getter * method on instances of XmlObject within the instance document. * If the facets are not satisfied, then an unchecked exception is * thrown immediately. This option is useful for finding code that * is introducing invalid values in an XML document, but it * slows performance. * * @see XmlObject.Factory#parse(java.io.File, XmlOptions) */ public XmlOptions setValidateOnSet() { return set( VALIDATE_ON_SET ); } /** * Instructs the validator to skip elements matching an * particle with contentModel="lax". This is useful because, * in certain situations, XmlBeans will find types on the * classpath that the document author did not anticipate. */ public XmlOptions setValidateTreatLaxAsSkip() { return set ( VALIDATE_TREAT_LAX_AS_SKIP ); } /** * Performs additional validation checks that are disabled by * default for better compatibility. */ public XmlOptions setValidateStrict() { return set ( VALIDATE_STRICT ); } /** * This option controls whether or not operations on XmlBeans are * thread safe. When not on, all XmlBean operations will be syncronized. * This provides for multiple thread the ability to access a single * XmlBeans simultainously, but has a perf impact. If set, then * only one thread may access an XmlBean. */ public XmlOptions setUnsynchronized ( ) { return set( UNSYNCHRONIZED ); } /** * If this option is set when compiling a schema, then the given * EntityResolver will be consulted in order to resolve any * URIs while downloading imported schemas. * * EntityResolvers are currently only used by compileXsd; they * are not consulted by other functions, for example, parse. * This will likely change in the future. * * @see XmlBeans#compileXsd */ public XmlOptions setEntityResolver(EntityResolver resolver) { return set( ENTITY_RESOLVER, resolver ); } /** * If this option is set when compiling a schema, then the given * URI will be considered as base URI when deciding the directory * structure for saving the sources inside the generated JAR file. * @param baseURI the URI to be considered as "base" * @see XmlBeans#compileXsd */ public XmlOptions setBaseURI(URI baseURI) { return set( BASE_URI, baseURI ); } /** * If this option is set when compiling a schema, then the given * SchemaTypeCodePrinter.Printer will be used to generate the * Java code. * * @see XmlBeans#compileXsd */ public XmlOptions setSchemaCodePrinter(SchemaCodePrinter printer) { return set( SCHEMA_CODE_PRINTER, printer ); } /** * If this option is set, then the schema compiler will print java code * that is compatible with the desired Java version. If not set, the * current Java version is used. Currently, only "1.4" and "1.5" are * supported. * * @param source A Java version number * * @see #GENERATE_JAVA_14 * @see #GENERATE_JAVA_15 * @see XmlBeans#compileXmlBeans */ public XmlOptions setGenerateJavaVersion (String source) { return set( GENERATE_JAVA_VERSION, source ); } /** * If this option is set to true, the return of XmlObject.copy() method will * return an object in it's own synchronization domain, otherwise both objects * will share the same synchronization domain, requiring explicit synchronization * when concurent accessing the two objects. * * @param useNewSyncDomain A flag representing the usage of new domain * * @see XmlObject#copy() */ public XmlOptions setCopyUseNewSynchronizationDomain (boolean useNewSyncDomain) { return set(COPY_USE_NEW_SYNC_DOMAIN, useNewSyncDomain); } /** * Sets the maximum number of bytes allowed when an Entity is expanded during parsing. * The default value is 10240 bytes. * @param entityBytesLimit * @return */ public XmlOptions setLoadEntityBytesLimit (int entityBytesLimit) { return set(LOAD_ENTITY_BYTES_LIMIT,entityBytesLimit); } /** * Sets the maximum number of entity expansions allowed during parsing. * The default value is 2048. * @param entityExpansionLimit * @return this */ public XmlOptions setEntityExpansionLimit (int entityExpansionLimit) { return set(ENTITY_EXPANSION_LIMIT, entityExpansionLimit); } /** * Controls whether DTD grammar is loaded during parsing. * The default value is false. * * @param loadDTDGrammar * @return this */ public XmlOptions setLoadDTDGrammar (boolean loadDTDGrammar) { return set(LOAD_DTD_GRAMMAR, loadDTDGrammar); } /** * Controls whether external DTDs are loaded during parsing. * The default value is false. * * @param loadExternalDTD * @return this */ public XmlOptions setLoadExternalDTD (boolean loadExternalDTD) { return set(LOAD_EXTERNAL_DTD, loadExternalDTD); } public static final String GENERATE_JAVA_14 = "1.4"; public static final String GENERATE_JAVA_15 = "1.5"; // // Complete set of XmlOption's // // TODO - Add selectPath option to track the seletion (deault is to clean selections fast). /** @exclude */ public static final String SAVE_NAMESPACES_FIRST = "SAVE_NAMESPACES_FIRST"; /** @exclude */ public static final String SAVE_SYNTHETIC_DOCUMENT_ELEMENT = "SAVE_SYNTHETIC_DOCUMENT_ELEMENT"; /** @exclude */ public static final String SAVE_PRETTY_PRINT = "SAVE_PRETTY_PRINT"; /** @exclude */ public static final String SAVE_PRETTY_PRINT_INDENT = "SAVE_PRETTY_PRINT_INDENT"; /** @exclude */ public static final String SAVE_PRETTY_PRINT_OFFSET = "SAVE_PRETTY_PRINT_OFFSET"; /** @exclude */ public static final String SAVE_AGGRESSIVE_NAMESPACES = "SAVE_AGGRESSIVE_NAMESPACES"; /** @exclude */ public static final String SAVE_USE_DEFAULT_NAMESPACE = "SAVE_USE_DEFAULT_NAMESPACE"; /** @exclude */ public static final String SAVE_IMPLICIT_NAMESPACES = "SAVE_IMPLICIT_NAMESPACES"; /** @exclude */ public static final String SAVE_SUGGESTED_PREFIXES = "SAVE_SUGGESTED_PREFIXES"; /** @exclude */ public static final String SAVE_FILTER_PROCINST = "SAVE_FILTER_PROCINST"; /** @exclude */ public static final String SAVE_USE_OPEN_FRAGMENT = "SAVE_USE_OPEN_FRAGMENT"; /** @exclude */ public static final String SAVE_OUTER = "SAVE_OUTER"; /** @exclude */ public static final String SAVE_INNER = "SAVE_INNER"; /** @exclude */ public static final String SAVE_NO_XML_DECL = "SAVE_NO_XML_DECL"; /** @exclude */ public static final String SAVE_SUBSTITUTE_CHARACTERS = "SAVE_SUBSTITUTE_CHARACTERS"; /** @exclude */ public static final String SAVE_OPTIMIZE_FOR_SPEED = "SAVE_OPTIMIZE_FOR_SPEED"; /** @exclude */ public static final String SAVE_CDATA_LENGTH_THRESHOLD = "SAVE_CDATA_LENGTH_THRESHOLD"; /** @exclude */ public static final String SAVE_CDATA_ENTITY_COUNT_THRESHOLD = "SAVE_CDATA_ENTITY_COUNT_THRESHOLD"; /** @exclude */ public static final String SAVE_SAX_NO_NSDECLS_IN_ATTRIBUTES = "SAVE_SAX_NO_NSDECLS_IN_ATTRIBUTES"; /** @exclude */ public static final String LOAD_REPLACE_DOCUMENT_ELEMENT = "LOAD_REPLACE_DOCUMENT_ELEMENT"; /** @exclude */ public static final String LOAD_STRIP_WHITESPACE = "LOAD_STRIP_WHITESPACE"; /** @exclude */ public static final String LOAD_STRIP_COMMENTS = "LOAD_STRIP_COMMENTS"; /** @exclude */ public static final String LOAD_STRIP_PROCINSTS = "LOAD_STRIP_PROCINSTS"; /** @exclude */ public static final String LOAD_LINE_NUMBERS = "LOAD_LINE_NUMBERS"; /** @exclude */ public static final String LOAD_LINE_NUMBERS_END_ELEMENT = "LOAD_LINE_NUMBERS_END_ELEMENT"; /** @exclude */ public static final String LOAD_SAVE_CDATA_BOOKMARKS = "LOAD_SAVE_CDATA_BOOKMARKS"; /** @exclude */ public static final String LOAD_SUBSTITUTE_NAMESPACES = "LOAD_SUBSTITUTE_NAMESPACES"; /** @exclude */ public static final String LOAD_TRIM_TEXT_BUFFER = "LOAD_TRIM_TEXT_BUFFER"; /** @exclude */ public static final String LOAD_ADDITIONAL_NAMESPACES = "LOAD_ADDITIONAL_NAMESPACES"; /** @exclude */ public static final String LOAD_MESSAGE_DIGEST = "LOAD_MESSAGE_DIGEST"; /** @exclude */ public static final String LOAD_USE_DEFAULT_RESOLVER = "LOAD_USE_DEFAULT_RESOLVER"; /** @exclude */ public static final String LOAD_USE_XMLREADER = "LOAD_USE_XMLREADER"; /** @exclude */ public static final String XQUERY_CURRENT_NODE_VAR = "XQUERY_CURRENT_NODE_VAR"; /** @exclude */ public static final String XQUERY_VARIABLE_MAP = "XQUERY_VARIABLE_MAP"; /** @exclude */ public static final String CHARACTER_ENCODING = "CHARACTER_ENCODING"; /** @exclude */ public static final String ERROR_LISTENER = "ERROR_LISTENER"; /** @exclude */ public static final String DOCUMENT_TYPE = "DOCUMENT_TYPE"; /** @exclude */ public static final String DOCUMENT_SOURCE_NAME = "DOCUMENT_SOURCE_NAME"; /** @exclude */ public static final String COMPILE_SUBSTITUTE_NAMES = "COMPILE_SUBSTITUTE_NAMES"; /** @exclude */ public static final String COMPILE_NO_VALIDATION = "COMPILE_NO_VALIDATION"; /** @exclude */ public static final String COMPILE_NO_UPA_RULE = "COMPILE_NO_UPA_RULE"; /** @exclude */ public static final String COMPILE_NO_PVR_RULE = "COMPILE_NO_PVR_RULE"; /** @exclude */ public static final String COMPILE_NO_ANNOTATIONS = "COMPILE_NO_ANNOTATIONS"; /** @exclude */ public static final String COMPILE_DOWNLOAD_URLS = "COMPILE_DOWNLOAD_URLS"; /** @exclude */ public static final String COMPILE_MDEF_NAMESPACES = "COMPILE_MDEF_NAMESPACES"; /** @exclude */ public static final String VALIDATE_ON_SET = "VALIDATE_ON_SET"; /** @exclude */ public static final String VALIDATE_TREAT_LAX_AS_SKIP = "VALIDATE_TREAT_LAX_AS_SKIP"; /** @exclude */ public static final String VALIDATE_STRICT = "VALIDATE_STRICT"; /** @exclude */ public static final String VALIDATE_TEXT_ONLY = "VALIDATE_TEXT_ONLY"; /** @exclude */ public static final String UNSYNCHRONIZED = "UNSYNCHRONIZED"; /** @exclude */ public static final String ENTITY_RESOLVER = "ENTITY_RESOLVER"; /** @exclude */ public static final String BASE_URI = "BASE_URI"; /** @exclude */ public static final String SCHEMA_CODE_PRINTER = "SCHEMA_CODE_PRINTER"; /** @exclude */ public static final String GENERATE_JAVA_VERSION = "GENERATE_JAVA_VERSION"; /** @exclude */ public static final String COPY_USE_NEW_SYNC_DOMAIN = "COPY_USE_NEW_LOCALE"; /** @exclude */ public static final String LOAD_ENTITY_BYTES_LIMIT = "LOAD_ENTITY_BYTES_LIMIT"; /** @exclude */ public static final String ENTITY_EXPANSION_LIMIT = "ENTITY_EXPANSION_LIMIT"; /** @exclude */ public static final String LOAD_DTD_GRAMMAR = "LOAD_DTD_GRAMMAR"; /** @exclude */ public static final String LOAD_EXTERNAL_DTD = "LOAD_EXTERNAL_DTD"; public static final int DEFAULT_ENTITY_EXPANSION_LIMIT = 2048; private static final XmlOptions EMPTY_OPTIONS; static { EMPTY_OPTIONS = new XmlOptions(); EMPTY_OPTIONS._map = Collections.unmodifiableMap(EMPTY_OPTIONS._map); } /** If passed null, returns an empty options object. Otherwise, returns its argument. */ public static XmlOptions maskNull(XmlOptions o) { return (o == null) ? EMPTY_OPTIONS : o; } /** Used to set a generic option */ public void put ( Object option ) { put( option, null ); } /** Used to set a generic option */ public void put ( Object option, Object value ) { _map.put(option, value); } /** Used to set a generic option */ public void put ( Object option, int value ) { put( option, new Integer( value ) ); } private XmlOptions set(Object option) { return set(option, null); } private XmlOptions set(Object option, Object value) { _map.put(option, value); return this;} private XmlOptions set(Object option, int value) { return set(option, new Integer(value)); } /** Used to test a generic option */ public boolean hasOption ( Object option ) { return _map.containsKey( option ); } public static boolean hasOption ( XmlOptions options, Object option ) { return options == null ? false : options.hasOption( option ); } /** Used to get a generic option */ public Object get ( Object option ) { return _map.get( option ); } public void remove ( Object option ) { _map.remove( option ); } /** Used to test a generic option on an options object that may be null */ public static Object safeGet(XmlOptions o, Object option) { return o == null ? null : o.get(option); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy