org.apache.axis.components.jms.BeanVendorAdapter Maven / Gradle / Ivy
/*
* 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 ([email protected])
*/
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);
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy