diff options
Diffstat (limited to 'sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSReference.java')
-rw-r--r-- | sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSReference.java | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSReference.java b/sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSReference.java new file mode 100644 index 0000000000..ac669653b8 --- /dev/null +++ b/sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSReference.java @@ -0,0 +1,43 @@ +package org.apache.tuscany.binding.jms; + +import javax.naming.NamingException; + +import org.apache.tuscany.spi.component.CompositeComponent; +import org.apache.tuscany.spi.extension.ReferenceExtension; +import org.apache.tuscany.spi.model.Operation; +import org.apache.tuscany.spi.model.ServiceContract; +import org.apache.tuscany.spi.wire.TargetInvoker; +import org.apache.tuscany.spi.wire.WireService; + +/** + * @version $Rev$ $Date$ + */ +public class JMSReference<T> extends ReferenceExtension { + + private JMSBinding jmsBinding; + private JMSResourceFactory jmsResourceFactory; + private OperationSelector operationSelector; + + public JMSReference(String name, + CompositeComponent parent, + WireService wireService, + JMSBinding jmsBinding, + JMSResourceFactory jmsResourceFactory, + OperationSelector operationSelector, + Class<?> service) { + + super(name, service, parent, wireService); + + this.jmsBinding = jmsBinding; + this.jmsResourceFactory = jmsResourceFactory; + this.operationSelector = operationSelector; + } + + public TargetInvoker createTargetInvoker(ServiceContract contract, Operation operation) { + try { + return new JMSTargetInvoker(jmsResourceFactory, jmsBinding, operation.getName(),operationSelector); + } catch (NamingException e) { + throw new RuntimeException("Unable to create JMS resources for the invocation",e); + } + } +} |