001/**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.activemq.tool.spi;
018
019import java.util.Properties;
020
021import javax.jms.ConnectionFactory;
022
023import org.apache.activemq.ActiveMQConnectionFactory;
024
025public class ActiveMQPojoSPI implements SPIConnectionFactory {
026    public static final String KEY_BROKER_URL        = "brokerUrl";
027    public static final String KEY_USERNAME          = "username";
028    public static final String KEY_PASSWORD          = "password";
029    public static final String KEY_CLIENT_ID         = "clientID";
030
031    public static final String KEY_ASYNC_SEND        = "asyncSend";
032    public static final String KEY_ASYNC_DISPATCH    = "asyncDispatch";
033    public static final String KEY_ASYNC_SESSION     = "asyncSession";
034    public static final String KEY_CLOSE_TIMEOUT     = "closeTimeout";
035    public static final String KEY_COPY_MSG_ON_SEND  = "copyMsgOnSend";
036    public static final String KEY_DISABLE_TIMESTAMP = "disableTimestamp";
037    public static final String KEY_DEFER_OBJ_SERIAL  = "deferObjSerial";
038    public static final String KEY_OPTIM_ACK         = "optimAck";
039    public static final String KEY_OPTIM_DISPATCH    = "optimDispatch";
040    public static final String KEY_PREFETCH_QUEUE    = "prefetchQueue";
041    public static final String KEY_PREFETCH_TOPIC    = "prefetchTopic";
042    public static final String KEY_USE_COMPRESSION   = "useCompression";
043    public static final String KEY_USE_RETROACTIVE   = "useRetroactive";
044
045    public ConnectionFactory createConnectionFactory(Properties settings) throws Exception {
046        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory();
047        configureConnectionFactory(factory, settings);
048        return factory;
049    }
050
051    public void configureConnectionFactory(ConnectionFactory jmsFactory, Properties settings) throws Exception {
052        ActiveMQConnectionFactory factory = (ActiveMQConnectionFactory)jmsFactory;
053        String setting;
054
055        setting = settings.getProperty(KEY_BROKER_URL);
056        if (setting != null && setting.length() > 0) {
057            factory.setBrokerURL(setting);
058        }
059
060        setting = settings.getProperty(KEY_USERNAME);
061        if (setting != null && setting.length() > 0) {
062            factory.setUserName(setting);
063        }
064
065        setting = settings.getProperty(KEY_PASSWORD);
066        if (setting != null && setting.length() > 0) {
067            factory.setPassword(setting);
068        }
069
070        setting = settings.getProperty(KEY_CLIENT_ID);
071        if (setting != null && setting.length() > 0) {
072            factory.setClientID(setting);
073        }
074
075        setting = settings.getProperty(KEY_ASYNC_SEND);
076        if (setting != null && setting.length() > 0) {
077            factory.setUseAsyncSend(Boolean.getBoolean(setting));
078        }
079
080        setting = settings.getProperty(KEY_ASYNC_DISPATCH);
081        if (setting != null && setting.length() > 0) {
082            factory.setDispatchAsync(Boolean.getBoolean(setting));
083        }
084
085        setting = settings.getProperty(KEY_ASYNC_SESSION);
086        if (setting != null && setting.length() > 0) {
087            factory.setAlwaysSessionAsync(Boolean.getBoolean(setting));
088        }
089
090        setting = settings.getProperty(KEY_CLOSE_TIMEOUT);
091        if (setting != null && setting.length() > 0) {
092            factory.setCloseTimeout(Integer.parseInt(setting));
093        }
094
095        setting = settings.getProperty(KEY_COPY_MSG_ON_SEND);
096        if (setting != null && setting.length() > 0) {
097            factory.setCopyMessageOnSend(Boolean.getBoolean(setting));
098        }
099
100        setting = settings.getProperty(KEY_DISABLE_TIMESTAMP);
101        if (setting != null && setting.length() > 0) {
102            factory.setDisableTimeStampsByDefault(Boolean.getBoolean(setting));
103        }
104
105        setting = settings.getProperty(KEY_DEFER_OBJ_SERIAL);
106        if (setting != null && setting.length() > 0) {
107            factory.setObjectMessageSerializationDefered(Boolean.getBoolean(setting));
108        }
109
110        setting = settings.getProperty(KEY_OPTIM_ACK);
111        if (setting != null && setting.length() > 0) {
112            factory.setOptimizeAcknowledge(Boolean.getBoolean(setting));
113        }
114
115        setting = settings.getProperty(KEY_OPTIM_DISPATCH);
116        if (setting != null && setting.length() > 0) {
117            factory.setOptimizedMessageDispatch(Boolean.getBoolean(setting));
118        }
119
120        setting = settings.getProperty(KEY_PREFETCH_QUEUE);
121        if (setting != null && setting.length() > 0) {
122            factory.getPrefetchPolicy().setQueuePrefetch(Integer.parseInt(setting));
123        }
124
125        setting = settings.getProperty(KEY_PREFETCH_TOPIC);
126        if (setting != null && setting.length() > 0) {
127            factory.getPrefetchPolicy().setTopicPrefetch(Integer.parseInt(setting));
128        }
129
130        setting = settings.getProperty(KEY_USE_COMPRESSION);
131        if (setting != null && setting.length() > 0) {
132            factory.setUseCompression(Boolean.getBoolean(setting));
133        }
134
135        setting = settings.getProperty(KEY_USE_RETROACTIVE);
136        if (setting != null && setting.length() > 0) {
137            factory.setUseRetroactiveConsumer(Boolean.getBoolean(setting));
138        }
139    }
140}