You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sl...@apache.org on 2007/06/10 22:10:38 UTC

svn commit: r545928 - in /incubator/tuscany/java/sca/modules/binding-jms: ./ src/main/java/org/apache/tuscany/sca/binding/jms/ src/test/java/org/apache/tuscany/sca/binding/jms/ src/test/resources/

Author: slaws
Date: Sun Jun 10 13:10:37 2007
New Revision: 545928

URL: http://svn.apache.org/viewvc?view=rev&rev=545928
Log:
TUSCANY-1311
Allow destination and response destination queues to be specified
Some general tidying

Added:
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSResourceFactoryActiveMQImpl.java
      - copied, changed from r545149, incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSResourceFactorySimpleImpl.java
Removed:
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSResourceFactorySimpleImpl.java
Modified:
    incubator/tuscany/java/sca/modules/binding-jms/pom.xml
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBinding.java
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingConstants.java
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingImpl.java
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingInvoker.java
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingProcessor.java
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingReferenceBindingProvider.java
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingServiceBindingProvider.java
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSResourceFactory.java
    incubator/tuscany/java/sca/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/HelloWorldClientImpl.java
    incubator/tuscany/java/sca/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/JMSTestCase.java
    incubator/tuscany/java/sca/modules/binding-jms/src/test/resources/JMSBindingTest.composite

Modified: incubator/tuscany/java/sca/modules/binding-jms/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/pom.xml?view=diff&rev=545928&r1=545927&r2=545928
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/pom.xml Sun Jun 10 13:10:37 2007
@@ -83,7 +83,8 @@
         <dependency>
             <groupId>org.apache.activemq</groupId>
             <artifactId>apache-activemq</artifactId>
-            <version>4.1.1</version>
+            <!--version>4.2-SNAPSHOT</version-->
+            <version>4.2-SNAPSHOT</version>
         </dependency>  
 
         <dependency>
@@ -107,29 +108,4 @@
 
     </dependencies>
     
-    <!-- build>
-        <plugins>    
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-antrun-plugin</artifactId>
-                <version>1.1</version>
-                <executions>
-                    <execution> 
-                        <id>run-activemq</id>                       
-                        <phase>validate</phase>
-                        <goals>
-                            <goal>run</goal>
-                        </goals>
-                        <configuration>
-                            <tasks>
-                                <ant antfile="./run-activemq.xml" target="run">
-                                        <property name="localRepository" value="${settings.localRepository}"/>
-                                </ant>
-                            </tasks>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>  
-        </plugins>
-    </build-->
 </project>

Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBinding.java?view=diff&rev=545928&r1=545927&r2=545928
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBinding.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBinding.java Sun Jun 10 13:10:37 2007
@@ -41,8 +41,8 @@
     public String getDestinationName();
     public void setDestinationName(String destinationName);
     
-    public int getDestinationType();
-    public void setDestinationType(int destinationType);    
+    public String getDestinationType();
+    public void setDestinationType(String destinationType);    
     
     public String getDestinationCreate();    
     public void setDestinationCreate(String create);
@@ -62,11 +62,23 @@
     public String getResponseDestinationName();   
     public void setResponseDestinationName(String name);    
     
-    public int getResponseDestinationType(); 
-    public void setResponseDestinationType(int type); 
+    public String getResponseDestinationType(); 
+    public void setResponseDestinationType(String type); 
     
-    public String getresponseDestinationCreate();   
-    public void setresponseDestinationCreate(String create);  
+    public String getResponseDestinationCreate();   
+    public void setResponseDestinationCreate(String create);  
+
+    public String getResponseConnectionFactoryName();
+    public void setResponseConnectionFactoryName(String connectionFactoryName);
+    
+    public String getResponseConnectionFactoryCreate();
+    public void setResponseConnectionFactoryCreate(String create);
+
+    public String getResponseActivationSpecName();
+    public void setResponseActivationSpecName(String activationSpecName);
+    
+    public String getResponseActivationSpecCreate();
+    public void setResponseActivationSpecCreate(String create);
     
     public int getDeliveryMode();
     public void setDeliveryMode(int deliveryMode);
@@ -97,5 +109,7 @@
     public void setOperationSelectorName(String operationSelectorName);
     
     public boolean getXMLFormat();
-    public void setXMLFormat(boolean b);     
+    public void setXMLFormat(boolean b);  
+    
+    public void validate() throws JMSBindingException;
 }

Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingConstants.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingConstants.java?view=diff&rev=545928&r1=545927&r2=545928
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingConstants.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingConstants.java Sun Jun 10 13:10:37 2007
@@ -19,6 +19,7 @@
 package org.apache.tuscany.sca.binding.jms;
 
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 
 import javax.xml.namespace.QName;
@@ -29,27 +30,29 @@
 
     // Contants used when describing the JMS binding
     // model and for setting up defaults
-    public static final String BINDING_JMS                       = "binding.jms";
-    public static final QName  BINDING_JMS_QNAME                 = new QName(Constants.SCA10_NS, BINDING_JMS);    
+    public final static String BINDING_JMS                       = "binding.jms";
+    public final static QName  BINDING_JMS_QNAME                 = new QName(Constants.SCA10_NS, BINDING_JMS);    
     public final static String CORRELATE_MSG_ID                  = "requestmsgidtocorrelid";
     public final static String CORRELATE_CORRELATION_ID          = "requestcorrelidtocorrelid";
     public final static String CORRELATE_NONE                    = "none";
-    public static final List<String> VALID_CORRELATION_SCHEMES   = Arrays.asList(new String[] {CORRELATE_MSG_ID, 
+    public final static List<String> VALID_CORRELATION_SCHEMES   = Arrays.asList(new String[] {CORRELATE_MSG_ID, 
                                                                                                CORRELATE_CORRELATION_ID, 
                                                                                                CORRELATE_NONE});    
-    public final static int    DESTINATION_TYPE_QUEUE            = 0;
-    public final static int    DESTINATION_TYPE_TOPIC            = 1;
-    public final static String CREATE_ALLWAYS                    = "allways";
+    public final static String DESTINATION_TYPE_QUEUE            = "queue"; //0
+    public final static String DESTINATION_TYPE_TOPIC            = "topic"; //1
+    public final static List<String> VALID_DESTINATION_TYPES     = Arrays.asList(new String[] {DESTINATION_TYPE_QUEUE, 
+                                                                                               DESTINATION_TYPE_TOPIC});    
+    public final static String CREATE_ALLWAYS                    = "always";
     public final static String CREATE_NEVER                      = "never";    
-    public final static String DEFAULT_DESTINATION_NAME          = "dynamicQueues/SCARequestQ";
-    public final static String DEFAULT_RESPONSE_DESTINATION_NAME = "dynamicQueues/SCAResponseQ";    
+    public final static String DEFAULT_DESTINATION_NAME          = "NODESTINATION";
+    public final static String DEFAULT_RESPONSE_DESTINATION_NAME = "NORESPONSEDESTINATION";    
     public final static String DEFAULT_CONNECTION_FACTORY_NAME   = "ConnectionFactory";    
     public final static String DEFAULT_CONTEXT_FACTORY_NAME      = "org.apache.activemq.jndi.ActiveMQInitialContextFactory";
     public final static String DEFAULT_JNDI_URL                  = "tcp://localhost:61616";
     public final static int    DEFAULT_TIME_TO_LIVE              = 10000; // in milli seconds
     public final static int    DEFAULT_PRIORITY                  = 1; 
-    public static final String DEFAULT_RF_CLASSNAME              = JMSResourceFactorySimpleImpl.class.getName();    
-    public static final String DEFAULT_MP_CLASSNAME              = JMSMessageProcessorImpl.class.getName();
-    public static final String DEFAULT_OPERATION_PROP_NAME       = "scaOperationName";
+    public final static String DEFAULT_RF_CLASSNAME              = JMSResourceFactoryActiveMQImpl.class.getName();    
+    public final static String DEFAULT_MP_CLASSNAME              = JMSMessageProcessorImpl.class.getName();
+    public final static String DEFAULT_OPERATION_PROP_NAME       = "scaOperationName";
 
 }

Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingImpl.java?view=diff&rev=545928&r1=545927&r2=545928
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingImpl.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingImpl.java Sun Jun 10 13:10:37 2007
@@ -37,7 +37,7 @@
     
     // properties required to implement the Tuscany 
     // binding extension SPI
-    private String uri                   = null;
+    private String uri                   = null; 
     private String name                  = null;
     private boolean unresolved           = false;    
     private List<PolicySet> policySets   = new ArrayList<PolicySet>();
@@ -49,80 +49,105 @@
     // Properties required to describe the JMS 
     // binding model
     
-    // <binding.jms correlationScheme="string"?
-    //              initialContextFactory="xs:anyURI"?
-    //              jndiURL="xs:anyURI"?
-    //              requestConnection="QName"?
-    //              responseConnection="QName"?
-    //              operationProperties="QName"?
+    // <binding.jms correlationScheme="string"?            Not yet implemented in binding     
+    //              initialContextFactory="xs:anyURI"?     
+    //              jndiURL="xs:anyURI"?                   
+    //              requestConnection="QName"?             Not yet implemented in binding
+    //              responseConnection="QName"?            Not yet implemented in binding
+    //              operationProperties="QName"?           Not yet implemented in binding
     //              ...>
     private String correlationScheme         = JMSBindingConstants.CORRELATE_MSG_ID;    
     private String initialContextFactoryName = JMSBindingConstants.DEFAULT_CONTEXT_FACTORY_NAME;
     private String jndiURL                   = JMSBindingConstants.DEFAULT_JNDI_URL;  
+    private String requestConnection         = null;
+    private String responseConnection        = null;
+    private String operationProperties       = null;
     // 
-    //     <destination name="xs:anyURI" type="string"? create="string"?>
-    //         <property name="NMTOKEN" type="NMTOKEN">*
+    //     <destination name="xs:anyURI"                   
+    //                  type="string"?                     Not yet implemented in binding
+    //                  create="string"?>                  Not yet implemented in binding
+    //         <property name="NMTOKEN"                    Not yet implemented in binding
+    //                   type="NMTOKEN">*                  Not yet implemented in binding
     //     </destination>?
     private String destinationName           = JMSBindingConstants.DEFAULT_DESTINATION_NAME; 
-    private int    destinationType           = JMSBindingConstants.DESTINATION_TYPE_QUEUE;    
-    private String destinationCreate         = JMSBindingConstants.CREATE_ALLWAYS; 
+    private String destinationType           = JMSBindingConstants.DESTINATION_TYPE_QUEUE;    
+    private String destinationCreate         = JMSBindingConstants.CREATE_NEVER; 
     // 
-    //     <connectionFactory name="xs:anyURI" create="string"?>
-    //         <property name="NMTOKEN" type="NMTOKEN">*
+    //     <connectionFactory name="xs:anyURI"             Not yet implemented in binding
+    //                        create="string"?>            Not yet implemented in binding
+    //         <property name="NMTOKEN"                    Not yet implemented in binding
+    //                   type="NMTOKEN">*                  Not yet implemented in binding
     //     </connectionFactory>?
     private String connectionFactoryName     = JMSBindingConstants.DEFAULT_CONNECTION_FACTORY_NAME;
-    private String connectionFactoryCreate   = JMSBindingConstants.CREATE_ALLWAYS;    
+    private String connectionFactoryCreate   = JMSBindingConstants.CREATE_NEVER;    
     // 
-    //     <activationSpec name="xs:anyURI" create="string"?>
-    //         <property name="NMTOKEN" type="NMTOKEN">*
+    //     <activationSpec name="xs:anyURI"                Not yet implemented in binding
+    //                     create="string"?>               Not yet implemented in binding
+    //         <property name="NMTOKEN"                    Not yet implemented in binding
+    //                   type="NMTOKEN">*                  Not yet implemented in binding
     //     </activationSpec>?
     private String activationSpecName        = null;
     private String activationSpecCreate      = null;
     // 
     //     <response>
-    //         <destination name="xs:anyURI" type="string"? create="string"?>
-    //             <property name="NMTOKEN" type="NMTOKEN">*
+    //         <destination name="xs:anyURI"               
+    //                      type="string"?                 Not yet implemented in binding
+    //                      create="string"?>              Not yet implemented in binding
+    //             <property name="NMTOKEN"                Not yet implemented in binding
+    //                       type="NMTOKEN">*              Not yet implemented in binding
     //         </destination>?
     private String responseDestinationName   = JMSBindingConstants.DEFAULT_RESPONSE_DESTINATION_NAME; 
-    private int    responseDestinationType   = JMSBindingConstants.DESTINATION_TYPE_QUEUE;    
-    private String responseDestinationCreate = JMSBindingConstants.CREATE_ALLWAYS;    
+    private String responseDestinationType   = JMSBindingConstants.DESTINATION_TYPE_QUEUE;    
+    private String responseDestinationCreate = JMSBindingConstants.CREATE_NEVER;    
     // 
-    //         <connectionFactory name="xs:anyURI" create="string"?>
-    //             <property name="NMTOKEN" type="NMTOKEN">*
+    //         <connectionFactory name="xs:anyURI"         Not yet implemented in binding
+    //                            create="string"?>        Not yet implemented in binding
+    //             <property name="NMTOKEN"                Not yet implemented in binding
+    //                       type="NMTOKEN">*              Not yet implemented in binding
     //         </connectionFactory>?
     private String responseConnectionFactoryName     = JMSBindingConstants.DEFAULT_CONNECTION_FACTORY_NAME;
-    private String responseConnectionFactoryCreate   = JMSBindingConstants.CREATE_ALLWAYS;    
+    private String responseConnectionFactoryCreate   = JMSBindingConstants.CREATE_NEVER;    
     // 
-    //         <activationSpec name="xs:anyURI" create="string"?>
-    //             <property name="NMTOKEN" type="NMTOKEN">*
+    //         <activationSpec name="xs:anyURI"            Not yet implemented in binding
+    //                         create="string"?>           Not yet implemented in binding
+    //             <property name="NMTOKEN"                Not yet implemented in binding
+    //                       type="NMTOKEN">*              Not yet implemented in binding
     //         </activationSpec>?
     private String responseActivationSpecName        = null;
     private String responseActivationSpecCreate      = null;    
     //     </response>?
     // 
-    //     <resourceAdapter name="NMTOKEN">?
-    //         <property name="NMTOKEN" type="NMTOKEN">*
+    //     <resourceAdapter name="NMTOKEN">?               Not yet implemented in binding
+    //         <property name="NMTOKEN"                    Not yet implemented in binding
+    //                   type="NMTOKEN">*                  Not yet implemented in binding
     //     </resourceAdapter>?
+    private String resourceAdapterName       = null;
     // 
-    //     <headers JMSType="string"?
-    //              JMSCorrelationId="string"?
-    //              JMSDeliveryMode="string"?
-    //              JMSTimeToLive="int"?
-    //              JMSPriority="string"?>
-    //         <property name="NMTOKEN" type="NMTOKEN">*
+    //     <headers JMSType="string"?                      Not yet implemented in binding
+    //              JMSCorrelationId="string"?             Not yet implemented in binding
+    //              JMSDeliveryMode="string"?              Not yet implemented in binding
+    //              JMSTimeToLive="int"?                   Not yet implemented in binding
+    //              JMSPriority="string"?>                 Not yet implemented in binding
+    //         <property name="NMTOKEN"                    Not yet implemented in binding
+    //                   type="NMTOKEN">*                  Not yet implemented in binding
     //     </headers>?
-    private int deliveryMode                 = DeliveryMode.NON_PERSISTENT; // Maps to javax.jms.DeliveryMode
-    private int timeToLive                   = JMSBindingConstants.DEFAULT_TIME_TO_LIVE;
-    private int priority                     = JMSBindingConstants.DEFAULT_PRIORITY;    
+    private String jmsType                   = null;
+    private String jmsCorrelationId          = null;
+    private int    jmsDeliveryMode           = DeliveryMode.NON_PERSISTENT; // Maps to javax.jms.DeliveryMode
+    private int    jmsTimeToLive             = JMSBindingConstants.DEFAULT_TIME_TO_LIVE;
+    private int    jmsPriority               = JMSBindingConstants.DEFAULT_PRIORITY;    
     // 
-    //     <operationProperties name="string" nativeOperation="string"?>
-    //         <property name="NMTOKEN" type="NMTOKEN">*
-    //         <headers JMSType="string"?
-    //                  JMSCorrelationId="string"?
-    //                  JMSDeliveryMode="string"?
-    //                  JMSTimeToLive="int"?
-    //                  JMSPriority="string"?>
-    //             <property name="NMTOKEN" type="NMTOKEN">*
+    //     <operationProperties name="string"              Not yet implemented in binding
+    //                          nativeOperation="string"?> Not yet implemented in binding
+    //         <property name="NMTOKEN"                    Not yet implemented in binding
+    //                   type="NMTOKEN">*                  Not yet implemented in binding
+    //         <headers JMSType="string"?                  Not yet implemented in binding
+    //                  JMSCorrelationId="string"?         Not yet implemented in binding
+    //                  JMSDeliveryMode="string"?          Not yet implemented in binding
+    //                  JMSTimeToLive="int"?               Not yet implemented in binding
+    //                  JMSPriority="string"?>             Not yet implemented in binding
+    //             <property name="NMTOKEN"                Not yet implemented in binding
+    //                       type="NMTOKEN">*              Not yet implemented in binding
     //         </headers>?
     //     </operationProperties>*
     // </binding.jms>
@@ -254,10 +279,10 @@
         this.destinationName = destinationName;
     }
     
