📄 bindingbuilder.java
字号:
/*Copyright (c) 2003-2006, Dennis M. SosnoskiAll rights reserved.Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of JiBX nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ANDANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE AREDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FORANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ONANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THISSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*/package org.jibx.binding.def;import java.io.IOException;import java.net.MalformedURLException;import java.net.URL;import java.util.ArrayList;import java.util.HashSet;import org.apache.bcel.classfile.Utility;import org.jibx.binding.classes.ClassCache;import org.jibx.binding.classes.ClassFile;import org.jibx.binding.classes.ClassItem;import org.jibx.runtime.JiBXException;import org.jibx.runtime.QName;import org.jibx.runtime.impl.UnmarshallingContext;/** * Binding definition builder. This processes the binding definition file to * generate the code generation structure. * * @author Dennis M. Sosnoski * @version 1.0 */public abstract class BindingBuilder{ /** Element namespace used for binding definition file. */ private static final String URI_ELEMENTS = null; /** Attribute namespace used for binding definition file. */ private static final String URI_ATTRIBUTES = null; /* Common style attribute. */ private static final String COMMON_STYLE = "value-style"; /* Common linkage attributes. */ private static final String COMMON_AUTOLINK = "auto-link"; private static final String COMMON_ACCESSLEVEL = "access-level"; private static final String COMMON_STRIPPREFIX = "strip-prefix"; private static final String COMMON_STRIPSUFFIX = "strip-suffix"; private static final String COMMON_NAMESTYLE = "name-style"; /* Common name attributes. */ private static final String COMMON_NAME = "name"; private static final String COMMON_NAMESPACE = "ns"; /* Common object attributes. */ private static final String COMMON_FACTORY = "factory"; private static final String COMMON_PRESET = "pre-set"; private static final String COMMON_POSTSET = "post-set"; private static final String COMMON_PREGET = "pre-get"; private static final String COMMON_MARSHALLER = "marshaller"; private static final String COMMON_UNMARSHALLER = "unmarshaller"; private static final String COMMON_CREATETYPE = "create-type"; /* Common property attributes. */ private static final String COMMON_FIELD = "field"; private static final String COMMON_TYPE = "type"; private static final String COMMON_USAGE = "usage"; private static final String COMMON_TESTMETHOD = "test-method"; private static final String COMMON_GETMETHOD = "get-method"; private static final String COMMON_SETMETHOD = "set-method"; /* Common string attributes. */ private static final String COMMON_DEFAULT = "default"; private static final String COMMON_SERIALIZER = "serializer"; private static final String COMMON_DESERIALIZER = "deserializer"; /* Common label attributes. */ private static final String COMMON_LABEL = "label"; private static final String COMMON_USING = "using"; /* Common ordered and choice attributes. */ private static final String COMMON_ORDERED = "ordered"; private static final String COMMON_CHOICE = "choice"; private static final String COMMON_FLEXIBLE = "flexible"; private static final String COMMON_DUPLICATES = "allow-repeats"; /* Common nillable attribute. */ private static final String COMMON_NILLABLE = "nillable"; /** Definitions for "binding" element use "BINDING" prefix. */ private static final String BINDING_ELEMENT = "binding"; private static final String BINDING_NAME = "name"; private static final String BINDING_DIRECTION = "direction"; private static final String BINDING_GLOBALID = "global-id"; private static final String BINDING_FORWARDS = "forwards"; private static final String BINDING_PACKAGE = "package"; private static final String BINDING_TRACKING = "track-source"; private static final String BINDING_FORCE = "force-classes"; // also COMMON_STYLE, and linkage group /** Definitions for "namespace" element use "NAMESPACE" prefix. */ private static final String NAMESPACE_ELEMENT = "namespace"; private static final String NAMESPACE_URI = "uri"; private static final String NAMESPACE_PREFIX = "prefix"; private static final String NAMESPACE_DEFAULT = "default"; /** Definitions for "format" element use "FORMAT" prefix. */ private static final String FORMAT_ELEMENT = "format"; private static final String FORMAT_NAME = "label"; private static final String FORMAT_TYPE = "type"; // also string group /** Definitions for "mapping" element use "MAPPING" prefix. */ private static final String MAPPING_ELEMENT = "mapping"; private static final String MAPPING_CLASS = "class"; private static final String MAPPING_ABSTRACT = "abstract"; private static final String MAPPING_EXTENDS = "extends"; private static final String MAPPING_TYPENAME = "type-name"; // also COMMON_STYLE, name, object, ordered, and linkage groups /** Definitions for "value" element use "VALUE" prefix. */ private static final String VALUE_ELEMENT = "value"; private static final String VALUE_STYLE = "style"; private static final String VALUE_FORMAT = "format"; private static final String VALUE_CONSTANT = "constant"; private static final String VALUE_IDENT = "ident"; // also name, property, and string groups /** Definitions for "structure" element use "STRUCTURE" prefix. */ private static final String STRUCTURE_ELEMENT = "structure"; private static final String STRUCTURE_MAPAS = "map-as"; // also COMMON_STYLE, name, object, ordered, property, and label groups /** Definitions for "collection" element use "COLLECTION" prefix. */ private static final String COLLECTION_ELEMENT = "collection"; private static final String COLLECTION_LOADMETHOD = "load-method"; private static final String COLLECTION_SIZEMETHOD = "size-method"; private static final String COLLECTION_STOREMETHOD = "store-method"; private static final String COLLECTION_ADDMETHOD = "add-method"; private static final String COLLECTION_ITERMETHOD = "iter-method"; private static final String COLLECTION_ITEMTYPE = "item-type"; // also COMMON_STYLE, name, ordered, property, and label groups /** Definitions for "include" element use "INCLUDE" prefix. */ private static final String INCLUDE_ELEMENT = "include"; private static final String INCLUDE_PATH = "path"; // // Value style enumeration. private static final String[] VALUE_STYLE_NAMES = { "attribute", "cdata", "element", "text" }; private static final int[] VALUE_STYLE_NUMS = { ValueChild.ATTRIBUTE_STYLE, ValueChild.CDATA_STYLE, ValueChild.ELEMENT_STYLE, ValueChild.TEXT_STYLE }; private static final String[] CONTAINING_STYLE_NAMES = { "attribute", "element" }; private static final int[] CONTAINING_STYLE_NUMS = { ValueChild.ATTRIBUTE_STYLE, ValueChild.ELEMENT_STYLE }; // // Enumeration for auto-link types. /*package*/ static final int LINK_NONE = 0; /*package*/ static final int LINK_FIELDS = 1; /*package*/ static final int LINK_METHODS = 2; private static final String[] AUTO_LINK_NAMES = { "fields", "none", "methods" }; private static final int[] AUTO_LINK_NUMS = { LINK_FIELDS, LINK_NONE, LINK_METHODS }; // // Enumeration for access level. /*package*/ static final int ACC_PRIVATE = 0; /*package*/ static final int ACC_PACKAGE = 1; /*package*/ static final int ACC_PROTECTED = 2; /*package*/ static final int ACC_PUBLIC = 3; private static final String[] ACCESS_LEVEL_NAMES = { "package", "private", "protected", "public" }; private static final int[] ACCESS_LEVEL_NUMS = { ACC_PACKAGE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC }; // // Enumeration for name generation styles. /*package*/ static final int NAME_HYPHENS = 0; /*package*/ static final int NAME_MIXED = 1; private static final String[] NAME_GENERATE_NAMES = { "hyphens", "mixed-case" }; private static final int[] NAME_GENERATE_NUMS = { NAME_HYPHENS, NAME_MIXED }; // // Attributes that imply a component object private static final String[] COMPONENT_OBJECT_NAMESPACES = { URI_ATTRIBUTES, URI_ATTRIBUTES, URI_ATTRIBUTES, URI_ATTRIBUTES }; private static final String[] COMPONENT_OBJECT_NAMES = { COMMON_FACTORY, COMMON_PRESET, COMMON_POSTSET, COMMON_PREGET }; // // Enumeration for namespace usage. private static final String[] NAMESPACEACCESS_NAMES = { "all", "attributes", "elements", "none" }; private static final int[] NAMESPACEACCESS_NUMS = { NamespaceDefinition.ALLDEFAULT_USAGE, NamespaceDefinition.ATTRIBUTES_USAGE, NamespaceDefinition.ELEMENTS_USAGE, NamespaceDefinition.NODEFAULT_USAGE }; // // Ident type enumeration. private static final String[] IDENTTYPE_NAMES = { "auto", "def", "direct", "ref" }; private static final int[] IDENTTYPE_NUMS = { ValueChild.AUTO_IDENT, ValueChild.DEF_IDENT, ValueChild.DIRECT_IDENT, ValueChild.REF_IDENT }; // // Binding direction enumeration. private static final int DIRECTION_INPUT = 0; private static final int DIRECTION_OUTPUT = 1; private static final int DIRECTION_BOTH = 2; private static final String[] BINDINGDIR_NAMES = { "both", "input", "output" }; private static final int[] BINDINGDIR_NUMS =
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -