Author: veithen
Date: Sat Oct 10 22:17:03 2015
New Revision: 1707922

URL: http://svn.apache.org/viewvc?rev=1707922&view=rev
Log:
Some experimental code that implements a Spring Integration outbound gateway 
based on Axiom.

Added:
    webservices/axiom/experimental/axiom-spring-integration/   (with props)
    webservices/axiom/experimental/axiom-spring-integration/pom.xml   (with 
props)
    webservices/axiom/experimental/axiom-spring-integration/src/
    webservices/axiom/experimental/axiom-spring-integration/src/main/
    webservices/axiom/experimental/axiom-spring-integration/src/main/java/
    webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/
    
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/
    
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/
    
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/
    
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/
    
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/MarshallerOMDataSource.java
   (with props)
    
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/WebServiceOutboundGateway.java
   (with props)
    
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/config/
    
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/config/NamespaceHandler.java
   (with props)
    
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/config/WebServiceOutboundGatewayParser.java
   (with props)
    webservices/axiom/experimental/axiom-spring-integration/src/main/resources/
    
webservices/axiom/experimental/axiom-spring-integration/src/main/resources/META-INF/
    
webservices/axiom/experimental/axiom-spring-integration/src/main/resources/META-INF/spring.handlers
    
webservices/axiom/experimental/axiom-spring-integration/src/main/resources/META-INF/spring.schemas
    
webservices/axiom/experimental/axiom-spring-integration/src/main/resources/org/
    
webservices/axiom/experimental/axiom-spring-integration/src/main/resources/org/apache/
    
webservices/axiom/experimental/axiom-spring-integration/src/main/resources/org/apache/axiom/
    
webservices/axiom/experimental/axiom-spring-integration/src/main/resources/org/apache/axiom/spring/
    
webservices/axiom/experimental/axiom-spring-integration/src/main/resources/org/apache/axiom/spring/integration/
    
webservices/axiom/experimental/axiom-spring-integration/src/main/resources/org/apache/axiom/spring/integration/config/
    
webservices/axiom/experimental/axiom-spring-integration/src/main/resources/org/apache/axiom/spring/integration/config/schema.xsd
    webservices/axiom/experimental/axiom-spring-integration/src/test/
    webservices/axiom/experimental/axiom-spring-integration/src/test/java/
    webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/
    
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/
    
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/
    
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/
    
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/
    
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/FileService.java
   (with props)
    
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/FileServiceImpl.java
   (with props)
    
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/GetFileRequest.java
   (with props)
    
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/GetFileResponse.java
   (with props)
    
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/WebServiceOutboundGatewayTest.java
   (with props)
    webservices/axiom/experimental/axiom-spring-integration/src/test/resources/
    
webservices/axiom/experimental/axiom-spring-integration/src/test/resources/org/
    
webservices/axiom/experimental/axiom-spring-integration/src/test/resources/org/apache/
    
webservices/axiom/experimental/axiom-spring-integration/src/test/resources/org/apache/axiom/
    
webservices/axiom/experimental/axiom-spring-integration/src/test/resources/org/apache/axiom/spring/
    
webservices/axiom/experimental/axiom-spring-integration/src/test/resources/org/apache/axiom/spring/integration/
    
webservices/axiom/experimental/axiom-spring-integration/src/test/resources/org/apache/axiom/spring/integration/mtom-client-context.xml
   (with props)

Propchange: webservices/axiom/experimental/axiom-spring-integration/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Oct 10 22:17:03 2015
@@ -0,0 +1,4 @@
+.classpath
+.project
+.settings
+target