-    public int getDestinationType() {
+    public String getDestinationType() {
         return destinationType;
     }
-    public void setDestinationType(int destinationType) {
+    public void setDestinationType(String destinationType) {
         this.destinationType = destinationType;
     }    
     
@@ -303,39 +328,67 @@
         this.responseDestinationName = name;
     }     
     
-    public int getResponseDestinationType() {
+    public String getResponseDestinationType() {
         return this.responseDestinationType;
     }     
-    public void setResponseDestinationType(int type) {
+    public void setResponseDestinationType(String type) {
         this.responseDestinationType = type;
     }     
     
-    public String getresponseDestinationCreate() {
+    public String getResponseDestinationCreate() {
         return this.responseDestinationCreate;
     }     
-    public void setresponseDestinationCreate(String create) {
+    public void setResponseDestinationCreate(String create) {
         this.responseDestinationCreate = create;
-    }      
+    }    
+    
+    public String getResponseConnectionFactoryName() {
+        return responseConnectionFactoryName;
+    }
+    public void setResponseConnectionFactoryName(String connectionFactoryName) {
+        this.responseConnectionFactoryName = connectionFactoryName;
+    } 
+    
+    public String getResponseConnectionFactoryCreate() {
+        return this.responseConnectionFactoryCreate;
+    }     
+    public void setResponseConnectionFactoryCreate(String create) {
+        this.responseConnectionFactoryCreate = create;
+    }    
+    
+    public String getResponseActivationSpecName() {
+        return responseActivationSpecName;
+    }
+    public void setResponseActivationSpecName(String activationSpecName) {
+        this.responseActivationSpecName = activationSpecName;
+    }  
+    
+    public String getResponseActivationSpecCreate() {
+        return this.responseActivationSpecCreate;
+    }     
+    public void setResponseActivationSpecCreate(String create) {
+        this.responseActivationSpecCreate = create;
+    }     
     
     public int getDeliveryMode() {
-        return deliveryMode;
+        return jmsDeliveryMode;
     }
     public void setDeliveryMode(int deliveryMode) {
-        this.deliveryMode = deliveryMode;
+        this.jmsDeliveryMode = deliveryMode;
     } 
     
     public int getTimeToLive() {
-        return timeToLive;
+        return jmsTimeToLive;
     }
     public void setTimeToLive(int timeToLive) {
-        this.timeToLive = timeToLive;
+        this.jmsTimeToLive = timeToLive;
     } 
     
     public int getPriority() {
-        return priority;
+        return jmsPriority;
     }
     public void setPriority(int priority) {
-        this.priority = priority;
+        this.jmsPriority = priority;
     }    
     
     // operations to manage the other information required by the 
@@ -424,7 +477,45 @@
         }
         
         return instance;
-    }    
+    }   
+    
+    /**
+     * The validation rules for the JMS model are relatively complicated to 
+     * they all live together here
+     */
+    public void validate() throws JMSBindingException {
+        /*
+         * first fix up anything now the model 
+         * has been read
+         */
+        
+        if (getDestinationName().equals(JMSBindingConstants.DEFAULT_DESTINATION_NAME)){
+            /*
+             * No desitnation name has been set so make sure that
+             * the runtime is able to create one automatically
+             */
+            setDestinationCreate(JMSBindingConstants.CREATE_ALLWAYS);
+        }
+        
+        if (getResponseDestinationName().equals(JMSBindingConstants.DEFAULT_RESPONSE_DESTINATION_NAME)){
+            /*
+             * No repsonse desitination name has been set so make sure that
+             * the runtime is able to create one automatically
+             */
+            setResponseDestinationCreate(JMSBindingConstants.CREATE_ALLWAYS);
+        }   
+        
+        
+        /*
+         * Now some cross field validation
+         */
+        
+        // connection factory doesn't contradict detsination type
+        
+        // connection factory and activation spec are mutually exclusive
+        
+        // TODO check spec for all validations
+    }
     
     
 // TODO...    

Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingInvoker.java?view=diff&rev=545928&r1=545927&r2=545928
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingInvoker.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingInvoker.java Sun Jun 10 13:10:37 2007
@@ -61,7 +61,32 @@
         responseMessageProcessor = jmsBinding.getResponseMessageProcessor();
         try {
             requestDest          = jmsResourceFactory.lookupDestination(jmsBinding.getDestinationName());
-            replyDest            = jmsResourceFactory.lookupDestination(jmsBinding.getResponseDestinationName());          
+            
+            if (requestDest == null){ 
+                if (jmsBinding.getDestinationCreate().equals(JMSBindingConstants.CREATE_ALLWAYS)) {
+                    requestDest = jmsResourceFactory.createDestination(jmsBinding.getDestinationName());
+                } else {
+                    throw new JMSBindingException("JMS Destination " + 
+                                                   jmsBinding.getDestinationName() +
+                                                   " not found while registering binding " + 
+                                                   jmsBinding.getName() +
+                                                   " invoker");
+                }
+            }
+            
+            replyDest            = jmsResourceFactory.lookupDestination(jmsBinding.getResponseDestinationName());
+            
+            if (replyDest == null){ 
+                if (jmsBinding.getResponseDestinationCreate().equals(JMSBindingConstants.CREATE_ALLWAYS)) {
+                    replyDest = jmsResourceFactory.createDestination(jmsBinding.getResponseDestinationName());
+                } else {
+                    throw new JMSBindingException("JMS Response Destination " + 
+                                                  jmsBinding.getDestinationName() +
+                                                  " not found while registering binding " + 
+                                                  jmsBinding.getName() +
+                                                   " invoker");
+                }
+            }
         } catch (NamingException e) {
             throw new JMSBindingException(e);
         }            

Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingProcessor.java?view=diff&rev=545928&r1=545927&r2=545928
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingProcessor.java Sun Jun 10 13:10:37 2007
@@ -140,6 +140,7 @@
             String uri = reader.getAttributeValue(null, "uri");
             if (uri != null && uri.length() > 0) {
                 jmsBinding.setURI(uri);
+                System.err.println("JMS Binding doesn't process uri yet");
             }
 
             // Read correlation scheme
@@ -150,6 +151,7 @@
                 } else {
                     throw new JMSBindingException("invalid correlationScheme: " + correlationScheme);
                 }
