You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2006/12/20 16:04:21 UTC
svn commit: r489108 - in
/incubator/tuscany/java/sca/services/bindings/binding.jms/src:
main/java/org/apache/tuscany/binding/jms/
test/java/org/apache/tuscany/binding/jms/
Author: antelder
Date: Wed Dec 20 07:04:20 2006
New Revision: 489108
URL: http://svn.apache.org/viewvc?view=rev&rev=489108
Log:
Start binding code for supporting 0.96 draft 1 spec
Added:
incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961.java (with props)
incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961TestCase.java (with props)
Modified:
incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBinding.java
Modified: incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBinding.java?view=diff&rev=489108&r1=489107&r2=489108
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBinding.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBinding.java Wed Dec 20 07:04:20 2006
@@ -59,6 +59,8 @@
private String operationSelectorPropertyName = "OpName";
+ private String correlationScheme;
+
public JMSBinding(int destinationType, String destinationName, String connectionFactoryName, String activationSpecName, String initialContextFactoryName, String providerURL, int deliveryMode, int timeToLive, int priority, String replyTo) {
super();
this.destinationType = destinationType;
@@ -181,5 +183,16 @@
String operationSelectorPropertyName) {
this.operationSelectorPropertyName = operationSelectorPropertyName;
}
+
+ public void setCorrelationScheme(String correlationScheme) {
+ this.correlationScheme = correlationScheme;
+ }
+
+ public String getCorrelationScheme() {
+ return correlationScheme;
+ }
+
+ public void setCreateDestination(String create) {
+ }
}
Added: incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961.java?view=auto&rev=489108
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961.java (added)
+++ incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961.java Wed Dec 20 07:04:20 2006
@@ -0,0 +1,180 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.binding.jms;
+
+import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
+import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.spi.annotation.Autowire;
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+import org.apache.tuscany.spi.extension.LoaderExtension;
+import org.apache.tuscany.spi.loader.LoaderException;
+import org.apache.tuscany.spi.loader.LoaderRegistry;
+import org.apache.tuscany.spi.loader.LoaderUtil;
+import org.apache.tuscany.spi.model.ModelObject;
+import org.osoa.sca.annotations.Scope;
+
+/**
+ * Loader for handling <binding.jms> elements based on the 0.96 draft 1 spec.
+ */
+@Scope("COMPOSITE")
+public class JMSBindingLoader0961 extends LoaderExtension<JMSBinding> {
+
+ public static final QName BINDING_JMS =
+ new QName("http://tuscany.apache.org/xmlns/binding/jms/1.0-SNAPSHOT", "binding.jms");
+
+ public static final List<String> VALID_CORRELATION_SCHEMES = Arrays.asList(new String[] {"requestmsgidtocorrelid", "requestcorrelidtocorrelid", "none"});
+
+ public JMSBindingLoader0961(@Autowire LoaderRegistry registry) {
+ super(registry);
+ }
+
+ public QName getXMLType() {
+ return BINDING_JMS;
+ }
+
+ public JMSBinding load(CompositeComponent parent,
+ ModelObject modelObject,
+ XMLStreamReader reader,
+ DeploymentContext deploymentContext) throws XMLStreamException, LoaderException {
+
+ JMSBinding jmsBinding = new JMSBinding();
+
+ String uri = reader.getAttributeValue(null, "uri");
+ if (uri != null && uri.length() > 0) {
+ parseURI(jmsBinding, uri);
+ }
+
+ String correlationScheme = reader.getAttributeValue(null, "correlationScheme");
+ if (correlationScheme != null && correlationScheme.length() > 0) {
+ if (VALID_CORRELATION_SCHEMES.contains(correlationScheme.toLowerCase())) {
+ jmsBinding.setCorrelationScheme(correlationScheme);
+ } else {
+ throw new LoaderException("invalid correlationScheme: " + correlationScheme);
+ }
+ }
+
+ String initialContextFactory = reader.getAttributeValue(null, "initialContextFactory");
+ if (initialContextFactory != null && initialContextFactory.length() > 0) {
+ jmsBinding.setInitialContextFactoryName(initialContextFactory);
+ }
+
+ String jndiProviderURL = reader.getAttributeValue(null, "JNDIProviderURL");
+ if (jndiProviderURL != null && jndiProviderURL.length() > 0) {
+ jmsBinding.setJNDIProviderURL(jndiProviderURL);
+ }
+
+ String connectionFactory = reader.getAttributeValue(null, "connectionFactory");
+ if (connectionFactory != null && connectionFactory.length() > 0) {
+ jmsBinding.setConnectionFactoryName(connectionFactory);
+ }
+
+ String activationSpec = reader.getAttributeValue(null, "activationSpec");
+ if (activationSpec != null && activationSpec.length() > 0) {
+ jmsBinding.setActivationSpecName(activationSpec);
+ }
+
+ while (true) {
+ switch (reader.next()) {
+ case START_ELEMENT:
+ String elementName = reader.getName().getLocalPart();
+ if ("destination".equals(elementName)) {
+ parseDestination(reader, jmsBinding);
+ } else if ("response".equals(elementName)) {
+ parseResponseDestination(reader, jmsBinding);
+ } else if ("headers".equals(elementName)) {
+ parseHeaders(reader, jmsBinding);
+ } else if ("operationAndDataBinding".equals(elementName)) {
+ parseOperationAndDataBinding(reader, jmsBinding);
+ } else if ("operation".equals(elementName)) {
+ parseOperation(reader, jmsBinding);
+ } else if ("resourceAdapter".equals(elementName)) {
+ parseResourceAdapter(reader, jmsBinding);
+ }
+ reader.next();
+ break;
+
+ case END_ELEMENT:
+ QName x = reader.getName();
+ if (x.equals(BINDING_JMS)) {
+ return jmsBinding;
+ }
+ throw new RuntimeException("Incomplete binding.jms definition");
+ }
+ }
+ }
+
+ private void parseResourceAdapter(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
+ // TODO Auto-generated method stub
+ LoaderUtil.skipToEndElement(reader);
+ }
+
+ private void parseOperation(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
+ // TODO Auto-generated method stub
+ LoaderUtil.skipToEndElement(reader);
+ }
+
+ private void parseOperationAndDataBinding(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
+ // TODO Auto-generated method stub
+ LoaderUtil.skipToEndElement(reader);
+ }
+
+ private void parseHeaders(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
+ // TODO Auto-generated method stub
+ LoaderUtil.skipToEndElement(reader);
+ }
+
+ private void parseResponseDestination(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
+ // TODO Auto-generated method stub
+ LoaderUtil.skipToEndElement(reader);
+ }
+
+ private void parseDestination(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
+ String name = reader.getAttributeValue(null, "name");
+ 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)) {
+ jmsBinding.setDestinationType(JMSBinding.DESTINATION_TYPE_QUEUE);
+ } else if ("topic".equalsIgnoreCase("type")) {
+ jmsBinding.setDestinationType(JMSBinding.DESTINATION_TYPE_TOPIC);
+ } else {
+ throw new RuntimeException("invalid destination type: " + type);
+ }
+ }
+ String create = reader.getAttributeValue(null, "create");
+ if (create != null && create.length() > 0) {
+ jmsBinding.setCreateDestination(create);
+ }
+ LoaderUtil.skipToEndElement(reader);
+ }
+
+ private void parseURI(JMSBinding jmsBinding, String uri) {
+ // TODO Auto-generated method stub
+
+ }
+}
Propchange: incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961TestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961TestCase.java?view=auto&rev=489108
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961TestCase.java (added)
+++ incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961TestCase.java Wed Dec 20 07:04:20 2006
@@ -0,0 +1,83 @@
+package org.apache.tuscany.binding.jms;
+
+import java.io.StringReader;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.spi.loader.LoaderException;
+
+public class JMSBindingLoader0961TestCase extends TestCase {
+
+ private JMSBindingLoader0961 loader;
+
+ public void testMinimal() throws LoaderException, XMLStreamException {
+ String xml = "<binding.jms></binding.jms>";
+ XMLStreamReader reader = createReader(xml);
+ JMSBinding jmsBinding = loader.load(null, null, reader, null);
+ assertNotNull(jmsBinding);
+ }
+
+ public void testCorrelationScheme() throws LoaderException, XMLStreamException {
+ XMLStreamReader reader = createReader("<binding.jms correlationScheme=\"RequestMsgIDToCorrelID\"></binding.jms>");
+ JMSBinding jmsBinding = loader.load(null, null, reader, null);
+ assertEquals("RequestMsgIDToCorrelID", jmsBinding.getCorrelationScheme());
+
+ reader = createReader("<binding.jms correlationScheme=\"RequestCorrelIDToCorrelID\"></binding.jms>");
+ jmsBinding = loader.load(null, null, reader, null);
+ assertEquals("RequestCorrelIDToCorrelID", jmsBinding.getCorrelationScheme());
+
+ reader = createReader("<binding.jms correlationScheme=\"none\"></binding.jms>");
+ jmsBinding = loader.load(null, null, reader, null);
+ assertEquals("none", jmsBinding.getCorrelationScheme());
+
+ reader = createReader("<binding.jms correlationScheme=\"xxx\"></binding.jms>");
+ try {
+ jmsBinding = loader.load(null, null, reader, null);
+ fail("expecting invalid correlationScheme");
+ } catch (LoaderException e) {
+ // expected
+ }
+ }
+
+ public void testInitialContextFactory() throws LoaderException, XMLStreamException {
+ XMLStreamReader reader = createReader("<binding.jms initialContextFactory=\"myicf\"></binding.jms>");
+ JMSBinding jmsBinding = loader.load(null, null, reader, null);
+ assertEquals("myicf", jmsBinding.getInitialContextFactoryName());
+ }
+
+ public void testJNDIProviderURL() throws LoaderException, XMLStreamException {
+ XMLStreamReader reader = createReader("<binding.jms JNDIProviderURL=\"myURL\"></binding.jms>");
+ JMSBinding jmsBinding = loader.load(null, null, reader, null);
+ assertEquals("myURL", jmsBinding.getJNDIProviderURL());
+ }
+
+ public void testConnectionFactory() throws LoaderException, XMLStreamException {
+ XMLStreamReader reader = createReader("<binding.jms connectionFactory=\"myfactory\"></binding.jms>");
+ JMSBinding jmsBinding = loader.load(null, null, reader, null);
+ assertEquals("myfactory", jmsBinding.getConnectionFactoryName());
+ }
+
+ public void testActivationSpec() throws LoaderException, XMLStreamException {
+ XMLStreamReader reader = createReader("<binding.jms activationSpec=\"myas\"></binding.jms>");
+ JMSBinding jmsBinding = loader.load(null, null, reader, null);
+ assertEquals("myas", jmsBinding.getActivationSpecName());
+ }
+
+ private XMLStreamReader createReader(String xml) throws XMLStreamException {
+ XMLInputFactory factory = XMLInputFactory.newInstance();
+
+ String xxx = "<xxx xmlns=\"http://tuscany.apache.org/xmlns/binding/jms/1.0-SNAPSHOT\">" + xml + "</xxx>";
+ XMLStreamReader reader = factory.createXMLStreamReader(new StringReader(xxx));
+ reader.nextTag();
+ reader.nextTag();
+ return reader;
+ }
+
+ protected void setUp() throws Exception {
+ this.loader = new JMSBindingLoader0961(null);
+ }
+}
Propchange: incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961TestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961TestCase.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org