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