+                System.err.println("JMS Binding doesn't process correlationScheme yet");
             }
 
             // Read initial context factory
@@ -172,7 +174,8 @@
             // TODO
             
             // Read subelements of binding.jms
-            while (true) {
+            boolean endFound = false;
+            while (!endFound) {
                 switch (reader.next()) {
                     case START_ELEMENT:
                         String elementName = reader.getName().getLocalPart();
@@ -196,21 +199,16 @@
                     case END_ELEMENT:
                         QName x = reader.getName();
                         if (x.equals(JMSBindingConstants.BINDING_JMS_QNAME)) {
-                            return jmsBinding;
+                            endFound = true;
+                        } else {
+                            throw new RuntimeException("Incomplete binding.jms definition found unexpected element " + x.toString());
                         }
-                        throw new RuntimeException("Incomplete binding.jms definition found unexpected element " + x.toString());
-                }
-            }
- /*           
-            // Skip to end element
-            while (reader.hasNext()) {
-                if (reader.next() == END_ELEMENT && 
-                    BINDING_JMS_QNAME.equals(reader.getName())) {
-                    break;
                 }
             }
+            
+            jmsBinding.validate();           
+            
             return jmsBinding;
-*/
         } catch (XMLStreamException e) {
             throw new ContributionReadException(e);
         }
