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