Added: webservices/axiom/experimental/axiom-spring-integration/pom.xml
URL: 
http://svn.apache.org/viewvc/webservices/axiom/experimental/axiom-spring-integration/pom.xml?rev=1707922&view=auto
==============================================================================
--- webservices/axiom/experimental/axiom-spring-integration/pom.xml (added)
+++ webservices/axiom/experimental/axiom-spring-integration/pom.xml Sat Oct 10 
22:17:03 2015
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.ws.commons.axiom</groupId>
+        <artifactId>experimental</artifactId>
+        <version>1.2.16-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>axiom-spring-integration</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.integration</groupId>
+            <artifactId>spring-integration-core</artifactId>
+            <version>4.2.0.RELEASE</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-oxm</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>axiom-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>axiom-impl</artifactId>
+            <version>${project.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.google.truth</groupId>
+            <artifactId>truth</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>testutils</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-frontend-jaxws</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-transports-http-jetty</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.7</source>
+                    <target>1.7</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>animal-sniffer-maven-plugin</artifactId>
+                <configuration>
+                    <signature>
+                        <groupId>org.codehaus.mojo.signature</groupId>
+                        <artifactId>java17</artifactId>
+                        <version>1.0</version>
+                    </signature>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

Propchange: webservices/axiom/experimental/axiom-spring-integration/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/MarshallerOMDataSource.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/MarshallerOMDataSource.java?rev=1707922&view=auto
==============================================================================
--- 
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/MarshallerOMDataSource.java
 (added)
+++ 
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/MarshallerOMDataSource.java
 Sat Oct 10 22:17:03 2015
@@ -0,0 +1,68 @@
+/*
+ * 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.axiom.spring.integration;
+
+import java.io.IOException;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+import javax.xml.transform.stax.StAXResult;
+
+import org.apache.axiom.om.ds.AbstractPushOMDataSource;
+import org.apache.axiom.util.stax.wrapper.XMLStreamWriterWrapper;
+import org.springframework.oxm.Marshaller;
+
+final class MarshallerOMDataSource extends AbstractPushOMDataSource {
+    private final Marshaller marshaller;
+    private final Object payload;
+    
+    MarshallerOMDataSource(Marshaller marshaller, Object payload) {
+        this.marshaller = marshaller;
+        this.payload = payload;
+    }
+
+    public boolean isDestructiveWrite() {
+        return false;
+    }
+
+    public void serialize(XMLStreamWriter xmlWriter) throws XMLStreamException 
{
+        try {
+            // TODO: MIME support here
+            marshaller.marshal(payload, new StAXResult(new 
XMLStreamWriterWrapper(xmlWriter) {
+                @Override
+                public void writeStartDocument() {
+                }
+
+                @Override
+                public void writeStartDocument(String encoding, String 
version) {
+                }
+
+                @Override
+                public void writeStartDocument(String version) {
+                }
+
+                @Override
+                public void writeEndDocument() {
+                }
+            }));
+        } catch (IOException ex) {
+            throw new XMLStreamException(ex);
+        }
+    }
+}

Propchange: 
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/MarshallerOMDataSource.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/WebServiceOutboundGateway.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/WebServiceOutboundGateway.java?rev=1707922&view=auto
==============================================================================
--- 
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/WebServiceOutboundGateway.java
 (added)
+++ 
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/WebServiceOutboundGateway.java
 Sat Oct 10 22:17:03 2015
@@ -0,0 +1,97 @@
+/*
+ * 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.axiom.spring.integration;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.text.ParseException;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.transform.stax.StAXSource;
+
+import org.apache.axiom.attachments.Attachments;
+import org.apache.axiom.mime.ContentType;
+import org.apache.axiom.mime.MediaType;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMMetaFactory;
+import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axiom.om.OMXMLBuilderFactory;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPMessage;
+import org.apache.axiom.soap.SOAPModelBuilder;
+import 
org.springframework.integration.handler.AbstractReplyProducingMessageHandler;
+import org.springframework.messaging.Message;
+import org.springframework.messaging.MessageDeliveryException;
+import org.springframework.oxm.Marshaller;
+import org.springframework.oxm.Unmarshaller;
+
+public final class WebServiceOutboundGateway extends 
AbstractReplyProducingMessageHandler {
+    private final OMMetaFactory metaFactory = 
OMAbstractFactory.getMetaFactory();
+    private boolean useSOAP12; // TODO: find better convention
+    private final URL url;
+    private final Marshaller marshaller;
+    private final Unmarshaller unmarshaller;
+    private SOAPFactory soapFactory;
+
+    public WebServiceOutboundGateway(URL url, Marshaller marshaller, 
Unmarshaller unmarshaller) {
+        this.url = url;
+        this.marshaller = marshaller;
+        this.unmarshaller = unmarshaller;
+    }
+    public void setUseSOAP12(boolean useSOAP12) {
+        this.useSOAP12 = useSOAP12;
+    }
+    
+    @Override
+    protected void doInit() {
+        soapFactory = useSOAP12 ? metaFactory.getSOAP12Factory() : 
metaFactory.getSOAP11Factory();
+    }
+
+    @Override
+    protected Object handleRequestMessage(Message<?> requestMessage) {
+        SOAPMessage soapMessage = soapFactory.createDefaultSOAPMessage();
+        
soapMessage.getSOAPEnvelope().getBody().addChild(soapFactory.createOMElement(
+                new MarshallerOMDataSource(marshaller, 
requestMessage.getPayload())));
+        OMOutputFormat format = new OMOutputFormat();
+        format.setSOAP11(!useSOAP12);
+        try {
+            HttpURLConnection connection = 
(HttpURLConnection)url.openConnection();
+            connection.setDoOutput(true);
+            connection.setChunkedStreamingMode(0);
+            connection.setRequestProperty("Content-Type", 
format.getContentType());
+            OutputStream out = connection.getOutputStream();
+            // TODO: SOAP action
+            // TODO: disable XML declaration
+            soapMessage.serializeAndConsume(out, format);
+            out.close();
+            ContentType contentType = new 
ContentType(connection.getContentType());
+            if 
(contentType.getMediaType().equals(MediaType.MULTIPART_RELATED)) {
+                SOAPModelBuilder builder = 
OMXMLBuilderFactory.createSOAPModelBuilder(
+                        new Attachments(connection.getInputStream(), 
contentType.toString()));
+                return unmarshaller.unmarshal(new 
StAXSource(builder.getSOAPEnvelope().getBody().getFirstElement().getXMLStreamReader(false)));
+            }
+        } catch (IOException | XMLStreamException | ParseException ex) {
+            throw new MessageDeliveryException(requestMessage, ex);
+        }
+        // TODO
+        return null;
+    }
+}

Propchange: 
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/WebServiceOutboundGateway.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/config/NamespaceHandler.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/config/NamespaceHandler.java?rev=1707922&view=auto
==============================================================================
--- 
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/config/NamespaceHandler.java
 (added)
+++ 
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/config/NamespaceHandler.java
 Sat Oct 10 22:17:03 2015
@@ -0,0 +1,28 @@
+/*
+ * 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.axiom.spring.integration.config;
+
+import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
+
+public class NamespaceHandler extends NamespaceHandlerSupport {
+    @Override
+    public void init() {
+        registerBeanDefinitionParser("ws-outbound-gateway", new 
WebServiceOutboundGatewayParser());
+    }
+}

Propchange: 
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/config/NamespaceHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/config/WebServiceOutboundGatewayParser.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/config/WebServiceOutboundGatewayParser.java?rev=1707922&view=auto
==============================================================================
--- 
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/config/WebServiceOutboundGatewayParser.java
 (added)
+++ 
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/config/WebServiceOutboundGatewayParser.java
 Sat Oct 10 22:17:03 2015
@@ -0,0 +1,38 @@
+/*
+ * 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.axiom.spring.integration.config;
+
+import org.apache.axiom.spring.integration.WebServiceOutboundGateway;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.xml.ParserContext;
+import 
org.springframework.integration.config.xml.AbstractOutboundGatewayParser;
+import org.w3c.dom.Element;
+
+public final class WebServiceOutboundGatewayParser extends 
AbstractOutboundGatewayParser {
+    @Override
+    protected String getGatewayClassName(Element element) {
+        return WebServiceOutboundGateway.class.getName();
+    }
+
+    @Override
+    protected void postProcessGateway(BeanDefinitionBuilder builder, Element 
element, ParserContext parserContext) {
+        builder.addConstructorArgReference(element.getAttribute("marshaller"));
+        
builder.addConstructorArgReference(element.getAttribute("unmarshaller"));
+    }
+}

Propchange: 
webservices/axiom/experimental/axiom-spring-integration/src/main/java/org/apache/axiom/spring/integration/config/WebServiceOutboundGatewayParser.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
webservices/axiom/experimental/axiom-spring-integration/src/main/resources/META-INF/spring.handlers
URL: 
http://svn.apache.org/viewvc/webservices/axiom/experimental/axiom-spring-integration/src/main/resources/META-INF/spring.handlers?rev=1707922&view=auto
==============================================================================
--- 
webservices/axiom/experimental/axiom-spring-integration/src/main/resources/META-INF/spring.handlers
 (added)
+++ 
webservices/axiom/experimental/axiom-spring-integration/src/main/resources/META-INF/spring.handlers
 Sat Oct 10 22:17:03 2015
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+http\://ws.apache.org/axiom/spring-integration=org.apache.axiom.spring.integration.config.NamespaceHandler

Added: 
webservices/axiom/experimental/axiom-spring-integration/src/main/resources/META-INF/spring.schemas
URL: 
http://svn.apache.org/viewvc/webservices/axiom/experimental/axiom-spring-integration/src/main/resources/META-INF/spring.schemas?rev=1707922&view=auto
==============================================================================
--- 
webservices/axiom/experimental/axiom-spring-integration/src/main/resources/META-INF/spring.schemas
 (added)
+++ 
webservices/axiom/experimental/axiom-spring-integration/src/main/resources/META-INF/spring.schemas
 Sat Oct 10 22:17:03 2015
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+http\://ws.apache.org/axiom/schema/spring-integration.xsd=org/apache/axiom/spring/integration/config/schema.xsd

Added: 
webservices/axiom/experimental/axiom-spring-integration/src/main/resources/org/apache/axiom/spring/integration/config/schema.xsd
URL: 
http://svn.apache.org/viewvc/webservices/axiom/experimental/axiom-spring-integration/src/main/resources/org/apache/axiom/spring/integration/config/schema.xsd?rev=1707922&view=auto
==============================================================================
--- 
webservices/axiom/experimental/axiom-spring-integration/src/main/resources/org/apache/axiom/spring/integration/config/schema.xsd
 (added)
+++ 
webservices/axiom/experimental/axiom-spring-integration/src/main/resources/org/apache/axiom/spring/integration/config/schema.xsd
 Sat Oct 10 22:17:03 2015
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema";
+            xmlns:tool="http://www.springframework.org/schema/tool";
+            xmlns="http://ws.apache.org/axiom/spring-integration";
+            targetNamespace="http://ws.apache.org/axiom/spring-integration";
+            elementFormDefault="qualified">
+    <xsd:element name="ws-outbound-gateway">
+        <xsd:complexType>
+            <xsd:attribute name="request-channel" type="xsd:string">
+                <xsd:annotation>
+                    <xsd:documentation>The channel where Messages should be 
sent to invoke the Web Service.</xsd:documentation>
+                    <xsd:appinfo>
+                        <tool:annotation kind="ref">
+                            <tool:expected-type 
type="org.springframework.messaging.MessageChannel"/>
+                        </tool:annotation>
+                    </xsd:appinfo>
+                </xsd:annotation>
+            </xsd:attribute>
+            <xsd:attribute name="url" type="xsd:string" use="required">
+                <xsd:annotation>
+                    <xsd:documentation>The Destination URL for this Web 
Service Gateway.</xsd:documentation>
+                </xsd:annotation>
+            </xsd:attribute>
+            <xsd:attribute name="marshaller" type="xsd:string" use="required">
+                <xsd:annotation>
+                    <xsd:documentation>Reference to a Spring OXM 
Mashaller.</xsd:documentation>
+                    <xsd:appinfo>
+                        <tool:annotation kind="ref">
+                            <tool:expected-type 
type="org.springframework.oxm.Marshaller"/>
+                        </tool:annotation>
+                    </xsd:appinfo>
+                </xsd:annotation>
+            </xsd:attribute>
+            <xsd:attribute name="unmarshaller" type="xsd:string" 
use="required">
+                <xsd:annotation>
+                    <xsd:documentation>Reference to a Spring OXM 
Unmarshaller.</xsd:documentation>
+                    <xsd:appinfo>
+                        <tool:annotation kind="ref">
+                            <tool:expected-type 
type="org.springframework.oxm.Unmarshaller"/>
+                        </tool:annotation>
+                    </xsd:appinfo>
+                </xsd:annotation>
+            </xsd:attribute>
+        </xsd:complexType>
+    </xsd:element>
+</xsd:schema>

Added: 
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/FileService.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/FileService.java?rev=1707922&view=auto
==============================================================================
--- 
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/FileService.java
 (added)
+++ 
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/FileService.java
 Sat Oct 10 22:17:03 2015
@@ -0,0 +1,23 @@
+/*
+ * 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.axiom.spring.integration;
+
+public interface FileService {
+    GetFileResponse getFile(GetFileRequest request);
+}

Propchange: 
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/FileService.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/FileServiceImpl.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/FileServiceImpl.java?rev=1707922&view=auto
==============================================================================
--- 
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/FileServiceImpl.java
 (added)
+++ 
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/FileServiceImpl.java
 Sat Oct 10 22:17:03 2015
@@ -0,0 +1,42 @@
+/*
+ * 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.axiom.spring.integration;
+
+import javax.activation.DataHandler;
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.xml.ws.RequestWrapper;
+import javax.xml.ws.ResponseWrapper;
+import javax.xml.ws.soap.MTOM;
+
+import org.apache.axiom.testutils.activation.RandomDataSource;
+
+@WebService(targetNamespace="urn:test")
+@MTOM
+public class FileServiceImpl {
+    @WebMethod
+    
@RequestWrapper(className="org.apache.axiom.spring.integration.GetFileRequest", 
localName="getFileRequest")
+    
@ResponseWrapper(className="org.apache.axiom.spring.integration.GetFileResponse",
 localName="getFileResponse")
+    @WebResult(name="content")
+    public DataHandler getFile(@WebParam(name="seed") long seed, 
@WebParam(name="length") long length) {
+        return new DataHandler(new RandomDataSource(seed, length));
+    }
+}

Propchange: 
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/FileServiceImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/GetFileRequest.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/GetFileRequest.java?rev=1707922&view=auto
==============================================================================
--- 
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/GetFileRequest.java
 (added)
+++ 
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/GetFileRequest.java
 Sat Oct 10 22:17:03 2015
@@ -0,0 +1,48 @@
+/*
+ * 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.axiom.spring.integration;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlRootElement(namespace="urn:test")
+@XmlType(propOrder={"seed", "length"})
+public class GetFileRequest {
+    private long seed;
+    private long length;
+    
+    @XmlElement
+    public long getSeed() {
+        return seed;
+    }
+    
+    public void setSeed(long seed) {
+        this.seed = seed;
+    }
+    
+    @XmlElement
+    public long getLength() {
+        return length;
+    }
+    
+    public void setLength(long length) {
+        this.length = length;
+    }
+}

Propchange: 
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/GetFileRequest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/GetFileResponse.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/GetFileResponse.java?rev=1707922&view=auto
==============================================================================
--- 
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/GetFileResponse.java
 (added)
+++ 
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/GetFileResponse.java
 Sat Oct 10 22:17:03 2015
@@ -0,0 +1,37 @@
+/*
+ * 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.axiom.spring.integration;
+
+import javax.activation.DataHandler;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(namespace="urn:test")
+public class GetFileResponse {
+    private DataHandler content;
+
+    @XmlElement
+    public DataHandler getContent() {
+        return content;
+    }
+
+    public void setContent(DataHandler content) {
+        this.content = content;
+    }
+}

Propchange: 
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/GetFileResponse.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/WebServiceOutboundGatewayTest.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/WebServiceOutboundGatewayTest.java?rev=1707922&view=auto
==============================================================================
--- 
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/WebServiceOutboundGatewayTest.java
 (added)
+++ 
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/WebServiceOutboundGatewayTest.java
 Sat Oct 10 22:17:03 2015
@@ -0,0 +1,62 @@
+/*
+ * 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.axiom.spring.integration;
+
+import javax.xml.ws.Endpoint;
+
+import org.apache.axiom.testutils.PortAllocator;
+import org.apache.axiom.testutils.activation.RandomDataSource;
+import org.apache.axiom.testutils.io.IOTestUtils;
+import org.junit.Test;
+import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
+import org.springframework.context.support.GenericXmlApplicationContext;
+import org.springframework.core.env.StandardEnvironment;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.mock.env.MockPropertySource;
+
+public class WebServiceOutboundGatewayTest {
+    @Test
+    public void test() throws Exception {
+        int port = PortAllocator.allocatePort();
+        Endpoint endpoint = Endpoint.publish("http://localhost:"; + port + 
"/mtom", new FileServiceImpl());
+        try {
+            GenericXmlApplicationContext context = new 
GenericXmlApplicationContext();
+            MockPropertySource propertySource = new 
MockPropertySource("client-properties");
+            propertySource.setProperty("port", port);
+            
context.getEnvironment().getPropertySources().replace(StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME,
 propertySource);
+            XmlBeanDefinitionReader reader = new 
XmlBeanDefinitionReader(context);
+            reader.loadBeanDefinitions(new 
ClassPathResource("mtom-client-context.xml", 
WebServiceOutboundGatewayTest.class));
+            context.refresh();
+            try {
+                FileService fileService = context.getBean(FileService.class);
+                GetFileRequest request = new GetFileRequest();
+                request.setSeed(12345678);
+                request.setLength(4096);
+                GetFileResponse response = fileService.getFile(request);
+                IOTestUtils.compareStreams(
+                        response.getContent().getInputStream(),
+                        new RandomDataSource(request.getSeed(), 
request.getLength()).getInputStream());
+            } finally {
+                context.close();
+            }
+        } finally {
+            endpoint.stop();
+        }
+    }
+}

Propchange: 
webservices/axiom/experimental/axiom-spring-integration/src/test/java/org/apache/axiom/spring/integration/WebServiceOutboundGatewayTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
webservices/axiom/experimental/axiom-spring-integration/src/test/resources/org/apache/axiom/spring/integration/mtom-client-context.xml
URL: 
http://svn.apache.org/viewvc/webservices/axiom/experimental/axiom-spring-integration/src/test/resources/org/apache/axiom/spring/integration/mtom-client-context.xml?rev=1707922&view=auto
==============================================================================
--- 
webservices/axiom/experimental/axiom-spring-integration/src/test/resources/org/apache/axiom/spring/integration/mtom-client-context.xml
 (added)
+++ 
webservices/axiom/experimental/axiom-spring-integration/src/test/resources/org/apache/axiom/spring/integration/mtom-client-context.xml
 Sat Oct 10 22:17:03 2015
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+  ~ 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.
+  -->
+<beans xmlns="http://www.springframework.org/schema/beans";
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xmlns:oxm="http://www.springframework.org/schema/oxm";
+       xmlns:int="http://www.springframework.org/schema/integration";
+       xmlns:axiom="http://ws.apache.org/axiom/spring-integration";
+       xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
+                           http://www.springframework.org/schema/oxm 
http://www.springframework.org/schema/oxm/spring-oxm-4.2.xsd
+                           http://www.springframework.org/schema/integration 
http://www.springframework.org/schema/integration/spring-integration-4.2.xsd
+                           http://ws.apache.org/axiom/spring-integration 
http://ws.apache.org/axiom/schema/spring-integration.xsd";>
+    <int:channel id="request"/>
+    <int:gateway id="fileService" 
service-interface="org.apache.axiom.spring.integration.FileService" 
default-request-channel="request"/>
+    <oxm:jaxb2-marshaller id="marshaller">
+        <oxm:class-to-be-bound 
name="org.apache.axiom.spring.integration.GetFileRequest"/>
+        <oxm:class-to-be-bound 
name="org.apache.axiom.spring.integration.GetFileResponse"/>
+    </oxm:jaxb2-marshaller>
+    <axiom:ws-outbound-gateway request-channel="request" 
url="http://localhost:${port}/mtom";
+                               marshaller="marshaller" 
unmarshaller="marshaller"/>
+</beans>

Propchange: 
webservices/axiom/experimental/axiom-spring-integration/src/test/resources/org/apache/axiom/spring/integration/mtom-client-context.xml
------------------------------------------------------------------------------
    svn:eol-style = native



Reply via email to