@@ -223,19 +221,9 @@
         try {
             // Write a <binding.ws>
             writer.writeStartElement(Constants.SCA10_NS, JMSBindingConstants.BINDING_JMS);
-/*            
-            if (rmiBinding.getRmiHostName() != null) {
-                writer.writeAttribute(RMIBindingConstants.RMI_HOST, rmiBinding.getRmiHostName());
-            }
-            
-            if (rmiBinding.getRmiPort() != null) {
-                writer.writeAttribute(RMIBindingConstants.RMI_PORT, rmiBinding.getRmiPort());
-            }
+
+            // TODO 
             
-            if (rmiBinding.getRmiServiceName() != null) {
-                writer.writeAttribute(RMIBindingConstants.RMI_SERVICE, rmiBinding.getRmiServiceName());
-            }
-*/            
             writer.writeEndElement();
 
         } catch (XMLStreamException e) {
@@ -259,6 +247,7 @@
                 intent.setName(qname);
                 requiredIntents.add(intent);
             }
+            System.err.println("JMS Binding doesn't process requires yet");            
         }
 
         value = reader.getAttributeValue(null, Constants.POLICY_SETS);
@@ -270,6 +259,7 @@
                 policySet.setName(qname);
                 policySets.add(policySet);
             }
+            System.err.println("JMS Binding doesn't process policySets yet");
         }
     }
     
@@ -299,16 +289,19 @@
         if (name != null && name.length() > 0) {
             jmsBinding.setDestinationName(name);
         }
