dims 2002/12/30 06:36:46
Modified: java/test/wsdl/interop4/groupG/dime/rpc
AttachmentsBindingImpl.java build.xml
DimeRPCInteropTestCase.java
java/test/wsdl/interop4/groupG/mime/rpc
AttachmentsBindingImpl.java build.xml
MimeRPCInteropTestCase.java
java/src/org/apache/axis/wsdl/symbolTable BindingEntry.java
Parameter.java SymbolTable.java
java/src/org/apache/axis/client Call.java
java/src/org/apache/axis/wsdl/toJava
JavaGeneratorFactory.java JavaStubWriter.java
JavaTestCaseWriter.java Utils.java
java/src/org/apache/axis/encoding/ser
OctetStreamDataHandlerDeserializer.java
Added: java/src/org/apache/axis/wsdl/symbolTable MimeInfo.java
Log:
get dime/rpc and mime/rpc working (for Bug 13769 - Group G: SwA/DIME (attachments)
WSDL Problems)
Revision Changes Path
1.3 +7 -1
xml-axis/java/test/wsdl/interop4/groupG/dime/rpc/AttachmentsBindingImpl.java
Index: AttachmentsBindingImpl.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/test/wsdl/interop4/groupG/dime/rpc/AttachmentsBindingImpl.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AttachmentsBindingImpl.java 28 Dec 2002 17:59:06 -0000 1.2
+++ AttachmentsBindingImpl.java 30 Dec 2002 14:36:44 -0000 1.3
@@ -7,12 +7,15 @@
package test.wsdl.interop4.groupG.dime.rpc;
+import org.apache.axis.AxisEngine;
+import org.apache.axis.Message;
+
public class AttachmentsBindingImpl implements
test.wsdl.interop4.groupG.dime.rpc.AttachmentsPortType{
public org.apache.axis.attachments.OctetStream
echoAttachment(org.apache.axis.attachments.OctetStream in) throws
java.rmi.RemoteException {
return in;
}
- public test.wsdl.interop4.groupG.dime.rpc.xsd.ReferencedBinary[]
echoAttachments(test.wsdl.interop4.groupG.dime.rpc.xsd.ReferencedBinary[] in) throws
java.rmi.RemoteException {
+ public org.apache.axis.attachments.OctetStream[]
echoAttachments(org.apache.axis.attachments.OctetStream in[]) throws
java.rmi.RemoteException {
return in;
}
@@ -21,10 +24,13 @@
}
public org.apache.axis.attachments.OctetStream echoBase64AsAttachment(byte[]
in) throws java.rmi.RemoteException {
+ Message response =
AxisEngine.getCurrentMessageContext().getResponseMessage();
+
response.getAttachmentsImpl().setSendType(org.apache.axis.attachments.Attachments.SEND_TYPE_DIME);
return new org.apache.axis.attachments.OctetStream(in);
}
public void echoUnrefAttachments() throws java.rmi.RemoteException {
+ //TODO: What do we do here?
}
public java.lang.String echoAttachmentAsString(java.lang.String in) throws
java.rmi.RemoteException {
1.5 +2 -2 xml-axis/java/test/wsdl/interop4/groupG/dime/rpc/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/xml-axis/java/test/wsdl/interop4/groupG/dime/rpc/build.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- build.xml 28 Dec 2002 17:59:06 -0000 1.4
+++ build.xml 30 Dec 2002 14:36:44 -0000 1.5
@@ -71,14 +71,14 @@
</wsdl2java>
<mkdir dir="${build.dest}"/>
- <!--
+
<copy
file="${axis.home}/test/wsdl/interop4/groupG/dime/rpc/DimeRPCInteropTestCase.java"
todir="${root.dir}/build/work/test/wsdl/interop4/groupG/dime/rpc"
overwrite="yes"/>
<copy
file="${axis.home}/test/wsdl/interop4/groupG/dime/rpc/AttachmentsBindingImpl.java"
todir="${root.dir}/build/work/test/wsdl/interop4/groupG/dime/rpc"
overwrite="yes"/>
- -->
+
<!-- compile the skeletons -->
<javac srcdir="${build.dir}/work"
destdir="${build.dest}" debug="on">
1.3 +22 -11
xml-axis/java/test/wsdl/interop4/groupG/dime/rpc/DimeRPCInteropTestCase.java
Index: DimeRPCInteropTestCase.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/test/wsdl/interop4/groupG/dime/rpc/DimeRPCInteropTestCase.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DimeRPCInteropTestCase.java 28 Dec 2002 17:59:06 -0000 1.2
+++ DimeRPCInteropTestCase.java 30 Dec 2002 14:36:44 -0000 1.3
@@ -7,7 +7,10 @@
package test.wsdl.interop4.groupG.dime.rpc;
+import org.apache.axis.attachments.OctetStream;
+
import java.net.URL;
+import java.util.Arrays;
public class DimeRPCInteropTestCase extends junit.framework.TestCase {
public DimeRPCInteropTestCase(java.lang.String name) {
@@ -32,10 +35,11 @@
assertTrue("binding is null", binding != null);
// Test operation
- org.apache.axis.attachments.OctetStream input = new
org.apache.axis.attachments.OctetStream("EchoAttachment".getBytes());
- org.apache.axis.attachments.OctetStream output = null;
+ OctetStream input = new OctetStream("EchoAttachment".getBytes());
+ OctetStream output = null;
output = binding.echoAttachment(input);
// TBD - validate results
+ assertTrue(Arrays.equals(input.getBytes(), output.getBytes()));
}
public void test2DimeRPCSoapPortEchoAttachments() throws Exception {
@@ -50,13 +54,17 @@
}
assertTrue("binding is null", binding != null);
+ OctetStream[] input = new OctetStream[2];
+
+ input[0] = new OctetStream("EchoAttachments0".getBytes());
+ input[1] = new OctetStream("EchoAttachments1".getBytes());
+
// Test operation
- test.wsdl.interop4.groupG.dime.rpc.xsd.ReferencedBinary[] input = new
test.wsdl.interop4.groupG.dime.rpc.xsd.ReferencedBinary[2];
- input[0] = new
test.wsdl.interop4.groupG.dime.rpc.xsd.ReferencedBinary("EchoAttachments0".getBytes());
- input[1] = new
test.wsdl.interop4.groupG.dime.rpc.xsd.ReferencedBinary("EchoAttachments1".getBytes());
- test.wsdl.interop4.groupG.dime.rpc.xsd.ReferencedBinary[] output = null;
+ OctetStream[] output = null;
output = binding.echoAttachments(input);
// TBD - validate results
+ assertTrue(Arrays.equals(input[0].getBytes(), output[0].getBytes()));
+ assertTrue(Arrays.equals(input[1].getBytes(), output[1].getBytes()));
}
public void test3DimeRPCSoapPortEchoAttachmentAsBase64() throws Exception {
@@ -71,11 +79,12 @@
}
assertTrue("binding is null", binding != null);
- org.apache.axis.attachments.OctetStream input = new
org.apache.axis.attachments.OctetStream("EchoAttachmentAsBase64".getBytes());
+ OctetStream input = new OctetStream("EchoAttachmentAsBase64".getBytes());
// Test operation
- byte[] value = null;
- value = binding.echoAttachmentAsBase64(input);
+ byte[] output = null;
+ output = binding.echoAttachmentAsBase64(input);
// TBD - validate results
+ assertTrue(Arrays.equals(input.getBytes(), output));
}
public void test4DimeRPCSoapPortEchoBase64AsAttachment() throws Exception {
@@ -90,11 +99,12 @@
}
assertTrue("binding is null", binding != null);
- byte[] input = "EchoBase64AsAttachment".getBytes();
+ byte[] input = "EchoBase64AsAttachment".getBytes();
// Test operation
- org.apache.axis.attachments.OctetStream output = null;
+ OctetStream output = null;
output = binding.echoBase64AsAttachment(input);
// TBD - validate results
+ assertTrue(Arrays.equals(input, output.getBytes()));
}
public void test5DimeRPCSoapPortEchoUnrefAttachments() throws Exception {
@@ -132,6 +142,7 @@
java.lang.String output = null;
output = binding.echoAttachmentAsString(input);
// TBD - validate results
+ assertEquals(input, output);
}
public static URL url = null;
1.3 +1 -1
xml-axis/java/test/wsdl/interop4/groupG/mime/rpc/AttachmentsBindingImpl.java
Index: AttachmentsBindingImpl.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/test/wsdl/interop4/groupG/mime/rpc/AttachmentsBindingImpl.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AttachmentsBindingImpl.java 25 Dec 2002 23:28:46 -0000 1.2
+++ AttachmentsBindingImpl.java 30 Dec 2002 14:36:45 -0000 1.3
@@ -14,7 +14,7 @@
return in;
}
- public OctetStream echoAttachments(OctetStream in) throws
java.rmi.RemoteException {
+ public OctetStream[] echoAttachments(OctetStream in[]) throws
java.rmi.RemoteException {
return in;
}
1.5 +3 -0 xml-axis/java/test/wsdl/interop4/groupG/mime/rpc/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/xml-axis/java/test/wsdl/interop4/groupG/mime/rpc/build.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- build.xml 25 Dec 2002 23:28:46 -0000 1.4
+++ build.xml 30 Dec 2002 14:36:45 -0000 1.5
@@ -55,6 +55,7 @@
<wsdl2java url="${axis.home}/test/wsdl/interop4/groupG/mime/rpc/mime-rpc.wsdl"
output="${root.dir}/build/work"
skeletonDeploy="yes"
+ timeout="-1"
testCase="yes"
serverSide="yes">
<mapping namespace="http://soapinterop.org/attachments/wsdl"
package="test.wsdl.interop4.groupG.mime.rpc"/>
@@ -70,12 +71,14 @@
</wsdl2java>
<mkdir dir="${build.dest}"/>
+
<copy
file="${axis.home}/test/wsdl/interop4/groupG/mime/rpc/MimeRPCInteropTestCase.java"
todir="${root.dir}/build/work/test/wsdl/interop4/groupG/mime/rpc"
overwrite="yes"/>
<copy
file="${axis.home}/test/wsdl/interop4/groupG/mime/rpc/AttachmentsBindingImpl.java"
todir="${root.dir}/build/work/test/wsdl/interop4/groupG/mime/rpc"
overwrite="yes"/>
+
<!-- compile the skeletons -->
<javac srcdir="${build.dir}/work"
destdir="${build.dest}" debug="on">
1.4 +3 -4
xml-axis/java/test/wsdl/interop4/groupG/mime/rpc/MimeRPCInteropTestCase.java
Index: MimeRPCInteropTestCase.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/test/wsdl/interop4/groupG/mime/rpc/MimeRPCInteropTestCase.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- MimeRPCInteropTestCase.java 25 Dec 2002 23:28:46 -0000 1.3
+++ MimeRPCInteropTestCase.java 30 Dec 2002 14:36:45 -0000 1.4
@@ -60,11 +60,10 @@
// Test operation
OctetStream[] output = null;
- // TODO: Fix this echoAttachments sig is wrong.
- //output = binding.echoAttachments(input);
+ output = binding.echoAttachments(input);
// TBD - validate results
- //assertTrue(Arrays.equals(input[0].getBytes(), output[0].getBytes()));
- //assertTrue(Arrays.equals(input[1].getBytes(), output[1].getBytes()));
+ assertTrue(Arrays.equals(input[0].getBytes(), output[0].getBytes()));
+ assertTrue(Arrays.equals(input[1].getBytes(), output[1].getBytes()));
}
public void test3MimeRPCSoapPortEchoAttachmentAsBase64() throws Exception {
1.9 +4 -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.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- BindingEntry.java 28 Dec 2002 17:59:06 -0000 1.8
+++ BindingEntry.java 30 Dec 2002 14:36:45 -0000 1.9
@@ -191,13 +191,13 @@
* Get the mime mapping for the given parameter name.
* If there is none, this returns null.
*/
- public String getMIMEType(String operationName, String parameterName) {
+ public MimeInfo getMIMEInfo(String operationName, String parameterName) {
Map opMap = (Map) mimeTypes.get(operationName);
if (opMap == null) {
return null;
}
else {
- return (String) opMap.get(parameterName);
+ return (MimeInfo) opMap.get(parameterName);
}
} // getMIMEType
@@ -211,13 +211,13 @@
/**
* Set the mime mapping for the given parameter name.
*/
- public void setMIMEType(String operationName, String parameterName, String
type) {
+ public void setMIMEInfo(String operationName, String parameterName, String
type, String dims) {
Map opMap = (Map) mimeTypes.get(operationName);
if (opMap == null) {
opMap = new HashMap();
mimeTypes.put(operationName, opMap);
}
- opMap.put(parameterName, type);
+ opMap.put(parameterName, new MimeInfo(type,dims));
} // setMIMEType
/**
1.6 +6 -6
xml-axis/java/src/org/apache/axis/wsdl/symbolTable/Parameter.java
Index: Parameter.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/symbolTable/Parameter.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Parameter.java 9 Oct 2002 19:06:32 -0000 1.5
+++ Parameter.java 30 Dec 2002 14:36:45 -0000 1.6
@@ -74,7 +74,7 @@
private String name;
// The MIME type of this parameter, null if it isn't a MIME type.
- private String mimeType = null;
+ private MimeInfo mimeInfo = null;
private TypeEntry type;
private byte mode = IN;
@@ -86,7 +86,7 @@
public String toString() {
return "(" + type
- + (mimeType == null ? "" : "(" + mimeType + ")")
+ + (mimeInfo == null ? "" : "(" + mimeInfo + ")")
+ ", " + getName() + ", "
+ (mode == IN ? "IN)" : mode == INOUT ? "INOUT)" : "OUT)"
+ (inHeader ? "(IN soap:header)" : "")
@@ -131,15 +131,15 @@
/**
* Get the MIME type of the parameter.
*/
- public String getMIMEType() {
- return mimeType;
+ public MimeInfo getMIMEInfo() {
+ return mimeInfo;
} // getMIMEType
/**
* Set the MIME type of the parameter.
*/
- public void setMIMEType(String mimeType) {
- this.mimeType = mimeType;
+ public void setMIMEInfo(MimeInfo mimeInfo) {
+ this.mimeInfo = mimeInfo;
} // setMIMEType
/**
1.64 +60 -18
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.63
retrieving revision 1.64
diff -u -r1.63 -r1.64
--- SymbolTable.java 28 Dec 2002 17:59:06 -0000 1.63
+++ SymbolTable.java 30 Dec 2002 14:36:45 -0000 1.64
@@ -1377,8 +1377,8 @@
new String[] {partName,
opName}));
}
- setMIMEType(param, bindingEntry == null ? null :
- bindingEntry.getMIMEType(opName, partName));
+ setMIMEInfo(param, bindingEntry == null ? null :
+ bindingEntry.getMIMEInfo(opName, partName));
if (bindingEntry != null &&
bindingEntry.isInHeaderPart(opName, partName)) {
param.setInHeader(true);
@@ -1465,8 +1465,8 @@
Parameter p = new Parameter();
p.setQName(elem.getName());
p.setType(elem.getType());
- setMIMEType(p, bindingEntry == null ? null :
- bindingEntry.getMIMEType(opName, partName));
+ setMIMEInfo(p, bindingEntry == null ? null :
+ bindingEntry.getMIMEInfo(opName, partName));
if (bindingEntry.isInHeaderPart(opName, partName)) {
p.setInHeader(true);
}
@@ -1486,8 +1486,8 @@
} else if (elementName != null) {
param.setType(getElement(elementName));
}
- setMIMEType(param, bindingEntry == null ? null :
- bindingEntry.getMIMEType(opName, partName));
+ setMIMEInfo(param, bindingEntry == null ? null :
+ bindingEntry.getMIMEInfo(opName, partName));
if (bindingEntry.isInHeaderPart(opName, partName)) {
param.setInHeader(true);
}
@@ -1506,30 +1506,30 @@
* 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) {
+ private void setMIMEInfo(Parameter p, MimeInfo mimeInfo) {
// 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) {
+ if (mimeInfo == null) {
QName mimeQName = p.getType().getQName();
if (mimeQName.getNamespaceURI().equals(Constants.NS_URI_XMLSOAP)) {
if (Constants.MIME_IMAGE.equals(mimeQName)) {
- mimeType = "image/jpeg";
+ mimeInfo = new MimeInfo("image/jpeg","");
}
else if (Constants.MIME_PLAINTEXT.equals(mimeQName)) {
- mimeType = "text/plain";
+ mimeInfo = new MimeInfo("text/plain","");
}
else if (Constants.MIME_MULTIPART.equals(mimeQName)) {
- mimeType = "multipart/related";
+ mimeInfo = new MimeInfo("multipart/related","");
}
else if (Constants.MIME_SOURCE.equals(mimeQName)) {
- mimeType = "text/xml";
+ mimeInfo = new MimeInfo("text/xml","");
}
else if (Constants.MIME_OCTETSTREAM.equals(mimeQName)) {
- mimeType = "application/octetstream";
+ mimeInfo = new MimeInfo("application/octetstream","");
}
}
}
- p.setMIMEType(mimeType);
+ p.setMIMEInfo(mimeInfo);
} // setMIMEType
/**
@@ -1712,19 +1712,28 @@
while(iterator.hasNext()){
Part part = (Part) iterator.next();
if(part != null){
+ String dims = "";
org.w3c.dom.Element element = null;
if(part.getTypeName() != null) {
- Type partType = getType(part.getTypeName());
+ TypeEntry partType = getType(part.getTypeName());
+ if(partType.getDimensions().length()>0){
+ dims = partType.getDimensions();
+ partType = partType.getRefType();
+ }
element = (org.w3c.dom.Element) partType.getNode();
} else if(part.getElementName() != null) {
- Element partElement = getElement(part.getElementName());
+ TypeEntry partElement = getElement(part.getElementName());
+ if(partElement.getDimensions().length()>0){
+ dims = partElement.getDimensions();
+ partElement = partElement.getRefType();
+ }
element = (org.w3c.dom.Element) partElement.getNode();
}
org.w3c.dom.Element e =
(org.w3c.dom.Element)XMLUtils.findNode(element, new QName(Constants.URI_DIME_CONTENT,
"mediaType"));
if(e != null){
String value = e.getAttribute("value");
bEntry.setOperationDIME(operation.getName());
- bEntry.setMIMEType(operation.getName(), part.getName(),
value);
+ bEntry.setMIMEInfo(operation.getName(), part.getName(),
value, dims);
}
}
}
@@ -1822,7 +1831,8 @@
Object obj = j.next();
if (obj instanceof MIMEContent) {
MIMEContent content = (MIMEContent) obj;
- bEntry.setMIMEType(op.getName(), content.getPart(),
content.getType());
+ TypeEntry typeEntry = findPart(op, content.getPart());
+ bEntry.setMIMEInfo(op.getName(), content.getPart(),
content.getType(), typeEntry.getDimensions());
}
else if (obj instanceof SOAPBody) {
String use = ((SOAPBody) obj).getUse();
@@ -1839,6 +1849,38 @@
return bodyType;
} // addMIMETypes
+ private TypeEntry findPart(Operation operation, String partName)
+ {
+ Map parts = operation.getInput().getMessage().getParts();
+ Iterator iterator = parts.values().iterator();
+ TypeEntry part = findPart(iterator, partName);
+
+ if(part == null) {
+ parts = operation.getOutput().getMessage().getParts();
+ iterator = parts.values().iterator();
+ part = findPart(iterator, partName);
+ }
+ return part;
+ }
+
+ private TypeEntry findPart(Iterator iterator, String partName)
+ {
+ while(iterator.hasNext()){
+ Part part = (Part) iterator.next();
+ if(part != null){
+ String typeName = part.getName();
+ if(partName.equals(typeName)) {
+ if(part.getTypeName() != null) {
+ return getType(part.getTypeName());
+ } else if(part.getElementName() != null) {
+ return getElement(part.getElementName());
+ }
+ }
+ }
+ }
+ return null;
+ }
+
/**
* Populate the symbol table with all of the ServiceEntry's from the Definition.
*/
1.1 xml-axis/java/src/org/apache/axis/wsdl/symbolTable/MimeInfo.java
Index: MimeInfo.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Axis" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.axis.wsdl.symbolTable;
public class MimeInfo {
String type;
String dims;
public MimeInfo(String type, String dims){
this.type = type;
this.dims = dims;
}
public String getDimensions(){
return this.dims;
}
public String getType(){
return this.type;
}
public String toString() {
return "(" + type + "," + dims + ")";
}
}
1.196 +1 -1 xml-axis/java/src/org/apache/axis/client/Call.java
Index: Call.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/Call.java,v
retrieving revision 1.195
retrieving revision 1.196
diff -u -r1.195 -r1.196
--- Call.java 17 Dec 2002 00:01:35 -0000 1.195
+++ Call.java 30 Dec 2002 14:36:45 -0000 1.196
@@ -1289,7 +1289,7 @@
// Get the javaType
String javaType = null;
- if (parameters.returnParam.getMIMEType() != null) {
+ if (parameters.returnParam.getMIMEInfo() != null) {
javaType = "javax.activation.DataHandler";
}
else {
1.32 +1 -1
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.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- JavaGeneratorFactory.java 11 Dec 2002 22:38:30 -0000 1.31
+++ JavaGeneratorFactory.java 30 Dec 2002 14:36:46 -0000 1.32
@@ -911,7 +911,7 @@
signature = signature + Utils.getParameterTypeName(p) + " " +
javifiedName;
}
else {
- signature = signature + Utils.holder(p.getMIMEType(), p.getType(),
emitter) + " "
+ signature = signature + Utils.holder(p.getMIMEInfo(), p.getType(),
emitter) + " "
+ javifiedName;
}
}
1.108 +17 -15
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.107
retrieving revision 1.108
diff -u -r1.107 -r1.108
--- JavaStubWriter.java 28 Dec 2002 17:59:06 -0000 1.107
+++ JavaStubWriter.java 30 Dec 2002 14:36:46 -0000 1.108
@@ -65,6 +65,7 @@
import org.apache.axis.wsdl.symbolTable.Parameters;
import org.apache.axis.wsdl.symbolTable.SymbolTable;
import org.apache.axis.wsdl.symbolTable.TypeEntry;
+import org.apache.axis.wsdl.symbolTable.MimeInfo;
import javax.wsdl.Binding;
import javax.wsdl.BindingOperation;
@@ -76,6 +77,7 @@
import javax.wsdl.PortType;
import javax.wsdl.extensions.soap.SOAPOperation;
import javax.xml.namespace.QName;
+import javax.activation.DataHandler;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -367,15 +369,14 @@
for (int j = 0; j < parameters.list.size(); ++j) {
Parameter p = (Parameter) parameters.list.get(j);
- String mimeType = p.getMIMEType();
-
// Get the QName representing the parameter type
QName paramType = Utils.getXSIType(p);
// Set the javaType to the name of the type
String javaType = null;
- if (mimeType != null) {
- javaType = "javax.activation.DataHandler.class, ";
+ if (p.getMIMEInfo() != null) {
+ MimeInfo mimeInfo = p.getMIMEInfo();
+ javaType = "javax.activation.DataHandler" +
mimeInfo.getDimensions() + ".class, ";
}
else {
javaType = p.getType().getName();
@@ -407,8 +408,9 @@
// Get the javaType
String javaType = null;
- if (parameters.returnParam.getMIMEType() != null) {
- javaType = "javax.activation.DataHandler";
+ if (parameters.returnParam.getMIMEInfo() != null) {
+ MimeInfo mimeInfo = parameters.returnParam.getMIMEInfo();
+ javaType = "javax.activation.DataHandler" +
mimeInfo.getDimensions();
}
else {
javaType = parameters.returnParam.getType().getName();
@@ -775,7 +777,7 @@
if (p.getMode() != Parameter.IN) {
javifiedName += ".value";
}
- if (p.getMIMEType() == null) {
+ if (p.getMIMEInfo() == null) {
javifiedName = Utils.wrapPrimitiveType(
p.getType(), javifiedName);
}
@@ -797,7 +799,7 @@
if (allOuts == 1) {
if (parms.returnParam != null) {
writeOutputAssign(pw, "return ", parms.returnParam.getType(),
- parms.returnParam.getMIMEType(), "_resp");
+ parms.returnParam.getMIMEInfo() , "_resp");
}
else {
// The resp object must go into a holder
@@ -813,7 +815,7 @@
pw.println(" java.util.Map _output;");
pw.println(" _output = _call.getOutputParams();");
writeOutputAssign(pw, javifiedName + ".value = ",
- p.getType(), p.getMIMEType(),
+ p.getType(), p.getMIMEInfo(),
"_output.get(" + qnameName + ")");
}
}
@@ -827,13 +829,13 @@
String qnameName = Utils.getNewQName(p.getQName());
if (p.getMode() != Parameter.IN) {
writeOutputAssign(pw, javifiedName + ".value = ",
- p.getType(), p.getMIMEType(),
+ p.getType(), p.getMIMEInfo(),
"_output.get(" + qnameName + ")");
}
}
if (parms.returnParam != null) {
writeOutputAssign(pw, "return ", parms.returnParam.getType(),
- parms.returnParam.getMIMEType(), "_resp");
+ parms.returnParam.getMIMEInfo(), "_resp");
}
}
@@ -851,7 +853,7 @@
*
*/
private void writeOutputAssign(PrintWriter pw, String target,
- TypeEntry type, String mimeType,
+ TypeEntry type, MimeInfo mimeInfo,
String source) {
if (type != null && type.getName() != null) {
// Try casting the output to the expected output.
@@ -859,17 +861,17 @@
pw.println(" try {");
pw.println(" " + target +
- Utils.getResponseString(type, mimeType, source));
+ Utils.getResponseString(type, mimeInfo, source));
pw.println(" } catch (java.lang.Exception _exception) {");
pw.println(" " + target +
- Utils.getResponseString(type, mimeType,
+ Utils.getResponseString(type, mimeInfo,
"org.apache.axis.utils.JavaUtils.convert(" +
source + ", " + type.getName() + ".class)"));
pw.println(" }");
} else {
pw.println(" " + target +
- Utils.getResponseString(type, mimeType, source));
+ Utils.getResponseString(type, mimeInfo, source));
}
}
1.48 +2 -4
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.47
retrieving revision 1.48
diff -u -r1.47 -r1.48
--- JavaTestCaseWriter.java 11 Dec 2002 22:38:30 -0000 1.47
+++ JavaTestCaseWriter.java 30 Dec 2002 14:36:46 -0000 1.48
@@ -196,7 +196,7 @@
pw.print(Utils.getParameterTypeName(params.returnParam));
pw.print(" value = ");
- if (params.returnParam.getMIMEType() == null &&
+ if (params.returnParam.getMIMEInfo() == null &&
Utils.isPrimitiveType(returnType)) {
if ("boolean".equals(returnType.getName())) {
pw.println("false;");
@@ -229,13 +229,11 @@
}
Parameter param = (Parameter) iparam.next();
- String paramType = param.getType().getName();
- String mimeType = param.getMIMEType();
String suffix = "";
// if we have an out or in/out, we are passing in a holder
if (param.getMode() != Parameter.IN) {
- pw.print("new " + Utils.holder(mimeType, param.getType(),
emitter)
+ pw.print("new " + Utils.holder(param.getMIMEInfo(),
param.getType(), emitter)
+ "(");
suffix = ")";
}
1.65 +34 -20 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.64
retrieving revision 1.65
diff -u -r1.64 -r1.65
--- Utils.java 25 Dec 2002 23:28:47 -0000 1.64
+++ Utils.java 30 Dec 2002 14:36:46 -0000 1.65
@@ -66,6 +66,7 @@
import org.apache.axis.wsdl.symbolTable.SchemaUtils;
import org.apache.axis.wsdl.symbolTable.SymbolTable;
import org.apache.axis.wsdl.symbolTable.TypeEntry;
+import org.apache.axis.wsdl.symbolTable.MimeInfo;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -94,26 +95,28 @@
/**
* Given a type, return the Java mapping of that type's holder.
*/
- public static String holder(String mimeType, TypeEntry type, Emitter emitter) {
+ public static String holder(MimeInfo mimeInfo, TypeEntry type, Emitter emitter)
{
+ String mimeType = mimeInfo == null ? null : mimeInfo.getType();
+ String mimeDimensions = mimeInfo == null ? "" : mimeInfo.getDimensions();
// Add the holders that JAX-RPC forgot about - the MIME type holders.
if (mimeType != null) {
if (mimeType.equals("image/gif") ||
mimeType.equals("image/jpeg")) {
- return "org.apache.axis.holders.ImageHolder";
+ return "org.apache.axis.holders.ImageHolder" + mimeDimensions;
}
else if (mimeType.equals("text/plain")) {
- return "javax.xml.rpc.holders.StringHolder";
+ return "javax.xml.rpc.holders.StringHolder" + mimeDimensions;
}
else if (mimeType.startsWith("multipart/")) {
- return "org.apache.axis.holders.MimeMultipartHolder";
+ return "org.apache.axis.holders.MimeMultipartHolder" +
mimeDimensions;
}
else if (mimeType.startsWith("application/octetstream")) {
- return "org.apache.axis.holders.OctetStreamHolder";
+ return "org.apache.axis.holders.OctetStreamHolder" + mimeDimensions;
}
else if (mimeType.equals("text/xml") ||
mimeType.equals("application/xml")) {
- return "org.apache.axis.holders.SourceHolder";
+ return "org.apache.axis.holders.SourceHolder" + mimeDimensions;
}
}
@@ -506,27 +509,29 @@
* Return the Object variable 'var' cast to the appropriate type
* doing the right thing for the primitive types.
*/
- public static String getResponseString(TypeEntry type, String mimeType,
+ public static String getResponseString(TypeEntry type, MimeInfo mimeInfo,
String var) {
+ String mimeType = mimeInfo == null ? null : mimeInfo.getType();
+ String mimeDimensions = mimeInfo == null ? "" : mimeInfo.getDimensions();
if (type == null) {
return ";";
}
else if (mimeType != null) {
if (mimeType.equals("image/jpeg")) {
- return "(java.awt.Image) " + var + ";";
+ return "(java.awt.Image" + mimeDimensions + ") " + var + ";";
}
else if (mimeType.equals("text/plain")) {
- return "(java.lang.String) " + var + ";";
+ return "(java.lang.String" + mimeDimensions + ") " + var + ";";
}
else if (mimeType.equals("text/xml") ||
mimeType.equals("application/xml")) {
- return "(javax.xml.transform.Source) " + var + ";";
+ return "(javax.xml.transform.Source" + mimeDimensions + ") " + var
+ ";";
}
else if (mimeType.startsWith("multipart/")) {
- return "(javax.mail.internet.MimeMultipart) " + var + ";";
+ return "(javax.mail.internet.MimeMultipart" + mimeDimensions + ") "
+ var + ";";
}
else if (mimeType.startsWith("application/octetstream")) {
- return "(org.apache.axis.attachments.OctetStream) " + var + ";";
+ return "(org.apache.axis.attachments.OctetStream" + mimeDimensions
+ ") " + var + ";";
}
else {
return "(" + type.getName() + ") " + var + ";";
@@ -627,15 +632,17 @@
* use the name of the type itself.
*/
public static String getParameterTypeName(Parameter parm) {
- String mime = parm.getMIMEType();
String ret;
- if (mime == null) {
+ if (parm.getMIMEInfo() == null) {
ret = parm.getType().getName();
}
else {
+ String mime = parm.getMIMEInfo().getType();
ret = JavaUtils.mimeToJava(mime);
if (ret == null) {
ret = parm.getType().getName();
+ } else {
+ ret += parm.getMIMEInfo().getDimensions();
}
}
return ret;
@@ -648,8 +655,8 @@
* @return the QName of the parameter's xsi type
*/
public static QName getXSIType(Parameter param) {
- if (param.getMIMEType() != null) {
- return getMIMETypeQName(param.getMIMEType());
+ if (param.getMIMEInfo() != null) {
+ return getMIMETypeQName(param.getMIMEInfo().getType());
}
return getXSIType(param.getType());
} // getXSIType
@@ -740,7 +747,7 @@
if (parameters != null) {
for (int idx = 0; idx < parameters.list.size(); ++idx) {
Parameter p = (Parameter) parameters.list.get(idx);
- if (p.getMIMEType() != null) {
+ if (p.getMIMEInfo() != null) {
return true;
}
}
@@ -817,7 +824,8 @@
BooleanHolder bThrow) {
String paramType = param.getType().getName();
- String mimeType = param.getMIMEType();
+ String mimeType = param.getMIMEInfo() == null ? null :
param.getMIMEInfo().getType();
+ String mimeDimensions = param.getMIMEInfo() == null ? "" :
param.getMIMEInfo().getDimensions();
String out = null;
// Handle mime types
@@ -828,10 +836,16 @@
}
else if (mimeType.equals("text/xml") ||
mimeType.equals("application/xml")) {
- return "new javax.xml.transform.stream.StreamSource()";
+ if(mimeDimensions.length() <= 0)
+ return "new javax.xml.transform.stream.StreamSource()";
+ else
+ return "new javax.xml.transform.stream.StreamSource[0]";
}
else if (mimeType.equals("application/octetstream")) {
- return "new org.apache.axis.attachments.OctetStream()";
+ if(mimeDimensions.length() <= 0)
+ return "new org.apache.axis.attachments.OctetStream()";
+ else
+ return "new org.apache.axis.attachments.OctetStream[0]";
}
else {
return "new " + Utils.getParameterTypeName(param) + "()";
1.2 +10 -1
xml-axis/java/src/org/apache/axis/encoding/ser/OctetStreamDataHandlerDeserializer.java
Index: OctetStreamDataHandlerDeserializer.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/OctetStreamDataHandlerDeserializer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- OctetStreamDataHandlerDeserializer.java 25 Dec 2002 23:28:47 -0000 1.1
+++ OctetStreamDataHandlerDeserializer.java 30 Dec 2002 14:36:46 -0000 1.2
@@ -57,12 +57,15 @@
import org.apache.axis.components.logger.LogFactory;
import org.apache.axis.encoding.DeserializationContext;
+import org.apache.axis.attachments.OctetStream;
import org.apache.commons.logging.Log;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import javax.activation.DataHandler;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.ByteArrayOutputStream;
/**
* application/octetstream DataHandler Deserializer
@@ -82,7 +85,13 @@
if (getValue() instanceof DataHandler) {
try {
DataHandler dh = (DataHandler) getValue();
- setValue(dh.getContent());
+ InputStream in = dh.getInputStream();
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ int byte1 = -1;
+ while((byte1 = in.read())!=-1)
+ baos.write(byte1);
+ OctetStream os = new OctetStream(baos.toByteArray());
+ setValue(os);
} catch (IOException ioe) {
}
}