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 */
017 package org.apache.activemq.tool.spi;
018
019 import java.util.Properties;
020
021 import javax.jms.ConnectionFactory;
022
023 import org.apache.activemq.ActiveMQConnectionFactory;
024
025 public 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 }