⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basedeserializerfactory.java

📁 Java有关XML编程需要用到axis 的源代码 把里面bin下的包导入相应的Java工程 进行使用
💻 JAVA
字号:
/* * Copyright 2001-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.axis.encoding.ser;import org.apache.axis.Constants;import org.apache.axis.components.logger.LogFactory;import org.apache.axis.encoding.Deserializer;import org.apache.axis.encoding.DeserializerFactory;import org.apache.axis.i18n.Messages;import org.apache.commons.logging.Log;import javax.xml.namespace.QName;import javax.xml.rpc.JAXRPCException;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.Iterator;import java.util.Vector;/** * Base class for Axis Deserialization Factory classes for code reuse * * @author Rich Scheuerle <scheu@us.ibm.com> */public abstract class BaseDeserializerFactory extends BaseFactory     implements DeserializerFactory {    protected static Log log =            LogFactory.getLog(BaseDeserializerFactory.class.getName());    transient static Vector mechanisms = null;        protected Class deserClass = null;    protected QName xmlType = null;    protected Class javaType = null;        transient protected Constructor deserClassConstructor = null;    transient protected Method getDeserializer = null;    /**     * Constructor     * @param deserClass is the class of the Deserializer     */    public BaseDeserializerFactory(Class deserClass) {        if (!Deserializer.class.isAssignableFrom(deserClass)) {            throw new ClassCastException(                    Messages.getMessage("BadImplementation00",                            deserClass.getName(),                            Deserializer.class.getName()));        }        this.deserClass = deserClass;    }    public BaseDeserializerFactory(Class deserClass,                                   QName xmlType,                                   Class javaType) {        this(deserClass);        this.xmlType = xmlType;        this.javaType = javaType;    }    public javax.xml.rpc.encoding.Deserializer        getDeserializerAs(String mechanismType)        throws JAXRPCException {        Deserializer deser = null;        // Need to add code to check against mechanisms vector.        // Try getting a specialized Deserializer        deser = getSpecialized(mechanismType);                // Try getting a general purpose Deserializer via constructor        // invocation        if (deser == null) {            deser = getGeneralPurpose(mechanismType);        }                try {            // If not successfull, try newInstance            if (deser == null) {                deser = (Deserializer) deserClass.newInstance();            }        } catch (Exception e) {            throw new JAXRPCException(e);        }        return deser;    }   /**     * Obtains a deserializer by invoking <constructor>(javaType, xmlType)      * on the deserClass.     */    protected Deserializer getGeneralPurpose(String mechanismType) {        if (javaType != null && xmlType != null) {            Constructor deserClassConstructor = getDeserClassConstructor();            if (deserClassConstructor != null) {                try {                    return (Deserializer)                         deserClassConstructor.newInstance(                            new Object[] {javaType, xmlType});                } catch (InstantiationException e) {                    if(log.isDebugEnabled()) {                        log.debug(org.apache.axis.utils.Messages.getMessage("exception00"), e);                    }                } catch (IllegalAccessException e) {                    if(log.isDebugEnabled()) {                        log.debug(org.apache.axis.utils.Messages.getMessage("exception00"), e);                    }                } catch (InvocationTargetException e) {                    if(log.isDebugEnabled()) {                        log.debug(org.apache.axis.utils.Messages.getMessage("exception00"), e);                    }                }            }        }        return null;    }    private static final Class[] CLASS_QNAME_CLASS = new Class[] {Class.class, QName.class};        /**     * return constructor for class if any     */      private Constructor getConstructor(Class clazz) {        try {            return clazz.getConstructor(CLASS_QNAME_CLASS);        } catch (NoSuchMethodException e) {}        return null;     }    /**     * Obtains a deserializer by invoking getDeserializer method in the      * javaType class or its Helper class.     */    protected Deserializer getSpecialized(String mechanismType) {        if (javaType != null && xmlType != null) {            Method getDeserializer = getGetDeserializer();            if (getDeserializer != null) {                try {                    return (Deserializer)                         getDeserializer.invoke(                                             null,                                             new Object[] {mechanismType,                                                            javaType,                                                            xmlType});                } catch (IllegalAccessException e) {                    if(log.isDebugEnabled()) {                        log.debug(org.apache.axis.utils.Messages.getMessage("exception00"), e);                    }                } catch (InvocationTargetException e) {                    if(log.isDebugEnabled()) {                        log.debug(org.apache.axis.utils.Messages.getMessage("exception00"), e);                    }                }            }        }        return null;    }    /**     * Returns a list of all XML processing mechanism types supported by this DeserializerFactory.     *     * @return List of unique identifiers for the supported XML processing mechanism types     */    public Iterator getSupportedMechanismTypes() {        if (mechanisms == null) {            mechanisms = new Vector(1);            mechanisms.add(Constants.AXIS_SAX);        }        return mechanisms.iterator();    }    /**     * Utility method that intospects on a factory class to decide how to      * create the factory.  Tries in the following order:     * public static create(Class javaType, QName xmlType)     * public <constructor>(Class javaType, QName xmlType)     * public <constructor>()     * @param factory class     * @param javaType     * @param xmlType     */    public static DeserializerFactory createFactory(Class factory,                                                     Class javaType,                                                     QName xmlType) {        if (factory == null) {            return null;        }        try {            if (factory == BeanDeserializerFactory.class) {                return new BeanDeserializerFactory(javaType, xmlType);            } else if (factory == SimpleDeserializerFactory.class) {                return new SimpleDeserializerFactory(javaType, xmlType);            } else if (factory == EnumDeserializerFactory.class) {                return new EnumDeserializerFactory(javaType, xmlType);            } else if (factory == ElementDeserializerFactory.class) {                return new ElementDeserializerFactory();            } else if (factory == SimpleListDeserializerFactory.class) {                return new SimpleListDeserializerFactory(javaType, xmlType);            }        } catch (Exception e) {            if (log.isDebugEnabled()) {                log.debug(org.apache.axis.utils.Messages.getMessage("exception00"), e);            }            return null;        }        DeserializerFactory df = null;        try {            Method method =                 factory.getMethod("create", CLASS_QNAME_CLASS);            df = (DeserializerFactory)                 method.invoke(null,                               new Object[] {javaType, xmlType});        } catch (NoSuchMethodException e) {            if(log.isDebugEnabled()) {                log.debug(org.apache.axis.utils.Messages.getMessage("exception00"), e);            }        } catch (IllegalAccessException e) {            if(log.isDebugEnabled()) {                log.debug(org.apache.axis.utils.Messages.getMessage("exception00"), e);            }        } catch (InvocationTargetException e) {            if(log.isDebugEnabled()) {                log.debug(org.apache.axis.utils.Messages.getMessage("exception00"), e);            }        }        if (df == null) {            try {                Constructor constructor =                      factory.getConstructor(CLASS_QNAME_CLASS);                df = (DeserializerFactory)                     constructor.newInstance(                        new Object[] {javaType, xmlType});            } catch (NoSuchMethodException e) {                if(log.isDebugEnabled()) {                    log.debug(org.apache.axis.utils.Messages.getMessage("exception00"), e);                }            } catch (InstantiationException e) {                if(log.isDebugEnabled()) {                    log.debug(org.apache.axis.utils.Messages.getMessage("exception00"), e);                }            } catch (IllegalAccessException e) {                if(log.isDebugEnabled()) {                    log.debug(org.apache.axis.utils.Messages.getMessage("exception00"), e);                }            } catch (InvocationTargetException e) {                if(log.isDebugEnabled()) {                    log.debug(org.apache.axis.utils.Messages.getMessage("exception00"), e);                }            }        }                if (df == null) {            try {                df = (DeserializerFactory) factory.newInstance();            } catch (InstantiationException e) {            } catch (IllegalAccessException e) {}        }        return df;    }    /**     * Returns the deserClassConstructor.     * @return Constructor     */    protected Constructor getDeserClassConstructor() {    	if (deserClassConstructor == null) {             deserClassConstructor = getConstructor(deserClass);        }     	return deserClassConstructor;    }    /**     * Returns the getDeserializer.     * @return Method     */    protected Method getGetDeserializer() {    	if (getDeserializer == null) {            getDeserializer = getMethod(javaType,"getDeserializer");            }    	return getDeserializer;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -