Author: cschneider
Date: Sun Oct  5 05:49:52 2008
New Revision: 701783

URL: http://svn.apache.org/viewvc?rev=701783&view=rev
Log:
CXF-1832 Example for JMSConfigFeature

Added:
    
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfigFeature.java
Modified:
    
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
    
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java
    
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSDestination.java
    
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSFactory.java
    
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOldConfigHolder.java

Modified: 
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java?rev=701783&r1=701782&r2=701783&view=diff
==============================================================================
--- 
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
 (original)
+++ 
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
 Sun Oct  5 05:49:52 2008
@@ -69,6 +69,12 @@
      * JMSOutputStream will then call back the sendExchange method of this 
class. [EMAIL PROTECTED]
      */
     public void prepare(Message message) throws IOException {
+        if (jmsConfig.getTargetDestination() == null || 
jmsConfig.getConnectionFactory() == null) {
+            String name =  ".jms-conduit";
+            throw new RuntimeException("Insufficient configuration for 
Conduit. "
+                                       + "Did you configure a <jms:conduit 
name=\"" + name
+                                       + "\"> and set the 
jndiConnectionFactoryName ?");
+        }
         boolean isTextPayload = 
JMSConstants.TEXT_MESSAGE_TYPE.equals(jmsConfig.getMessageType());
         JMSOutputStream out = new JMSOutputStream(this, message.getExchange(), 
isTextPayload);
         message.setContent(OutputStream.class, out);

Added: 
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfigFeature.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfigFeature.java?rev=701783&view=auto
==============================================================================
--- 
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfigFeature.java
 (added)
+++ 
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfigFeature.java
 Sun Oct  5 05:49:52 2008
@@ -0,0 +1,54 @@
+/**
+ * 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.cxf.transport.jms;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.endpoint.Client;
+import org.apache.cxf.feature.AbstractFeature;
+import org.apache.cxf.transport.Conduit;
+import org.springframework.beans.factory.annotation.Required;
+
+/**
+ * Allows to configure the JMSConfiguration directly at the Client or 
Endpoint. Simply add this class to the
+ * Features and reference a JMSConfiguration. The configuration inside this 
class takes precedence over a
+ * configuration that is generated from the old configuration style.
+ */
+public class JMSConfigFeature extends AbstractFeature {
+    JMSConfiguration jmsConfig;
+
+    @Override
+    public void initialize(Client client, Bus bus) {
+        Conduit conduit = client.getConduit();
+        if (conduit instanceof JMSConduit && jmsConfig != null) {
+            JMSConduit jmsConduit = (JMSConduit)conduit;
+            jmsConduit.setJmsConfig(jmsConfig);
+        }
+        super.initialize(client, bus);
+    }
+
+    public JMSConfiguration getJmsConfig() {
+        return jmsConfig;
+    }
+
+    @Required
+    public void setJmsConfig(JMSConfiguration jmsConfig) {
+        this.jmsConfig = jmsConfig;
+    }
+
+}

Modified: 
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java?rev=701783&r1=701782&r2=701783&view=diff
==============================================================================
--- 
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java
 (original)
+++ 
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java
 Sun Oct  5 05:49:52 2008
@@ -23,6 +23,7 @@
 
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Required;
+import org.springframework.core.task.TaskExecutor;
 import org.springframework.jms.core.JmsTemplate;
 import org.springframework.jms.support.destination.DestinationResolver;
 import org.springframework.transaction.PlatformTransactionManager;
@@ -31,6 +32,7 @@
     private ConnectionFactory connectionFactory;
     private DestinationResolver destinationResolver;
     private PlatformTransactionManager transactionManager;
+    private TaskExecutor taskExecutor;
     private boolean useJms11 = true;
     private boolean useJndi;
     private boolean messageIdEnabled = true;
@@ -42,6 +44,9 @@
     private int priority = Message.DEFAULT_PRIORITY;
     private long timeToLive = Message.DEFAULT_TIME_TO_LIVE;
     private boolean sessionTransacted;
+    
+    private int concurrentConsumers = 1;
+    private int maxConcurrentConsumers = 1;
 
     private volatile String messageSelector;
     private boolean subscriptionDurable;
@@ -227,4 +232,28 @@
         this.transactionManager = transactionManager;
     }
 
+    public int getConcurrentConsumers() {
+        return concurrentConsumers;
+    }
+
+    public void setConcurrentConsumers(int concurrentConsumers) {
+        this.concurrentConsumers = concurrentConsumers;
+    }
+
+    public int getMaxConcurrentConsumers() {
+        return maxConcurrentConsumers;
+    }
+
+    public void setMaxConcurrentConsumers(int maxConcurrentConsumers) {
+        this.maxConcurrentConsumers = maxConcurrentConsumers;
+    }
+
+    public TaskExecutor getTaskExecutor() {
+        return taskExecutor;
+    }
+
+    public void setTaskExecutor(TaskExecutor taskExecutor) {
+        this.taskExecutor = taskExecutor;
+    }
+
 }