+        
         String type = reader.getAttributeValue(null, "type");
         if (type != null && type.length() > 0) {
-            if ("queue".equalsIgnoreCase(type)) {
+            if (JMSBindingConstants.DESTINATION_TYPE_QUEUE.equalsIgnoreCase(type)) {
                 jmsBinding.setDestinationType(JMSBindingConstants.DESTINATION_TYPE_QUEUE);
-            } else if ("topic".equalsIgnoreCase("type")) {
+            } else if (JMSBindingConstants.DESTINATION_TYPE_TOPIC.equalsIgnoreCase(type)) {
                 jmsBinding.setDestinationType(JMSBindingConstants.DESTINATION_TYPE_TOPIC);
             } else {
                 throw new RuntimeException("invalid destination type: " + type);
             }
+            System.err.println("JMS Binding doesn't process destination type yet");
         }
+        
         String create = reader.getAttributeValue(null, "create");
         if (create != null && create.length() > 0) {
             jmsBinding.setDestinationCreate(create);
@@ -328,25 +321,93 @@
         String name = reader.getAttributeValue(null, "name");
         if (name != null && name.length() > 0) {
             jmsBinding.setActivationSpecName(name);
+            System.err.println("JMS Binding doesn't process activationSpec yet");
         } else {
             throw new RuntimeException("missing ActivationSpec name");
         }
     }
 
-    protected void parseResponse(XMLStreamReader reader, JMSBinding jmsBinding) {
-        // TODO 
+    protected void parseResponseDestination(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
+        String name = reader.getAttributeValue(null, "name");
+        if (name != null && name.length() > 0) {
+            jmsBinding.setResponseDestinationName(name);
+        }      
+        
+        String type = reader.getAttributeValue(null, "type");
+        if (type != null && type.length() > 0) {
+            if (JMSBindingConstants.DESTINATION_TYPE_QUEUE.equalsIgnoreCase(type)) {
+                jmsBinding.setResponseDestinationType(JMSBindingConstants.DESTINATION_TYPE_QUEUE);
+            } else if (JMSBindingConstants.DESTINATION_TYPE_TOPIC.equalsIgnoreCase(type)) {
+                jmsBinding.setResponseDestinationType(JMSBindingConstants.DESTINATION_TYPE_TOPIC);
+            } else {
+                throw new RuntimeException("invalid response destination type: " + type);
+            }
+            System.err.println("JMS Binding doesn't process response destination type yet");
+        }
+        
+        String create = reader.getAttributeValue(null, "create");
+        if (create != null && create.length() > 0) {
+            jmsBinding.setResponseDestinationCreate(create);
+        }
+    } 
+    
+    protected void parseResponseConnectionFactory(XMLStreamReader reader, JMSBinding jmsBinding) {
+        String name = reader.getAttributeValue(null, "name");
+        if (name != null && name.length() > 0) {
+            jmsBinding.setResponseConnectionFactoryName(name);
+            System.err.println("JMS Binding doesn't process response connectionFactory yet");
+        } else {
+            throw new RuntimeException("missing response connectionFactory name");
+        }
+    }    
+
+    protected void parseResponseActivationSpec(XMLStreamReader reader, JMSBinding jmsBinding) {
+        String name = reader.getAttributeValue(null, "name");
+        if (name != null && name.length() > 0) {
+            jmsBinding.setResponseActivationSpecName(name);
+            System.err.println("JMS Binding doesn't process response activationSpec yet");
+        } else {
+            throw new RuntimeException("missing response ActivationSpec name");
+        }
+    }
+    
+    protected void parseResponse(XMLStreamReader reader, JMSBinding jmsBinding)
+      throws XMLStreamException {
+        // Read subelements of response
+        while (true) {
+            switch (reader.next()) {
+                case START_ELEMENT:
+                    String elementName = reader.getName().getLocalPart();
+                    if ("destination".equals(elementName)) {
+                        parseResponseDestination(reader, jmsBinding);
+                    } else if ("connectionFactory".equals(elementName)) {
+                        parseResponseConnectionFactory(reader, jmsBinding);
+                    } else if ("activationSpec".equals(elementName)) {
+                        parseResponseActivationSpec(reader, jmsBinding);
+                    } 
+                    reader.next();
+                    break;
+                case END_ELEMENT:
+                    QName x = reader.getName();
+                    if (x.getLocalPart().equals("response")) {
+                        return;
+                    } else {
+                        throw new RuntimeException("Incomplete binding.jms/response definition found unexpected element " + x.toString());
+                    }
+            }
+        }
     }
 
     protected void parseResourceAdapter(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
-        // TODO 
+        System.err.println("JMS Binding doesn't process resourceAdapter yet");
     }
     
     protected void parseHeaders(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
-        // TODO 
+        System.err.println("JMS Binding doesn't process headers yet");
     }    
 
     protected void parseOperationProperties(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
-        // TODO 
+        System.err.println("JMS Binding doesn't process operationProperties yet");
     }
 
 

Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingReferenceBindingProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingReferenceBindingProvider.java?view=diff&rev=545928&r1=545927&r2=545928
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingReferenceBindingProvider.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingReferenceBindingProvider.java Sun Jun 10 13:10:37 2007
@@ -19,6 +19,9 @@
 
 package org.apache.tuscany.sca.binding.jms;
 
+import java.util.List;
+
+import org.apache.tuscany.sca.assembly.ComponentService;
 import org.apache.tuscany.sca.binding.jms.JMSBinding;
 import org.apache.tuscany.sca.interfacedef.InterfaceContract;
 import org.apache.tuscany.sca.interfacedef.Operation;
@@ -44,10 +47,55 @@
                                               JMSBinding binding) {
         this.component  = component;
         this.reference  = reference;
-        this.jmsBinding = binding;
+        this.jmsBinding = binding;         
+        
     }
 
     public Invoker createInvoker(Operation operation, boolean isCallback) {
+ 
+        if (jmsBinding.getDestinationName().equals(JMSBindingConstants.DEFAULT_DESTINATION_NAME)){
+            throw new JMSBindingException("No destination specified for reference " +
+                                          reference.getName());            
+        }
+        
+        if (jmsBinding.getResponseDestinationName().equals(JMSBindingConstants.DEFAULT_RESPONSE_DESTINATION_NAME)){
+            throw new JMSBindingException("No response destination specified for reference " +
+                                          reference.getName());            
+        }        
+/* The following doesn't work as I can't get to the 
+ * target list on the composite reference
+        // if the default destination queue name is set
+        // set the destination queue name to the wired service name
+        // so that any wires can be assured a unique endpoint.
+        
+        if (jmsBinding.getDestinationName().equals(JMSBindingConstants.DEFAULT_DESTINATION_NAME)){
+            // get the name of the target service
+            List<ComponentService> targets = reference.getTargets();
+            
+            if (targets.size() < 1){
+                throw new JMSBindingException("No target specified for reference " +
+                                              reference.getName() +
+                                              " so destination queue name can't be determined");
+            }
+            
+            if (targets.size() > 1){
+                throw new JMSBindingException("More than one target specified for reference " +
+                                              reference.getName() +
+                                              " so destination queue name can't be determined");
+            }
+            
+            ComponentService service = targets.get(0);
+            jmsBinding.setDestinationName(service.getName());
+        }
+        
+        
+        // if the default response queue name is set 
+        // set the response queue to the names of this 
+        // reference
+        if (jmsBinding.getResponseDestinationName().equals(JMSBindingConstants.DEFAULT_RESPONSE_DESTINATION_NAME)){
+            jmsBinding.setResponseDestinationName(reference.getName());
+        }    
+*/        
         if (isCallback) {
             throw new UnsupportedOperationException();
         } else {

Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingServiceBindingProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingServiceBindingProvider.java?view=diff&rev=545928&r1=545927&r2=545928
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingServiceBindingProvider.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingServiceBindingProvider.java Sun Jun 10 13:10:37 2007
@@ -53,7 +53,17 @@
         this.service       = service;
         this.jmsBinding    = binding;
         
-        jmsResourceFactory = jmsBinding.getJmsResourceFactory();        
+        jmsResourceFactory = jmsBinding.getJmsResourceFactory();   
+        
+        // if the default destination queue names is set
+        // set the destinate queue name to the reference name
+        // so that any wires can be assured a unique endpoint.
+        if (jmsBinding.getDestinationName().equals(JMSBindingConstants.DEFAULT_DESTINATION_NAME)){
+            //jmsBinding.setDestinationName(service.getName());
+            throw new JMSBindingException("No destination specified for service " +
+                                          service.getName());
+        }
+
     }
 
     public InterfaceContract getBindingInterfaceContract() {
@@ -81,8 +91,20 @@
     private void registerListerner() throws NamingException, JMSException {
 
         Session session         = jmsResourceFactory.createSession();
-//        Destination destination = session.createQueue("SCAMessageQ");//jmsBinding.getDestinationName());
         Destination destination = jmsResourceFactory.lookupDestination(jmsBinding.getDestinationName());
+        
+        if (destination == null){ 
+            if (jmsBinding.getDestinationCreate().equals(JMSBindingConstants.CREATE_ALLWAYS)) {
+                destination = jmsResourceFactory.createDestination(jmsBinding.getDestinationName());
+            } else {
+                throw new JMSBindingException("JMS Destination " + 
+                                              jmsBinding.getDestinationName() +
+                                              "not found while registering service " + 
+                                              service.getName() +
+                                              " listener");
+            }
+        }
+        
         consumer = session.createConsumer(destination);
         
         // TODO - We assume the target is a Java class here!!!

Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSResourceFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSResourceFactory.java?view=diff&rev=545928&r1=545927&r2=545928
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSResourceFactory.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSResourceFactory.java Sun Jun 10 13:10:37 2007
@@ -40,4 +40,6 @@
     public abstract void closeConnection() throws JMSException, NamingException;
 
     public abstract Destination lookupDestination(String jndiName) throws NamingException;
+    
+    public abstract Destination createDestination(String jndiName) throws NamingException;
 }

Copied: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSResourceFactoryActiveMQImpl.java (from r545149, incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSResourceFactorySimpleImpl.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSResourceFactoryActiveMQImpl.java?view=diff&rev=545928&p1=incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSResourceFactorySimpleImpl.java&r1=545149&p2=incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSResourceFactoryActiveMQImpl.java&r2=545928
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSResourceFactorySimpleImpl.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSResourceFactoryActiveMQImpl.java Sun Jun 10 13:10:37 2007
@@ -30,14 +30,19 @@
 import javax.naming.NameNotFoundException;
 import javax.naming.NamingException;
 
-public class JMSResourceFactorySimpleImpl implements JMSResourceFactory {
+/**
+ * Abstracts away any JMS provide specific feature from the JMS binding
+ *
+ * @version $Rev$ $Date$
+ */
+public class JMSResourceFactoryActiveMQImpl implements JMSResourceFactory {
 
     private JMSBinding jmsBinding;
     private Connection connection;
     private Context    context;
     private boolean    isConnectionStarted;
 
-    public JMSResourceFactorySimpleImpl(JMSBinding jmsBinding) {
+    public JMSResourceFactoryActiveMQImpl(JMSBinding jmsBinding) {
         this.jmsBinding = jmsBinding;
     }
 
@@ -122,4 +127,12 @@
         return dest;
     }
 
+    /**
+     * You can create a destination in ActiveMQ (and have it appear in JNDI)
+     * by putting "dynamicQueues/" in front of the queue name being looked up
+     * 
+     */
+    public Destination createDestination(String jndiName) throws NamingException {
+        return lookupDestination("dynamicQueues/" + jndiName);   
+    }
 }

Modified: incubator/tuscany/java/sca/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/HelloWorldClientImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/HelloWorldClientImpl.java?view=diff&rev=545928&r1=545927&r2=545928
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/HelloWorldClientImpl.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/HelloWorldClientImpl.java Sun Jun 10 13:10:37 2007
@@ -26,19 +26,27 @@
  */
 @Service(HelloWorldService.class)
 public class HelloWorldClientImpl implements HelloWorldService {
-    private HelloWorldService extService;
+    private HelloWorldService serviceA;
 
-    public HelloWorldService getExtService() {
-        return extService;
+    @Reference
+    public void setServiceA(HelloWorldService service) {
+        this.serviceA = service;
     }
+    
+    private HelloWorldService serviceB;
 
     @Reference
-    public void setExtService(HelloWorldService extService) {
-        this.extService = extService;
-    }
+    public void setServiceB(HelloWorldService service) {
+        this.serviceB = service;
+    }    
 
     public String sayHello(String name) {
-        return extService.sayHello(name);
+        return "ServiceA says " +
+                serviceA.sayHello(name + "-A") + 
+                " ServiceB says " +
+                serviceB.sayHello(name + "-B");
     }
+    
+   
     
 }

Modified: incubator/tuscany/java/sca/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/JMSTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/JMSTestCase.java?view=diff&rev=545928&r1=545927&r2=545928
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/JMSTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/JMSTestCase.java Sun Jun 10 13:10:37 2007
@@ -18,39 +18,75 @@
  */
 package org.apache.tuscany.sca.binding.jms;
 
+import java.io.IOException;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
 import junit.framework.TestCase;
+import static org.junit.Assert.*;
 
 import org.apache.tuscany.sca.host.embedded.SCADomain;
 
+import org.apache.tuscany.sca.binding.jms.HelloWorldService;
+
 import org.apache.activemq.broker.BrokerService;
 
+
 /**
  * This shows how to test the JMS binding using a simple HelloWorld application.
  */
-public class JMSTestCase extends TestCase {
-
-    private HelloWorldService helloWorldService;
-    private SCADomain         scaDomain;
-    private BrokerService     broker = null;
+public class JMSTestCase {
 
-    protected void setUp() throws Exception {
+    private static BrokerService        broker;
+    private static HelloWorldService    helloWorldService;
+    private static SCADomain            scaDomain; 
+
+    /*
+     * This test is a bit strange for two reasons
+     * 1/ starting and stopping the broker repeatedly for multiple tests 
+     *    sometimes leads to orphaned lock files being left on disc
+     * 2/ it doesn't seem possible to load a single composite file
+     *    at the moment so I've put all the components for the test
+     *    in one. This makes it very difficult to test for failure 
+     *    cases at this level.
+     * For these reasons setup happens at a class level at the moment
+     */
+    
+    @BeforeClass
+    public static void oneTimeSetUp() throws Exception {
         // start the activemq broker
-        if (broker == null){
-            BrokerService broker = new BrokerService();
-            broker.addConnector("tcp://localhost:61616");
-            broker.start();
-        }
+        broker = new BrokerService();
+        broker.addConnector("tcp://localhost:61616");
+        broker.start();
         
-        // that the sca runtime
+        // start the SCA runtime
         scaDomain = SCADomain.newInstance("JMSBindingTest.composite");
-        helloWorldService = scaDomain.getService(HelloWorldService.class, "HelloWorldClientComponent");
     }
 
-    protected void tearDown() throws Exception {
+    @AfterClass
+    public static void oneTimeTearDown() throws Exception {
         scaDomain.close();
+        
+        broker.stop();
+        broker.waitUntilStopped();
     }
-
-    public void testHelloWorld() throws Exception {
+/*
+    @Test
+    public void testHelloWorldMinimal() throws Exception {
+        helloWorldService = scaDomain.getService(HelloWorldService.class, "HelloWorldMinimalClientComponent");
         assertEquals("Hello Fred", helloWorldService.sayHello("Fred"));
     }
+*/
+    @Test
+    public void testHelloWorldCreate() throws Exception {
+        helloWorldService = scaDomain.getService(HelloWorldService.class, "HelloWorldCreateClientComponent");
+        assertEquals("ServiceA says Hello Fred-A ServiceB says Hello Fred-B", helloWorldService.sayHello("Fred"));
+    }
+    
+
+
 }

Modified: incubator/tuscany/java/sca/modules/binding-jms/src/test/resources/JMSBindingTest.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/test/resources/JMSBindingTest.composite?view=diff&rev=545928&r1=545927&r2=545928
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/test/resources/JMSBindingTest.composite (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/test/resources/JMSBindingTest.composite Sun Jun 10 13:10:37 2007
@@ -19,23 +19,92 @@
  -->
 <composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
            name="JMSBindingTestComposite">
-           
-    <component name="HelloWorldClientComponent">
+   <!--        
+    <component name="HelloWorldMinimalClientComponent">
+        <implementation.java class="org.apache.tuscany.sca.binding.jms.HelloWorldClientImpl"/> 
+    </component>        
+    
+  	<reference name="HelloWorldMinimalReferenceA" 
+  	           promote="HelloWorldMinimalClientComponent/serviceA"
+  	           target="HelloWorldMinimalServiceA">
+        <interface.java interface="org.apache.tuscany.sca.binding.jms.HelloWorldService"/>
+        <binding.jms/>       
+    </reference>  
+    
+  	<reference name="HelloWorldMinimalReferenceB" 
+  	           promote="HelloWorldMinimalClientComponent/serviceB"
+  	           target="HelloWorldMinimalServiceB">
+        <interface.java interface="org.apache.tuscany.sca.binding.jms.HelloWorldService"/>
+        <binding.jms/>       
+    </reference>    
+   -->       
+    
+    <component name="HelloWorldCreateClientComponent">
         <implementation.java class="org.apache.tuscany.sca.binding.jms.HelloWorldClientImpl"/>
     </component>        
            
-  	<reference name="HelloWorldReference" promote="HelloWorldClientComponent/extService">
+  	<reference name="HelloWorldCreateReferenceA" 
+  	           promote="HelloWorldCreateClientComponent/serviceA">
         <interface.java interface="org.apache.tuscany.sca.binding.jms.HelloWorldService"/>
-        <binding.jms/>       
+        <binding.jms initialContextFactory="org.apache.activemq.jndi.ActiveMQInitialContextFactory"
+                     jndiURL="tcp://localhost:61616">
+          <destination name="DestQueueA" create="always"/>
+          <response>
+             <destination name="RespQueueA" create="always"/>
+          </response>
+        </binding.jms>  
     </reference>
     
-	<service name="HelloWorldService" promote="HelloWorldServiceComponent">
+  	<reference name="HelloWorldCreateReferenceB" 
+  	           promote="HelloWorldCreateClientComponent/serviceB">
+        <interface.java interface="org.apache.tuscany.sca.binding.jms.HelloWorldService"/>
+        <binding.jms initialContextFactory="org.apache.activemq.jndi.ActiveMQInitialContextFactory"
+                     jndiURL="tcp://localhost:61616">
+          <destination name="DestQueueB" create="always"/>
+          <response>
+             <destination name="RespQueueB" create="always"/>
+          </response>
+        </binding.jms>  
+    </reference>    
+    
+    
+    
+	<service name="HelloWorldCreateServiceA" 
+	         promote="HelloWorldServiceAComponent">
+        <interface.java interface="org.apache.tuscany.sca.binding.jms.HelloWorldService"/>
+        <binding.jms initialContextFactory="org.apache.activemq.jndi.ActiveMQInitialContextFactory"
+                     jndiURL="tcp://localhost:61616">
+          <destination name="DestQueueA" create="always"/>
+        </binding.jms>     
+     </service>    
+  <!--   
+	<service name="HelloWorldMinimalServiceA" 
+	         promote="HelloWorldServiceAComponent">
+        <interface.java interface="org.apache.tuscany.sca.binding.jms.HelloWorldService"/>
+        <binding.jms/>     
+     </service>   
+  --> 
+    <component name="HelloWorldServiceAComponent">
+        <implementation.java class="org.apache.tuscany.sca.binding.jms.HelloWorldServiceImpl"/>
+    </component> 
+    
+    
+    
+	<service name="HelloWorldCreateServiceB" promote="HelloWorldServiceBComponent">
+        <interface.java interface="org.apache.tuscany.sca.binding.jms.HelloWorldService"/>
+        <binding.jms initialContextFactory="org.apache.activemq.jndi.ActiveMQInitialContextFactory"
+                     jndiURL="tcp://localhost:61616">
+          <destination name="DestQueueB" create="always"/>
+        </binding.jms>     
+    </service>    
+ <!--   
+	<service name="HelloWorldMinimalServiceB" promote="HelloWorldServiceBComponent">
         <interface.java interface="org.apache.tuscany.sca.binding.jms.HelloWorldService"/>
         <binding.jms/>     
-     </service>
-      
-    <component name="HelloWorldServiceComponent">
+    </service> 
+ -->     
+    <component name="HelloWorldServiceBComponent">
         <implementation.java class="org.apache.tuscany.sca.binding.jms.HelloWorldServiceImpl"/>
-    </component>   
+    </component>       
 
 </composite>



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org