diff options
author | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2009-06-26 11:09:50 +0000 |
---|---|---|
committer | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2009-06-26 11:09:50 +0000 |
commit | b81731425e5fa400987e740d82e74534bcdf47a8 (patch) | |
tree | 48685d18d6ee46df861201ce78dc17940f9fff5a /branches/sca-java-1.x/modules/binding-jms/src | |
parent | 339ba844b9a14e0e428d3ebad1dcb943c70bf58e (diff) |
TUSCANY-3120 - improve write processing so that it writes out what has been entered and ignores defaults where possible.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@788655 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/sca-java-1.x/modules/binding-jms/src')
2 files changed, 99 insertions, 43 deletions
diff --git a/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java b/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java index b1d67ec3ee..3d0a2d8bf9 100644 --- a/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java +++ b/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java @@ -901,12 +901,12 @@ public class JMSBindingProcessor extends BaseStAXArtifactProcessor implements St writer.writeAttribute("uri", jmsBinding.getURI()); } - String dest = jmsBinding.getDestinationName(); - if (dest != null) { - if ( dest != null ) { - writer.writeAttribute("uri", "jms:" + jmsBinding.getDestinationName()); - } - } + //String dest = jmsBinding.getDestinationName(); + //if (dest != null) { + // if ( dest != null ) { + // writer.writeAttribute("uri", "jms:" + jmsBinding.getDestinationName()); + // } + //} String correlationScheme = jmsBinding.getCorrelationScheme(); if ( correlationScheme != null ) { @@ -951,7 +951,7 @@ public class JMSBindingProcessor extends BaseStAXArtifactProcessor implements St writeResponseActivationSpecProperties( jmsBinding, writer ); if ((jmsBinding.getResponseWireFormat() != null) && - !(jmsBinding.getResponseWireFormat() instanceof WireFormatJMSTextXML)){ + !(jmsBinding.getResponseWireFormat() instanceof WireFormatJMSDefault)){ writeWireFormat(jmsBinding.getResponseWireFormat(), writer); } @@ -965,7 +965,7 @@ public class JMSBindingProcessor extends BaseStAXArtifactProcessor implements St writeConfiguredOperations( jmsBinding, writer ); if ((jmsBinding.getRequestWireFormat() != null) && - !(jmsBinding.getRequestWireFormat() instanceof WireFormatJMSTextXML)){ + !(jmsBinding.getRequestWireFormat() instanceof WireFormatJMSDefault)){ writeWireFormat(jmsBinding.getRequestWireFormat(), writer); } @@ -1131,39 +1131,43 @@ public class JMSBindingProcessor extends BaseStAXArtifactProcessor implements St Integer jmsPriority = jmsBinding.getOperationJMSPriority(opName); Map<String, Object> operationProperties = jmsBinding.getOperationProperties(opName); - if (jmsType != null || jmsCorrelationId != null || jmsDeliveryMode != null || - jmsTimeToLive != null || jmsPriority != null || operationProperties != null) { - - writer.writeStartElement(Constants.SCA10_NS, JMSBindingConstants.HEADERS); - - if (jmsType != null && jmsType.length() > 0) { - writer.writeAttribute("JMSType", jmsType); - } - - if (jmsCorrelationId != null && jmsCorrelationId.length() > 0) { - writer.writeAttribute("JMSCorrelationID", jmsCorrelationId); - } - - if (jmsDeliveryMode != null) { - if (jmsDeliveryMode.booleanValue()) - writer.writeAttribute("JMSDeliveryMode", "PERSISTENT"); - else - writer.writeAttribute("JMSDeliveryMode", "NON_PERSISTENT"); - } - - if (jmsTimeToLive != null) { - writer.writeAttribute("JMSTimeToLive", jmsTimeToLive.toString()); - } - - if (jmsPriority != null) { - writer.writeAttribute("JMSPriority", jmsPriority.toString()); + if (operationProperties != null){ + if ((jmsType != null && jmsType.length() > 0) || + (jmsCorrelationId != null && jmsCorrelationId.length() > 0) || + jmsDeliveryMode != null || jmsTimeToLive != null || + jmsPriority != null) { + + writer.writeStartElement(Constants.SCA10_NS, JMSBindingConstants.HEADERS); + + if (jmsType != null && jmsType.length() > 0) { + writer.writeAttribute("JMSType", jmsType); + } + + if (jmsCorrelationId != null && jmsCorrelationId.length() > 0) { + writer.writeAttribute("JMSCorrelationID", jmsCorrelationId); + } + + if (jmsDeliveryMode != null) { + if (jmsDeliveryMode.booleanValue()) + writer.writeAttribute("JMSDeliveryMode", "PERSISTENT"); + else + writer.writeAttribute("JMSDeliveryMode", "NON_PERSISTENT"); + } + + if (jmsTimeToLive != null) { + writer.writeAttribute("JMSTimeToLive", jmsTimeToLive.toString()); + } + + if (jmsPriority != null) { + writer.writeAttribute("JMSPriority", jmsPriority.toString()); + } + + writeProperties( operationProperties, writer ); + + writer.writeEndElement(); + // Strange bug. Without white space, headers end tag improperly read. + // writer.writeCharacters( " " ); } - - writeProperties( operationProperties, writer ); - - writer.writeEndElement(); - // Strange bug. Without white space, headers end tag improperly read. - // writer.writeCharacters( " " ); } writer.writeEndElement(); @@ -1255,7 +1259,8 @@ public class JMSBindingProcessor extends BaseStAXArtifactProcessor implements St // } String destinationCreate = jmsBinding.getDestinationCreate(); - if ( destinationCreate != null && destinationCreate.length() > 0) { + if ( destinationCreate != null && destinationCreate.length() > 0 && + !destinationCreate.equals(JMSBindingConstants.CREATE_IF_NOT_EXIST)) { writer.writeAttribute("create", destinationCreate); } @@ -1287,7 +1292,8 @@ public class JMSBindingProcessor extends BaseStAXArtifactProcessor implements St } String destinationCreate = jmsBinding.getConnectionFactoryCreate(); - if ( destinationCreate != null && destinationCreate.length() > 0) { + if ( destinationCreate != null && destinationCreate.length() > 0 && + !destinationCreate.equals(JMSBindingConstants.CREATE_IF_NOT_EXIST)) { writer.writeAttribute("create", destinationCreate); } diff --git a/branches/sca-java-1.x/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessorWriteTestCase.java b/branches/sca-java-1.x/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessorWriteTestCase.java index d9427407e5..5b18f30cbc 100644 --- a/branches/sca-java-1.x/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessorWriteTestCase.java +++ b/branches/sca-java-1.x/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessorWriteTestCase.java @@ -58,6 +58,26 @@ public class JMSBindingProcessorWriteTestCase extends TestCase { private XMLOutputFactory outputFactory; private StAXArtifactProcessor<Object> staxProcessor; private Monitor monitor; + + public static final String DEFAULT = + "<?xml version=\"1.0\" encoding=\"ASCII\"?>" + + "<composite xmlns=\"http://www.osoa.org/xmlns/sca/1.0\" targetNamespace=\"http://binding-jms\" name=\"binding-jms\">" + + " <component name=\"HelloWorldComponent\">" + + " <service name=\"HelloWorldService\">" + + " <binding.jms>" + + " <destination name=\"AAA\">" + + " <property name=\"AAAProp\" type=\"string\"/>" + + " </destination>" + + " <connectionFactory name=\"ABC\"/>" + + " <response/>" + + " <headers/>" + + " <resourceAdapter name=\"GHI\"/>" + + " <operationProperties name=\"JKL\">" + + " </operationProperties>" + + " </binding.jms>" + + " </service>" + + " </component>" + + "</composite>"; @Override protected void setUp() throws Exception { @@ -381,5 +401,35 @@ public class JMSBindingProcessorWriteTestCase extends TestCase { // 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); + 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)); + + System.out.println(bos.toString()); + assertEquals(bos.toString(), + "<?xml version=\'1.0\' encoding=\'UTF-8\'?>" + + "<composite targetNamespace=\"http://binding-jms\" name=\"binding-jms\" xmlns=\"http://www.osoa.org/xmlns/sca/1.0\">" + + "<component name=\"HelloWorldComponent\">" + + "<service name=\"HelloWorldService\">" + + "<binding.jms><operationProperties name=\"JKL\" /> " + + "<destination name=\"AAA\">" + + "<property name=\"AAAProp\" type=\"string\"></property>" + + "</destination> " + + "<connectionFactory name=\"ABC\" /> "+ + "<resourceAdapter name=\"GHI\" /> " + + "</binding.jms>" + + "</service>" + + "</component>" + + "</composite>"); + } } |