Modified: 
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSDestination.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSDestination.java?rev=701783&r1=701782&r2=701783&view=diff
==============================================================================
--- 
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSDestination.java
 (original)
+++ 
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSDestination.java
 Sun Oct  5 05:49:52 2008
@@ -89,6 +89,12 @@
      */
     public void activate() {
         getLogger().log(Level.INFO, "JMSDestination activate().... ");
+        String name = endpointInfo.getName().toString() + ".jms-destination";
+        if (jmsConfig.getTargetDestination() == null || 
jmsConfig.getConnectionFactory() == null) {
+            throw new RuntimeException("Insufficient configuration for 
Destination. "
+                                       + "Did you configure a <jms:destination 
name=\"" + name
+                                       + "\"> and set the 
jndiConnectionFactoryName ?");
+        }
         jmsListener = JMSFactory.createJmsListener(jmsConfig, this, 
jmsConfig.getTargetDestination());
         jmsConfig.getTargetDestination();
     }

Modified: 
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSFactory.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSFactory.java?rev=701783&r1=701782&r2=701783&view=diff
==============================================================================
--- 
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSFactory.java
 (original)
+++ 
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSFactory.java
 Sun Oct  5 05:49:52 2008
@@ -79,24 +79,30 @@
     public static DefaultMessageListenerContainer 
createJmsListener(JMSConfiguration jmsConfig,
                                                                     
MessageListener listenerHandler,
                                                                     String 
destinationName) {
-        DefaultMessageListenerContainer jmsListener2 = jmsConfig.isUseJms11()
+        DefaultMessageListenerContainer jmsListener = jmsConfig.isUseJms11()
             ? new DefaultMessageListenerContainer() : new 
DefaultMessageListenerContainer102();
-        jmsListener2.setPubSubDomain(jmsConfig.isPubSubDomain());
-        jmsListener2.setAutoStartup(true);
-        jmsListener2.setConnectionFactory(jmsConfig.getConnectionFactory());
-        jmsListener2.setMessageSelector(jmsConfig.getMessageSelector());
-        
jmsListener2.setDurableSubscriptionName(jmsConfig.getDurableSubscriptionName());
-        jmsListener2.setSessionTransacted(jmsConfig.isSessionTransacted());
-        jmsListener2.setTransactionManager(jmsConfig.getTransactionManager());
-        jmsListener2.setMessageListener(listenerHandler);
+        jmsListener.setConcurrentConsumers(jmsConfig.getConcurrentConsumers());
+        
jmsListener.setMaxConcurrentConsumers(jmsConfig.getMaxConcurrentConsumers());
+        jmsListener.setPubSubDomain(jmsConfig.isPubSubDomain());
+        jmsListener.setAutoStartup(true);
+        jmsListener.setConnectionFactory(jmsConfig.getConnectionFactory());
+        jmsListener.setMessageSelector(jmsConfig.getMessageSelector());
+        
jmsListener.setDurableSubscriptionName(jmsConfig.getDurableSubscriptionName());
+        jmsListener.setSessionTransacted(jmsConfig.isSessionTransacted());
+        jmsListener.setTransactionManager(jmsConfig.getTransactionManager());
+        jmsListener.setMessageListener(listenerHandler);
         if (jmsConfig.getDestinationResolver() != null) {
-            
jmsListener2.setDestinationResolver(jmsConfig.getDestinationResolver());
+            
jmsListener.setDestinationResolver(jmsConfig.getDestinationResolver());
+        }
+        if (jmsConfig.getTaskExecutor() != null) {
+            jmsListener.setTaskExecutor(jmsConfig.getTaskExecutor());
         }
         JmsTemplate jmsTemplate = createJmsTemplate(jmsConfig, null);
-        
jmsListener2.setDestination(JMSFactory.resolveOrCreateDestination(jmsTemplate, 
destinationName,
-                                                                          
jmsConfig.isPubSubDomain()));
-        jmsListener2.initialize();
-        return jmsListener2;
+        Destination dest = JMSFactory.resolveOrCreateDestination(jmsTemplate, 
destinationName, jmsConfig
+            .isPubSubDomain());
+        jmsListener.setDestination(dest);
+        jmsListener.initialize();
+        return jmsListener;
     }
 
     /**

Modified: 
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOldConfigHolder.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOldConfigHolder.java?rev=701783&r1=701782&r2=701783&view=diff
==============================================================================
--- 
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOldConfigHolder.java
 (original)
+++ 
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOldConfigHolder.java
 Sun Oct  5 05:49:52 2008
@@ -136,14 +136,6 @@
 
         jmsConfig.setConnectionFactory(cf);
 
-        if (jmsConfig.getTargetDestination() == null || 
jmsConfig.getConnectionFactory() == null) {
-            throw new RuntimeException("Insufficient configuration for "
-                                       + (isConduit ? "Conduit" : 
"Destination") + ". "
-                                       + "Did you configure a <jms:"
-                                       + (isConduit ? "conduit" : 
"destination") + " name=\"" + name
-                                       + "\"> and set the 
jndiConnectionFactoryName ?");
-        }
-
         return jmsConfig;
     }
 


Reply via email to