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 Tom Jordahl <to...@macromedia.com> on 2002/08/02 16:10:11 UTC
RE: Changing WDSDL2Java symbol table slightly (was: Re: cvs commi
t: xml-axis/java/test/wsdl/attachments mime.wsdl)
+1
Sounds like a reasonable change.
--
Tom Jordahl
-----Original Message-----
From: butek@us.ibm.com [mailto:butek@us.ibm.com]
Sent: Friday, August 02, 2002 9:35 AM
To: axis-dev@xml.apache.org
Subject: Changing WDSDL2Java symbol table slightly (was: Re: cvs commit: xml-axis/java/test/wsdl/attachments mime.wsdl)
This note is particularly for dims, but anyone who uses the symbol table from WSDL2Java might be affected. There are a couple notes from my recent commit like:
+ if (parms.returnType != null) {
+ // Construct a Parameter for the return.
+ // RJB NOTE: The return info should really just be a Parameter
+ // rather than duplicating the same info on the
+ // Parameters object.
+ Parameter returnParm = new Parameter();
+ returnParm.setMIMEType(parms.returnMIMEType);
+ returnParm.setType(parms.returnType);
+ ret = Utils.getParameterTypeName(returnParm);
+ }
Unless someone objects to my changing things on them, I want to change org.apache.axis.wsdl.symbolTable.Parameters. I'll remove:
public TypeEntry returnType = null;
public QName returnName = null;
public String returnMIMEType = null;
and replace it with:
public Parameter returnParam = null;
And fix the rest of the code accordingly.
Any objections?
Russell Butek
butek@us.ibm.com
Please respond to axis-dev@xml.apache.org
To: xml-axis-cvs@apache.org
cc:
Subject: cvs commit: xml-axis/java/test/wsdl/attachments mime.wsdl
butek 2002/08/02 05:55:34
Modified: java/src/org/apache/axis/description ParameterDesc.java
ServiceDesc.java
java/src/org/apache/axis/providers/java RPCProvider.java
java/src/org/apache/axis/utils JavaUtils.java
java/src/org/apache/axis/wsdl/symbolTable BindingEntry.java
SymbolTable.java
java/src/org/apache/axis/wsdl/toJava
JavaGeneratorFactory.java JavaSkelWriter.java
JavaStubWriter.java JavaTestCaseWriter.java
Utils.java
java/test/wsdl/attachments mime.wsdl
Log:
One more small step toward full attachment support. WSDL2Java now
supports javax.mail.internet.MimeMultipart.
Revision Changes Path
1.16 +5 -2 xml-axis/java/src/org/apache/axis/description/ParameterDesc.java
Index: ParameterDesc.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/description/ParameterDesc.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- ParameterDesc.java 26 Jul 2002 14:57:48 -0000 1.15
+++ ParameterDesc.java 2 Aug 2002 12:55:33 -0000 1.16
@@ -140,8 +140,11 @@
"INOUT" : "OUT: "
+ "position:" + order) + "\n";
text+=indent + "isReturn: " + isReturn + "\n";
- text+=indent + "typeQName: " + typeQName+ "\n";
- text+=indent + "javaType: " + javaType+ "\n";
+ text+=indent + "typeQName: " + typeQName + "\n";
+ text+=indent + "javaType: " + javaType + "\n";
+ if (mimeType != null) {
+ text+=indent + "MIMEType: " + mimeType + "\n";
+ }
return text;
} // toString
1.44 +11 -1 xml-axis/java/src/org/apache/axis/description/ServiceDesc.java
Index: ServiceDesc.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/description/ServiceDesc.java,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -r1.43 -r1.44
--- ServiceDesc.java 29 Jul 2002 19:20:50 -0000 1.43
+++ ServiceDesc.java 2 Aug 2002 12:55:33 -0000 1.44
@@ -586,7 +586,9 @@
// This is a match if the paramClass is somehow
// convertable to the "real" parameter type. If not,
// break out of this loop.
- if (!JavaUtils.isConvertable(paramClass, heldType)) {
+ if (!JavaUtils.isConvertable(paramClass, heldType) &&
+ !isMimeConvertable(
+ param.getMIMEType(), heldType)) {
break;
}
}
@@ -623,6 +625,14 @@
syncOperationToClass(oper, superClass);
}
}
+
+ /**
+ * Is this is a MIME type and is it convertible to the given type?
+ */
+ private boolean isMimeConvertable(String mimeType, Class cls) {
+ return mimeType != null &&
+ cls.getName().equals(JavaUtils.mimeToJava(mimeType));
+ } // isMimeConvertable
/**
* Fill in a service description by introspecting the implementation
1.81 +10 -0 xml-axis/java/src/org/apache/axis/providers/java/RPCProvider.java
Index: RPCProvider.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/providers/java/RPCProvider.java,v
retrieving revision 1.80
retrieving revision 1.81
diff -u -r1.80 -r1.81
--- RPCProvider.java 26 Jul 2002 14:57:48 -0000 1.80
+++ RPCProvider.java 2 Aug 2002 12:55:33 -0000 1.81
@@ -59,6 +59,7 @@
import org.apache.axis.Constants;
import org.apache.axis.MessageContext;
import org.apache.axis.attachments.AttachmentPart;
+import org.apache.axis.attachments.MimeMultipartDataSource;
import org.apache.axis.attachments.PlainTextDataSource;
import org.apache.axis.enum.Style;
import org.apache.axis.description.OperationDesc;
@@ -77,6 +78,7 @@
import org.apache.commons.logging.Log;
import javax.activation.DataHandler;
+import javax.mail.internet.MimeMultipart;
import javax.xml.namespace.QName;
import javax.xml.rpc.holders.Holder;
import java.lang.reflect.Method;
@@ -331,6 +333,10 @@
objRes = new DataHandler(new PlainTextDataSource(
"ret", (String) objRes));
}
+ else if (mimeType.startsWith("multipart/")) {
+ objRes = new DataHandler(new MimeMultipartDataSource(
+ "ret", (MimeMultipart) objRes));
+ }
}
RPCParam param = new RPCParam(returnQName, objRes);
param.setParamDesc(operation.getReturnParamDesc());
@@ -351,6 +357,10 @@
if (mimeType.equals("text/plain")) {
value = new DataHandler(
new PlainTextDataSource("out", (String) value));
+ }
+ else if (mimeType.startsWith("multipart/")) {
+ value = new DataHandler(new MimeMultipartDataSource(
+ "out", (MimeMultipart) value));
}
}
param.setValue(value);
1.62 +29 -3 xml-axis/java/src/org/apache/axis/utils/JavaUtils.java
Index: JavaUtils.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/utils/JavaUtils.java,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -r1.61 -r1.62
--- JavaUtils.java 24 Jul 2002 16:15:03 -0000 1.61
+++ JavaUtils.java 2 Aug 2002 12:55:33 -0000 1.62
@@ -83,6 +83,8 @@
import java.util.List;
import java.beans.Introspector;
+import javax.mail.internet.MimeMultipart;
+
import javax.xml.soap.SOAPException;
/** Utility class to deal with Java language related issues, such
@@ -240,9 +242,12 @@
}
// Convert an AttachmentPart to the given destination class.
- if (arg instanceof AttachmentPart && destClass == String.class) {
+ if (arg instanceof AttachmentPart) {
try {
- return ((AttachmentPart)arg).getDataHandler().getContent();
+ if (destClass == String.class
+ || destClass == MimeMultipart.class) {
+ return ((AttachmentPart)arg).getDataHandler().getContent();
+ }
}
catch (IOException ioe) {
}
@@ -894,7 +899,7 @@
public static class HolderException extends Exception
{
public HolderException(String msg) { super(msg); }
- };
+ }
/**
@@ -1062,4 +1067,25 @@
return isFalse(value, true);
}
+ /**
+ * Given the MIME type string, return the Java mapping.
+ */
+ public static String mimeToJava(String mime) {
+ if ("image/gif".equals(mime) || "image/jpeg".equals(mime)) {
+ return "java.awt.Image";
+ }
+ else if ("text/plain".equals(mime)) {
+ return "java.lang.String";
+ }
+ else if ("text/xml".equals(mime) || "application/xml".equals(mime)) {
+ return "javax.xml.transform.Source";
+ }
+ else if (mime != null && mime.startsWith("multipart/")) {
+ return "javax.mail.internet.MimeMultipart";
+ }
+ else {
+ return null;
+ }
+ } // mimeToJava
+
}
1.3 +18 -4 xml-axis/java/src/org/apache/axis/wsdl/symbolTable/BindingEntry.java
Index: BindingEntry.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/symbolTable/BindingEntry.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- BindingEntry.java 24 Jul 2002 16:15:03 -0000 1.2
+++ BindingEntry.java 2 Aug 2002 12:55:33 -0000 1.3
@@ -87,6 +87,9 @@
private boolean hasLiteral;
private HashMap attributes;
private HashMap parameters = new HashMap();
+
+ // This is a map of a map. It's a map keyed on operation name whose values
+ // are maps keyed on parameter name.
private Map mimeTypes;
@@ -136,8 +139,14 @@
* Get the mime mapping for the given parameter name.
* If there is none, this returns null.
*/
- public String getMIMEType(String parameterName) {
- return (String) mimeTypes.get(parameterName);
+ public String getMIMEType(String operationName, String parameterName) {
+ Map opMap = (Map) mimeTypes.get(operationName);
+ if (opMap == null) {
+ return null;
+ }
+ else {
+ return (String) opMap.get(parameterName);
+ }
} // getMIMEType
/**
@@ -150,8 +159,13 @@
/**
* Set the mime mapping for the given parameter name.
*/
- public void setMIMEType(String parameterName, String type) {
- mimeTypes.put(parameterName, type);
+ public void setMIMEType(String operationName, String parameterName, String type) {
+ Map opMap = (Map) mimeTypes.get(operationName);
+ if (opMap == null) {
+ opMap = new HashMap();
+ mimeTypes.put(operationName, opMap);
+ }
+ opMap.put(parameterName, type);
} // setMIMEType
/**
1.18 +7 -5 xml-axis/java/src/org/apache/axis/wsdl/symbolTable/SymbolTable.java
Index: SymbolTable.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/symbolTable/SymbolTable.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- SymbolTable.java 29 Jul 2002 21:30:00 -0000 1.17
+++ SymbolTable.java 2 Aug 2002 12:55:33 -0000 1.18
@@ -1231,7 +1231,7 @@
// We're either RPC or literal + not wrapped.
param.setName(partName);
- param.setMIMEType(bindingEntry == null ? null : bindingEntry.getMIMEType(partName));
+ param.setMIMEType(bindingEntry == null ? null : bindingEntry.getMIMEType(opName, partName));
// Add this type or element name
if (typeName != null) {
@@ -1326,7 +1326,7 @@
ElementDecl elem = (ElementDecl) vTypes.elementAt(j);
Parameter p = new Parameter();
p.setQName(elem.getName());
- p.setMIMEType(bindingEntry == null ? null : bindingEntry.getMIMEType(partName));
+ p.setMIMEType(bindingEntry == null ? null : bindingEntry.getMIMEType(opName, partName));
p.setType(elem.getType());
v.add(p);
}
@@ -1335,7 +1335,7 @@
// we can't use wrapped mode.
Parameter p = new Parameter();
p.setName(partName);
- p.setMIMEType(bindingEntry == null ? null : bindingEntry.getMIMEType(partName));
+ p.setMIMEType(bindingEntry == null ? null : bindingEntry.getMIMEType(opName, partName));
if (typeName != null) {
p.setType(getType(typeName));
@@ -1389,6 +1389,8 @@
int inputBodyType = BindingEntry.USE_ENCODED;
int outputBodyType = BindingEntry.USE_ENCODED;
BindingOperation bindOp = (BindingOperation) opIterator.next();
+ Map opMimeTypes = new HashMap();
+ mimeTypes.put(bindOp.getName(), opMimeTypes);
// input
if (bindOp.getBindingInput() != null) {
@@ -1409,7 +1411,7 @@
}
else if (obj instanceof MIMEMultipartRelated) {
IntHolder holder = new IntHolder(inputBodyType);
- mimeTypes.putAll(collectMIMETypes(
+ opMimeTypes.putAll(collectMIMETypes(
(MIMEMultipartRelated) obj, holder, bindOp));
inputBodyType = holder.value;
}
@@ -1436,7 +1438,7 @@
}
else if (obj instanceof MIMEMultipartRelated) {
IntHolder holder = new IntHolder(outputBodyType);
- mimeTypes.putAll(collectMIMETypes(
+ opMimeTypes.putAll(collectMIMETypes(
(MIMEMultipartRelated) obj, holder, bindOp));
outputBodyType = holder.value;
}
1.16 +12 -2 xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaGeneratorFactory.java
Index: JavaGeneratorFactory.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaGeneratorFactory.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- JavaGeneratorFactory.java 24 Jul 2002 16:15:04 -0000 1.15
+++ JavaGeneratorFactory.java 2 Aug 2002 12:55:33 -0000 1.16
@@ -839,9 +839,19 @@
* Construct the signature, which is used by both the interface and the stub.
*/
private String constructSignature(Parameters parms, String opName) {
- String name = Utils.xmlNameToJava(opName);
+ String name = Utils.xmlNameToJava(opName);
- String ret = parms.returnType == null ? "void" : parms.returnType.getName();
+ String ret = "void";
+ if (parms.returnType != null) {
+ // Construct a Parameter for the return.
+ // RJB NOTE: The return info should really just be a Parameter
+ // rather than duplicating the same info on the
+ // Parameters object.
+ Parameter returnParm = new Parameter();
+ returnParm.setMIMEType(parms.returnMIMEType);
+ returnParm.setType(parms.returnType);
+ ret = Utils.getParameterTypeName(returnParm);
+ }
String signature = " public " + ret + " " + name + "(";
boolean needComma = false;
1.40 +11 -5 xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaSkelWriter.java
Index: JavaSkelWriter.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaSkelWriter.java,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- JavaSkelWriter.java 26 Jul 2002 14:57:48 -0000 1.39
+++ JavaSkelWriter.java 2 Aug 2002 12:55:33 -0000 1.40
@@ -190,10 +190,9 @@
pw.println(" " +
"new org.apache.axis.description.ParameterDesc(" +
Utils.getNewQName(paramName) +
- ", " + modeStr + ", " +
- Utils.getNewQName(paramType) +
- ", " +
- p.getType().getName() + ".class" +
+ ", " + modeStr +
+ ", " + Utils.getNewQName(paramType) +
+ ", " + Utils.getParameterTypeName(p) + ".class" +
", " + mimeType + "), ");
}
@@ -354,7 +353,14 @@
if (parms.returnType == null) {
pw.print(" ");
} else {
- pw.print(" " + parms.returnType.getName() + " ret = ");
+ // Construct a Parameter for the return.
+ // RJB NOTE: The return info should really just be a
+ // Parameter rather than duplicating the same
+ // info on the Parameters object.
+ Parameter returnParm = new Parameter();
+ returnParm.setMIMEType(parms.returnMIMEType);
+ returnParm.setType(parms.returnType);
+ pw.print(" " + Utils.getParameterTypeName(returnParm) + " ret = ");
}
String call = "impl." + Utils.xmlNameToJava(operation.getName()) + "(";
boolean needComma = false;
1.79 +51 -20 xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java
Index: JavaStubWriter.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java,v
retrieving revision 1.78
retrieving revision 1.79
diff -u -r1.78 -r1.79
--- JavaStubWriter.java 24 Jul 2002 16:15:04 -0000 1.78
+++ JavaStubWriter.java 2 Aug 2002 12:55:33 -0000 1.79
@@ -622,12 +622,19 @@
if (mode == Parameter.INOUT) {
javifiedName += ".value";
}
-
+
if (mimeType.equals("text/plain")) {
- pw.println(" javax.activation.DataHandler _dh" + numberOfInMIMES++ +
+ pw.println(" javax.activation.DataHandler _dh" +
+ numberOfInMIMES++ +
" = new javax.activation.DataHandler(new org.apache.axis.attachments.PlainTextDataSource(\"" +
javifiedName + "\", " + javifiedName + "));");
}
+ else if (mimeType.startsWith("multipart/")) {
+ pw.println(" javax.activation.DataHandler _dh" +
+ numberOfInMIMES++ +
+ " = new javax.activation.DataHandler(new org.apache.axis.attachments.MimeMultipartDataSource(\"" +
+ javifiedName + "\", " + javifiedName + "));");
+ }
}
}
numberOfInMIMES = 0;
@@ -656,6 +663,10 @@
pw.print("_dh" + numberOfInMIMES++);
continue;
}
+ else if (mimeType.startsWith("multipart/")) {
+ pw.print("_dh" + numberOfInMIMES++);
+ continue;
+ }
}
// If we get here, then we didn't find a MIME type
@@ -740,9 +751,12 @@
TypeEntry type, String mimeType,
String source) {
String realTarget = null;
- if (mimeType != null && mimeType.equals("text/plain")) {
+ if (mimeType != null) {
realTarget = target;
- target = "javax.activation.DataHandler _returnDH = ";
+ if(mimeType.equals("text/plain")
+ || mimeType.startsWith("multipart/")) {
+ target = "javax.activation.DataHandler _returnDH = ";
+ }
}
if (type != null && type.getName() != null) {
// Try casting the output to the expected output.
@@ -752,30 +766,47 @@
Utils.getResponseString(type, mimeType, source));
if (mimeType != null) {
- if (mimeType.equals("text/plain")) {
- pw.println(" java.io.InputStream _DHIS = _returnDH.getInputStream();");
- pw.println(" byte[] _DHISBytes = new byte[_DHIS.available()];");
- pw.println(" _DHIS.read(_DHISBytes);");
- pw.println(" " + realTarget +
- Utils.getResponseString(type, null, "new String(_DHISBytes)"));
- }
- else {
- pw.println(" " + realTarget +
- Utils.getResponseString(type, mimeType, source));
- }
+ writeMIMETypeReturn(pw, realTarget, source, type, mimeType);
target = realTarget;
}
pw.println(" } catch (java.lang.Exception _exception) {");
- pw.println(" " + target +
- Utils.getResponseString(type, null,
- "org.apache.axis.utils.JavaUtils.convert(" +
- source + ", " +
- type.getName() + ".class)"));
+ if (mimeType != null) {
+ pw.println(" // Is there anything we can do for MIME types?");
+ pw.println(" " + target + "null;");
+ }
+ else {
+ pw.println(" " + target +
+ Utils.getResponseString(type, null,
+ "org.apache.axis.utils.JavaUtils.convert(" +
+ source + ", " + type.getName() + ".class)"));
+ }
pw.println(" }");
} else {
pw.println(" " + target +
Utils.getResponseString(type, mimeType, source));
}
}
+
+ /**
+ * Write the statements that convert the returned DataHandler to the appropriate
+ * MIME mapping type.
+ */
+ private void writeMIMETypeReturn(PrintWriter pw, String target,
+ String source, TypeEntry type, String mimeType) {
+ if (mimeType.equals("text/plain")) {
+ pw.println(" java.io.InputStream _DHIS = _returnDH.getInputStream();");
+ pw.println(" byte[] _DHISBytes = new byte[_DHIS.available()];");
+ pw.println(" _DHIS.read(_DHISBytes);");
+ pw.println(" " + target + "new String(_DHISBytes);");
+ }
+ else if (mimeType.startsWith("multipart/")) {
+ pw.println(" " + target +
+ "new javax.mail.internet.MimeMultipart(_returnDH.getDataSource());");
+ }
+ else {
+ pw.println(" " + target +
+ Utils.getResponseString(type, mimeType, source));
+ }
+ } // writeMIMETypeReturn
} // class JavaStubWriter
1.33 +20 -3 xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaTestCaseWriter.java
Index: JavaTestCaseWriter.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaTestCaseWriter.java,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- JavaTestCaseWriter.java 24 Jul 2002 16:15:04 -0000 1.32
+++ JavaTestCaseWriter.java 2 Aug 2002 12:55:34 -0000 1.33
@@ -185,10 +185,18 @@
pw.println(" try {");
if (params.returnType != null) {
pw.print(" ");
- pw.print(params.returnType.getName());
+ // Construct a Parameter for the return.
+ // RJB NOTE: The return info should really just be a
+ // Parameter rather than duplicating the same
+ // info on the Parameters object.
+ Parameter returnParm = new Parameter();
+ returnParm.setMIMEType(params.returnMIMEType);
+ returnParm.setType(params.returnType);
+ pw.print(Utils.getParameterTypeName(returnParm));
pw.print(" value = ");
- if ( Utils.isPrimitiveType( params.returnType ) ) {
+ if (params.returnMIMEType == null &&
+ Utils.isPrimitiveType(params.returnType)) {
if ( "boolean".equals( params.returnType.getName() ) ) {
pw.println("false;");
} else {
@@ -221,10 +229,11 @@
Parameter param = (Parameter) iparam.next();
String paramType = param.getType().getName();
+ String mimeType = param.getMIMEType();
String suffix = "";
if (param.getMode() != Parameter.IN) {
- pw.print("new " + Utils.holder(param.getMIMEType(), param.getType(), emitter)
+ pw.print("new " + Utils.holder(mimeType, param.getType(), emitter)
+ "(");
suffix = ")";
}
@@ -239,6 +248,14 @@
pw.print("(short)0");
} else {
pw.print("0");
+ }
+ } else if (mimeType != null) {
+ if (mimeType.equals("image/gif") ||
+ mimeType.equals("image/jpeg")) {
+ pw.print("java.awt.Toolkit.getDefaultToolkit().getImage(new byte[0])");
+ }
+ else {
+ pw.print("new " + Utils.getParameterTypeName(param) + "()");
}
} else if (paramType.equals("java.lang.Boolean")) {
pw.print("new java.lang.Boolean(false)");
1.44 +1 -22 xml-axis/java/src/org/apache/axis/wsdl/toJava/Utils.java
Index: Utils.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/Utils.java,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -r1.43 -r1.44
--- Utils.java 31 Jul 2002 20:47:01 -0000 1.43
+++ Utils.java 2 Aug 2002 12:55:34 -0000 1.44
@@ -597,34 +597,13 @@
ret = parm.getType().getName();
}
else {
- ret = mimeToJava(mime);
+ ret = JavaUtils.mimeToJava(mime);
if (ret == null) {
ret = parm.getType().getName();
}
}
return ret;
} // getParameterTypeName
-
- /**
- * Given the MIME type string, return the Java mapping.
- */
- private static String mimeToJava(String mime) {
- if ("image/gif".equals(mime) || "image/jpeg".equals(mime)) {
- return "java.awt.Image";
- }
- else if ("text/plain".equals(mime)) {
- return "java.lang.String";
- }
- else if ("text/xml".equals(mime) || "application/xml".equals(mime)) {
- return "javax.xml.transform.Source";
- }
- else if (mime != null && mime.startsWith("multipart/")) {
- return "javax.mail.internet.MimeMultipart";
- }
- else {
- return null;
- }
- } // mimeToJava
/**
* Get the QName that could be used in the xsi:type
1.3 +72 -58 xml-axis/java/test/wsdl/attachments/mime.wsdl
Index: mime.wsdl
===================================================================
RCS file: /home/cvs/xml-axis/java/test/wsdl/attachments/mime.wsdl,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- mime.wsdl 26 Jul 2002 14:57:48 -0000 1.2
+++ mime.wsdl 2 Aug 2002 12:55:34 -0000 1.3
@@ -29,18 +29,27 @@
</schema>
</types>
- <message name="m0"/>
- <message name="m1">
+ <message name="empty"/>
+ <message name="pt1">
<part name="body" element="tns:GetCompanyInfo"/>
</message>
- <message name="m2">
+ <message name="pt2">
<part name="body" element="tns:GetCompanyInfo2"/>
<part name="docs" type="xsd:string"/>
<part name="logo" type="xsd:hexBinary"/>
</message>
- <message name="m3">
+ <message name="pt3">
<part name="body" type="xsd:string"/>
</message>
+ <message name="pt4">
+ <part name="out" type="xsd:string"/>
+ </message>
+ <message name="mmp3">
+ <part name="body" type="xsd:string"/>
+ </message>
+ <message name="mmp4">
+ <part name="out" type="xsd:string"/>
+ </message>
<portType name="pt1">
<!--
@@ -54,19 +63,37 @@
</operation>
-->
<operation name="inputPlainText">
- <input message="tns:m3"/>
- <output message="tns:m0"/>
+ <input message="tns:pt3"/>
+ <output message="tns:empty"/>
+ </operation>
+ <operation name="inoutPlainText">
+ <input message="tns:pt3"/>
+ <output message="tns:pt3"/>
</operation>
<operation name="echoPlainText">
- <input message="tns:m3"/>
- <output message="tns:m3"/>
+ <input message="tns:pt3"/>
+ <output message="tns:pt4"/>
</operation>
-<!-- This operation fails for the document binding. I'll figure it out later...
<operation name="outputPlainText">
- <input message="tns:m0"/>
- <output message="tns:m3"/>
+ <input message="tns:empty"/>
+ <output message="tns:pt3"/>
+ </operation>
+ <operation name="inputMimeMultipart">
+ <input message="tns:mmp3"/>
+ <output message="tns:empty"/>
+ </operation>
+ <operation name="inoutMimeMultipart">
+ <input message="tns:mmp3"/>
+ <output message="tns:mmp3"/>
+ </operation>
+ <operation name="echoMimeMultipart">
+ <input message="tns:mmp3"/>
+ <output message="tns:mmp4"/>
+ </operation>
+ <operation name="outputMimeMultipart">
+ <input message="tns:empty"/>
+ <output message="tns:mmp3"/>
</operation>
--->
</portType>
<binding name="b1" type="tns:pt1">
@@ -127,7 +154,7 @@
<soap:body use="encoded"/>
</output>
</operation>
- <operation name="echoPlainText">
+ <operation name="inoutPlainText">
<soap:operation soapAction=""/>
<input>
<mime:multipartRelated>
@@ -144,122 +171,109 @@
</mime:multipartRelated>
</output>
</operation>
-<!--
- <operation name="outputPlainText">
+ <operation name="echoPlainText">
<soap:operation soapAction=""/>
<input>
- <soap:body use="encoded"/>
+ <mime:multipartRelated>
+ <mime:part>
+ <mime:content part="body" type="text/plain"/>
+ </mime:part>
+ </mime:multipartRelated>
</input>
<output>
<mime:multipartRelated>
<mime:part>
- <mime:content part="body" type="text/plain"/>
+ <mime:content part="out" type="text/plain"/>
</mime:part>
</mime:multipartRelated>
</output>
</operation>
--->
- </binding>
-
- <binding name="b2" type="tns:pt1">
- <soap:binding style="document"
- transport=" http://schemas.xmlsoap.org/soap/http <http://schemas.xmlsoap.org/soap/http> "/>
-<!--
- <operation name="GetCompanyInfo">
- <soap:operation soapAction=" http://example.com/GetCompanyInfo <http://example.com/GetCompanyInfo> "/>
+ <operation name="outputPlainText">
+ <soap:operation soapAction=""/>
<input>
- <soap:body use="literal"/>
+ <soap:body use="encoded"/>
</input>
<output>
<mime:multipartRelated>
<mime:part>
- <soap:body parts="body" use="literal"/>
- </mime:part>
- <mime:part>
- <mime:content part="docs" type="text/html"/>
- </mime:part>
- <mime:part>
- <mime:content part="logo" type="image/gif"/>
- <mime:content part="logo" type="image/jpeg"/>
+ <mime:content part="body" type="text/plain"/>
</mime:part>
</mime:multipartRelated>
</output>
</operation>
- <operation name="GetCompanyInfo2">
- <soap:operation soapAction=" http://example.com/GetCompanyInfo2 <http://example.com/GetCompanyInfo2> "/>
+ <operation name="inputMimeMultipart">
+ <soap:operation soapAction=""/>
<input>
<mime:multipartRelated>
<mime:part>
- <soap:body parts="body" use="literal"/>
- </mime:part>
- <mime:part>
- <mime:content part="docs" type="text/plain"/>
- </mime:part>
- <mime:part>
- <mime:content part="logo" type="image/gif"/>
- <mime:content part="logo" type="image/jpeg"/>
+ <mime:content part="body" type="multipart/related"/>
</mime:part>
</mime:multipartRelated>
</input>
<output>
- <soap:body use="literal"/>
+ <soap:body use="encoded"/>
</output>
</operation>
--->
- <operation name="inputPlainText">
+ <operation name="inoutMimeMultipart">
<soap:operation soapAction=""/>
<input>
<mime:multipartRelated>
<mime:part>
- <mime:content part="body" type="text/plain"/>
+ <mime:content part="body" type="multipart/related"/>
</mime:part>
</mime:multipartRelated>
</input>
<output>
-<!-- <soap:body use="literal"/> Note: turning on the literal flag causes problems: "SimpleDeser cannot handle structured data!". Two problems: 1. why? 2. I believe literal is supposed to be the default. It doesn't seem to be in AXIS. -->
+ <mime:multipartRelated>
+ <mime:part>
+ <mime:content part="body" type="multipart/related"/>
+ </mime:part>
+ </mime:multipartRelated>
</output>
</operation>
- <operation name="echoPlainText">
+ <operation name="echoMimeMultipart">
<soap:operation soapAction=""/>
<input>
<mime:multipartRelated>
<mime:part>
- <mime:content part="body" type="text/plain"/>
+ <mime:content part="body" type="multipart/related"/>
</mime:part>
</mime:multipartRelated>
</input>
<output>
<mime:multipartRelated>
<mime:part>
- <mime:content part="body" type="text/plain"/>
+ <mime:content part="out" type="multipart/related"/>
</mime:part>
</mime:multipartRelated>
</output>
</operation>
-<!-- This operation fails and I can't figure out why at the moment...
- <operation name="outputPlainText">
+ <operation name="outputMimeMultipart">
<soap:operation soapAction=""/>
<input>
-<!- <soap:body use="literal"/> Note: turning on the literal flag causes problems: "SimpleDeser cannot handle structured data!". Two problems: 1. why? 2. I believe literal is supposed to be the default. It doesn't seem to be in AXIS. ->
+ <soap:body use="encoded"/>
</input>
<output>
<mime:multipartRelated>
<mime:part>
- <mime:content part="body" type="text/plain"/>
+ <mime:content part="body" type="multipart/related"/>
</mime:part>
</mime:multipartRelated>
</output>
</operation>
--->
</binding>
+<!-- I want to do a document style binding, too, but it doesn't work yet -->
+
<service name="Attachment">
<port name="AttachmentPortRPC" binding="tns:b1">
<soap:address location=" http://localhost:8080/axis/services/AttachmentPortRPC <http://localhost:8080/axis/services/AttachmentPortRPC> "/>
</port>
+<!-- doc doesn't work yet
<port name="AttachmentPortDoc" binding="tns:b2">
<soap:address location=" http://localhost:8080/axis/services/AttachmentPortDoc <http://localhost:8080/axis/services/AttachmentPortDoc> "/>
</port>
+-->
</service>
</wsdl:definitions>