beanvendoradapter.java

来自「Java有关XML编程需要用到axis 的源代码 把里面bin下的包导入相应」· Java 代码 · 共 92 行

JAVA
92
字号
/* * Copyright 2001, 2002,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.components.jms;import java.util.HashMap;import javax.jms.ConnectionFactory;import javax.jms.QueueConnectionFactory;import javax.jms.TopicConnectionFactory;import org.apache.axis.utils.BeanPropertyDescriptor;import org.apache.axis.utils.BeanUtils;import org.apache.axis.utils.ClassUtils;/** * Uses ClassUtils.forName and reflection to configure ConnectionFactory.  Uses * the input sessions to create destinations. * * @author Jaime Meritt (jmeritt@sonicsoftware.com) */public abstract class BeanVendorAdapter extends JMSVendorAdapter{    protected final static String CONNECTION_FACTORY_CLASS =                                        "transport.jms.ConnectionFactoryClass";    public QueueConnectionFactory getQueueConnectionFactory(HashMap cfConfig)        throws Exception    {        return (QueueConnectionFactory)getConnectionFactory(cfConfig);    }    public TopicConnectionFactory getTopicConnectionFactory(HashMap cfConfig)        throws Exception    {        return (TopicConnectionFactory)getConnectionFactory(cfConfig);    }    private ConnectionFactory getConnectionFactory(HashMap cfConfig)        throws Exception    {        String classname = (String)cfConfig.get(CONNECTION_FACTORY_CLASS);        if(classname == null || classname.trim().length() == 0)            throw new IllegalArgumentException("noCFClass");        Class factoryClass = ClassUtils.forName(classname);        ConnectionFactory factory = (ConnectionFactory)factoryClass.newInstance();        callSetters(cfConfig, factoryClass, factory);        return factory;    }    private void callSetters(HashMap cfConfig,                             Class factoryClass,                             ConnectionFactory factory)      throws Exception    {        BeanPropertyDescriptor[] bpd = BeanUtils.getPd(factoryClass);        for(int i = 0; i < bpd.length; i++)        {            BeanPropertyDescriptor thisBPD = bpd[i];            String propName = thisBPD.getName();            if(cfConfig.containsKey(propName))            {                Object value = cfConfig.get(propName);                if(value == null)                    continue;                String validType = thisBPD.getType().getName();                if(!value.getClass().getName().equals(validType))                    throw new IllegalArgumentException("badType");                if(!thisBPD.isWriteable())                    throw new IllegalArgumentException("notWriteable");                if(thisBPD.isIndexed())                    throw new IllegalArgumentException("noIndexedSupport");                thisBPD.set(factory, value);            }        }    }}

⌨️ 快捷键说明

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