blob: 652630432e96dc3745e1bf51cbf4c4f70e6e1a4b [file] [log] [blame]
/*
* 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.StringReader;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
import junit.framework.TestCase;
import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.OperationsConfigurator;
import org.apache.tuscany.sca.assembly.WireFormat;
import org.apache.tuscany.sca.binding.jms.wireformat.WireFormatJMSBytes;
import org.apache.tuscany.sca.binding.jms.wireformat.WireFormatJMSObject;
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
*/
public class JMSBindingProcessorTestCase extends TestCase {
// Note: If you are adding new JMS binding read test cases,
// consider adding a similar test case to JMSBindingProcessorWriteTestCase.
public static final String COMPOSITE =
"<?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\">"
+ " <implementation.java class=\"services.HelloWorld\"/>"
+ " <service name=\"HelloWorldService\">"
+ " <binding.jms uri=\"jms:jndi:testQueue\" />"
+ " </service>"
+ " </component>"
+ "</composite>";
public static final String HEADERS1 =
"<?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\">"
+ " <implementation.java class=\"services.HelloWorld\"/>"
+ " <service name=\"HelloWorldService\">"
+ " <binding.jms uri=\"jms:queue:testQueue\" >"
+ " <headers type=\"myType\" deliveryMode=\"persistent\" timeToLive=\"54321\" priority=\"5\">"
+ " </headers>"
+ " </binding.jms>"
+ " </service>"
+ " </component>"
+ "</composite>";
public static final String HEADERS_INVALID_PRIORITY =
"<?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\">"
+ " <implementation.java class=\"services.HelloWorld\"/>"
+ " <service name=\"HelloWorldService\">"
+ " <binding.jms uri=\"jms:queue:testQueue\" >"
+ " <headers type=\"myType\" deliveryMode=\"persistent\" timeToLive=\"54321\" priority=\"medium\">"
+ " </headers>"
+ " </binding.jms>"
+ " </service>"
+ " </component>"
+ "</composite>";
public static final String PROPERTIES1 =
"<?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\">"
+ " <implementation.java class=\"services.HelloWorld\"/>"
+ " <service name=\"HelloWorldService\">"
+ " <binding.jms uri=\"jms:testQueue\" >"
+ " <headers>"
+ " <property name=\"p1\">bla</property>"
+ " <property name=\"intProp\" type=\"int\">42</property>"
+ " </headers>"
+ " </binding.jms>"
+ " </service>"
+ " </component>"
+ "</composite>";
public static final String OP_PROPERTIES1 =
"<?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\">"
+ " <implementation.java class=\"services.HelloWorld\"/>"
+ " <service name=\"HelloWorldService\">"
+ " <binding.jms uri=\"jms:testQueue\" >"
+ " <operationProperties name=\"op1\">"
+ " <headers type=\"op1Type\" >"
+ " <property name=\"p1\">bla</property>"
+ " <property name=\"intProp\" type=\"int\">42</property>"
+ " </headers>"
+ " </operationProperties >"
+ " <operationProperties name=\"op2\" nativeOperation=\"nativeOp2\" >"
+ " <headers type=\"op2Type\">"
+ " <property name=\"p2\">op2bla</property>"
+ " <property name=\"intProp\" type=\"int\">77</property>"
+ " </headers>"
+ " </operationProperties >"
+ " </binding.jms>"
+ " </service>"
+ " </component>"
+ "</composite>";
public static final String OP_NAMES_NO_PROPERTIES1 =
"<?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\">"
+ " <implementation.java class=\"services.HelloWorld\"/>"
+ " <service name=\"HelloWorldService\">"
+ " <binding.jms uri=\"jms:testQueue\" >"
+ " <operationProperties name=\"op1\">"
+ " </operationProperties >"
+ " <operationProperties name=\"op2\" nativeOperation=\"nativeOp2\" >"
+ " </operationProperties >"
+ " </binding.jms>"
+ " </service>"
+ " </component>"
+ "</composite>";
public static final String SELECTOR =
"<?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\">"
+ " <implementation.java class=\"services.HelloWorld\"/>"
+ " <service name=\"HelloWorldService\">"
+ " <binding.jms uri=\"jms:testQueue\" >"
+ " <messageSelection selector=\"prop1 = 2\" />"
+ " </binding.jms>"
+ " </service>"
+ " </component>"
+ "</composite>";
public static final String COMPOSITE_INVALID_URI =
"<?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\">"
+ " <implementation.java class=\"services.HelloWorld\"/>"
+ " <service name=\"HelloWorldService\">"
+ " <binding.jms uri=\"invalidjms:testQueue\" />"
+ " </service>"
+ " </component>"
+ "</composite>";
// Invalid: contains both a response attribute and a response element.
public static final String COMPOSITE_INVALID_RESPONSE_ATTR_ELEMENT =
"<?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\">"
+ " <implementation.java class=\"services.HelloWorld\"/>"
+ " <service name=\"HelloWorldService\">"
+ " <binding.jms uri=\"jms:testQueue\" responseConnection=\"responseConnectionAttrName\">"
+ " <response>"
+ " <destination jndiName=\"responseConnectionElementName\"/>"
+ " </response>"
+ " </binding.jms>"
+ " </service>"
+ " </component>"
+ "</composite>";
public static final String DEST_PROPS =
"<?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\">"
+ " <implementation.java class=\"services.HelloWorld\"/>"
+ " <service name=\"HelloWorldService\">"
+ " <binding.jms>"
+ " <destination jndiName=\"foo\">"
+ " <property name=\"xxx\" type=\"yyy\">"
+ " some value text"
+ " </property>"
+ " <property name=\"two\">"
+ " bla"
+ " </property>"
+ " </destination>"
+ " </binding.jms>"
+ " </service>"
+ " </component>"
+ "</composite>";
public static final String CF_PROPS =
"<?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\">"
+ " <implementation.java class=\"services.HelloWorld\"/>"
+ " <service name=\"HelloWorldService\">"
+ " <binding.jms>"
+ " <connectionFactory jndiName=\"foo\">"
+ " <property name=\"xxx\" type=\"yyy\">"
+ " some value text"
+ " </property>"
+ " <property name=\"two\">"
+ " bla"
+ " </property>"
+ " </connectionFactory>"
+ " </binding.jms>"
+ " </service>"
+ " </component>"
+ "</composite>";
public static final String AS_PROPS =
"<?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\">"
+ " <implementation.java class=\"services.HelloWorld\"/>"
+ " <service name=\"HelloWorldService\">"
+ " <binding.jms>"
+ " <activationSpec name=\"foo\">"
+ " <property name=\"xxx\" type=\"yyy\">"
+ " some value text"
+ " </property>"
+ " <property name=\"two\">"
+ " bla"
+ " </property>"
+ " </activationSpec>"
+ " </binding.jms>"
+ " </service>"
+ " </component>"
+ "</composite>";
public static final String RESP_DEST_PROPS =
"<?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\">"
+ " <implementation.java class=\"services.HelloWorld\"/>"
+ " <service name=\"HelloWorldService\">"
+ " <binding.jms>"
+ " <response>"
+ " <destination jndiName=\"foo\">"
+ " <property name=\"xxx\" type=\"yyy\">"
+ " some value text"
+ " </property>"
+ " <property name=\"two\">"
+ " bla"
+ " </property>"
+ " </destination>"
+ " </response>"
+ " </binding.jms>"
+ " </service>"
+ " </component>"
+ "</composite>";
public static final String RESP_CF_PROPS =
"<?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\">"
+ " <implementation.java class=\"services.HelloWorld\"/>"
+ " <service name=\"HelloWorldService\">"
+ " <binding.jms>"
+ " <response>"
+ " <connectionFactory jndiName=\"foo\">"
+ " <property name=\"xxx\" type=\"yyy\">"
+ " some value text"
+ " </property>"
+ " <property name=\"two\">"
+ " bla"
+ " </property>"
+ " </connectionFactory>"
+ " </response>"
+ " </binding.jms>"
+ " </service>"
+ " </component>"
+ "</composite>";
public static final String RESP_AS_PROPS =
"<?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\">"
+ " <implementation.java class=\"services.HelloWorld\"/>"
+ " <service name=\"HelloWorldService\">"
+ " <binding.jms>"
+ " <response>"
+ " <activationSpec name=\"foo\">"
+ " <property name=\"xxx\" type=\"yyy\">"
+ " some value text"
+ " </property>"
+ " <property name=\"two\">"
+ " bla"
+ " </property>"
+ " </activationSpec>"
+ " </response>"
+ " </binding.jms>"
+ " </service>"
+ " </component>"
+ "</composite>";
public static final String OP_PROPS_PROPS =
"<?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\">"
+ " <implementation.java class=\"services.HelloWorld\"/>"
+ " <service name=\"HelloWorldService\">"
+ " <binding.jms>"
+ " <operationProperties name=\"op1\">"
+ " <property name=\"xxx\" type=\"yyy\">"
+ " some value text"
+ " </property>"
+ " <property name=\"two\">"
+ " bla"
+ " </property>"
+ " </operationProperties >"
+ " </binding.jms>"
+ " </service>"
+ " </component>"
+ "</composite>";
public static final String RES_ADPT_PROPS =
"<?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\">"
+ " <implementation.java class=\"services.HelloWorld\"/>"
+ " <service name=\"HelloWorldService\">"
+ " <binding.jms>"
+ " <resourceAdapter name=\"r1\">"
+ " <property name=\"xxx\" type=\"yyy\">"
+ " some value text"
+ " </property>"
+ " <property name=\"two\">"
+ " bla"
+ " </property>"
+ " </resourceAdapter>"
+ " </binding.jms>"
+ " </service>"
+ " </component>"
+ "</composite>";
public static final String CONFIGURED_OPERATIONS =
"<?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\">"
+ " <implementation.java class=\"services.HelloWorld\"/>"
+ " <service name=\"HelloWorldService\">"
+ " <binding.jms uri=\"jms:testQueue\" >"
+ " <operationProperties name=\"op1\">"
+ " </operationProperties >"
+ " <operation name=\"op1\" requires=\"IntentOne IntentTwo\"/>"
+ " </binding.jms>"
+ " </service>"
+ " </component>"
+ "</composite>";
public static final String WIRE_FORMAT =
"<?xml version=\"1.0\" encoding=\"ASCII\"?>"
+ "<composite xmlns=\"http://docs.oasis-open.org/ns/opencsa/sca/200912\" targetNamespace=\"http://binding-jms\" xmlns:tuscany=\"http://tuscany.apache.org/xmlns/sca/1.1\" name=\"binding-jms\">"
+ " <component name=\"HelloWorldComponent\">"
+ " <implementation.java class=\"services.HelloWorld\"/>"
+ " <service name=\"HelloWorldService\">"
+ " <binding.jms uri=\"jms:testQueue\" >"
+ " <response>"
+ " <destination jndiName=\"responseConnectionElementName\"/>"
+ " <tuscany:wireFormat.jmsBytes/>"
+ " </response>"
+ " <tuscany:wireFormat.jmsObject/>"
+ " </binding.jms>"
+ " </service>"
+ " </component>"
+ "</composite>";
public static final String OP_PROP_NAME =
"<?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\">"
+ " <implementation.java class=\"services.HelloWorld\"/>"
+ " <service name=\"HelloWorldService\">"
+ " <binding.jms operationProperties=\"foo\"/>"
+ " </service>"
+ " </component>"
+ "</composite>";
private XMLInputFactory inputFactory;
private StAXArtifactProcessor<Object> staxProcessor;
private ProcessorContext context;
@Override
protected void setUp() throws Exception {
DefaultExtensionPointRegistry extensionPoints = new DefaultExtensionPointRegistry();
context = new ProcessorContext(extensionPoints);
inputFactory = XMLInputFactory.newInstance();
StAXArtifactProcessorExtensionPoint staxProcessors = new DefaultStAXArtifactProcessorExtensionPoint(extensionPoints);
staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, null);
}
/**
* 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(COMPOSITE));
Composite composite = (Composite)staxProcessor.read(reader, context);
JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0);
assertNotNull(binding);
assertEquals("testQueue", binding.getDestinationName());
}
public void testHeaders1() throws Exception {
XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(HEADERS1));
Composite composite = (Composite)staxProcessor.read(reader, context);
JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0);
assertNotNull(binding);
assertEquals("myType", binding.getJMSHeaderType());
assertTrue(binding.isHeaderDeliveryModePersistent());
assertEquals(54321, binding.getJMSHeaderTimeToLive().longValue());
assertEquals(5, binding.getJMSHeaderPriority().intValue());
}
public void testProperties1() throws Exception {
XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(PROPERTIES1));
Composite composite = (Composite)staxProcessor.read(reader, context);
JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0);
assertNotNull(binding);
assertEquals("bla", binding.getProperty("p1"));
assertEquals(42, ((Integer)binding.getProperty("intProp")).intValue());
}
public void testOpProperties1() throws Exception {
XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(OP_PROPERTIES1));
Composite composite = (Composite)staxProcessor.read(reader, context);
JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0);
assertNotNull(binding);
Map<String, Object> op1Props = binding.getOperationProperties("op1");
assertEquals("op1Type", binding.getOperationJMSType("op1"));
assertEquals("bla", op1Props.get("p1"));
assertEquals(42, ((Integer)op1Props.get("intProp")).intValue());
assertEquals("op2Type", binding.getOperationJMSType("op2"));
Map<String, Object> op2Props = binding.getOperationProperties("op2");
assertEquals("op2bla", op2Props.get("p2"));
assertEquals(77, ((Integer)op2Props.get("intProp")).intValue());
}
public void testSubscriptionHeaders () throws Exception {
XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(SELECTOR));
Composite composite = (Composite)staxProcessor.read(reader, context);
JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0);
assertNotNull(binding);
assertEquals("prop1 = 2", binding.getJMSSelector());
}
/** Test various parsing validation requirements. */
public void testParsingValidationErrors1() throws Exception {
// Composite with malformed URI.
XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(COMPOSITE_INVALID_URI));
try {
Composite composite = (Composite)staxProcessor.read(reader, context);
} catch(Exception e) {
// JMSBindingExceptions are expected with invalid composite.
if ( !e.getClass().isAssignableFrom( JMSBindingException.class ) )
throw e;
// Do assertion to make sure test registers results.
assertTrue( e.getClass().isAssignableFrom( JMSBindingException.class ) );
}
}
public void testParsingValidationErrors2() throws Exception {
// Composite with invalid priority
XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(HEADERS_INVALID_PRIORITY));
try {
Composite composite = (Composite)staxProcessor.read(reader, context);
} catch(Exception e) {
// JMSBindingExceptions are expected with invalid composite.
if ( !e.getClass().isAssignableFrom( JMSBindingException.class ) )
throw e;
// Do assertion to make sure test registers results.
assertTrue( e.getClass().isAssignableFrom( JMSBindingException.class ) );
return;
}
}
/** Test various model validation requirements. */
public void testValidationErrors1() throws Exception {
// Composite with response connection attr and element.
XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(COMPOSITE_INVALID_RESPONSE_ATTR_ELEMENT));
try {
Composite composite = (Composite)staxProcessor.read(reader, context);
} catch(Exception e) {
// JMSBindingExceptions are expected with invalid composite.
if ( !e.getClass().isAssignableFrom( JMSBindingException.class ) )
throw e;
// Do assertion to make sure test registers results.
assertTrue( e.getClass().isAssignableFrom( JMSBindingException.class ) );
}
}
public void testDestinationProperties() throws Exception {
XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(DEST_PROPS));
Composite composite = (Composite)staxProcessor.read(reader, context);
JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0);
assertNotNull(binding);
assertNotNull(binding.getDestinationProperties());
assertEquals(2, binding.getDestinationProperties().size());
BindingProperty bp = binding.getDestinationProperties().get("xxx");
assertEquals("xxx", bp.getName());
assertEquals("yyy", bp.getType());
assertEquals("some value text", bp.getValue().toString().trim());
BindingProperty bp2 = binding.getDestinationProperties().get("two");
assertEquals("two", bp2.getName());
assertEquals(null, bp2.getType());
assertEquals("bla", bp2.getValue().toString().trim());
}
public void testConnectionFactoryProperties() throws Exception {
XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(CF_PROPS));
Composite composite = (Composite)staxProcessor.read(reader, context);
JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0);
assertNotNull(binding);
assertNotNull(binding.getConnectionFactoryProperties());
assertEquals(2, binding.getConnectionFactoryProperties().size());
BindingProperty bp = binding.getConnectionFactoryProperties().get("xxx");
assertEquals("xxx", bp.getName());
assertEquals("yyy", bp.getType());
assertEquals("some value text", bp.getValue().toString().trim());
BindingProperty bp2 = binding.getConnectionFactoryProperties().get("two");
assertEquals("two", bp2.getName());
assertEquals(null, bp2.getType());
assertEquals("bla", bp2.getValue().toString().trim());
}
public void testActivationSpecProperties() throws Exception {
XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(AS_PROPS));
Composite composite = (Composite)staxProcessor.read(reader, context);
JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0);
assertNotNull(binding);
assertNotNull(binding.getActivationSpecProperties());
assertEquals(2, binding.getActivationSpecProperties().size());
BindingProperty bp = binding.getActivationSpecProperties().get("xxx");
assertEquals("xxx", bp.getName());
assertEquals("yyy", bp.getType());
assertEquals("some value text", bp.getValue().toString().trim());
BindingProperty bp2 = binding.getActivationSpecProperties().get("two");
assertEquals("two", bp2.getName());
assertEquals(null, bp2.getType());
assertEquals("bla", bp2.getValue().toString().trim());
}
public void testResponseDestinationProperties() throws Exception {
XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(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);
assertNotNull(binding.getResponseDestinationProperties());
assertEquals(2, binding.getResponseDestinationProperties().size());
BindingProperty bp = binding.getResponseDestinationProperties().get("xxx");
assertEquals("xxx", bp.getName());
assertEquals("yyy", bp.getType());
assertEquals("some value text", bp.getValue().toString().trim());
BindingProperty bp2 = binding.getResponseDestinationProperties().get("two");
assertEquals("two", bp2.getName());
assertEquals(null, bp2.getType());
assertEquals("bla", bp2.getValue().toString().trim());
}
public void testResponseConnectionFactoryProperties() throws Exception {
XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(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);
assertNotNull(binding.getResponseConnectionFactoryProperties());
assertEquals(2, binding.getResponseConnectionFactoryProperties().size());
BindingProperty bp = binding.getResponseConnectionFactoryProperties().get("xxx");
assertEquals("xxx", bp.getName());
assertEquals("yyy", bp.getType());
assertEquals("some value text", bp.getValue().toString().trim());
BindingProperty bp2 = binding.getResponseConnectionFactoryProperties().get("two");
assertEquals("two", bp2.getName());
assertEquals(null, bp2.getType());
assertEquals("bla", bp2.getValue().toString().trim());
}
public void testResponseActivationSpecProperties() throws Exception {
XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(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);
assertNotNull(binding.getResponseActivationSpecProperties());
assertEquals(2, binding.getResponseActivationSpecProperties().size());
BindingProperty bp = binding.getResponseActivationSpecProperties().get("xxx");
assertEquals("xxx", bp.getName());
assertEquals("yyy", bp.getType());
assertEquals("some value text", bp.getValue().toString().trim());
BindingProperty bp2 = binding.getResponseActivationSpecProperties().get("two");
assertEquals("two", bp2.getName());
assertEquals(null, bp2.getType());
assertEquals("bla", bp2.getValue().toString().trim());
}
public void testOperationPropertiesProperties() throws Exception {
XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(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);
assertNotNull(binding.getOperationPropertiesProperties("op1"));
assertEquals(2, binding.getOperationPropertiesProperties("op1").size());
BindingProperty bp = binding.getOperationPropertiesProperties("op1").get("xxx");
assertEquals("xxx", bp.getName());
assertEquals("yyy", bp.getType());
assertEquals("some value text", bp.getValue().toString().trim());
BindingProperty bp2 = binding.getOperationPropertiesProperties("op1").get("two");
assertEquals("two", bp2.getName());
assertEquals(null, bp2.getType());
assertEquals("bla", bp2.getValue().toString().trim());
}
public void testResouceAdapterProperties() throws Exception {
XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(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);
assertEquals("r1", binding.getResourceAdapterName());
assertNotNull(binding.getResourceAdapterProperties());
assertEquals(2, binding.getResourceAdapterProperties().size());
BindingProperty bp = binding.getResourceAdapterProperties().get("xxx");
assertEquals("xxx", bp.getName());
assertEquals("yyy", bp.getType());
assertEquals("some value text", bp.getValue().toString().trim());
BindingProperty bp2 = binding.getResourceAdapterProperties().get("two");
assertEquals("two", bp2.getName());
assertEquals(null, bp2.getType());
assertEquals("bla", bp2.getValue().toString().trim());
}
/**
* Tests the APIs:
* public Set<String> getOperationNames();
* public Object getOperationProperty(String opName, String propName );
* @throws Exception
*/
public void testOpProperties2() throws Exception {
XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(OP_PROPERTIES1));
Composite composite = (Composite)staxProcessor.read(reader, context);
JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0);
assertNotNull(binding);
Set<String> opNames = binding.getOperationNames();
assertEquals( 2, opNames.size() );
// Recall that order is not guaranteed iterating over a set.
for (Iterator<String> it=opNames.iterator(); it.hasNext(); ) {
String opName = it.next();
assertTrue( opName.equals( "op1") || opName.equals( "op2"));
}
Object value = binding.getOperationProperty( "op1", "p1" );
assertEquals("bla", value);
value = binding.getOperationProperty( "op1", "intProp" );
assertEquals(42, ((Integer)value).intValue());
value = binding.getOperationProperty( "op2", "p2" );
assertEquals("op2bla", value);
value = binding.getOperationProperty( "op2", "intProp" );
assertEquals(77, ((Integer)value).intValue());
}
/**
* Tests the APIs:
* public Set<String> getOperationNames();
* Provides no optional properties or sub elements
* @throws Exception
*/
public void testOpProperties3() throws Exception {
XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(OP_NAMES_NO_PROPERTIES1));
Composite composite = (Composite)staxProcessor.read(reader, context);
JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0);
assertNotNull(binding);
Set<String> opNames = binding.getOperationNames();
assertEquals( 2, opNames.size() );
// Recall that order is not guaranteed iterating over a set.
for (Iterator<String> it=opNames.iterator(); it.hasNext(); ) {
String opName = it.next();
assertTrue( opName.equals( "op1") || opName.equals( "op2"));
}
}
/**
* Tests the APIs:
* public Set<String> getOperationNames();
* Provides no optional properties or sub elements
* @throws Exception
*/
public void testConfiguredOperations1() throws Exception {
XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(CONFIGURED_OPERATIONS));
Composite composite = (Composite)staxProcessor.read(reader, context);
JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0);
assertNotNull(binding);
OperationsConfigurator opConfig = ((OperationsConfigurator)binding);
assertEquals(opConfig.getConfiguredOperations().get(0).getRequiredIntents().size(), 2);
}
/**
* Tests the APIs:
* public WireFormat getRequstWireFormat();
* public WireFormat getResponseWireFormat();
*
* @throws Exception
*/
public void testWireFormat() throws Exception {
XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(WIRE_FORMAT));
Composite composite = (Composite)staxProcessor.read(reader, context);
JMSBinding binding = (JMSBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0);
assertNotNull(binding);
WireFormat requestWireFormat = binding.getRequestWireFormat();
assertEquals(WireFormatJMSObject.class, requestWireFormat.getClass());
WireFormat responseWireFormat = binding.getResponseWireFormat();
assertEquals(WireFormatJMSBytes.class, responseWireFormat.getClass());
}
public void testOpPropertiesName() throws Exception {
XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(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);
assertEquals( "foo", binding.getOperationPropertiesName().getLocalPart() );
}
}