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 bu...@apache.org on 2002/08/14 21:16:15 UTC
cvs commit: xml-axis/java/src/org/apache/axis/wsdl/toJava JavaStubWriter.java
butek 2002/08/14 12:16:15
Modified: java/src/org/apache/axis/attachments
MimeMultipartDataSource.java
java/src/org/apache/axis/providers/java RPCProvider.java
java/src/org/apache/axis/wsdl/symbolTable SymbolTable.java
java/src/org/apache/axis/wsdl/toJava JavaStubWriter.java
Log:
Another tiny step toward attachment support. Not much, but we DO pass
one more part of the TCK attachments test.
Revision Changes Path
1.2 +1 -3 xml-axis/java/src/org/apache/axis/attachments/MimeMultipartDataSource.java
Index: MimeMultipartDataSource.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/attachments/MimeMultipartDataSource.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MimeMultipartDataSource.java 2 Aug 2002 14:52:04 -0000 1.1
+++ MimeMultipartDataSource.java 14 Aug 2002 19:16:15 -0000 1.2
@@ -79,9 +79,7 @@
this.name = name;
os = new ByteArrayOutputStream();
try {
- for (int i = 0; i < data.getCount(); ++i) {
- data.getBodyPart(i).writeTo(os);
- }
+ data.writeTo(os);
}
catch (Exception e) {
// Is this sufficient?
1.86 +36 -23 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.85
retrieving revision 1.86
diff -u -r1.85 -r1.86
--- RPCProvider.java 13 Aug 2002 20:40:57 -0000 1.85
+++ RPCProvider.java 14 Aug 2002 19:16:15 -0000 1.86
@@ -323,6 +323,9 @@
returnQName = new QName("", methodName + "Return");
}
+ // Convert any MIME type returns into a DataHandler.
+ objRes = convertMIMEType(objRes, operation.getReturnType());
+
// For SOAP 1.2, add a result
if (msgContext.getSOAPConstants() == SOAPConstants.SOAP12_CONSTANTS)
{
@@ -345,29 +348,10 @@
Object value = JavaUtils.getHolderValue(holder);
ParameterDesc paramDesc = param.getParamDesc();
- // Check for a MIME attachment outputs
- QName paramQName = paramDesc == null ? null : paramDesc.getTypeQName();
- if (paramQName != null && paramQName.getNamespaceURI().equals(Constants.NS_URI_XMLSOAP)) {
- // We have a potential attachment, put the parameter
- // into a DataHandler.
- String MIMEName = paramQName.getLocalPart();
- if ("Image".equals(MIMEName)) {
- }
- else if ("PlainText".equals(MIMEName)) {
- value = instantiateDataHandler(
- "org.apache.axis.attachments.PlainTextDataSource",
- "java.lang.String",
- value);
- }
- else if ("Multipart".equals(MIMEName)) {
- value = instantiateDataHandler(
- "org.apache.axis.attachments.MimeMultipartDataSource",
- "javax.mail.internet.MimeMultipart",
- value);
- }
- else if ("Source".equals(MIMEName)) {
- }
- }
+ // Convert any MIME attachment outputs into a DataHandler.
+ value = convertMIMEType(value,
+ paramDesc == null ? null : paramDesc.getTypeQName());
+
param.setValue(value);
resBody.addParam(param);
}
@@ -375,6 +359,35 @@
resEnv.addBodyElement(resBody);
}
+
+ /**
+ * If the object is a MIME type, convert it to a DataHandler.
+ * If it is not a MIME type, the input object is simply returned.
+ */
+ private Object convertMIMEType(Object object, QName qname) {
+ if (qname != null &&
+ qname.getNamespaceURI().equals(Constants.NS_URI_XMLSOAP)) {
+ // We have a potential attachment, put the return
+ // into a DataHandler.
+ if (qname.equals(Constants.MIME_IMAGE)) {
+ }
+ else if (qname.equals(Constants.MIME_PLAINTEXT)) {
+ object = instantiateDataHandler(
+ "org.apache.axis.attachments.PlainTextDataSource",
+ "java.lang.String",
+ object);
+ }
+ else if (qname.equals(Constants.MIME_MULTIPART)) {
+ object = instantiateDataHandler(
+ "org.apache.axis.attachments.MimeMultipartDataSource",
+ "javax.mail.internet.MimeMultipart",
+ object);
+ }
+ else if (qname.equals(Constants.MIME_SOURCE)) {
+ }
+ }
+ return object;
+ } // convertMIMEType
/**
* This method is the same as:
1.23 +34 -3 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.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- SymbolTable.java 8 Aug 2002 15:17:10 -0000 1.22
+++ SymbolTable.java 14 Aug 2002 19:16:15 -0000 1.23
@@ -1227,7 +1227,6 @@
// We're either RPC or literal + not wrapped.
param.setName(partName);
- param.setMIMEType(bindingEntry == null ? null : bindingEntry.getMIMEType(opName, partName));
// Add this type or element name
if (typeName != null) {
@@ -1246,6 +1245,8 @@
new String[] {partName,
opName}));
}
+ setMIMEType(param, bindingEntry == null ? null :
+ bindingEntry.getMIMEType(opName, partName));
v.add(param);
@@ -1322,8 +1323,9 @@
ElementDecl elem = (ElementDecl) vTypes.elementAt(j);
Parameter p = new Parameter();
p.setQName(elem.getName());
- p.setMIMEType(bindingEntry == null ? null : bindingEntry.getMIMEType(opName, partName));
p.setType(elem.getType());
+ setMIMEType(p, bindingEntry == null ? null :
+ bindingEntry.getMIMEType(opName, partName));
v.add(p);
}
} else {
@@ -1331,19 +1333,48 @@
// we can't use wrapped mode.
Parameter p = new Parameter();
p.setName(partName);
- p.setMIMEType(bindingEntry == null ? null : bindingEntry.getMIMEType(opName, partName));
if (typeName != null) {
p.setType(getType(typeName));
} else if (elementName != null) {
p.setType(getElement(elementName));
}
+ setMIMEType(p, bindingEntry == null ? null :
+ bindingEntry.getMIMEType(opName, partName));
v.add(p);
}
} // while
} // getParametersFromParts
+
+ /**
+ * Set the MIME type. This can be determine in one of two ways:
+ * 1. From WSDL 1.1 MIME constructs on the binding (passed in);
+ * 2. From AXIS-specific xml MIME types.
+ */
+ private void setMIMEType(Parameter p, String mimeType) {
+ // If there is no binding MIME construct (ie., the mimeType parameter is
+ // null), then get the MIME type from the AXIS-specific xml MIME type.
+ if (mimeType == null) {
+ QName mimeQName = p.getType().getQName();
+ if (mimeQName.getNamespaceURI().equals(Constants.NS_URI_XMLSOAP)) {
+ if (Constants.MIME_IMAGE.equals(mimeQName)) {
+ mimeType = "image/jpeg";
+ }
+ else if (Constants.MIME_PLAINTEXT.equals(mimeQName)) {
+ mimeType = "text/plain";
+ }
+ else if (Constants.MIME_MULTIPART.equals(mimeQName)) {
+ mimeType = "multipart/related";
+ }
+ else if (Constants.MIME_SOURCE.equals(mimeQName)) {
+ mimeType = "text/xml";
+ }
+ }
+ }
+ p.setMIMEType(mimeType);
+ } // setMIMEType
/**
* Populate the symbol table with all of the BindingEntry's from the Definition.
1.83 +19 -4 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.82
retrieving revision 1.83
diff -u -r1.82 -r1.83
--- JavaStubWriter.java 9 Aug 2002 13:56:25 -0000 1.82
+++ JavaStubWriter.java 14 Aug 2002 19:16:15 -0000 1.83
@@ -551,7 +551,7 @@
} else {
pw.println(" _call.setReturnType(" +
Utils.getNewQName(returnName) +
- " ," + javaType + ".class);");
+ ", " + javaType + ".class);");
}
}
else {
@@ -749,8 +749,7 @@
String realTarget = null;
if (mimeType != null) {
realTarget = target;
- if(mimeType.equals("text/plain")
- || mimeType.startsWith("multipart/")) {
+ if(mimeType != null) {
target = "javax.activation.DataHandler _returnDH = ";
}
}
@@ -794,7 +793,23 @@
pw.println(" " + target + "(java.lang.String) _returnDH.getContent();");
}
else if (mimeType.startsWith("multipart/")) {
- pw.println(" " + target + "(javax.mail.internet.MimeMultipart) _returnDH.getContent();");
+ pw.println(" javax.mail.internet.MimeMultipart _mmp = (javax.mail.internet.MimeMultipart) _returnDH.getContent();");
+ pw.println(" if (_mmp.getCount() == 0) {");
+ pw.println(" " + target + "null;");
+ pw.println(" }");
+ pw.println(" else {");
+ pw.println(" " + target + "(javax.mail.internet.MimeMultipart) _returnDH.getContent();");
+ pw.println(" }");
+ }
+ else if (mimeType.equals("image/jpeg") ||
+ mimeType.equals("image/gif")) {
+ pw.println(" " + target +
+ "(java.awt.Image) _returnDH.getContent();");
+ }
+ else if (mimeType.equals("text/xml") ||
+ mimeType.equals("applications/xml")) {
+ pw.println(" " + target +
+ "(javax.xml.transform.Source) _returnDH.getContent();");
}
else {
pw.println(" " + target +