From b81731425e5fa400987e740d82e74534bcdf47a8 Mon Sep 17 00:00:00 2001 From: slaws Date: Fri, 26 Jun 2009 11:09:50 +0000 Subject: 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 --- .../sca/binding/jms/impl/JMSBindingProcessor.java | 90 ++++++++++++---------- .../jms/impl/JMSBindingProcessorWriteTestCase.java | 52 ++++++++++++- 2 files changed, 99 insertions(+), 43 deletions(-) (limited to 'branches/sca-java-1.x/modules/binding-jms/src') 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 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 staxProcessor; private Monitor monitor; + + public static final String DEFAULT = + "" + + "" + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + ""; @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(), + "" + + "" + + "" + + "" + + " " + + "" + + "" + + " " + + " "+ + " " + + "" + + "" + + "" + + ""); + } } -- cgit v1.2.3