Hi Andreas, How is this going to impact the release process, if we are to release with Axis2 1.7.2?
Thanks, Hiranya > On May 29, 2016, at 8:54 AM, veit...@apache.org wrote: > > Author: veithen > Date: Sun May 29 15:54:01 2016 > New Revision: 1746027 > > URL: http://svn.apache.org/viewvc?rev=1746027&view=rev > Log: > SYNAPSE-1027: Fix a performance regression caused by pass through related > code. Patch provided by Auke Schrijnen. Also update the Axis2 version to > 1.7.3-SNAPSHOT since the unit test depends on a fix in the Axis2 transport > testkit. > > Added: > > synapse/trunk/java/modules/transports/core/nhttp/src/test/java/org/apache/synapse/transport/passthru/ > > synapse/trunk/java/modules/transports/core/nhttp/src/test/java/org/apache/synapse/transport/passthru/util/ > > synapse/trunk/java/modules/transports/core/nhttp/src/test/java/org/apache/synapse/transport/passthru/util/RelayUtilsTest.java > (with props) > Modified: > > synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/util/RelayUtils.java > synapse/trunk/java/pom.xml > > Modified: > synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/util/RelayUtils.java > URL: > http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/util/RelayUtils.java?rev=1746027&r1=1746026&r2=1746027&view=diff > ============================================================================== > --- > synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/util/RelayUtils.java > (original) > +++ > synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/util/RelayUtils.java > Sun May 29 15:54:01 2016 > @@ -42,6 +42,7 @@ import org.apache.synapse.transport.pass > > import javax.activation.DataHandler; > import javax.activation.DataSource; > +import javax.xml.namespace.QName; > import javax.xml.stream.XMLStreamException; > > import java.io.BufferedInputStream; > @@ -88,10 +89,20 @@ public class RelayUtils { > } > > SOAPEnvelope envelope = messageContext.getEnvelope(); > - OMElement contentEle = envelope.getBody().getFirstChildWithName( > - RelayConstants.BINARY_CONTENT_QNAME); > > - if (contentEle != null) { > + QName firstElementQName; > + if (envelope.getSOAPBodyFirstElementNS() != null) { > + firstElementQName = new QName( > + envelope.getSOAPBodyFirstElementNS().getNamespaceURI(), > + envelope.getSOAPBodyFirstElementLocalName()); > + } else if (envelope.getSOAPBodyFirstElementLocalName() != null){ > + firstElementQName = new > QName(envelope.getSOAPBodyFirstElementLocalName()); > + } else { > + firstElementQName = null; > + } > + > + if (RelayConstants.BINARY_CONTENT_QNAME.equals(firstElementQName)) { > + OMElement contentEle = envelope.getBody().getFirstElement(); > OMNode node = contentEle.getFirstOMChild(); > if (node != null && (node instanceof OMText)) { > OMText binaryDataNode = (OMText) node; > > Added: > synapse/trunk/java/modules/transports/core/nhttp/src/test/java/org/apache/synapse/transport/passthru/util/RelayUtilsTest.java > URL: > http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/test/java/org/apache/synapse/transport/passthru/util/RelayUtilsTest.java?rev=1746027&view=auto > ============================================================================== > --- > synapse/trunk/java/modules/transports/core/nhttp/src/test/java/org/apache/synapse/transport/passthru/util/RelayUtilsTest.java > (added) > +++ > synapse/trunk/java/modules/transports/core/nhttp/src/test/java/org/apache/synapse/transport/passthru/util/RelayUtilsTest.java > Sun May 29 15:54:01 2016 > @@ -0,0 +1,102 @@ > +/* > + * 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.synapse.transport.passthru.util; > + > +import static org.junit.Assert.*; > + > +import java.io.IOException; > +import java.io.InputStream; > +import java.io.StringReader; > +import java.nio.charset.Charset; > + > +import javax.xml.namespace.QName; > +import javax.xml.stream.XMLStreamException; > + > +import org.apache.axiom.om.OMElement; > +import org.apache.axiom.om.OMXMLBuilderFactory; > +import org.apache.axiom.soap.SOAPEnvelope; > +import org.apache.axis2.context.ConfigurationContext; > +import org.apache.axis2.context.MessageContext; > +import org.apache.axis2.engine.AxisConfiguration; > +import org.apache.commons.io.input.ReaderInputStream; > +import org.junit.Before; > +import org.junit.Test; > + > +public class RelayUtilsTest { > + > + private static final Charset UTF8 = Charset.forName("UTF-8"); > + > + private final String xml = > + "<s:Envelope > xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'>" > + + "<s:Body><payload><data>value</data></payload></s:Body>" > + + "</s:Envelope>"; > + > + private final QName payloadQName = new QName("payload"); > + > + MessageContext msgCtx; > + > + @Before > + public void setUp() throws Exception { > + msgCtx = new MessageContext(); > + > + AxisConfiguration configuration = new AxisConfiguration(); > + ConfigurationContext context = new > ConfigurationContext(configuration); > + msgCtx.setConfigurationContext(context); > + } > + > + @Test > + public void testSOAPBodyIsntFullyReadWhenNotUsingBinaryRelayBuilder() > + throws IOException, XMLStreamException { > + > + SOAPEnvelope envelope = OMXMLBuilderFactory > + .createSOAPModelBuilder(new > StringReader(xml)).getSOAPEnvelope(); > + > + msgCtx.setEnvelope(envelope); > + > + // Build message when using pass through pipe or binary relay builder > + RelayUtils.buildMessage(msgCtx); > + > + // Ensure that the payload element is accessible > + assertEquals(payloadQName, > msgCtx.getEnvelope().getBody().getFirstElement().getQName()); > + > + // Ensure that the body isn't fully build to support the use of > deferred building > + assertFalse(msgCtx.getEnvelope().getBody().isComplete()); > + } > + > + @Test > + public void testBinaryRelayPayloadExpandsToOriginalPayload() > + throws IOException, XMLStreamException { > + > + // Transform request soap message into a binary payload > + BinaryRelayBuilder builder = new BinaryRelayBuilder(); > + InputStream stream = new ReaderInputStream(new StringReader(xml), > UTF8); > + OMElement element = builder.processDocument(stream, "text/xml", > msgCtx); > + msgCtx.setEnvelope((SOAPEnvelope)element); > + > + // Build message when using pass through pipe or binary relay builder > + RelayUtils.buildMessage(msgCtx); > + > + // Ensure that the binary payload is transformed to the appropriate > element > + assertEquals(payloadQName, > msgCtx.getEnvelope().getBody().getFirstElement().getQName()); > + > + // Ensure that the body isn't fully build to support the use of > deferred building > + assertFalse(msgCtx.getEnvelope().getBody().isComplete()); > + } > + > +} > > Propchange: > synapse/trunk/java/modules/transports/core/nhttp/src/test/java/org/apache/synapse/transport/passthru/util/RelayUtilsTest.java > ------------------------------------------------------------------------------ > svn:eol-style = native > > Modified: synapse/trunk/java/pom.xml > URL: > http://svn.apache.org/viewvc/synapse/trunk/java/pom.xml?rev=1746027&r1=1746026&r2=1746027&view=diff > ============================================================================== > --- synapse/trunk/java/pom.xml (original) > +++ synapse/trunk/java/pom.xml Sun May 29 15:54:01 2016 > @@ -1035,7 +1035,7 @@ > <commons.codec.version>1.6</commons.codec.version> > > <!-- Axis2 and its dependencies --> > - <axis2.version>1.7.2</axis2.version> > + <axis2.version>1.7.3-SNAPSHOT</axis2.version> > <axiom.version>1.2.19</axiom.version> > <wsdl4j.version>1.6.2</wsdl4j.version> > > > -- Hiranya Jayathilaka Mayhem Lab/RACE Lab; Dept. of Computer Science, UCSB; http://cs.ucsb.edu E-mail: hira...@cs.ucsb.edu; Mobile: +1 (805) 895-7443 Blog: http://techfeast-hiranya.blogspot.com --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@synapse.apache.org For additional commands, e-mail: dev-h...@synapse.apache.org