Configure the transport type in the factory definition file. Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/3fc5f20a Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/3fc5f20a Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/3fc5f20a
Branch: refs/heads/master Commit: 3fc5f20abaf46e4c11eaf63622b71ff9a48d0dfe Parents: 698a2ea Author: Timothy Bish <[email protected]> Authored: Tue Jan 20 16:24:24 2015 -0500 Committer: Timothy Bish <[email protected]> Committed: Tue Jan 20 16:24:24 2015 -0500 ---------------------------------------------------------------------- .../qpid/jms/provider/amqp/AmqpProvider.java | 23 ++++-------- .../jms/provider/amqp/AmqpProviderFactory.java | 23 +++++++++++- .../provider/amqp/AmqpSslProviderFactory.java | 37 -------------------- .../org/apache/qpid/jms/util/FactoryFinder.java | 32 ++++++++++++++--- .../services/org/apache/qpid/jms/provider/amqp | 1 + .../org/apache/qpid/jms/provider/amqp+nio | 1 + .../org/apache/qpid/jms/provider/amqp+nio+ssl | 3 +- .../org/apache/qpid/jms/provider/amqp+ssl | 3 +- .../services/org/apache/qpid/jms/provider/amqps | 3 +- 9 files changed, 63 insertions(+), 63 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3fc5f20a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java index dea1750..2ac41d6 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java @@ -91,13 +91,12 @@ public class AmqpProvider implements Provider, TransportListener { // NOTE: Limit default channel max to signed short range to deal with // brokers that don't currently handle the unsigned range well. private static final int DEFAULT_CHANNEL_MAX = 32767; - private static final String DEFAULT_TRANSPORT_KEY = "tcp"; private static final AtomicInteger PROVIDER_SEQUENCE = new AtomicInteger(); private ProviderListener listener; private AmqpConnection connection; private org.apache.qpid.jms.transports.Transport transport; - private String transportKey = DEFAULT_TRANSPORT_KEY; + private String transportType = AmqpProviderFactory.DEFAULT_TRANSPORT_TYPE; private boolean traceFrames; private boolean traceBytes; private boolean presettleConsumers; @@ -155,7 +154,7 @@ public class AmqpProvider implements Provider, TransportListener { checkClosed(); try { - transport = TransportFactory.create(getTransportKey(), getRemoteURI()); + transport = TransportFactory.create(getTransportType(), getRemoteURI()); } catch (Exception e) { throw IOExceptionSupport.create(e); } @@ -919,22 +918,12 @@ public class AmqpProvider implements Provider, TransportListener { this.channelMax = channelMax; } - /** - * @return the transportKey that will be used to create the network level connection. - */ - public String getTransportKey() { - return transportKey; + String getTransportType() { + return transportType; } - /** - * Sets the transport key used to lookup a Transport instance when an attempt - * is made to connect to a remote peer. - * - * @param transportKey - * the tansportKey to used when looking up a Transport to use. - */ - void setTransportKey(String transportKey) { - this.transportKey = transportKey; + void setTransportType(String transportType) { + this.transportType = transportType; } @Override http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3fc5f20a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProviderFactory.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProviderFactory.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProviderFactory.java index 5181d71..814b6c9 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProviderFactory.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProviderFactory.java @@ -28,6 +28,10 @@ import org.apache.qpid.jms.util.PropertyUtil; */ public class AmqpProviderFactory extends ProviderFactory { + public static final String DEFAULT_TRANSPORT_TYPE = "tcp"; + + private String transportType = DEFAULT_TRANSPORT_TYPE; + @Override public Provider createProvider(URI remoteURI) throws Exception { @@ -36,7 +40,9 @@ public class AmqpProviderFactory extends ProviderFactory { remoteURI = PropertyUtil.replaceQuery(remoteURI, map); - Provider result = new AmqpProvider(remoteURI); + AmqpProvider result = new AmqpProvider(remoteURI); + + result.setTransportType(getTransportType()); if (!PropertyUtil.setProperties(result, providerOptions)) { String msg = "" @@ -54,4 +60,19 @@ public class AmqpProviderFactory extends ProviderFactory { public String getName() { return "AMQP"; } + + /** + * @return the transport type used for this provider factory such as 'tcp' or 'ssl' + */ + public String getTransportType() { + return transportType; + } + + /** + * @param transport + * the transport type name to use when creating a new provider. + */ + public void setTransportType(String transportType) { + this.transportType = transportType; + } } http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3fc5f20a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpSslProviderFactory.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpSslProviderFactory.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpSslProviderFactory.java deleted file mode 100644 index a19af00..0000000 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpSslProviderFactory.java +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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.qpid.jms.provider.amqp; - -import java.net.URI; - -import org.apache.qpid.jms.provider.Provider; - -/** - * Extends the AmqpProviderFactory to create an SSL based Provider instance. - */ -public class AmqpSslProviderFactory extends AmqpProviderFactory { - - @Override - public Provider createProvider(URI remoteURI) throws Exception { - AmqpProvider provider = new AmqpProvider(remoteURI); - // TODO - Would be better if we could do away with this and define - // the transport key in the properties file used to find the - // AmqpProcvider instance. - provider.setTransportKey("ssl"); - return provider; - } -} http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3fc5f20a/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/FactoryFinder.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/FactoryFinder.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/FactoryFinder.java index baf9c27..2678188 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/FactoryFinder.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/FactoryFinder.java @@ -147,18 +147,38 @@ public class FactoryFinder<T extends Object> { */ protected static class StandaloneObjectFactory implements ObjectFactory { final ConcurrentHashMap<String, Class<?>> classMap = new ConcurrentHashMap<String, Class<?>>(); + final ConcurrentHashMap<String, Properties> propertiesMap = new ConcurrentHashMap<String, Properties>(); @Override public Object create(final String path) throws InstantiationException, IllegalAccessException, ClassNotFoundException, IOException { Class<?> clazz = classMap.get(path); + Properties properties = propertiesMap.get(path); + if (clazz == null) { - clazz = loadClass(loadProperties(path)); - Class<?> previous = classMap.putIfAbsent(path, clazz); - if (previous != null) { - clazz = previous; + properties = loadProperties(path); + clazz = loadClass(properties); + Class<?> previousClass = classMap.putIfAbsent(path, clazz); + Properties previousProperties = propertiesMap.putIfAbsent(path, properties); + if (previousClass != null) { + clazz = previousClass; + } + if (previousProperties != null) { + properties = previousProperties; } } - return clazz.newInstance(); + + Object factory = clazz.newInstance(); + + if (!PropertyUtil.setProperties(factory, properties)) { + String msg = "" + + " Not all provider options could be set on the found factory." + + " Check the options are spelled correctly." + + " Given parameters=[" + properties + "]." + + " This provider instance cannot be started."; + throw new IllegalArgumentException(msg); + } + + return factory; } static public Class<?> loadClass(Properties properties) throws ClassNotFoundException, IOException { @@ -166,6 +186,8 @@ public class FactoryFinder<T extends Object> { String className = properties.getProperty("class"); if (className == null) { throw new IOException("Expected property is missing: class"); + } else { + properties.remove("class"); } Class<?> clazz = null; ClassLoader loader = Thread.currentThread().getContextClassLoader(); http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3fc5f20a/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqp ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqp b/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqp index fe3ecca..56741dc 100644 --- a/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqp +++ b/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqp @@ -15,3 +15,4 @@ ## limitations under the License. ## --------------------------------------------------------------------------- class=org.apache.qpid.jms.provider.amqp.AmqpProviderFactory +transportType=tcp \ No newline at end of file http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3fc5f20a/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqp+nio ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqp+nio b/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqp+nio index fe3ecca..56741dc 100644 --- a/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqp+nio +++ b/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqp+nio @@ -15,3 +15,4 @@ ## limitations under the License. ## --------------------------------------------------------------------------- class=org.apache.qpid.jms.provider.amqp.AmqpProviderFactory +transportType=tcp \ No newline at end of file http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3fc5f20a/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqp+nio+ssl ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqp+nio+ssl b/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqp+nio+ssl index 69cd431..1f9b566 100644 --- a/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqp+nio+ssl +++ b/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqp+nio+ssl @@ -14,4 +14,5 @@ ## See the License for the specific language governing permissions and ## limitations under the License. ## --------------------------------------------------------------------------- -class=org.apache.qpid.jms.provider.amqp.AmqpSslProviderFactory +class=org.apache.qpid.jms.provider.amqp.AmqProviderFactory +transportType=ssl \ No newline at end of file http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3fc5f20a/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqp+ssl ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqp+ssl b/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqp+ssl index 69cd431..414957b 100644 --- a/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqp+ssl +++ b/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqp+ssl @@ -14,4 +14,5 @@ ## See the License for the specific language governing permissions and ## limitations under the License. ## --------------------------------------------------------------------------- -class=org.apache.qpid.jms.provider.amqp.AmqpSslProviderFactory +class=org.apache.qpid.jms.provider.amqp.AmqpProviderFactory +transportType=ssl \ No newline at end of file http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3fc5f20a/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqps ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqps b/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqps index 69cd431..414957b 100644 --- a/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqps +++ b/qpid-jms-client/src/main/resources/META-INF/services/org/apache/qpid/jms/provider/amqps @@ -14,4 +14,5 @@ ## See the License for the specific language governing permissions and ## limitations under the License. ## --------------------------------------------------------------------------- -class=org.apache.qpid.jms.provider.amqp.AmqpSslProviderFactory +class=org.apache.qpid.jms.provider.amqp.AmqpProviderFactory +transportType=ssl \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
