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

Reply via email to