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 wh...@apache.org on 2002/11/19 10:41:25 UTC
cvs commit: xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apacheaxis WSIFPort_ApacheAxis.java
whitlock 2002/11/19 01:41:25
Modified: java/test/mime MimeTest.java Mime.wsdl
DeploymentDescriptor.xml MimeImpl.java Mime.java
java/src/org/apache/wsif/providers/soap/apacheaxis
WSIFPort_ApacheAxis.java
Added: java/test/mime MimeBadMultipleSoapBodies.wsdl
MimeBadSoapBodyType.wsdl MimeBadNested.wsdl
MimeBadNoPart.wsdl MimeBadNoSoapBody.wsdl
MimeBadMixSoapMime.wsdl MimeBadPart.wsdl
Removed: java/test/mime MimeErrors.wsdl
Log:
More mime fixes
Revision Changes Path
1.4 +121 -118 xml-axis-wsif/java/test/mime/MimeTest.java
Index: MimeTest.java
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/test/mime/MimeTest.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- MimeTest.java 14 Nov 2002 13:49:34 -0000 1.3
+++ MimeTest.java 19 Nov 2002 09:41:24 -0000 1.4
@@ -108,7 +108,6 @@
public class MimeTest extends TestCase {
private final static String wsdlPath =
TestUtilities.getWsdlPath("java\\test\\mime");
- private final static String wsdlLocation = wsdlPath + "Mime.wsdl";
private final static String imageLocation = wsdlPath + "axis.jpg";
private final static String flatfileLocation = wsdlPath + "test.txt";
private final static String flatfileLocation2 = wsdlPath + "test2.txt";
@@ -139,10 +138,10 @@
private final static String SOAP_BODY_PARTS2 = "SOAP_BODY_PARTS2";
private final static String SOAP_BODY_PARTS3 = "SOAP_BODY_PARTS3";
private final static String SOAP_BODY_PARTS4 = "SOAP_BODY_PARTS4";
+ private final static String ARRAY_OF_BINARY = "ARRAY-OF-BINARY";
+ private final static String MAP_TYPE = "MAP-TYPE";
private final static String BAD_NO_SOAP_BODY = "BAD-NO-SOAP-BODY";
- private final static String BAD_NO_TYPE = "BAD-NO-TYPE";
private final static String BAD_NO_PART = "BAD-NO-PART";
- private final static String BAD_TYPE = "BAD-TYPE";
private final static String BAD_PART = "BAD-PART";
private final static String BAD_NESTED = "BAD-NESTED";
private final static String BAD_MIX_SOAP_MIME = "BAD-MIX-SOAP-MIME";
@@ -189,41 +188,41 @@
}
public void testSendHandler() {
- doit(SEND_DH);
+ doit(SEND_DH, "Mime.wsdl");
}
public void testReceiveHandler() {
- doit(RECEIVE_DH);
+ doit(RECEIVE_DH, "Mime.wsdl");
}
public void testSendPlainText() {
- doit(SEND_PLAINTEXT);
+ doit(SEND_PLAINTEXT, "Mime.wsdl");
}
/*
* public void testReceivePlainText() {
- * doit(RECEIVE_PLAINTEXT);
+ * doit(RECEIVE_PLAINTEXT, "Mime.wsdl");
* }
*/
public void testBounceImage() {
- doit(BOUNCE_IMAGE);
+ doit(BOUNCE_IMAGE, "Mime.wsdl");
}
public void testBounceImage2() {
- doit(BOUNCE_IMAGE2);
+ doit(BOUNCE_IMAGE2, "Mime.wsdl");
}
public void testBounceImage3() {
- doit(BOUNCE_IMAGE3);
+ doit(BOUNCE_IMAGE3, "Mime.wsdl");
}
public void testBounceImage4Default() {
- doit(BOUNCE_IMAGE4_DEFAULT);
+ doit(BOUNCE_IMAGE4_DEFAULT, "Mime.wsdl");
}
public void testBounceImage4False() {
- doit(BOUNCE_IMAGE4_FALSE);
+ doit(BOUNCE_IMAGE4_FALSE, "Mime.wsdl");
}
/*
@@ -231,7 +230,7 @@
* parameters to be passed in.
*
* public void testBounceImage4Null() {
- * doit(BOUNCE_IMAGE4_NULL);
+ * doit(BOUNCE_IMAGE4_NULL, "Mime.wsdl");
* }
*/
@@ -247,19 +246,19 @@
/*
* public void testSendSource() {
- * doit(SEND_SOURCE);
+ * doit(SEND_SOURCE, "Mime.wsdl");
* }
*
* public void testReceiveSource() {
- * doit(RECEIVE_SOURCE);
+ * doit(RECEIVE_SOURCE, "Mime.wsdl");
* }
*
* public void testSendMimeMultipart() {
- * doit(SEND_MIMEMULTIPART);
+ * doit(SEND_MIMEMULTIPART, "Mime.wsdl");
* }
*
* public void testReceiveMimeMultipart() {
- * doit(RECEIVE_MIMEMULTIPART);
+ * doit(RECEIVE_MIMEMULTIPART, "Mime.wsdl");
* }
*/
@@ -276,91 +275,93 @@
* the async tests) because it fails.
*
* public void testJmsSend() {
- * doit("SOAPJMSPort", SEND);
+ * doit("SOAPJMSPort", SEND, "Mime.wsdl");
* }
*/
public void testOrMultiParts1() {
- doit(OR_MULTIPARTS1);
+ doit(OR_MULTIPARTS1, "Mime.wsdl");
}
public void testOrMultiParts2() {
- doit(OR_MULTIPARTS2);
+ doit(OR_MULTIPARTS2, "Mime.wsdl");
}
public void testAndMultiParts() {
- doit(AND_MULTIPARTS);
+ doit(AND_MULTIPARTS, "Mime.wsdl");
}
/*
* public void testMultiOutParts() {
- * doit(MULTI_OUT_PARTS);
+ * doit(MULTI_OUT_PARTS, "Mime.wsdl");
* }
*
* public void testMultiInoutParts() {
- * doit(MULTI_INOUT_PARTS);
+ * doit(MULTI_INOUT_PARTS, "Mime.wsdl");
* }
*/
public void testNoContent() {
- doit(NO_CONTENT);
+ doit(NO_CONTENT, "Mime.wsdl");
}
public void testTypeStar() {
- doit(TYPE_STAR);
+ doit(TYPE_STAR, "Mime.wsdl");
}
public void testSoapBodyParts1() {
- doit(SOAP_BODY_PARTS1);
+ doit(SOAP_BODY_PARTS1, "Mime.wsdl");
}
public void testSoapBodyParts2() {
- doit(SOAP_BODY_PARTS2);
+ doit(SOAP_BODY_PARTS2, "Mime.wsdl");
}
public void testSoapBodyParts3() {
- doit(SOAP_BODY_PARTS3);
+ doit(SOAP_BODY_PARTS3, "Mime.wsdl");
}
public void testSoapBodyParts4() {
- doit(SOAP_BODY_PARTS4);
+ doit(SOAP_BODY_PARTS4, "Mime.wsdl");
+ }
+
+ public void testArrayOfBinary() {
+ doit(ARRAY_OF_BINARY, "Mime.wsdl");
+ }
+
+ public void testMapType() {
+ doit(MAP_TYPE, "Mime.wsdl");
+ }
+
+ /* ************ ERRORS **************** */
+
+ public void testBadNoSoapBody() {
+ doit(BAD_NO_SOAP_BODY, "MimeBadNoSoapBody.wsdl");
+ }
+
+ public void testBadNoPart() {
+ doit(BAD_NO_PART, "MimeBadNoPart.wsdl");
+ }
+
+ public void testBadPart() {
+ doit(BAD_PART, "MimeBadPart.wsdl");
+ }
+
+ public void testBadNested() {
+ doit(BAD_NESTED, "MimeBadNested.wsdl");
+ }
+
+ public void testBadMixSoapMime() {
+ doit(BAD_MIX_SOAP_MIME, "MimeBadMixSoapMime.wsdl");
+ }
+
+ public void testBadMultipleSoapBodies() {
+ doit(BAD_MULTIPLE_SOAP_BODIES, "MimeBadMultipleSoapBodies.wsdl");
+ }
+
+ public void testBadSoapBodyType() {
+ doit(BAD_SOAP_BODY_TYPE, "MimeBadSoapBodyType.wsdl");
}
-//
-// public void testBadNoSoapBody() {
-// doit(BAD_NO_SOAP_BODY);
-// }
-//
-// public void testBadNoType() {
-// doit(BAD_NO_TYPE);
-// }
-//
-// public void testBadNoPart() {
-// doit(BAD_NO_PART);
-// }
-//
-// public void testBadType() {
-// doit(BAD_TYPE);
-// }
-//
-// public void testBadPart() {
-// doit(BAD_PART);
-// }
-//
-// public void testBadNested() {
-// doit(BAD_NESTED);
-// }
-//
-// public void testBadMixSoapMime() {
-// doit(BAD_MIX_SOAP_MIME);
-// }
-//
-// public void testBadMultipleSoapBodies() {
-// doit(BAD_MULTIPLE_SOAP_BODIES);
-// }
-//
-// public void testBadSoapBodyType() {
-// doit(BAD_SOAP_BODY_TYPE);
-// }
/**
* doit should probably do the mapTypes() but unfortunately plain text
@@ -372,7 +373,7 @@
* DataHandler, not a String. So be careful where mapTypes(plaintext,String)
* is done.
*/
- private void doit(String cmd) {
+ private void doit(String cmd, String wsdl) {
if (!TestUtilities.areWeTesting("mime"))
return;
@@ -385,13 +386,17 @@
WSIFServiceFactory factory = WSIFServiceFactory.newInstance();
WSIFService service =
factory.getService(
- wsdlLocation,
+ wsdlPath + wsdl,
null,
null,
"http://mime/",
"Mime");
- Mime stub = (Mime) service.getStub(portName, Mime.class);
+ // Many of the error tests are badly behaved and would
+ // throw an exception here.
+ Mime stub = null;
+ if (!cmd.startsWith("BAD"))
+ stub = (Mime) service.getStub(portName, Mime.class);
if (cmd.equals(SEND_DH))
send_dh(service,stub);
@@ -443,24 +448,24 @@
soap_body_parts3(service,stub);
else if (cmd.equals(SOAP_BODY_PARTS4))
soap_body_parts4(service,stub);
+ else if (cmd.equals(ARRAY_OF_BINARY))
+ array_of_binary(service,stub);
+ else if (cmd.equals(MAP_TYPE))
+ map_type(service,stub);
else if (cmd.equals(BAD_NO_SOAP_BODY))
- bad_no_soap_body(service,stub);
- else if (cmd.equals(BAD_NO_TYPE))
- bad_no_type(service,stub);
+ bad_no_soap_body(service);
else if (cmd.equals(BAD_NO_PART))
- bad_no_part(service,stub);
+ bad_no_part(service);
else if (cmd.equals(BAD_PART))
- bad_part(service,stub);
- else if (cmd.equals(BAD_TYPE))
- bad_type(service,stub);
+ bad_part(service);
else if (cmd.equals(BAD_NESTED))
- bad_nested(service,stub);
+ bad_nested(service);
else if (cmd.equals(BAD_MIX_SOAP_MIME))
- bad_mix_soap_mime(service,stub);
+ bad_mix_soap_mime(service);
else if (cmd.equals(BAD_MULTIPLE_SOAP_BODIES))
- bad_multiple_soap_bodies(service,stub);
+ bad_multiple_soap_bodies(service);
else if (cmd.equals(BAD_SOAP_BODY_TYPE))
- bad_soap_body_type(service,stub);
+ bad_soap_body_type(service);
else
assertTrue(false);
@@ -480,20 +485,12 @@
}
private void send_dh(WSIFService service, Mime stub) throws Exception {
- service.mapType(
- new QName("http://mime/", "datahandler"),
- DataHandler.class);
-
DataHandler dh = new DataHandler(new FileDataSource(flatfileLocation));
String buff = stub.dataHandlerToString(dh);
assertTrue(compareFiles(flatfileLocation, buff));
}
private void receive_dh(WSIFService service, Mime stub) throws Exception {
- service.mapType(
- new QName("http://mime/", "datahandler"),
- DataHandler.class);
-
DataHandler dh = stub.stringToDataHandler(rhyme[0]);
assertTrue(compareFiles(dh, rhyme[0]));
}
@@ -736,113 +733,119 @@
assertTrue("4".equals(s));
}
+ private void array_of_binary(WSIFService service, Mime stub) throws Exception {
+ DataHandler dh = new DataHandler(new FileDataSource(flatfileLocation));
+ String buff = stub.arrayOfBinary(dh);
+ assertTrue(compareFiles(flatfileLocation, buff));
+ }
+
+ private void map_type(WSIFService service, Mime stub) throws Exception {
+ service.mapType(
+ new QName("http://mime/", "datahandler"),
+ DataHandler.class);
+
+ DataHandler dh = new DataHandler(new FileDataSource(flatfileLocation));
+ String buff = stub.dataHandlerToString(dh);
+ assertTrue(compareFiles(flatfileLocation, buff));
+ }
+
/* *********************** ERRORS ********************************** */
- private void bad_no_soap_body(WSIFService service, Mime stub)
+ private void bad_no_soap_body(WSIFService service)
throws Exception {
boolean exceptionCaught = false;
try {
+ Mime stub = (Mime) service.getStub(portName, Mime.class);
stub.badNoSoapBody(
new DataHandler(new FileDataSource(imageLocation)));
} catch (WSIFException we) {
exceptionCaught = true;
System.out.println("Expected exception=" + we);
+ we.printStackTrace();
}
assertTrue(exceptionCaught);
}
- private void bad_no_type(WSIFService service, Mime stub) throws Exception {
- DataHandler dh = new DataHandler(new FileDataSource(flatfileLocation));
- boolean exceptionCaught = false;
- try {
- String buff = stub.badNoType(dh);
- } catch (WSIFException we) {
- exceptionCaught = true;
- System.out.println("Expected exception="+we);
- }
- assertTrue(exceptionCaught);
- }
-
- private void bad_no_part(WSIFService service, Mime stub) throws Exception {
+ private void bad_no_part(WSIFService service) throws Exception {
DataHandler dh = new DataHandler(new FileDataSource(flatfileLocation));
boolean exceptionCaught = false;
try {
+ Mime stub = (Mime) service.getStub(portName, Mime.class);
String buff = stub.badNoPart(dh);
} catch (WSIFException we) {
exceptionCaught = true;
System.out.println("Expected exception="+we);
+ we.printStackTrace();
}
assertTrue(exceptionCaught);
}
- private void bad_part(WSIFService service, Mime stub) throws Exception {
+ private void bad_part(WSIFService service) throws Exception {
DataHandler dh = new DataHandler(new FileDataSource(flatfileLocation));
boolean exceptionCaught = false;
try {
+ Mime stub = (Mime) service.getStub(portName, Mime.class);
String buff = stub.badPart(dh);
} catch (WSIFException we) {
exceptionCaught = true;
System.out.println("Expected exception="+we);
+ we.printStackTrace();
}
assertTrue(exceptionCaught);
}
- private void bad_type(WSIFService service, Mime stub) throws Exception {
- DataHandler dh = new DataHandler(new FileDataSource(flatfileLocation));
- boolean exceptionCaught = false;
- try {
- String buff = stub.badType(dh);
- } catch (WSIFException we) {
- exceptionCaught = true;
- System.out.println("Expected exception="+we);
- }
- assertTrue(exceptionCaught);
- }
-
- private void bad_nested(WSIFService service, Mime stub) throws Exception {
+ private void bad_nested(WSIFService service) throws Exception {
DataHandler dh = new DataHandler(new FileDataSource(flatfileLocation));
boolean exceptionCaught = false;
try {
+ Mime stub = (Mime) service.getStub(portName, Mime.class);
stub.badNested(dh);
} catch (WSIFException we) {
exceptionCaught = true;
System.out.println("Expected exception="+we);
+ we.printStackTrace();
}
assertTrue(exceptionCaught);
}
- private void bad_mix_soap_mime(WSIFService service, Mime stub) throws Exception {
+ private void bad_mix_soap_mime(WSIFService service) throws Exception {
DataHandler dh = new DataHandler(new FileDataSource(flatfileLocation));
boolean exceptionCaught = false;
try {
+ Mime stub = (Mime) service.getStub(portName, Mime.class);
String buff = stub.badMixSoapMime(dh);
} catch (WSIFException we) {
exceptionCaught = true;
System.out.println("Expected exception="+we);
+ we.printStackTrace();
}
assertTrue(exceptionCaught);
}
- private void bad_multiple_soap_bodies(WSIFService service, Mime stub) throws Exception {
+ private void bad_multiple_soap_bodies(WSIFService service) throws Exception {
DataHandler dh = new DataHandler(new FileDataSource(flatfileLocation));
boolean exceptionCaught = false;
try {
+ Mime stub = (Mime) service.getStub(portName, Mime.class);
String buff = stub.badMultipleSoapBodies(dh);
} catch (WSIFException we) {
exceptionCaught = true;
System.out.println("Expected exception="+we);
+ we.printStackTrace();
}
assertTrue(exceptionCaught);
}
- private void bad_soap_body_type(WSIFService service, Mime stub) throws Exception {
+ private void bad_soap_body_type(WSIFService service) throws Exception {
DataHandler dh = new DataHandler(new FileDataSource(flatfileLocation));
boolean exceptionCaught = false;
try {
+ Mime stub = (Mime) service.getStub(portName, Mime.class);
String buff = stub.badSoapBodyType(dh);
} catch (WSIFException we) {
exceptionCaught = true;
System.out.println("Expected exception="+we);
+ we.printStackTrace();
}
assertTrue(exceptionCaught);
}
1.4 +44 -2 xml-axis-wsif/java/test/mime/Mime.wsdl
Index: Mime.wsdl
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/test/mime/Mime.wsdl,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Mime.wsdl 14 Nov 2002 13:49:34 -0000 1.3
+++ Mime.wsdl 19 Nov 2002 09:41:24 -0000 1.4
@@ -1,7 +1,5 @@
<?xml version="1.0" ?>
-<!-- Currently missing complex types and type="application/octet-stream" ??? -->
-
<definitions targetNamespace="http://mime/"
xmlns:tns="http://mime/"
xmlns:xsd="http://www.w3.org/1999/XMLSchema"
@@ -12,6 +10,21 @@
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
+ <!-- type defs -->
+ <types>
+ <xsd:schema
+ targetNamespace="http://mime/"
+ xmlns:xsd="http://www.w3.org/1999/XMLSchema">
+ <xsd:complexType name="ArrayOfBinary">
+ <complexContent>
+ <restriction base="soapenc:Array">
+ <attribute ref="soapenc:arrayType" arrayType="xsd:binary[]"/>
+ </restriction>
+ </complexContent>
+ </xsd:complexType>
+ </xsd:schema>
+ </types>
+
<message name="DataHandlerMessage">
<part name="file" type="tns:datahandler"/>
</message>
@@ -53,6 +66,10 @@
<message name="NullMessage">
</message>
+ <message name="ArrayOfBinaryMessage">
+ <part name="file" type="tns:ArrayOfBinary"/>
+ </message>
+
<!-- port type declns -->
<portType name="Mime">
<operation name="dataHandlerToString">
@@ -123,6 +140,10 @@
<input message="tns:BounceImage4Message"/>
<output message="tns:StringMessage"/>
</operation>
+ <operation name="arrayOfBinary">
+ <input message="tns:ArrayOfBinaryMessage"/>
+ <output message="tns:StringMessage"/>
+ </operation>
</portType>
<!-- binding declns -->
@@ -529,6 +550,27 @@
</mime:part>
<mime:part>
<mime:content part="file" type="text/plain"/>
+ </mime:part>
+ </mime:multipartRelated>
+ </input>
+ <output>
+ <soap:body use="encoded"
+ namespace="http://mime/"
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+ </output>
+ </operation>
+
+ <operation name="arrayOfBinary">
+ <soap:operation soapAction=""/>
+ <input>
+ <mime:multipartRelated>
+ <mime:part>
+ <soap:body use="encoded"
+ namespace="http://mime/"
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+ </mime:part>
+ <mime:part>
+ <mime:content part="file" type="text/html"/>
</mime:part>
</mime:multipartRelated>
</input>
1.4 +1 -1 xml-axis-wsif/java/test/mime/DeploymentDescriptor.xml
Index: DeploymentDescriptor.xml
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/test/mime/DeploymentDescriptor.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DeploymentDescriptor.xml 14 Nov 2002 13:49:34 -0000 1.3
+++ DeploymentDescriptor.xml 19 Nov 2002 09:41:25 -0000 1.4
@@ -2,7 +2,7 @@
id="http://mime/">
<isd:provider type="java"
scope="Application"
- methods="dataHandlerToString stringToDataHandler plainTextToString stringToPlainText bounceImage bounceImage2 bounceImage4 orMultiMimeParts andMultiMimeParts noContent typeStar soapBodyParts1 soapBodyParts2 soapBodyParts3 soapBodyParts4 badNoSoapBody badNoType badNoPart badType badPart badNested badMixSoapMime badMultipleSoapBodies badSoapBodyType">
+ methods="dataHandlerToString stringToDataHandler plainTextToString stringToPlainText bounceImage bounceImage2 bounceImage4 orMultiMimeParts andMultiMimeParts noContent typeStar soapBodyParts1 soapBodyParts2 soapBodyParts3 soapBodyParts4 arrayOfBinary badNoSoapBody badNoPart badPart badNested badMixSoapMime badMultipleSoapBodies badSoapBodyType">
<isd:java class="mime.MimeImpl" static="false"/>
</isd:provider>
1.4 +4 -8 xml-axis-wsif/java/test/mime/MimeImpl.java
Index: MimeImpl.java
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/test/mime/MimeImpl.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- MimeImpl.java 14 Nov 2002 13:49:34 -0000 1.3
+++ MimeImpl.java 19 Nov 2002 09:41:25 -0000 1.4
@@ -215,19 +215,15 @@
return "4";
}
+ public String arrayOfBinary(DataHandler dh) {
+ return dataHandlerToString(dh);
+ }
+
/* ******************* ERRORS *********************** */
public void badNoSoapBody(DataHandler dh) {}
- public String badNoType(DataHandler dh) {
- return dataHandlerToString(dh);
- }
-
public String badNoPart(DataHandler dh) {
- return dataHandlerToString(dh);
- }
-
- public String badType(DataHandler dh) {
return dataHandlerToString(dh);
}
1.4 +1 -2 xml-axis-wsif/java/test/mime/Mime.java
Index: Mime.java
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/test/mime/Mime.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Mime.java 14 Nov 2002 13:49:34 -0000 1.3
+++ Mime.java 19 Nov 2002 09:41:25 -0000 1.4
@@ -89,11 +89,10 @@
public String soapBodyParts2(DataHandler dh);
public String soapBodyParts3(boolean shouldBounce);
public String soapBodyParts4();
+ public String arrayOfBinary(DataHandler dh);
public void badNoSoapBody(DataHandler dh) throws Exception;
- public String badNoType(DataHandler dh) throws Exception;
public String badNoPart(DataHandler dh) throws Exception;
- public String badType(DataHandler dh) throws Exception;
public String badPart(DataHandler dh) throws Exception;
public String badNested(DataHandler dh) throws Exception;
public String badMixSoapMime(DataHandler dh) throws Exception;
1.1 xml-axis-wsif/java/test/mime/MimeBadMultipleSoapBodies.wsdl
Index: MimeBadMultipleSoapBodies.wsdl
===================================================================
<?xml version="1.0" ?>
<definitions targetNamespace="http://mime/"
xmlns:tns="http://mime/"
xmlns:xsd="http://www.w3.org/1999/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:jms="http://schemas.xmlsoap.org/wsdl/jms/"
xmlns:format="http://schemas.xmlsoap.org/wsdl/formatbinding/"
xmlns:java="http://schemas.xmlsoap.org/wsdl/java/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<message name="DataHandlerMessage">
<part name="file" type="tns:datahandler"/>
</message>
<message name="StringMessage">
<part name="buff" type="xsd:string"/>
</message>
<!-- port type declns -->
<portType name="Mime">
<operation name="badMultipleSoapBodies">
<input message="tns:DataHandlerMessage"/>
<output message="tns:StringMessage"/>
</operation>
</portType>
<!-- binding declns -->
<binding name="SOAPHttpBinding" type="tns:Mime">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<!-- There must only be one mime:part that contains a soap:body -->
<operation name="badMultipleSoapBodies">
<soap:operation soapAction=""/>
<input>
<mime:multipartRelated>
<mime:part>
<soap:body use="encoded"
namespace="http://mime/"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</mime:part>
<mime:part>
<soap:body use="encoded"
namespace="http://mime/"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</mime:part>
<mime:part>
<mime:content part="file" type="text/plain"/>
</mime:part>
</mime:multipartRelated>
</input>
<output>
<soap:body use="encoded"
namespace="http://mime/"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<!-- service decln -->
<service name="MimeService">
<port name="SOAPPort" binding="tns:SOAPHttpBinding">
<soap:address location="http://localhost:8080/soap/servlet/rpcrouter"/>
</port>
</service>
</definitions>
1.1 xml-axis-wsif/java/test/mime/MimeBadSoapBodyType.wsdl
Index: MimeBadSoapBodyType.wsdl
===================================================================
<?xml version="1.0" ?>
<definitions targetNamespace="http://mime/"
xmlns:tns="http://mime/"
xmlns:xsd="http://www.w3.org/1999/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:jms="http://schemas.xmlsoap.org/wsdl/jms/"
xmlns:format="http://schemas.xmlsoap.org/wsdl/formatbinding/"
xmlns:java="http://schemas.xmlsoap.org/wsdl/java/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<message name="DataHandlerMessage">
<part name="file" type="tns:datahandler"/>
</message>
<message name="StringMessage">
<part name="buff" type="xsd:string"/>
</message>
<!-- port type declns -->
<portType name="Mime">
<operation name="badSoapBodyType">
<input message="tns:DataHandlerMessage"/>
<output message="tns:StringMessage"/>
</operation>
</portType>
<!-- binding declns -->
<binding name="SOAPHttpBinding" type="tns:Mime">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<!-- There must not a mime:content in the same mime:part as the soap:body -->
<operation name="badSoapBodyType">
<soap:operation soapAction=""/>
<input>
<mime:multipartRelated>
<mime:part>
<mime:content part="file" type="image/jpeg"/>
<soap:body use="encoded"
namespace="http://mime/"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</mime:part>
<mime:part>
<mime:content part="file" type="text/plain"/>
</mime:part>
</mime:multipartRelated>
</input>
<output>
<soap:body use="encoded"
namespace="http://mime/"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<!-- service decln -->
<service name="MimeService">
<port name="SOAPPort" binding="tns:SOAPHttpBinding">
<soap:address location="http://localhost:8080/soap/servlet/rpcrouter"/>
</port>
</service>
</definitions>
1.1 xml-axis-wsif/java/test/mime/MimeBadNested.wsdl
Index: MimeBadNested.wsdl
===================================================================
<?xml version="1.0" ?>
<definitions targetNamespace="http://mime/"
xmlns:tns="http://mime/"
xmlns:xsd="http://www.w3.org/1999/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:jms="http://schemas.xmlsoap.org/wsdl/jms/"
xmlns:format="http://schemas.xmlsoap.org/wsdl/formatbinding/"
xmlns:java="http://schemas.xmlsoap.org/wsdl/java/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<message name="DataHandlerMessage">
<part name="file" type="tns:datahandler"/>
</message>
<message name="StringMessage">
<part name="buff" type="xsd:string"/>
</message>
<!-- port type declns -->
<portType name="Mime">
<operation name="badNested">
<input message="tns:DataHandlerMessage"/>
<output message="tns:StringMessage"/>
</operation>
</portType>
<!-- binding declns -->
<binding name="SOAPHttpBinding" type="tns:Mime">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<!-- Nested mime:parts are valid WSDL but not supported by WSIF -->
<operation name="badNested">
<soap:operation soapAction=""/>
<input>
<mime:multipartRelated>
<mime:part>
<soap:body use="encoded"
namespace="http://mime/"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</mime:part>
<mime:part>
<mime:multipartRelated>
<mime:part>
<mime:content part="file" type="text/plain"/>
</mime:part>
</mime:multipartRelated>
</mime:part>
</mime:multipartRelated>
</input>
<output>
<soap:body use="encoded"
namespace="http://mime/"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<!-- service decln -->
<service name="MimeService">
<port name="SOAPPort" binding="tns:SOAPHttpBinding">
<soap:address location="http://localhost:8080/soap/servlet/rpcrouter"/>
</port>
</service>
</definitions>
1.1 xml-axis-wsif/java/test/mime/MimeBadNoPart.wsdl
Index: MimeBadNoPart.wsdl
===================================================================
<?xml version="1.0" ?>
<definitions targetNamespace="http://mime/"
xmlns:tns="http://mime/"
xmlns:xsd="http://www.w3.org/1999/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:jms="http://schemas.xmlsoap.org/wsdl/jms/"
xmlns:format="http://schemas.xmlsoap.org/wsdl/formatbinding/"
xmlns:java="http://schemas.xmlsoap.org/wsdl/java/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<message name="DataHandlerMessage">
<part name="file" type="tns:datahandler"/>
</message>
<message name="StringMessage">
<part name="buff" type="xsd:string"/>
</message>
<!-- port type declns -->
<portType name="Mime">
<operation name="badNoPart">
<input message="tns:DataHandlerMessage"/>
<output message="tns:StringMessage"/>
</operation>
</portType>
<!-- binding declns -->
<binding name="SOAPHttpBinding" type="tns:Mime">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="badNoPart">
<soap:operation soapAction=""/>
<input>
<mime:multipartRelated>
<mime:part>
<soap:body use="encoded"
namespace="http://mime/"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</mime:part>
<mime:part>
<mime:content type="text/plain"/>
</mime:part>
</mime:multipartRelated>
</input>
<output>
<soap:body use="encoded"
namespace="http://mime/"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<!-- service decln -->
<service name="MimeService">
<port name="SOAPPort" binding="tns:SOAPHttpBinding">
<soap:address location="http://localhost:8080/soap/servlet/rpcrouter"/>
</port>
</service>
</definitions>
1.1 xml-axis-wsif/java/test/mime/MimeBadNoSoapBody.wsdl
Index: MimeBadNoSoapBody.wsdl
===================================================================
<?xml version="1.0" ?>
<definitions targetNamespace="http://mime/"
xmlns:tns="http://mime/"
xmlns:xsd="http://www.w3.org/1999/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:jms="http://schemas.xmlsoap.org/wsdl/jms/"
xmlns:format="http://schemas.xmlsoap.org/wsdl/formatbinding/"
xmlns:java="http://schemas.xmlsoap.org/wsdl/java/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<message name="DataHandlerMessage">
<part name="file" type="tns:datahandler"/>
</message>
<message name="NullMessage">
</message>
<!-- port type declns -->
<portType name="Mime">
<operation name="badNoSoapBody">
<input message="tns:DataHandlerMessage"/>
<output message="tns:NullMessage"/>
</operation>
</portType>
<!-- binding declns -->
<binding name="SOAPHttpBinding" type="tns:Mime">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="badNoSoapBody">
<soap:operation soapAction=""/>
<input>
<mime:multipartRelated>
<mime:part>
<mime:content part="file" type="text/xml"/>
</mime:part>
</mime:multipartRelated>
</input>
<output>
<soap:body use="encoded"
namespace="http://mime/"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<!-- service decln -->
<service name="MimeService">
<port name="SOAPPort" binding="tns:SOAPHttpBinding">
<soap:address location="http://localhost:8080/soap/servlet/rpcrouter"/>
</port>
</service>
</definitions>
1.1 xml-axis-wsif/java/test/mime/MimeBadMixSoapMime.wsdl
Index: MimeBadMixSoapMime.wsdl
===================================================================
<?xml version="1.0" ?>
<definitions targetNamespace="http://mime/"
xmlns:tns="http://mime/"
xmlns:xsd="http://www.w3.org/1999/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:jms="http://schemas.xmlsoap.org/wsdl/jms/"
xmlns:format="http://schemas.xmlsoap.org/wsdl/formatbinding/"
xmlns:java="http://schemas.xmlsoap.org/wsdl/java/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<message name="DataHandlerMessage">
<part name="file" type="tns:datahandler"/>
</message>
<message name="StringMessage">
<part name="buff" type="xsd:string"/>
</message>
<!-- port type declns -->
<portType name="Mime">
<operation name="badMixSoapMime">
<input message="tns:DataHandlerMessage"/>
<output message="tns:StringMessage"/>
</operation>
</portType>
<!-- binding declns -->
<binding name="SOAPHttpBinding" type="tns:Mime">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<!-- The binding input can't contain both a soap:body
and a mime:multipartRelated -->
<operation name="badMixSoapMime">
<soap:operation soapAction=""/>
<input>
<soap:body use="encoded"
namespace="http://mime/"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<mime:multipartRelated>
<mime:part>
<mime:content part="file" type="text/plain"/>
</mime:part>
</mime:multipartRelated>
</input>
<output>
<soap:body use="encoded"
namespace="http://mime/"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<!-- service decln -->
<service name="MimeService">
<port name="SOAPPort" binding="tns:SOAPHttpBinding">
<soap:address location="http://localhost:8080/soap/servlet/rpcrouter"/>
</port>
</service>
</definitions>
1.1 xml-axis-wsif/java/test/mime/MimeBadPart.wsdl
Index: MimeBadPart.wsdl
===================================================================
<?xml version="1.0" ?>
<definitions targetNamespace="http://mime/"
xmlns:tns="http://mime/"
xmlns:xsd="http://www.w3.org/1999/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:jms="http://schemas.xmlsoap.org/wsdl/jms/"
xmlns:format="http://schemas.xmlsoap.org/wsdl/formatbinding/"
xmlns:java="http://schemas.xmlsoap.org/wsdl/java/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<message name="DataHandlerMessage">
<part name="file" type="tns:datahandler"/>
</message>
<message name="StringMessage">
<part name="buff" type="xsd:string"/>
</message>
<!-- port type declns -->
<portType name="Mime">
<operation name="badPart">
<input message="tns:DataHandlerMessage"/>
<output message="tns:StringMessage"/>
</operation>
</portType>
<!-- binding declns -->
<binding name="SOAPHttpBinding" type="tns:Mime">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="badPart">
<soap:operation soapAction=""/>
<input>
<mime:multipartRelated>
<mime:part>
<soap:body use="encoded"
namespace="http://mime/"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</mime:part>
<mime:part>
<mime:content part="trash" type="text/plain"/>
</mime:part>
</mime:multipartRelated>
</input>
<output>
<soap:body use="encoded"
namespace="http://mime/"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<!-- service decln -->
<service name="MimeService">
<port name="SOAPPort" binding="tns:SOAPHttpBinding">
<soap:address location="http://localhost:8080/soap/servlet/rpcrouter"/>
</port>
</service>
</definitions>
1.18 +136 -36 xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apacheaxis/WSIFPort_ApacheAxis.java
Index: WSIFPort_ApacheAxis.java
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apacheaxis/WSIFPort_ApacheAxis.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- WSIFPort_ApacheAxis.java 15 Nov 2002 09:32:36 -0000 1.17
+++ WSIFPort_ApacheAxis.java 19 Nov 2002 09:41:25 -0000 1.18
@@ -78,6 +78,7 @@
import javax.wsdl.PortType;
import javax.wsdl.Service;
import javax.wsdl.extensions.mime.MIMEContent;
+import javax.wsdl.extensions.mime.MIMEMimeXml;
import javax.wsdl.extensions.mime.MIMEMultipartRelated;
import javax.wsdl.extensions.mime.MIMEPart;
import javax.wsdl.extensions.soap.SOAPAddress;
@@ -238,11 +239,11 @@
wsifoperation_apacheaxis)) {
operation = (Operation) iterator.next();
- String s3 = operation.getName();
+ String opName = operation.getName();
Input input = operation.getInput();
Output output = operation.getOutput();
if (input == null)
- throw new WSIFException("missing input message for operation " + s3);
+ throw new WSIFException("missing input message for operation " + opName);
wsifoperation_apacheaxis =
new WSIFOperation_ApacheAxis(this, operation, wsifdynamictypemap);
@@ -256,7 +257,7 @@
WSIFUtils.getBindingOperation( binding, operation );
if (bindingoperation == null)
throw new WSIFException(
- "missing required in WSDL 1.1 binding operation for " + s3);
+ "missing required in WSDL 1.1 binding operation for " + opName);
SOAPOperation soapoperation =
(SOAPOperation) getExtElem(bindingoperation,
javax.wsdl.extensions.soap.SOAPOperation.class,
@@ -269,11 +270,11 @@
wsifoperation_apacheaxis.setSoapActionURI(s4);
String s5 = soapoperation.getStyle();
if (s5 != null && !"rpc".equals(s5) && !"document".equals(s5))
- throw new WSIFException("unsupported style " + s1 + " for operation " + s3);
+ throw new WSIFException("unsupported style " + s1 + " for operation " + opName);
if (!"rpc".equals(s1) && !"document".equals(s1))
throw new WSIFException(
"default soap style must be rpc or document if operation "
- + s3
+ + opName
+ " binding has not style property");
if (s5 != null) {
style = s5;
@@ -284,39 +285,47 @@
}
BindingInput bindinginput = bindingoperation.getBindingInput();
List inExtElems = bindinginput.getExtensibilityElements();
- SOAPBody soapbody =
+ SOAPBody inSoapBody =
(SOAPBody) getExtElem(bindinginput,
javax.wsdl.extensions.soap.SOAPBody.class,
inExtElems);
- if (soapbody != null) {
+ if (inSoapBody != null) {
List list2 =
parseSoapBody(
wsifoperation_apacheaxis,
soapoperation,
- soapbody,
+ inSoapBody,
true);
wsifoperation_apacheaxis.setSoapPartNames(list2);
}
- MIMEMultipartRelated mimeMultipart =
+ MIMEMultipartRelated inMimeMultipart =
(MIMEMultipartRelated) getExtElem(bindinginput,
MIMEMultipartRelated.class,
inExtElems);
- if (soapbody != null && mimeMultipart != null)
+ if (inSoapBody != null && inMimeMultipart != null)
throw new WSIFException(
"In a binding operation that contains a mime:multipartRelated, "
+ "a soap:body was found that was not in a mime:part. "
+ "OperationName="
- + s3);
- if (mimeMultipart != null)
+ + opName);
+ if (inMimeMultipart != null)
parseMimeMultipart(
- mimeMultipart,
+ inMimeMultipart,
bindingoperation,
wsifoperation_apacheaxis,
soapoperation,
true,
- s3);
+ opName);
+ MIMEMimeXml inMimeMimeXml =
+ (MIMEMimeXml) getExtElem(bindinginput,
+ MIMEMimeXml.class,
+ inExtElems);
+ if (inMimeMimeXml != null)
+ throw new WSIFException(
+ "WSIF does not support mime:mimeXml. Operation=" + opName);
+
SOAPHeader soapheader =
(SOAPHeader) getExtElem(bindinginput,
javax.wsdl.extensions.soap.SOAPHeader.class,
@@ -346,24 +355,53 @@
BindingOutput bindingoutput = bindingoperation.getBindingOutput();
if (bindingoutput != null) {
- SOAPBody soapbody1 =
+ List outExtElems = bindingoutput.getExtensibilityElements();
+ SOAPBody outSoapBody =
(SOAPBody) getExtElem(bindingoutput,
javax.wsdl.extensions.soap.SOAPBody.class,
- bindingoutput.getExtensibilityElements());
- if (soapbody1 != null) {
+ outExtElems);
+ if (outSoapBody != null) {
List list3 =
parseSoapBody(
wsifoperation_apacheaxis,
soapoperation,
- soapbody1,
+ outSoapBody,
false);
if (list3 != null && list3.size() > 0)
wsifoperation_apacheaxis.setReturnName((String) list3.get(0));
}
+
+ MIMEMultipartRelated outMimeMultipart =
+ (MIMEMultipartRelated) getExtElem(bindingoutput,
+ MIMEMultipartRelated.class,
+ outExtElems);
+ if (outSoapBody != null && outMimeMultipart != null)
+ throw new WSIFException(
+ "In a binding operation that contains a mime:multipartRelated, "
+ + "a soap:body was found that was not in a mime:part. "
+ + "OperationName="
+ + opName);
+ if (outMimeMultipart != null)
+ parseMimeMultipart(
+ outMimeMultipart,
+ bindingoperation,
+ wsifoperation_apacheaxis,
+ soapoperation,
+ false,
+ opName);
+
+ MIMEMimeXml outMimeMimeXml =
+ (MIMEMimeXml) getExtElem(bindingoutput,
+ MIMEMimeXml.class,
+ outExtElems);
+ if (outMimeMimeXml != null)
+ throw new WSIFException(
+ "WSIF does not support mime:mimeXml. Operation=" + opName);
+
soapheader =
(SOAPHeader) getExtElem(bindingoutput,
javax.wsdl.extensions.soap.SOAPHeader.class,
- bindingoutput.getExtensibilityElements());
+ outExtElems);
if (soapheader != null)
throw new WSIFException("not supported output soap:header " + soapheader);
for (Iterator iterator1 =
@@ -380,7 +418,7 @@
getExtElems(
bindingoutput,
JMSProperty.class,
- bindingoutput.getExtensibilityElements());
+ outExtElems);
if (outJmsProps != null && outJmsProps.size() > 0) {
if (st instanceof WSIFJmsTransport)
wsifoperation_apacheaxis.setOutputJmsProperties(outJmsProps);
@@ -445,7 +483,13 @@
soapoperation);
Vector mimePartNames = new Vector();
- List soapPartNameList = null;
+ boolean soapBodyFound = false;
+ Operation op = bindingoperation.getOperation();
+ Map mapInParts = op.getInput().getMessage().getParts();
+ Map mapOutParts =
+ op.getOutput() == null
+ ? new HashMap()
+ : op.getOutput().getMessage().getParts();
List mimeParts = mimeMultipart.getMIMEParts();
Iterator mimePartIt = mimeParts.iterator();
@@ -463,10 +507,12 @@
+ MIMEConstants.NS_URI_MIME
+ ".");
- List mimeContents = mimePart.getExtensibilityElements();
- Iterator mimeContentIt = mimeContents.iterator();
- while (mimeContentIt.hasNext()) {
- Object nextChild = mimeContentIt.next();
+ boolean containsSoapBody = false;
+ boolean containsMimeContent = false;
+ List mimePartChildren = mimePart.getExtensibilityElements();
+ Iterator mimePartChildrenIt = mimePartChildren.iterator();
+ while (mimePartChildrenIt.hasNext()) {
+ Object nextChild = mimePartChildrenIt.next();
if (nextChild instanceof MIMEContent) {
MIMEContent mimeContent = (MIMEContent) nextChild;
if (!MIMEConstants
@@ -479,32 +525,86 @@
+ " did not have the correct namespace URI of "
+ MIMEConstants.NS_URI_MIME
+ ".");
+ containsMimeContent = true;
+ if (containsSoapBody)
+ throw new WSIFException(
+ "A mime:part that contains a mime:content also "
+ + "contains a soap:body. Operation="
+ + operationName);
+
+ String partName = mimeContent.getPart();
+ if (partName == null || partName.length() == 0)
+ throw new WSIFException(
+ "No part name for a mime:content. Operation="
+ + operationName);
+
+ if ((isInput && mapInParts.get(partName) == null)
+ || (!isInput && mapOutParts.get(partName) == null))
+ throw new WSIFException(
+ "The part specified in a mime:content does "
+ + "not exist in the operation. Operation="
+ + operationName
+ + " Part="
+ + partName);
+
+ mimePartNames.addElement(partName);
- mimePartNames.addElement(mimeContent.getPart());
} else if (nextChild instanceof SOAPBody) {
- if (soapPartNameList != null)
+ if (soapBodyFound)
throw new WSIFException(
"Multiple soap:body tags found in a "
- + "mime:multipartRelated. OperationName="
+ + "mime:multipartRelated. Operation="
+ + operationName);
+ soapBodyFound = true;
+ containsSoapBody = true;
+ if (containsMimeContent)
+ throw new WSIFException(
+ "A mime:part that contains a mime:content also "
+ + "contains a soap:body. Operation="
+ operationName);
- soapPartNameList =
+ List soapPartNameList =
parseSoapBody(
wsifoperation_apacheaxis,
soapoperation,
(SOAPBody) nextChild,
- true);
+ isInput);
- wsifoperation_apacheaxis.setSoapPartNames(
- soapPartNameList);
+ if (isInput)
+ wsifoperation_apacheaxis.setSoapPartNames(
+ soapPartNameList);
+ else if (
+ soapPartNameList != null
+ && soapPartNameList.size() > 0)
+ wsifoperation_apacheaxis.setReturnName(
+ (String) soapPartNameList.get(0));
+ } else if (nextChild instanceof MIMEMultipartRelated) {
+ throw new WSIFException(
+ "WSIF does not support nesting mime:multipartRelated "
+ + "inside a mime:part. Operation="
+ + operationName);
+ } else if (nextChild instanceof MIMEMimeXml) {
+ throw new WSIFException(
+ "WSIF does not support mime:mimeXml. Operation="
+ + operationName);
}
}
}
}
-
- if (mimePartNames != null && !mimePartNames.isEmpty())
- wsifoperation_apacheaxis.setMimePartNames(mimePartNames);
-
+
+ if (!soapBodyFound)
+ throw new WSIFException(
+ "No soap:body found in a mime:multipartRelated. Operation="
+ + operationName);
+
+ if (mimePartNames != null && !mimePartNames.isEmpty()) {
+ List oldMimePartNames = wsifoperation_apacheaxis.getMimePartNames();
+ if (oldMimePartNames == null || oldMimePartNames.isEmpty())
+ wsifoperation_apacheaxis.setMimePartNames(mimePartNames);
+ else
+ oldMimePartNames.addAll(mimePartNames);
+ }
+
Trc.exit();
}