You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by js...@apache.org on 2007/03/28 20:34:35 UTC

svn commit: r523434 - in /activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms: JmsComponent.java JmsEndpoint.java JmsEndpointResolver.java

Author: jstrachan
Date: Wed Mar 28 11:34:34 2007
New Revision: 523434

URL: http://svn.apache.org/viewvc?view=rev&rev=523434
Log:
added URI customization using URI query parameters

Modified:
    activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
    activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
    activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpointResolver.java

Modified: activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java?view=diff&rev=523434&r1=523433&r2=523434
==============================================================================
--- activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java (original)
+++ activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java Wed Mar 28 11:34:34 2007
@@ -21,9 +21,14 @@
 import org.apache.camel.CamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.URISupport;
 
 import javax.jms.ConnectionFactory;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Map;
 
 /**
  * @version $Revision:520964 $
@@ -77,14 +82,14 @@
         this.configuration = new JmsConfiguration();
     }
 
-    public JmsEndpoint createEndpoint(Uri uri) {
+    public JmsEndpoint createEndpoint(Uri uri) throws URISyntaxException {
         // lets figure out from the URI whether its a queue, topic etc
 
         String path = uri.getPath();
         return createEndpoint(uri.toString(), path);
     }
 
-    public JmsEndpoint createEndpoint(String uri, String path) {
+    public JmsEndpoint createEndpoint(String uri, String path) throws URISyntaxException {
         ObjectHelper.notNull(getContext(), "container");
 
         boolean pubSubDomain = false;
@@ -99,16 +104,17 @@
 
         final String subject = convertPathToActualDestination(path);
 
-        /*
-        Destination destination = (Destination) template.execute(new SessionCallback() {
-            public Object doInJms(Session session) throws JMSException {
-                return template.getDestinationResolver().resolveDestinationName(session, subject, template.isPubSubDomain());
-            }
-        });
-        */
+        // lets make sure we copy the configuration as each endpoint can customize its own version
+        JmsEndpoint endpoint = new JmsEndpoint(uri, getContext(), subject, pubSubDomain, getConfiguration().copy());
 
-        // TODO configure endpoint configuration and selector using URI properties
-        return new JmsEndpoint(uri, getContext(), subject, pubSubDomain, getConfiguration().copy());
+        URI u = new URI(uri);
+        Map options = URISupport.parseParamters(u);
+        String selector = (String) options.remove("selector");
+        if (selector != null) {
+            endpoint.setSelector(selector);
+        }
+        IntrospectionSupport.setProperties(endpoint.getConfiguration(), options);
+        return endpoint;
     }
 
     public JmsConfiguration getConfiguration() {

Modified: activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java?view=diff&rev=523434&r1=523433&r2=523434
==============================================================================
--- activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java (original)
+++ activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java Wed Mar 28 11:34:34 2007
@@ -20,12 +20,16 @@
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.util.URISupport;
+import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.impl.DefaultEndpoint;
 import org.springframework.jms.core.JmsOperations;
 import org.springframework.jms.core.JmsTemplate;
 import org.springframework.jms.listener.AbstractMessageListenerContainer;
 
 import javax.jms.Message;
+import java.net.URI;
+import java.util.Map;
 
 /**
  * @version $Revision:520964 $
@@ -77,10 +81,9 @@
     public Consumer<JmsExchange> createConsumer(Processor<JmsExchange> processor, AbstractMessageListenerContainer listenerContainer) throws Exception {
         listenerContainer.setDestinationName(destination);
         listenerContainer.setPubSubDomain(pubSubDomain);
-
-        // TODO support optional parameters
-        // selector
-
+        if (selector != null) {
+            listenerContainer.setMessageSelector(selector);
+        }
         return startService(new JmsConsumer(this, processor, listenerContainer));
     }
 

Modified: activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpointResolver.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpointResolver.java?view=diff&rev=523434&r1=523433&r2=523434
==============================================================================
--- activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpointResolver.java (original)
+++ activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpointResolver.java Wed Mar 28 11:34:34 2007
@@ -23,6 +23,7 @@
 import org.apache.camel.util.ObjectHelper;
 
 import java.util.concurrent.Callable;
+import java.net.URISyntaxException;
 
 /**
  * An implementation of {@link EndpointResolver} that creates
@@ -52,7 +53,7 @@
      * Finds the {@see QueueEndpoint} specified by the uri.  If the {@see QueueEndpoint} or it's associated
      * {@see QueueComponent} object do not exist, they will be created.
      */
-    public JmsEndpoint resolveEndpoint(CamelContext container, String uri) {
+    public JmsEndpoint resolveEndpoint(CamelContext container, String uri) throws URISyntaxException {
         String id[] = getEndpointId(uri);
         JmsComponent component = resolveJmsComponent(container, id[0]);
         return component.createEndpoint(uri, id[1]);