You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ng...@apache.org on 2006/09/11 18:31:07 UTC
svn commit: r442249 - in /webservices/axis2/trunk/java/modules/jaxws: ./
src/org/apache/axis2/jaxws/server/dispatcher/
test/org/apache/axis2/jaxws/framework/ test/org/apache/axis2/jaxws/provider/
test/org/apache/axis2/jaxws/provider/soapmsg/ test/org/a...
Author: ngallardo
Date: Mon Sep 11 09:31:05 2006
New Revision: 442249
URL: http://svn.apache.org/viewvc?view=rev&rev=442249
Log:
AXIS2-1119
Contributor: Jeff Barrett
Jeff's patch for adding MESSAGE mode support for the JAX-WS Provider.
Added:
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/SoapMessageProviderTests.java
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/SourceMessageProviderTests.java
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/StringMessageProviderTests.java
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/META-INF/
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/META-INF/MANIFEST.MF
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/META-INF/services.xml
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/SoapMessageProvider.java
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/META-INF/
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/META-INF/MANIFEST.MF
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/META-INF/services.xml
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/SourceMessageProvider.java
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/META-INF/
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/META-INF/MANIFEST.MF
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/META-INF/services.xml
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/StringMessageProvider.java
Removed:
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/SimpleProvider.java
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/StringProvider.java
Modified:
webservices/axis2/trunk/java/modules/jaxws/maven.xml
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/ProviderDispatcher.java
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/SourceProviderTests.java
Modified: webservices/axis2/trunk/java/modules/jaxws/maven.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/maven.xml?view=diff&rev=442249&r1=442248&r2=442249
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/maven.xml (original)
+++ webservices/axis2/trunk/java/modules/jaxws/maven.xml Mon Sep 11 09:31:05 2006
@@ -128,11 +128,44 @@
<ant:include name="org/apache/axis2/jaxws/server/**"/>
</ant:fileset>
</ant:copy>
+ <ant:copy toDir="target/test-classes/services/StringMessageProviderService/">
+ <ant:fileset dir="target/test-classes">
+ <ant:include name="org/apache/axis2/jaxws/provider/stringmsg/**"/>
+ </ant:fileset>
+ <ant:fileset dir="test/org/apache/axis2/jaxws/provider/stringmsg">
+ <ant:include name="META-INF/**"/>
+ </ant:fileset>
+ <ant:fileset dir="target/classes">
+ <ant:include name="org/apache/axis2/jaxws/server/**"/>
+ </ant:fileset>
+ </ant:copy>
<ant:copy toDir="target/test-classes/services/SourceProviderService/">
<ant:fileset dir="target/test-classes">
<ant:include name="org/apache/axis2/jaxws/provider/source/**"/>
</ant:fileset>
<ant:fileset dir="test/org/apache/axis2/jaxws/provider/source">
+ <ant:include name="META-INF/**"/>
+ </ant:fileset>
+ <ant:fileset dir="target/classes">
+ <ant:include name="org/apache/axis2/jaxws/server/**"/>
+ </ant:fileset>
+ </ant:copy>
+ <ant:copy toDir="target/test-classes/services/SourceMessageProviderService/">
+ <ant:fileset dir="target/test-classes">
+ <ant:include name="org/apache/axis2/jaxws/provider/sourcemsg/**"/>
+ </ant:fileset>
+ <ant:fileset dir="test/org/apache/axis2/jaxws/provider/sourcemsg">
+ <ant:include name="META-INF/**"/>
+ </ant:fileset>
+ <ant:fileset dir="target/classes">
+ <ant:include name="org/apache/axis2/jaxws/server/**"/>
+ </ant:fileset>
+ </ant:copy>
+ <ant:copy toDir="target/test-classes/services/SoapMessageProviderService/">
+ <ant:fileset dir="target/test-classes">
+ <ant:include name="org/apache/axis2/jaxws/provider/soapmsg/**"/>
+ </ant:fileset>
+ <ant:fileset dir="test/org/apache/axis2/jaxws/provider/soapmsg">
<ant:include name="META-INF/**"/>
</ant:fileset>
<ant:fileset dir="target/classes">
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/ProviderDispatcher.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/ProviderDispatcher.java?view=diff&rev=442249&r1=442248&r2=442249
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/ProviderDispatcher.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/ProviderDispatcher.java Mon Sep 11 09:31:05 2006
@@ -22,19 +22,24 @@
import javax.activation.DataSource;
import javax.xml.bind.JAXBContext;
+import javax.xml.namespace.QName;
import javax.xml.soap.SOAPMessage;
import javax.xml.transform.Source;
import javax.xml.ws.Provider;
+import javax.xml.ws.Service;
+import org.apache.axiom.om.OMElement;
import org.apache.axis2.jaxws.ExceptionFactory;
import org.apache.axis2.jaxws.core.MessageContext;
import org.apache.axis2.jaxws.core.util.MessageContextUtils;
+import org.apache.axis2.jaxws.description.EndpointDescription;
import org.apache.axis2.jaxws.i18n.Messages;
import org.apache.axis2.jaxws.message.Block;
import org.apache.axis2.jaxws.message.Message;
import org.apache.axis2.jaxws.message.Protocol;
import org.apache.axis2.jaxws.message.factory.BlockFactory;
import org.apache.axis2.jaxws.message.factory.MessageFactory;
+import org.apache.axis2.jaxws.message.factory.SOAPEnvelopeBlockFactory;
import org.apache.axis2.jaxws.message.factory.SourceBlockFactory;
import org.apache.axis2.jaxws.message.factory.XMLStringBlockFactory;
import org.apache.axis2.jaxws.registry.FactoryRegistry;
@@ -61,6 +66,7 @@
private BlockFactory blockFactory = null;
private Class providerType = null;
private Provider providerInstance = null;
+ private Service.Mode providerServiceMode = null;
private Message message = null;
private Protocol messageProtocol;
@@ -92,22 +98,53 @@
Object requestParamValue = null;
Message message = mc.getMessage();
if (message != null) {
- // Save off the protocol info so we can use it when creating
- // the response message.
+ // Save off the protocol info so we can use it when creating the response message.
messageProtocol = message.getProtocol();
-
+ // Determine what type blocks we want to create (String, Source, etc) based on Provider Type
BlockFactory factory = createBlockFactory(providerType);
- Block block = message.getBodyBlock(0, null, factory);
- requestParamValue = block.getBusinessObject(true);
+
+ // REVIEW: This assumes there is only one endpoint description on the service. Is that always the case?
+ EndpointDescription endpointDesc = mc.getServiceDescription().getEndpointDescriptions()[0];
+ providerServiceMode = endpointDesc.getServiceModeValue();
+
+ if (providerServiceMode != null && providerServiceMode == Service.Mode.MESSAGE) {
+ // For MESSAGE mode, work with the entire message, Headers and Body
+ // This is based on logic in org.apache.axis2.jaxws.client.XMLDispatch.getValueFromMessage()
+ if (providerType.equals(SOAPMessage.class)) {
+ // We can get the SOAPMessage directly from the message itself
+ requestParamValue = message.getAsSOAPMessage();
+ }
+ else {
+ // For Source and String, we have to do some conversions using the block factories
+ // This is similar to the PAYLOAD logic, except it gets the entire message as a block
+ // rather than just the body block (which is what PAYLOAD mode does).
+ // TODO: This doesn't seem right to me. We should not have an intermediate StringBlock. This is not performant. Scheu
+ OMElement messageOM = message.getAsOMElement();
+ String stringValue = messageOM.toString();
+ QName soapEnvQname = new QName("http://schemas.xmlsoap.org/soap/envelope/", "Envelope");
+ XMLStringBlockFactory stringFactory = (XMLStringBlockFactory) FactoryRegistry.getFactory(XMLStringBlockFactory.class);
+ Block stringBlock = stringFactory.createFrom(stringValue, null, soapEnvQname);
+ Block messageBlock = factory.createFrom(stringBlock, null);
+ requestParamValue = messageBlock.getBusinessObject(true);
+ }
+ }
+ else {
+ // If it is not MESSAGE, then it is PAYLOAD (which is the default); only work with the body
+ Block block = message.getBodyBlock(0, null, factory);
+ requestParamValue = block.getBusinessObject(true);
+ }
}
+ if (log.isDebugEnabled())
+ log.debug("Provider Type = " + providerType + "; parameter type = " + requestParamValue);
+
Object input = providerType.cast(requestParamValue);
-
if (log.isDebugEnabled()) {
log.debug("Invoking Provider<" + providerType.getName() + "> with " +
"parameter of type " + input.getClass().getName());
}
+
// Invoke the actual Provider.invoke() method
Object responseParamValue = null;
try {
@@ -171,20 +208,34 @@
* Create a Message object out of the value object that was returned.
*/
private Message createMessageFromValue(Object value) throws Exception {
- if (log.isDebugEnabled()) {
- log.debug("Creating response Message from value of type " +
- value.getClass().getName());
- }
-
- MessageFactory msgFactory = (MessageFactory) FactoryRegistry.getFactory(
- MessageFactory.class);
- Message message = msgFactory.create(messageProtocol);
+ MessageFactory msgFactory = (MessageFactory) FactoryRegistry.getFactory(MessageFactory.class);
+ Message message = null;
if (value != null) {
BlockFactory factory = createBlockFactory(providerType);
- Block block = factory.createFrom(value, null, null);
- message.setBodyBlock(0, block);
+ if (providerServiceMode != null && providerServiceMode == Service.Mode.MESSAGE) {
+ // For MESSAGE mode, work with the entire message, Headers and Body
+ // This is based on logic in org.apache.axis2.jaxws.client.XMLDispatch.createMessageFromBundle()
+ if (value instanceof SOAPMessage) {
+ message = msgFactory.createFrom((SOAPMessage) value);
+ }
+ else {
+ Block block = factory.createFrom(value, null, null);
+ message = msgFactory.createFrom(block, null);
+ }
+ }
+ else {
+ // PAYLOAD mode deals only with the body of the message.
+ Block block = factory.createFrom(value, null, null);
+ message = msgFactory.create(messageProtocol);
+ message.setBodyBlock(0, block);
+ }
}
+
+ if (message == null)
+ // If we didn't create a message above (because there was no value), create one here
+ message = msgFactory.create(messageProtocol);
+
return message;
}
@@ -288,6 +339,10 @@
else if (type.equals(Source.class)) {
blockFactory = (SourceBlockFactory) FactoryRegistry.getFactory(
SourceBlockFactory.class);
+ }
+ else if (type.equals(SOAPMessage.class)) {
+ blockFactory = (SOAPEnvelopeBlockFactory) FactoryRegistry.getFactory(
+ SOAPEnvelopeBlockFactory.class);
}
else {
ExceptionFactory.makeWebServiceException("Unable to find BlockFactory " +
Modified: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java?view=diff&rev=442249&r1=442248&r2=442249
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java Mon Sep 11 09:31:05 2006
@@ -72,7 +72,10 @@
suite.addTestSuite(JaxwsMessageBundleTests.class);
suite.addTestSuite(StringProviderTests.class);
+ suite.addTestSuite(StringMessageProviderTests.class);
suite.addTestSuite(SourceProviderTests.class);
+ suite.addTestSuite(SourceMessageProviderTests.class);
+ suite.addTestSuite(SoapMessageProviderTests.class);
suite.addTestSuite(JAXBProviderTests.class);
suite.addTestSuite(ProxyTests.class);
suite.addTestSuite(ProxyNonWrappedTests.class);
Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/SoapMessageProviderTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/SoapMessageProviderTests.java?view=auto&rev=442249
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/SoapMessageProviderTests.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/SoapMessageProviderTests.java Mon Sep 11 09:31:05 2006
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * Licensed 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.axis2.jaxws.provider;
+
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.Map;
+import javax.xml.namespace.QName;
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.Dispatch;
+import javax.xml.ws.Service;
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamSource;
+
+public class SoapMessageProviderTests extends ProviderTestCase {
+
+ private String endpointUrl = "http://localhost:8080/axis2/services/SoapMessageProviderService";
+ private QName serviceName = new QName("http://ws.apache.org/axis2", "SoapMessageProviderService");
+ private String xmlDir = "xml";
+ private String reqMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"><soap:Body><ns2:invoke xmlns:ns2=\"http://org.test.soapmessage\"><invoke_str>some request</invoke_str></ns2:invoke></soap:Body></soap:Envelope>";
+
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public SoapMessageProviderTests(String name) {
+ super(name);
+ }
+
+ public void testProviderSource(){
+ try{
+// String resourceDir = new File(providerResourceDir, xmlDir).getAbsolutePath();
+// String fileName = resourceDir+File.separator+"web.xml";
+//
+// File file = new File(fileName);
+// InputStream inputStream = new FileInputStream(file);
+// StreamSource xmlStreamSource = new StreamSource(inputStream);
+//
+ Service svc = Service.create(serviceName);
+ svc.addPort(portName,null, endpointUrl);
+ Dispatch<SOAPMessage> dispatch = svc.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE);
+ System.out.println(">> Invoking SourceMessageProviderDispatch");
+ MessageFactory factory = MessageFactory.newInstance();
+ SOAPMessage outboundMessage = factory.createMessage(null,
+ new ByteArrayInputStream(reqMsg.getBytes()));
+ SOAPMessage response = dispatch.invoke(outboundMessage);
+
+ System.out.println(">> Response [" + response.toString() + "]");
+ response.writeTo(System.out);
+
+ }catch(Exception e){
+ e.printStackTrace();
+ fail("Caught exception " + e);
+ }
+
+ }
+}
Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/SourceMessageProviderTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/SourceMessageProviderTests.java?view=auto&rev=442249
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/SourceMessageProviderTests.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/SourceMessageProviderTests.java Mon Sep 11 09:31:05 2006
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * Licensed 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.axis2.jaxws.provider;
+
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.Map;
+import javax.xml.namespace.QName;
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.Dispatch;
+import javax.xml.ws.Service;
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamSource;
+
+public class SourceMessageProviderTests extends ProviderTestCase {
+
+ private String endpointUrl = "http://localhost:8080/axis2/services/SourceMessageProviderService";
+ private QName serviceName = new QName("http://ws.apache.org/axis2", "SourceMessageProviderService");
+ private String xmlDir = "xml";
+
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public SourceMessageProviderTests(String name) {
+ super(name);
+ }
+
+ public void testProviderSource(){
+ try{
+ String resourceDir = new File(providerResourceDir, xmlDir).getAbsolutePath();
+ String fileName = resourceDir+File.separator+"web.xml";
+
+ File file = new File(fileName);
+ InputStream inputStream = new FileInputStream(file);
+ StreamSource xmlStreamSource = new StreamSource(inputStream);
+
+ Service svc = Service.create(serviceName);
+ svc.addPort(portName,null, endpointUrl);
+ Dispatch<Source> dispatch = svc.createDispatch(portName, Source.class, null);
+ System.out.println(">> Invoking SourceMessageProviderDispatch");
+ Source response = dispatch.invoke(xmlStreamSource);
+
+ System.out.println(">> Response [" + response.toString() + "]");
+
+ }catch(Exception e){
+ e.printStackTrace();
+ fail("Caught exception " + e);
+ }
+
+ }
+}
Modified: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/SourceProviderTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/SourceProviderTests.java?view=diff&rev=442249&r1=442248&r2=442249
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/SourceProviderTests.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/SourceProviderTests.java Mon Sep 11 09:31:05 2006
@@ -66,6 +66,7 @@
}catch(Exception e){
e.printStackTrace();
+ fail("Caught exception " + e);
}
}
Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/StringMessageProviderTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/StringMessageProviderTests.java?view=auto&rev=442249
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/StringMessageProviderTests.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/StringMessageProviderTests.java Mon Sep 11 09:31:05 2006
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * Licensed 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.axis2.jaxws.provider;
+
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.Dispatch;
+import javax.xml.ws.Service;
+
+public class StringMessageProviderTests extends ProviderTestCase {
+
+ String endpointUrl = "http://localhost:8080/axis2/services/StringMessageProviderService";
+ String xmlString = "<invoke>test input</invoke>";
+ private QName serviceName = new QName("http://ws.apache.org/axis2", "StringMessageProviderService");
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public StringMessageProviderTests(String name) {
+ super(name);
+ }
+
+ public void testProviderString() throws Exception {
+ System.out.println("---------------------------------------");
+ System.out.println("test: " + getName());
+
+ Service svc = Service.create(serviceName);
+ svc.addPort(portName, null, endpointUrl);
+
+ Dispatch<String> dispatch = svc
+ .createDispatch(portName, String.class, Service.Mode.PAYLOAD);
+
+ System.out.println(">> Invoking Dispatch<String> StringMessageProviderService");
+ String retVal = dispatch.invoke(xmlString);
+ System.out.println(">> Response [" + retVal + "]");
+ }
+}
Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/META-INF/MANIFEST.MF?view=auto&rev=442249
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/META-INF/MANIFEST.MF (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/META-INF/MANIFEST.MF Mon Sep 11 09:31:05 2006
@@ -0,0 +1 @@
+Manifest-Version: 1.0
Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/META-INF/services.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/META-INF/services.xml?view=auto&rev=442249
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/META-INF/services.xml (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/META-INF/services.xml Mon Sep 11 09:31:05 2006
@@ -0,0 +1,12 @@
+<serviceGroup>
+ <service name="SoapMessageProviderService">
+ <messageReceivers>
+ <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>
+ </messageReceivers>
+ <parameter locked="false" name="ServiceClass">org.apache.axis2.jaxws.provider.soapmsg.SoapMessageProvider</parameter>
+ <operation name="invoke" mep="http://www.w3.org/2004/08/wsdl/in-out">
+ <actionMapping/>
+ </operation>
+ </service>
+</serviceGroup>
+
Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/SoapMessageProvider.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/SoapMessageProvider.java?view=auto&rev=442249
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/SoapMessageProvider.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/SoapMessageProvider.java Mon Sep 11 09:31:05 2006
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * Licensed 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.axis2.jaxws.provider.soapmsg;
+
+import java.io.ByteArrayInputStream;
+
+import javax.xml.ws.Provider;
+import javax.xml.ws.Service;
+import javax.xml.ws.ServiceMode;
+import javax.xml.ws.WebServiceProvider;
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.SOAPMessage;
+
+@WebServiceProvider()
+@ServiceMode(value=Service.Mode.MESSAGE)
+public class SoapMessageProvider implements Provider<SOAPMessage> {
+ String responseAsString = new String("<?xml version=\"1.0\" encoding=\"UTF-8\"?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Header/><soapenv:Body><ns2:ReturnType xmlns:ns2=\"http://test\"><return_str>some response</return_str></ns2:ReturnType></soapenv:Body></soapenv:Envelope>");
+ public SOAPMessage invoke(SOAPMessage soapMessage) {
+ System.out.println(">> SoapMessageProvider: Request received.");
+
+ try{
+ // Look at the incoming request message
+ System.out.println(">> Request on Server:");
+ soapMessage.writeTo(System.out);
+ System.out.println("\n");
+
+ // Build the outgoing response message
+ SOAPMessage message = null;
+ MessageFactory factory = MessageFactory.newInstance();
+ message = factory.createMessage(null, new ByteArrayInputStream(responseAsString.getBytes()));
+
+ System.out.println(">> Response being sent by Server:");
+ message.writeTo(System.out);
+ System.out.println("\n");
+ return message;
+ }catch(Exception e){
+ System.out.println("***ERROR: In SoapMessageProvider.invoke: Caught exception " + e);
+ e.printStackTrace();
+ }
+ return null;
+ }
+}
Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/META-INF/MANIFEST.MF?view=auto&rev=442249
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/META-INF/MANIFEST.MF (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/META-INF/MANIFEST.MF Mon Sep 11 09:31:05 2006
@@ -0,0 +1 @@
+Manifest-Version: 1.0
Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/META-INF/services.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/META-INF/services.xml?view=auto&rev=442249
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/META-INF/services.xml (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/META-INF/services.xml Mon Sep 11 09:31:05 2006
@@ -0,0 +1,12 @@
+<serviceGroup>
+ <service name="SourceMessageProviderService">
+ <messageReceivers>
+ <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>
+ </messageReceivers>
+ <parameter locked="false" name="ServiceClass">org.apache.axis2.jaxws.provider.sourcemsg.SourceMessageProvider</parameter>
+ <operation name="invoke" mep="http://www.w3.org/2004/08/wsdl/in-out">
+ <actionMapping/>
+ </operation>
+ </service>
+</serviceGroup>
+
Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/SourceMessageProvider.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/SourceMessageProvider.java?view=auto&rev=442249
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/SourceMessageProvider.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/SourceMessageProvider.java Mon Sep 11 09:31:05 2006
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * Licensed 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.axis2.jaxws.provider.sourcemsg;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.StringWriter;
+
+import javax.xml.ws.Provider;
+import javax.xml.ws.Service;
+import javax.xml.ws.ServiceMode;
+import javax.xml.ws.WebServiceProvider;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.axis2.jaxws.DispatchTestConstants;
+
+@WebServiceProvider()
+@ServiceMode(value=Service.Mode.MESSAGE)
+public class SourceMessageProvider implements Provider<Source> {
+ String responseAsString = new String("<?xml version=\"1.0\" encoding=\"UTF-8\"?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Header/><soapenv:Body><ns2:ReturnType xmlns:ns2=\"http://test\"><return_str>some response</return_str></ns2:ReturnType></soapenv:Body></soapenv:Envelope>");
+ public Source invoke(Source source) {
+ System.out.println(">> SourceMessageProvider: Request received.");
+ //System.out.println(">> Source toString: \n"+source.toString());
+
+ try{
+ StringWriter writer = new StringWriter();
+ Transformer t = TransformerFactory.newInstance().newTransformer();
+ Result result = new StreamResult(writer);
+ t.transform(source, result);
+ System.out.println(">> Source Request on Server: \n"+writer.getBuffer().toString());
+
+ byte[] bytes = responseAsString.getBytes();
+ ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
+ Source srcStream = new StreamSource((InputStream) stream);
+ return srcStream;
+ }catch(Exception e){
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+}
Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/META-INF/MANIFEST.MF?view=auto&rev=442249
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/META-INF/MANIFEST.MF (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/META-INF/MANIFEST.MF Mon Sep 11 09:31:05 2006
@@ -0,0 +1 @@
+Manifest-Version: 1.0
Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/META-INF/services.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/META-INF/services.xml?view=auto&rev=442249
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/META-INF/services.xml (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/META-INF/services.xml Mon Sep 11 09:31:05 2006
@@ -0,0 +1,12 @@
+<serviceGroup>
+ <service name="StringMessageProviderService">
+ <messageReceivers>
+ <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>
+ </messageReceivers>
+ <parameter locked="false" name="ServiceClass">org.apache.axis2.jaxws.provider.stringmsg.StringMessageProvider</parameter>
+ <operation name="invoke" mep="http://www.w3.org/2004/08/wsdl/in-out">
+ <actionMapping/>
+ </operation>
+ </service>
+</serviceGroup>
+
Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/StringMessageProvider.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/StringMessageProvider.java?view=auto&rev=442249
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/StringMessageProvider.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/StringMessageProvider.java Mon Sep 11 09:31:05 2006
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * Licensed 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.axis2.jaxws.provider.stringmsg;
+
+import javax.xml.ws.Provider;
+import javax.xml.ws.Service;
+import javax.xml.ws.ServiceMode;
+import javax.xml.ws.WebServiceProvider;
+
+@WebServiceProvider()
+@ServiceMode(value=Service.Mode.MESSAGE)
+public class StringMessageProvider implements Provider<String> {
+ private static String responseGood = "<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Header /><soapenv:Body><provider><message>request processed</message></provider></soapenv:Body></soapenv:Envelope>";
+ private static String responseBad = "<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Header /><soapenv:Body><provider><message>ERROR:null request received</message><provider></soapenv:Body></soapenv:Envelope>";
+
+ public String invoke(String obj) {
+ if (obj != null) {
+ String str = (String) obj;
+ System.out.println(">> StringMessageProvider received a new request");
+ System.out.println(">> request [" + str + "]");
+
+ return responseGood;
+ }
+ System.out.println(">> ERROR:null request received");
+ return responseBad;
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org