📄 defaulttypemappingregistry.java
字号:
package org.codehaus.xfire.aegis.type;import java.math.BigDecimal;import java.math.BigInteger;import java.net.URI;import java.sql.Time;import java.sql.Timestamp;import java.util.Calendar;import java.util.Collections;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import javax.activation.DataHandler;import javax.activation.DataSource;import javax.xml.namespace.QName;import javax.xml.stream.XMLStreamReader;import javax.xml.transform.Source;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.codehaus.xfire.XFireRuntimeException;import org.codehaus.xfire.aegis.type.basic.Base64Type;import org.codehaus.xfire.aegis.type.basic.BigDecimalType;import org.codehaus.xfire.aegis.type.basic.BigIntegerType;import org.codehaus.xfire.aegis.type.basic.BooleanType;import org.codehaus.xfire.aegis.type.basic.CalendarType;import org.codehaus.xfire.aegis.type.basic.CharacterType;import org.codehaus.xfire.aegis.type.basic.DateTimeType;import org.codehaus.xfire.aegis.type.basic.DoubleType;import org.codehaus.xfire.aegis.type.basic.FloatType;import org.codehaus.xfire.aegis.type.basic.IntType;import org.codehaus.xfire.aegis.type.basic.LongType;import org.codehaus.xfire.aegis.type.basic.ObjectType;import org.codehaus.xfire.aegis.type.basic.ShortType;import org.codehaus.xfire.aegis.type.basic.SqlDateType;import org.codehaus.xfire.aegis.type.basic.StringType;import org.codehaus.xfire.aegis.type.basic.TimeType;import org.codehaus.xfire.aegis.type.basic.TimestampType;import org.codehaus.xfire.aegis.type.basic.URIType;import org.codehaus.xfire.aegis.type.mtom.DataHandlerType;import org.codehaus.xfire.aegis.type.mtom.DataSourceType;import org.codehaus.xfire.aegis.type.xml.DocumentType;import org.codehaus.xfire.aegis.type.xml.JDOMDocumentType;import org.codehaus.xfire.aegis.type.xml.JDOMElementType;import org.codehaus.xfire.aegis.type.xml.SourceType;import org.codehaus.xfire.aegis.type.xml.XMLStreamReaderType;import org.codehaus.xfire.soap.Soap11;import org.codehaus.xfire.soap.SoapConstants;import org.codehaus.xfire.util.ClassLoaderUtils;import org.jdom.Element;import org.w3c.dom.Document;/** * The default implementation of TypeMappingRegistry. * * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a> * @since Feb 22, 2004 */public class DefaultTypeMappingRegistry implements TypeMappingRegistry{ private static final Log logger = LogFactory.getLog(DefaultTypeMappingRegistry.class); protected static final QName XSD_STRING = new QName(SoapConstants.XSD, "string", SoapConstants.XSD_PREFIX); protected static final QName XSD_LONG = new QName(SoapConstants.XSD, "long", SoapConstants.XSD_PREFIX); protected static final QName XSD_FLOAT = new QName(SoapConstants.XSD, "float", SoapConstants.XSD_PREFIX); protected static final QName XSD_DOUBLE = new QName(SoapConstants.XSD, "double", SoapConstants.XSD_PREFIX); protected static final QName XSD_INT = new QName(SoapConstants.XSD, "int", SoapConstants.XSD_PREFIX); protected static final QName XSD_SHORT = new QName(SoapConstants.XSD, "short", SoapConstants.XSD_PREFIX); protected static final QName XSD_BOOLEAN = new QName(SoapConstants.XSD, "boolean", SoapConstants.XSD_PREFIX); protected static final QName XSD_DATETIME = new QName(SoapConstants.XSD, "dateTime", SoapConstants.XSD_PREFIX); protected static final QName XSD_TIME = new QName(SoapConstants.XSD, "dateTime", SoapConstants.XSD_PREFIX); protected static final QName XSD_BASE64 = new QName(SoapConstants.XSD, "base64Binary", SoapConstants.XSD_PREFIX); protected static final QName XSD_DECIMAL = new QName(SoapConstants.XSD, "decimal", SoapConstants.XSD_PREFIX); protected static final QName XSD_INTEGER = new QName(SoapConstants.XSD, "integer", SoapConstants.XSD_PREFIX); protected static final QName XSD_URI = new QName(SoapConstants.XSD, "anyURI", SoapConstants.XSD_PREFIX); protected static final QName XSD_ANY = new QName(SoapConstants.XSD, "anyType", SoapConstants.XSD_PREFIX); protected static final QName XSD_DATE = new QName(SoapConstants.XSD, "date", SoapConstants.XSD_PREFIX); protected static final QName XSD_DURATION = new QName(SoapConstants.XSD, "duration", SoapConstants.XSD_PREFIX); protected static final QName XSD_G_YEAR_MONTH = new QName(SoapConstants.XSD, "gYearMonth", SoapConstants.XSD_PREFIX); protected static final QName XSD_G_MONTH_DAY = new QName(SoapConstants.XSD, "gMonthDay", SoapConstants.XSD_PREFIX); protected static final QName XSD_G_YEAR = new QName(SoapConstants.XSD, "gYear", SoapConstants.XSD_PREFIX); protected static final QName XSD_G_MONTH = new QName(SoapConstants.XSD, "gMonth", SoapConstants.XSD_PREFIX); protected static final QName XSD_G_DAY = new QName(SoapConstants.XSD, "gDay", SoapConstants.XSD_PREFIX); protected static final String ENCODED_NS = Soap11.getInstance().getSoapEncodingStyle(); protected static final QName ENCODED_STRING = new QName(ENCODED_NS, "string"); protected static final QName ENCODED_LONG = new QName(ENCODED_NS, "long"); protected static final QName ENCODED_FLOAT = new QName(ENCODED_NS, "float"); protected static final QName ENCODED_CHAR = new QName(ENCODED_NS, "char"); protected static final QName ENCODED_DOUBLE = new QName(ENCODED_NS, "double"); protected static final QName ENCODED_INT = new QName(ENCODED_NS, "int"); protected static final QName ENCODED_SHORT = new QName(ENCODED_NS, "short"); protected static final QName ENCODED_BOOLEAN = new QName(ENCODED_NS, "boolean"); protected static final QName ENCODED_DATETIME = new QName(ENCODED_NS, "dateTime"); protected static final QName ENCODED_BASE64 = new QName(ENCODED_NS, "base64Binary"); protected static final QName ENCODED_DECIMAL = new QName(ENCODED_NS, "decimal"); protected static final QName ENCODED_INTEGER = new QName(ENCODED_NS, "integer"); private Map registry; private TypeMapping defaultTM; private TypeCreator typeCreator; private Configuration typeConfiguration; public DefaultTypeMappingRegistry() { this(false); } public DefaultTypeMappingRegistry(boolean createDefault) { this(null, createDefault); } public DefaultTypeMappingRegistry(TypeCreator typeCreator, boolean createDefault , Configuration config) { registry = Collections.synchronizedMap(new HashMap()); this.typeCreator = typeCreator; this.typeConfiguration = (config == null ? new Configuration():config); if (createDefault) { createDefaultMappings(); } } public DefaultTypeMappingRegistry(TypeCreator typeCreator, boolean createDefault) { this(typeCreator,createDefault, new Configuration()); } public TypeMapping register(String encodingStyleURI, TypeMapping mapping) { TypeMapping previous = (TypeMapping) registry.get(encodingStyleURI); mapping.setEncodingStyleURI(encodingStyleURI); registry.put(encodingStyleURI, mapping); return previous; } public void registerDefault(TypeMapping mapping) { defaultTM = mapping; } /** * @see org.codehaus.xfire.aegis.type.TypeMappingRegistry#getDefaultTypeMapping() */ public TypeMapping getDefaultTypeMapping() { return defaultTM; } /** * @see org.codehaus.xfire.aegis.type.TypeMappingRegistry#getRegisteredEncodingStyleURIs() */ public String[] getRegisteredEncodingStyleURIs() { return (String[]) registry.keySet().toArray(new String[registry.size()]); } /** * @see org.codehaus.xfire.aegis.type.TypeMappingRegistry#getTypeMapping(java.lang.String) */ public TypeMapping getTypeMapping(String encodingStyleURI) { return (TypeMapping) registry.get(encodingStyleURI); } /** * @see org.codehaus.xfire.aegis.type.TypeMappingRegistry#createTypeMapping(boolean) */ public TypeMapping createTypeMapping(boolean autoTypes) { return createTypeMapping(getDefaultTypeMapping(), autoTypes); } /** * @see org.codehaus.xfire.aegis.type.TypeMappingRegistry#createTypeMapping(String, * boolean) */ public TypeMapping createTypeMapping(String parentNamespace, boolean autoTypes) { return createTypeMapping(getTypeMapping(parentNamespace), autoTypes); } protected TypeMapping createTypeMapping(TypeMapping parent, boolean autoTypes) { CustomTypeMapping tm = new CustomTypeMapping(parent); if (autoTypes) tm.setTypeCreator(createTypeCreator()); return tm; } public TypeCreator getTypeCreator() { if (typeCreator == null) { typeCreator = createTypeCreator(); } return typeCreator; } public void setTypeCreator(TypeCreator typeCreator) { this.typeCreator = typeCreator; } protected TypeCreator createTypeCreator() { AbstractTypeCreator xmlCreator = createRootTypeCreator(); xmlCreator.setNextCreator(createDefaultTypeCreator()); if (isJDK5andAbove()) { try { String j5TC = "org.codehaus.xfire.aegis.type.java5.Java5TypeCreator"; Class clazz = ClassLoaderUtils.loadClass(j5TC, getClass()); AbstractTypeCreator j5Creator = (AbstractTypeCreator) clazz.newInstance(); j5Creator.setNextCreator(createDefaultTypeCreator()); j5Creator.setConfiguration(getConfiguration()); xmlCreator.setNextCreator(j5Creator);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -