| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you 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.sca.binding.jms; |
| |
| import java.io.ByteArrayOutputStream; |
| import java.io.StringReader; |
| |
| import javax.xml.stream.XMLInputFactory; |
| import javax.xml.stream.XMLOutputFactory; |
| import javax.xml.stream.XMLStreamReader; |
| |
| import junit.framework.TestCase; |
| |
| import org.apache.tuscany.sca.assembly.Composite; |
| import org.apache.tuscany.sca.contribution.processor.DefaultStAXArtifactProcessorExtensionPoint; |
| import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor; |
| import org.apache.tuscany.sca.contribution.processor.ProcessorContext; |
| import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; |
| import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint; |
| import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry; |
| |
| /** |
| * Tests for JMS binding XML writes. |
| * In general, for each JMS binding XML read test case, there |
| * is a write test case. |
| */ |
| public class JMSBindingProcessorWriteTestCase extends TestCase { |
| |
| private XMLInputFactory inputFactory; |
| private XMLOutputFactory outputFactory; |
| private StAXArtifactProcessor<Object> staxProcessor; |
| |
| public static final String DEFAULT = |
| "<?xml version=\"1.0\" encoding=\"ASCII\"?>" |
| + "<composite xmlns=\"http://docs.oasis-open.org/ns/opencsa/sca/200912\" targetNamespace=\"http://binding-jms\" name=\"binding-jms\">" |
| + " <component name=\"HelloWorldComponent\">" |
| + " <service name=\"HelloWorldService\">" |
| + " <binding.jms>" |
| + " <destination jndiName=\"AAA\">" |
| + " <property name=\"AAAProp\" type=\"string\"/>" |
| + " </destination>" |
| + " <connectionFactory jndiName=\"ABC\"/>" |
| + " <response/>" |
| + " <headers/>" |
| + " <resourceAdapter name=\"GHI\"/>" |
| + " <operationProperties name=\"JKL\">" |
| + " </operationProperties>" |
| + " </binding.jms>" |
| + " </service>" |
| + " </component>" |
| + "</composite>"; |
| |
| private ProcessorContext context; |
| |
| @Override |
| protected void setUp() throws Exception { |
| DefaultExtensionPointRegistry extensionPoints = new DefaultExtensionPointRegistry(); |
| context = new ProcessorContext(extensionPoints); |
| inputFactory = XMLInputFactory.newInstance(); |
| outputFactory = XMLOutputFactory.newInstance(); |
| StAXArtifactProcessorExtensionPoint staxProcessors = new DefaultStAXArtifactProcessorExtensionPoint(extensionPoints); |
| staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, outputFactory); |
| } |
| |
| /** |
| * Test parsing valid composite definition. Valid composite populated with correct values expected. |
| * @throws Exception |
| */ |
| public void testLoadValidComposite() throws Exception { |
| XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(JMSBindingProcessorTestCase.COMPOSITE)); |
| Composite composite = (Composite)staxProcessor.read(reader, context); |
| JMSBinding binding = (JMSBinding)composite.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding); |
| |
| // Write out JMSBinding model to stream. |
| ByteArrayOutputStream bos = new ByteArrayOutputStream(); |
| staxProcessor.write(composite, outputFactory.createXMLStreamWriter(bos), context); |
| |
| // Read written JMSBinding to a different JMSBinding model. |
| XMLStreamReader reader2 = inputFactory.createXMLStreamReader(new StringReader(bos.toString())); |
| Composite composite2 = (Composite)staxProcessor.read(reader2, context); |
| JMSBinding binding2 = (JMSBinding)composite2.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding2); |
| |
| // Compare initial binding to written binding. |
| assertEquals( binding, binding2); |
| } |
| |
| public void testHeaders1() throws Exception { |
| Composite composite = (Composite)staxProcessor.read(inputFactory.createXMLStreamReader(new StringReader(JMSBindingProcessorTestCase.HEADERS1)), context); |
| JMSBinding binding = (JMSBinding)composite.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding); |
| |
| // Write out JMSBinding model to stream. |
| ByteArrayOutputStream bos = new ByteArrayOutputStream(); |
| staxProcessor.write(composite, outputFactory.createXMLStreamWriter(bos), context); |
| |
| // Read written JMSBinding to a different JMSBinding model. |
| XMLStreamReader reader2 = inputFactory.createXMLStreamReader(new StringReader(bos.toString())); |
| Composite composite2 = (Composite)staxProcessor.read(reader2, context); |
| JMSBinding binding2 = (JMSBinding)composite2.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding2); |
| |
| // Compare initial binding to written binding. |
| assertEquals( binding, binding2 ); |
| } |
| |
| public void testProperties1() throws Exception { |
| XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(JMSBindingProcessorTestCase.PROPERTIES1)); |
| Composite composite = (Composite)staxProcessor.read(reader, context); |
| JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding); |
| |
| // Write out JMSBinding model to stream. |
| ByteArrayOutputStream bos = new ByteArrayOutputStream(); |
| staxProcessor.write(composite, outputFactory.createXMLStreamWriter(bos), context); |
| |
| // Read written JMSBinding to a different JMSBinding model. |
| XMLStreamReader reader2 = inputFactory.createXMLStreamReader(new StringReader(bos.toString())); |
| Composite composite2 = (Composite)staxProcessor.read(reader2, context); |
| JMSBinding binding2 = (JMSBinding)composite2.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding2); |
| |
| // Compare initial binding to written binding. |
| assertEquals( binding, binding2 ); |
| } |
| |
| public void testOpProperties1() throws Exception { |
| XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(JMSBindingProcessorTestCase.OP_PROPERTIES1)); |
| Composite composite = (Composite)staxProcessor.read(reader, context); |
| JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding); |
| |
| // Write out JMSBinding model to stream. |
| ByteArrayOutputStream bos = new ByteArrayOutputStream(); |
| staxProcessor.write(composite, outputFactory.createXMLStreamWriter(bos), context); |
| |
| // Read written JMSBinding to a different JMSBinding model. |
| XMLStreamReader reader2 = inputFactory.createXMLStreamReader(new StringReader(bos.toString())); |
| Composite composite2 = (Composite)staxProcessor.read(reader2, context); |
| JMSBinding binding2 = (JMSBinding)composite2.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding2); |
| |
| // Compare initial binding to written binding. |
| assertEquals(binding, binding2); |
| } |
| |
| public void testSubscriptionHeaders() throws Exception { |
| XMLStreamReader reader = |
| inputFactory.createXMLStreamReader(new StringReader(JMSBindingProcessorTestCase.SELECTOR)); |
| Composite composite = (Composite)staxProcessor.read(reader, context); |
| JMSBinding binding = (JMSBinding)composite.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding); |
| |
| // Write out JMSBinding model to stream. |
| ByteArrayOutputStream bos = new ByteArrayOutputStream(); |
| staxProcessor.write(composite, outputFactory.createXMLStreamWriter(bos), context); |
| |
| // Read written JMSBinding to a different JMSBinding model. |
| XMLStreamReader reader2 = inputFactory.createXMLStreamReader(new StringReader(bos.toString())); |
| Composite composite2 = (Composite)staxProcessor.read(reader2, context); |
| JMSBinding binding2 = (JMSBinding)composite2.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding2); |
| |
| // Compare initial binding to written binding. |
| assertEquals(binding, binding2); |
| } |
| |
| public void testDestinationProperties() throws Exception { |
| XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(JMSBindingProcessorTestCase.DEST_PROPS)); |
| Composite composite = (Composite)staxProcessor.read(reader, context); |
| JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| |
| // Write out JMSBinding model to stream. |
| ByteArrayOutputStream bos = new ByteArrayOutputStream(); |
| staxProcessor.write(composite, outputFactory.createXMLStreamWriter(bos), context); |
| |
| // Read written JMSBinding to a different JMSBinding model. |
| XMLStreamReader reader2 = inputFactory.createXMLStreamReader(new StringReader(bos.toString())); |
| Composite composite2 = (Composite)staxProcessor.read(reader2, context); |
| JMSBinding binding2 = (JMSBinding)composite2.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding2); |
| |
| // Compare initial binding to written binding. |
| assertEquals(binding, binding2); |
| } |
| |
| public void testConnectionFactoryProperties() throws Exception { |
| XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(JMSBindingProcessorTestCase.CF_PROPS)); |
| Composite composite = (Composite)staxProcessor.read(reader, context); |
| JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding); |
| |
| // Write out JMSBinding model to stream. |
| ByteArrayOutputStream bos = new ByteArrayOutputStream(); |
| staxProcessor.write(composite, outputFactory.createXMLStreamWriter(bos), context); |
| |
| // Read written JMSBinding to a different JMSBinding model. |
| XMLStreamReader reader2 = inputFactory.createXMLStreamReader(new StringReader(bos.toString())); |
| Composite composite2 = (Composite)staxProcessor.read(reader2, context); |
| JMSBinding binding2 = (JMSBinding)composite2.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding2); |
| |
| // Compare initial binding to written binding. |
| assertEquals(binding, binding2); |
| } |
| |
| public void testActivationSpecProperties() throws Exception { |
| XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(JMSBindingProcessorTestCase.AS_PROPS)); |
| Composite composite = (Composite)staxProcessor.read(reader, context); |
| JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding); |
| |
| // Write out JMSBinding model to stream. |
| ByteArrayOutputStream bos = new ByteArrayOutputStream(); |
| staxProcessor.write(composite, outputFactory.createXMLStreamWriter(bos), context); |
| |
| // Read written JMSBinding to a different JMSBinding model. |
| XMLStreamReader reader2 = inputFactory.createXMLStreamReader(new StringReader(bos.toString())); |
| Composite composite2 = (Composite)staxProcessor.read(reader2, context); |
| JMSBinding binding2 = (JMSBinding)composite2.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding2); |
| |
| // Compare initial binding to written binding. |
| assertEquals(binding, binding2); |
| } |
| |
| public void testResponseDestinationProperties() throws Exception { |
| XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(JMSBindingProcessorTestCase.RESP_DEST_PROPS)); |
| Composite composite = (Composite)staxProcessor.read(reader, context); |
| JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding); |
| |
| // Write out JMSBinding model to stream. |
| ByteArrayOutputStream bos = new ByteArrayOutputStream(); |
| staxProcessor.write(composite, outputFactory.createXMLStreamWriter(bos), context); |
| |
| // Read written JMSBinding to a different JMSBinding model. |
| XMLStreamReader reader2 = inputFactory.createXMLStreamReader(new StringReader(bos.toString())); |
| Composite composite2 = (Composite)staxProcessor.read(reader2, context); |
| JMSBinding binding2 = (JMSBinding)composite2.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding2); |
| |
| // Compare initial binding to written binding. |
| assertEquals(binding, binding2); |
| } |
| |
| public void testResponseConnectionFactoryProperties() throws Exception { |
| XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(JMSBindingProcessorTestCase.RESP_CF_PROPS)); |
| Composite composite = (Composite)staxProcessor.read(reader, context); |
| JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding); |
| |
| // Write out JMSBinding model to stream. |
| ByteArrayOutputStream bos = new ByteArrayOutputStream(); |
| staxProcessor.write(composite, outputFactory.createXMLStreamWriter(bos), context); |
| |
| // Read written JMSBinding to a different JMSBinding model. |
| XMLStreamReader reader2 = inputFactory.createXMLStreamReader(new StringReader(bos.toString())); |
| Composite composite2 = (Composite)staxProcessor.read(reader2, context); |
| JMSBinding binding2 = (JMSBinding)composite2.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding2); |
| |
| // Compare initial binding to written binding. |
| assertEquals(binding, binding2); |
| } |
| |
| public void testResponseActivationSpecProperties() throws Exception { |
| XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(JMSBindingProcessorTestCase.RESP_AS_PROPS)); |
| Composite composite = (Composite)staxProcessor.read(reader, context); |
| JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding); |
| |
| // Write out JMSBinding model to stream. |
| ByteArrayOutputStream bos = new ByteArrayOutputStream(); |
| staxProcessor.write(composite, outputFactory.createXMLStreamWriter(bos), context); |
| |
| // Read written JMSBinding to a different JMSBinding model. |
| XMLStreamReader reader2 = inputFactory.createXMLStreamReader(new StringReader(bos.toString())); |
| Composite composite2 = (Composite)staxProcessor.read(reader2, context); |
| JMSBinding binding2 = (JMSBinding)composite2.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding2); |
| |
| // Compare initial binding to written binding. |
| assertEquals(binding, binding2); |
| } |
| |
| public void testOperationPropertiesProperties() throws Exception { |
| XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(JMSBindingProcessorTestCase.OP_PROPS_PROPS)); |
| Composite composite = (Composite)staxProcessor.read(reader, context); |
| JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding); |
| |
| // Write out JMSBinding model to stream. |
| ByteArrayOutputStream bos = new ByteArrayOutputStream(); |
| staxProcessor.write(composite, outputFactory.createXMLStreamWriter(bos), context); |
| |
| // Read written JMSBinding to a different JMSBinding model. |
| XMLStreamReader reader2 = inputFactory.createXMLStreamReader(new StringReader(bos.toString())); |
| Composite composite2 = (Composite)staxProcessor.read(reader2, context); |
| JMSBinding binding2 = (JMSBinding)composite2.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding2); |
| |
| // Compare initial binding to written binding. |
| assertEquals(binding, binding2); |
| } |
| |
| public void testResouceAdapterProperties() throws Exception { |
| XMLStreamReader reader = |
| inputFactory.createXMLStreamReader(new StringReader(JMSBindingProcessorTestCase.RES_ADPT_PROPS)); |
| Composite composite = (Composite)staxProcessor.read(reader, context); |
| JMSBinding binding = (JMSBinding)composite.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding); |
| |
| // Write out JMSBinding model to stream. |
| ByteArrayOutputStream bos = new ByteArrayOutputStream(); |
| staxProcessor.write(composite, outputFactory.createXMLStreamWriter(bos), context); |
| |
| // Read written JMSBinding to a different JMSBinding model. |
| XMLStreamReader reader2 = inputFactory.createXMLStreamReader(new StringReader(bos.toString())); |
| Composite composite2 = (Composite)staxProcessor.read(reader2, context); |
| JMSBinding binding2 = (JMSBinding)composite2.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding2); |
| |
| // Compare initial binding to written binding. |
| assertEquals(binding, binding2); |
| } |
| |
| public void testConfiguredOperations() throws Exception { |
| XMLStreamReader reader = |
| inputFactory.createXMLStreamReader(new StringReader(JMSBindingProcessorTestCase.CONFIGURED_OPERATIONS)); |
| Composite composite = (Composite)staxProcessor.read(reader, context); |
| JMSBinding binding = (JMSBinding)composite.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding); |
| |
| // Write out JMSBinding model to stream. |
| ByteArrayOutputStream bos = new ByteArrayOutputStream(); |
| staxProcessor.write(composite, outputFactory.createXMLStreamWriter(bos), context); |
| |
| // Read written JMSBinding to a different JMSBinding model. |
| XMLStreamReader reader2 = inputFactory.createXMLStreamReader(new StringReader(bos.toString())); |
| Composite composite2 = (Composite)staxProcessor.read(reader2, context); |
| JMSBinding binding2 = (JMSBinding)composite2.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding2); |
| |
| // Compare initial binding to written binding. |
| assertEquals(binding, binding2); |
| } |
| |
| public void testWireFormat() throws Exception { |
| XMLStreamReader reader = |
| inputFactory.createXMLStreamReader(new StringReader(JMSBindingProcessorTestCase.WIRE_FORMAT)); |
| Composite composite = (Composite)staxProcessor.read(reader, context); |
| JMSBinding binding = (JMSBinding)composite.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding); |
| |
| // Write out JMSBinding model to stream. |
| ByteArrayOutputStream bos = new ByteArrayOutputStream(); |
| staxProcessor.write(composite, outputFactory.createXMLStreamWriter(bos), context); |
| |
| // Read written JMSBinding to a different JMSBinding model. |
| XMLStreamReader reader2 = inputFactory.createXMLStreamReader(new StringReader(bos.toString())); |
| Composite composite2 = (Composite)staxProcessor.read(reader2, context); |
| JMSBinding binding2 = (JMSBinding)composite2.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding2); |
| |
| // Compare initial binding to written binding. |
| assertEquals(binding, binding2); |
| } |
| |
| // TUSCANY-3120 |
| // Checking we don't write out values unless the use has specified them on input |
| public void testDefault() throws Exception { |
| XMLStreamReader reader = |
| inputFactory.createXMLStreamReader(new StringReader(DEFAULT)); |
| Composite composite = (Composite)staxProcessor.read(reader, context); |
| JMSBinding binding = (JMSBinding)composite.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding); |
| |
| ByteArrayOutputStream bos = new ByteArrayOutputStream(); |
| staxProcessor.write(composite, outputFactory.createXMLStreamWriter(bos), context); |
| |
| System.out.println(bos.toString()); |
| assertEquals(bos.toString(), |
| "<?xml version=\'1.0\' encoding=\'UTF-8\'?>" + |
| "<composite xmlns=\"http://docs.oasis-open.org/ns/opencsa/sca/200912\" targetNamespace=\"http://binding-jms\" name=\"binding-jms\">" + |
| "<component name=\"HelloWorldComponent\">" + |
| "<service name=\"HelloWorldService\">" + |
| "<binding.jms><operationProperties name=\"JKL\" /> " + |
| "<destination jndiName=\"AAA\">" + |
| "<property name=\"AAAProp\" type=\"string\"></property>" + |
| "</destination> " + |
| "<connectionFactory jndiName=\"ABC\" /> "+ |
| "<resourceAdapter name=\"GHI\" /> " + |
| "</binding.jms>" + |
| "</service>" + |
| "</component>" + |
| "</composite>"); |
| } |
| |
| public void testOperationPropertiesName() throws Exception { |
| XMLStreamReader reader = |
| inputFactory.createXMLStreamReader(new StringReader(JMSBindingProcessorTestCase.OP_PROP_NAME)); |
| Composite composite = (Composite)staxProcessor.read(reader, context); |
| JMSBinding binding = (JMSBinding)composite.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding); |
| |
| // Write out JMSBinding model to stream. |
| ByteArrayOutputStream bos = new ByteArrayOutputStream(); |
| staxProcessor.write(composite, outputFactory.createXMLStreamWriter(bos), context); |
| |
| // Read written JMSBinding to a different JMSBinding model. |
| XMLStreamReader reader2 = inputFactory.createXMLStreamReader(new StringReader(bos.toString())); |
| Composite composite2 = (Composite)staxProcessor.read(reader2, context); |
| JMSBinding binding2 = (JMSBinding)composite2.getComponents().get(0).getServices().get(0).getBindings().get(0); |
| assertNotNull(binding2); |
| |
| // Compare initial binding to written binding. |
| assertEquals("foo", binding2.getOperationPropertiesName().getLocalPart()); |
| } |
| } |