axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From whitl...@apache.org
Subject cvs commit: xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apacheaxis WSIFJmsSender.java WSIFOperation_ApacheAxis.java WSIFPort_ApacheAxis.java
Date Wed, 06 Nov 2002 16:13:39 GMT
whitlock    2002/11/06 08:13:38

  Modified:    java/test/proposals/mime MimeTest.java
               java/src/org/apache/wsif/providers/soap/apacheaxis
                        WSIFJmsSender.java WSIFOperation_ApacheAxis.java
                        WSIFPort_ApacheAxis.java
  Removed:     java/test/proposals/mime WSIFJmsSender.java
                        WSIFDynamicProvider_ApacheAxis.java
                        WSIFJmsTransport.java WSIFPort_ApacheAxis.java
                        WSIFOperation_ApacheAxis.java
  Log:
  Move mime support from proposals into the source tree
  
  Revision  Changes    Path
  1.8       +2 -3      xml-axis-wsif/java/test/proposals/mime/MimeTest.java
  
  Index: MimeTest.java
  ===================================================================
  RCS file: /home/cvs/xml-axis-wsif/java/test/proposals/mime/MimeTest.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- MimeTest.java	6 Nov 2002 14:12:35 -0000	1.7
  +++ MimeTest.java	6 Nov 2002 16:13:37 -0000	1.8
  @@ -238,11 +238,10 @@
        */
       private void doit(String portName, String cmd, boolean blocking) {
   
  -        WSIFDynamicProvider_ApacheAxis provider =
  -            new WSIFDynamicProvider_ApacheAxis();
           WSIFPluggableProviders.overrideDefaultProvider(
               "http://schemas.xmlsoap.org/wsdl/soap/",
  -            provider);
  +            new org.apache.wsif.providers.soap.apacheaxis
  +                .WSIFDynamicProvider_ApacheAxis());
   
           try {
               WSIFServiceFactory factory = WSIFServiceFactory.newInstance();
  
  
  
  1.9       +19 -5     xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apacheaxis/WSIFJmsSender.java
  
  Index: WSIFJmsSender.java
  ===================================================================
  RCS file: /home/cvs/xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apacheaxis/WSIFJmsSender.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- WSIFJmsSender.java	30 Oct 2002 15:42:22 -0000	1.8
  +++ WSIFJmsSender.java	6 Nov 2002 16:13:38 -0000	1.9
  @@ -57,8 +57,12 @@
   
   package org.apache.wsif.providers.soap.apacheaxis;
   
  +import java.io.ByteArrayOutputStream;
  +import java.io.IOException;
   import java.io.Serializable;
   
  +import javax.xml.soap.SOAPException;
  +
   import org.apache.axis.AxisFault;
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  @@ -99,7 +103,15 @@
                     : transportSyncTimeoutValue.longValue();
   
               Message message = messageContext.getRequestMessage();
  -            String contents = message.getSOAPPartAsString();
  +            
  +            // The next line has the desired side effect of setting 
  +            // up MIME attachements correctly. MIME attachments using
  +            // AxisJms still don't work, because it falls over later.
  +            message.getContentType(messageContext.getSOAPConstants());
  +            
  +            ByteArrayOutputStream baos = new ByteArrayOutputStream();
  +            message.writeTo(baos);
  +            String contents = baos.toString();
   
               if (asyncMode) {
                   performAsyncSend(messageContext, dest, contents);
  @@ -109,10 +121,12 @@
                   Message responseMessage = new Message(response);
                   messageContext.setResponseMessage(responseMessage);
               }
  -        } catch (WSIFException we) {
  -        	Trc.exception(we);
  -            throw new AxisFault(we.toString());
  -        }
  +        } catch (IOException ioe) {
  +        	Trc.exception(ioe);
  +            throw new AxisFault(ioe.toString());
  +        } catch (SOAPException se) {
  +        	Trc.exception(se);
  +            throw new AxisFault(se.toString());        }
           Trc.exit();
       }
   
  
  
  
  1.30      +225 -70   xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apacheaxis/WSIFOperation_ApacheAxis.java
  
  Index: WSIFOperation_ApacheAxis.java
  ===================================================================
  RCS file: /home/cvs/xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apacheaxis/WSIFOperation_ApacheAxis.java,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- WSIFOperation_ApacheAxis.java	4 Nov 2002 16:55:16 -0000	1.29
  +++ WSIFOperation_ApacheAxis.java	6 Nov 2002 16:13:38 -0000	1.30
  @@ -57,6 +57,9 @@
   
   package org.apache.wsif.providers.soap.apacheaxis;
   
  +import java.awt.Image;
  +import java.io.IOException;
  +import java.io.InputStream;
   import java.io.Serializable;
   import java.util.ArrayList;
   import java.util.HashMap;
  @@ -65,13 +68,23 @@
   import java.util.Map;
   import java.util.Vector;
   
  +import javax.activation.DataHandler;
   import javax.jms.TextMessage;
  +import javax.mail.MessagingException;
  +import javax.mail.internet.MimeMultipart;
  +import javax.swing.ImageIcon;
   import javax.wsdl.Definition;
   import javax.wsdl.Input;
   import javax.wsdl.Operation;
   import javax.wsdl.Output;
   import javax.wsdl.Part;
   import javax.xml.namespace.QName;
  +import javax.xml.soap.AttachmentPart;
  +import javax.xml.soap.SOAPException;
  +import javax.xml.transform.Source;
  +import javax.xml.transform.dom.DOMSource;
  +import javax.xml.transform.sax.SAXSource;
  +import javax.xml.transform.stream.StreamSource;
   
   import org.apache.axis.AxisFault;
   import org.apache.axis.Message;
  @@ -82,6 +95,8 @@
   import org.apache.axis.encoding.TypeMappingRegistry;
   import org.apache.axis.encoding.ser.BeanDeserializerFactory;
   import org.apache.axis.encoding.ser.BeanSerializerFactory;
  +import org.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory;
  +import org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory;
   import org.apache.axis.message.RPCElement;
   import org.apache.axis.message.RPCParam;
   import org.apache.axis.message.SOAPEnvelope;
  @@ -115,7 +130,9 @@
   	transient protected Operation operation;
   	transient protected Definition definition;
   	transient protected List partNames;
  -	transient protected String names[];
  +    transient protected List soapPartNames;
  +    transient protected List mimePartNames;
  +  	transient protected String names[];
   	transient protected Class types[];
   	transient protected String inputEncodingStyle;
   	transient protected String inputNamespace;
  @@ -165,7 +182,7 @@
   		op.setInputNamespace(getInputNamespace());
   		op.setInputEncodingStyle(getInputEncodingStyle());
   		op.setOutputEncodingStyle(getOutputEncodingStyle());
  -		op.setPartNames(getPartNames());
  +		op.setPartNames(soapPartNames,mimePartNames);
   		op.setReturnName(getReturnName());
   		op.setAsyncOperation(isAsyncOperation());
   		op.setResponseHandler(getResponseHandler());
  @@ -522,25 +539,11 @@
   	 */
   	private void populateOutMsgReturnPart(Object resp, WSIFMessage outMsg)
   		throws WSIFException {
  -		if (outMsg != null) {
  -			if (returnName != null) {
  -				if (resp == null) {
  -					// Service returned null. This may be the a correct return value
  -					// and so set the output message part value to null
  -				} else if (
  -					returnType != null // will be null for async responses
  -						&& !returnType.isPrimitive()
  -						&& !(returnType.isAssignableFrom(resp.getClass()))) {
  -					throw new WSIFException(
  -						"return value "
  -							+ resp
  -							+ " has unexpected type "
  -							+ resp.getClass()
  -							+ " instead of "
  -							+ returnType);
  -				}
  -				outMsg.setObjectPart(returnName, resp);
  -			}
  +		if (outMsg != null && returnName != null) {
  +  	        // If resp==null then the service returned null. 
  +			// This may be the a correct return value
  +			// and so set the output message part value to null
  +            setMessagePart(outMsg, returnName, resp, returnType);
   		}
   	}
   
  @@ -560,7 +563,7 @@
   					) {
   					name = (String) i.next();
   					value = respParms.get(name);
  -					outMsg.setObjectPart(name, value);
  +					setMessagePart(outMsg, name, value, value.getClass());
   					wsdlOutParams.remove(name);
   				}
   			}
  @@ -571,6 +574,97 @@
   		}
   	}
   
  +    private static void setMessagePart(
  +        WSIFMessage msg,
  +        String name,
  +        Object value,
  +        Class type)
  +        throws WSIFException {
  +        Trc.entry(null, msg, name, value, type);
  +
  +        try {
  +            if (DataHandler.class.equals(type)
  +                && AttachmentPart.class.isAssignableFrom(value.getClass())) {
  +                AttachmentPart ap = (AttachmentPart) value;
  +                DataHandler dh = ap.getDataHandler();
  +                msg.setObjectPart(name, dh);
  +            } else if (
  +                (String.class.equals(type)
  +                    || Image.class.equals(type)
  +                    || StreamSource.class.equals(type)
  +                    || DOMSource.class.equals(type)
  +                    || SAXSource.class.equals(type)
  +                    || MimeMultipart.class.equals(type))
  +                    && AttachmentPart.class.isAssignableFrom(value.getClass()))
{
  +
  +                AttachmentPart ap = (AttachmentPart) value;
  +                InputStream is = ap.getDataHandler().getInputStream();
  +
  +                if (String.class.equals(type)) {
  +                    byte[] bBuff = new byte[is.available()];
  +                    is.read(bBuff);
  +                    msg.setObjectPart(name, new String(bBuff));
  +                } else if (Image.class.equals(type)) {
  +                    byte[] bBuff = new byte[is.available()];
  +                    is.read(bBuff);
  +                    msg.setObjectPart(name, new ImageIcon(bBuff).getImage());
  +                } else if (StreamSource.class.equals(type))
  +                    // Warning: this next line of code has never been tested.
  +                    msg.setObjectPart(name, new StreamSource(is));
  +                else if (DOMSource.class.equals(type))
  +                    throw new WSIFException("DOMSource is not supported");
  +                else if (SAXSource.class.equals(type))
  +                    throw new WSIFException("SAXSource is not supported");
  +                else if (MimeMultipart.class.equals(type))
  +                    // Warning: this next line of code has never been tested.
  +                    msg.setObjectPart(
  +                        name,
  +                        new MimeMultipart(ap.getDataHandler().getDataSource()));
  +            } else if (
  +                type != null // will be null for async responses
  +                    && !type.isPrimitive()
  +                    && !(type.isAssignableFrom(value.getClass()))) {
  +                throw new WSIFException(
  +                    "return value "
  +                        + value
  +                        + " has unexpected type "
  +                        + value.getClass()
  +                        + " instead of "
  +                        + type);
  +            } else
  +                msg.setObjectPart(name, value);
  +        } catch (SOAPException se) {
  +            Trc.exception(se);
  +            throw new WSIFException(
  +                "WSIFOperation_ApacheAxis.setMessagePart messageName="
  +                    + (msg.getName() == null ? "null" : msg.getName())
  +                    + " partName="
  +                    + name
  +                    + "  caught "
  +                    + se);
  +        } catch (IOException ioe) {
  +            Trc.exception(ioe);
  +            throw new WSIFException(
  +                "WSIFOperation_ApacheAxis.setMessagePart messageName="
  +                    + (msg.getName() == null ? "null" : msg.getName())
  +                    + " partName="
  +                    + name
  +                    + "  caught "
  +                    + ioe);
  +        } catch (MessagingException me) {
  +            Trc.exception(me);
  +            throw new WSIFException(
  +                "WSIFOperation_ApacheAxis.setMessagePart messageName="
  +                    + (msg.getName() == null ? "null" : msg.getName())
  +                    + " partName="
  +                    + name
  +                    + "  caught "
  +                    + me);
  +        }
  +
  +        Trc.exit();
  +    }
  +
   	public boolean executeRequestResponseOperation(
   		WSIFMessage wsifmessage,
   		WSIFMessage wsifmessage1,
  @@ -730,11 +824,44 @@
   				&& !namespaceURI.equals(WSIFConstants.NS_URI_SOAP_ENC)) {
   				localPart = wsifdynamictypemapping.getXmlType().getLocalPart();
   				QName qn = new QName(namespaceURI, localPart);
  -				BeanSerializerFactory bsf =
  -					new BeanSerializerFactory(objClass, qn);
  -				BeanDeserializerFactory bdf =
  -					new BeanDeserializerFactory(objClass, qn);
  -				call.registerTypeMapping(objClass, qn, bsf, bdf);
  +
  +                if (DataHandler.class.equals(objClass)) {
  +                    call.registerTypeMapping(
  +                        objClass,
  +                        qn,
  +                        JAFDataHandlerSerializerFactory.class,
  +                        JAFDataHandlerDeserializerFactory.class);
  +                } else if (Image.class.equals(objClass)) {
  +                    call.registerTypeMapping(
  +                        Image.class,
  +                        qn,
  +                        JAFDataHandlerSerializerFactory.class,
  +                        JAFDataHandlerDeserializerFactory.class);
  +                } else if (String.class.equals(objClass)) {
  +                    call.registerTypeMapping(
  +                        String.class,
  +                        qn,
  +                        JAFDataHandlerSerializerFactory.class,
  +                        JAFDataHandlerDeserializerFactory.class);
  +                } else if (Source.class.equals(objClass)) {
  +                    call.registerTypeMapping(
  +                        Source.class,
  +                        qn,
  +                        JAFDataHandlerSerializerFactory.class,
  +                        JAFDataHandlerDeserializerFactory.class);
  +                } else if (MimeMultipart.class.equals(objClass)) {
  +                    call.registerTypeMapping(
  +                        MimeMultipart.class,
  +                        qn,
  +                        JAFDataHandlerSerializerFactory.class,
  +                        JAFDataHandlerDeserializerFactory.class);
  +                } else {
  +                    BeanSerializerFactory bsf =
  +                        new BeanSerializerFactory(objClass, qn);
  +                    BeanDeserializerFactory bdf =
  +                        new BeanDeserializerFactory(objClass, qn);
  +                    call.registerTypeMapping(objClass, qn, bsf, bdf);
  +                }
   			}
   		}
   
  @@ -760,7 +887,15 @@
   			} else {
   				obj = input.getMessage().getOrderedParts(null);
   			}
  -			int i = ((List) (obj)).size();
  +
  +            javax.xml.rpc.encoding.TypeMapping tm1 =
  +                registry.getTypeMapping(
  +                    "http://schemas.xmlsoap.org/soap/encoding/");
  +            org.apache.axis.encoding.TypeMapping tm2 = null;
  +            if (tm1 instanceof org.apache.axis.encoding.TypeMapping)
  +                tm2 = (org.apache.axis.encoding.TypeMapping) tm1;
  +                
  +   			int i = ((List) (obj)).size();
   			names = new String[i];
   			types = new Class[i];
   			for (int j = 0; j < i; j++) {
  @@ -771,29 +906,26 @@
   					throw new WSIFException(
   						"part " + names[j] + " must have type name declared");
   
  -				javax.xml.rpc.encoding.TypeMapping tm =
  -					registry.getTypeMapping(
  -						"http://schemas.xmlsoap.org/soap/encoding/");
  -				if (tm instanceof org.apache.axis.encoding.TypeMapping) {
  -					types[j] =
  -						(
  -							(
  -								org
  -									.apache
  -									.axis
  -									.encoding
  -									.TypeMapping) tm)
  -									.getClassForQName(
  -							new QName(
  -								qname1.getNamespaceURI(),
  -								qname1.getLocalPart()));
  -				}
  +                if (tm2 != null)
  +                    types[j] = tm2.getClassForQName(qname1);
  +
  +                // Automatically register mime types as DataHandler (unless
  +                // the user has already typemapped them explicitly).
  +                if (types[j] == null && mimePartNames.contains(names[j])) {
  +                    types[j] = DataHandler.class;
  +                    call.registerTypeMapping(
  +                        DataHandler.class,
  +                        qname1,
  +                        JAFDataHandlerSerializerFactory.class,
  +                        JAFDataHandlerDeserializerFactory.class);
  +                }
   			}
   
   		} else {
   			names = new String[0];
   			types = new Class[0];
   		}
  +		
   		Output output = operation.getOutput();
   		if (output != null) {
   			Part part = null;
  @@ -812,26 +944,29 @@
   					returnName = part.getName();
   				}
   			}
  -			if (part != null) {
  -				QName qname = part.getTypeName();
  -				javax.xml.rpc.encoding.TypeMapping tm =
  -					registry.getTypeMapping(
  -						"http://schemas.xmlsoap.org/soap/encoding/");
  -				if (tm instanceof org.apache.axis.encoding.TypeMapping) {
  -					returnType =
  -						(
  -							(
  -								org
  -									.apache
  -									.axis
  -									.encoding
  -									.TypeMapping) tm)
  -									.getClassForQName(
  -							new QName(
  -								qname.getNamespaceURI(),
  -								qname.getLocalPart()));
  -				}
  -			}
  +			
  +            if (part != null) {
  +                QName qname = part.getTypeName();
  +                javax.xml.rpc.encoding.TypeMapping tm1 =
  +                    registry.getTypeMapping("http://schemas.xmlsoap.org/soap/encoding/");
  +                if (tm1 instanceof org.apache.axis.encoding.TypeMapping) {
  +                    org.apache.axis.encoding.TypeMapping tm2 = 
  +                        (org.apache.axis.encoding.TypeMapping) tm1;
  +                    returnType = tm2.getClassForQName(qname);
  +                }
  +
  +                // Automatically register mime types as DataHandler (unless
  +                // the user has already typemapped them explicitly).
  +                if (returnType == null && mimePartNames.contains(returnName)) {
  +                    returnType = DataHandler.class;
  +                    call.registerTypeMapping(
  +                        DataHandler.class,
  +                        qname,
  +                        JAFDataHandlerSerializerFactory.class,
  +                        JAFDataHandlerDeserializerFactory.class);
  +                }
  +            }
  +			
   			// setup any output paramter part names defined in the WSDL
   			List list = output.getMessage().getOrderedParts(null);
   			if (list.size() > 1) {
  @@ -911,11 +1046,29 @@
   		Trc.exit();
   	}
   
  -	public void setPartNames(List list) {
  -		Trc.entry(this, list);
  -		partNames = list;
  -		Trc.exit();
  -	}
  +    public void setPartNames(List soapList, List mimeList) {
  +        Trc.entry(this, soapList, mimeList);
  +        if (soapList != null && !soapList.isEmpty())
  +            soapPartNames = soapList;
  +        else
  +            soapPartNames = null;
  +
  +        if (mimeList != null && !mimeList.isEmpty())
  +            mimePartNames = mimeList;
  +        else
  +            mimePartNames = null;
  +
  +        if (soapPartNames != null || mimePartNames != null) {
  +            partNames = new Vector();
  +            if (mimeList != null)
  +                partNames.addAll(mimeList);
  +            if (soapList != null)
  +                partNames.addAll(soapList);
  +        } else
  +            partNames = null;
  +
  +        Trc.exit();
  +    }
   
   	public void setReturnName(String s) {
   		Trc.entry(this, s);
  @@ -1190,6 +1343,8 @@
   			buff += " operation:" + Trc.brief(operation);
   			buff += " definition:" + Trc.brief(definition);
   			buff += " partNames:" + partNames;
  +            buff += " soapPartNames:" + soapPartNames;
  +            buff += " mimePartNames:" + mimePartNames;
   			buff += " names:" + names;
   			buff += " types:" + types;
   			buff += " inputEncodingStyle:" + inputEncodingStyle;
  
  
  
  1.14      +132 -18   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.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- WSIFPort_ApacheAxis.java	24 Oct 2002 17:22:19 -0000	1.13
  +++ WSIFPort_ApacheAxis.java	6 Nov 2002 16:13:38 -0000	1.14
  @@ -63,6 +63,7 @@
   import java.util.Iterator;
   import java.util.List;
   import java.util.Map;
  +import java.util.Vector;
   
   import javax.wsdl.Binding;
   import javax.wsdl.BindingFault;
  @@ -76,6 +77,9 @@
   import javax.wsdl.Port;
   import javax.wsdl.PortType;
   import javax.wsdl.Service;
  +import javax.wsdl.extensions.mime.MIMEContent;
  +import javax.wsdl.extensions.mime.MIMEMultipartRelated;
  +import javax.wsdl.extensions.mime.MIMEPart;
   import javax.wsdl.extensions.soap.SOAPAddress;
   import javax.wsdl.extensions.soap.SOAPBinding;
   import javax.wsdl.extensions.soap.SOAPBody;
  @@ -100,6 +104,8 @@
   import org.apache.wsif.wsdl.extensions.jms.JMSProperty;
   import org.apache.wsif.wsdl.extensions.jms.JMSPropertyValue;
   
  +import com.ibm.wsdl.extensions.mime.MIMEConstants;
  +
   /**
    * @author Mark Whitlock <whitlock@apache.org>
    * @author Ant Elder <ant.elder@uk.ibm.com>
  @@ -264,26 +270,29 @@
                           + s3
                           + " binding has not style property");
               BindingInput bindinginput = bindingoperation.getBindingInput();
  +            List inExtElems = bindinginput.getExtensibilityElements();
               SOAPBody soapbody =
                   (SOAPBody) getExtElem(bindinginput,
                       javax.wsdl.extensions.soap.SOAPBody.class,
  -                    bindinginput.getExtensibilityElements());
  +                    inExtElems);
               if (soapbody != null) {
  -                String s6 = soapbody.getNamespaceURI();
  -                wsifoperation_apacheaxis.setInputNamespace(s6);
  -                String s7 = soapbody.getUse();
  -                if (!"encoded".equals(s7))
  -                    throw new WSIFException("unsupported use " + s7 + " in " + soapoperation);
  -                List list1 = soapbody.getEncodingStyles();
  -                if (list1 != null) {
  -                    list1.size();
  -                    wsifoperation_apacheaxis.setInputEncodingStyle((String) list1.get(0));
  -                }
  -                List list2 = soapbody.getParts();
  +            	List list2 = parseSoapBody(wsifoperation_apacheaxis,soapoperation,soapbody,true);
                   if (list2 != null)
  -                    wsifoperation_apacheaxis.setPartNames(list2);
  +                    wsifoperation_apacheaxis.setPartNames(list2,null);
  +            } else {
  +                MIMEMultipartRelated mimeMultipart =
  +                    (MIMEMultipartRelated) getExtElem(bindinginput,
  +                        MIMEMultipartRelated.class,
  +                        inExtElems);
  +                if (mimeMultipart != null)
  +                    parseMimeMultipart(
  +                        mimeMultipart,
  +                        bindingoperation,
  +                        wsifoperation_apacheaxis,
  +                        soapoperation,
  +                        true);
               }
  -
  +            
               SOAPHeader soapheader =
                   (SOAPHeader) getExtElem(bindinginput,
                       javax.wsdl.extensions.soap.SOAPHeader.class,
  @@ -318,10 +327,12 @@
                           javax.wsdl.extensions.soap.SOAPBody.class,
                           bindingoutput.getExtensibilityElements());
                   if (soapbody1 != null) {
  -                    String s8 = soapbody1.getUse();
  -                    if (!"encoded".equals(s8))
  -                        throw new WSIFException("unsupported use " + s8 + " in " + soapoperation);
  -                    List list3 = soapbody1.getParts();
  +                    List list3 =
  +                        parseSoapBody(
  +                            wsifoperation_apacheaxis,
  +                            soapoperation,
  +                            soapbody1,
  +                            false);
                       if (list3 != null && list3.size() > 0)
                           wsifoperation_apacheaxis.setReturnName((String) list3.get(0));
                   }
  @@ -358,6 +369,109 @@
   
           if (Trc.ON)
               Trc.exit(deep());
  +    }
  +
  +    
  +    private List parseSoapBody(
  +        WSIFOperation_ApacheAxis op,
  +        SOAPOperation soapoperation,
  +        SOAPBody soapbody,
  +        boolean isInput)
  +        throws WSIFException {
  +
  +        Trc.entry(this, op, soapoperation, soapbody, new Boolean(isInput));
  +
  +        if (isInput) {
  +            String s6 = soapbody.getNamespaceURI();
  +            op.setInputNamespace(s6);
  +        }
  +
  +        String s7 = soapbody.getUse();
  +        if (!"encoded".equals(s7))
  +            throw new WSIFException(
  +                "unsupported use " + s7 + " in " + soapoperation);
  +
  +        if (isInput) {
  +            List list1 = soapbody.getEncodingStyles();
  +            if (list1 != null) {
  +                list1.size();
  +                op.setInputEncodingStyle((String) list1.get(0));
  +            }
  +        }
  +
  +        List list2 = soapbody.getParts();
  +        Trc.exit(list2);
  +        return list2;
  +    }
  +    
  +    private void parseMimeMultipart(
  +        MIMEMultipartRelated mimeMultipart,
  +        BindingOperation bindingoperation,
  +        WSIFOperation_ApacheAxis wsifoperation_apacheaxis,
  +        SOAPOperation soapoperation,
  +        boolean isInput)
  +        throws WSIFException {
  +
  +        Trc.entry(
  +            this,
  +            mimeMultipart,
  +            bindingoperation,
  +            wsifoperation_apacheaxis,
  +            soapoperation);
  +    	
  +        Vector mimePartNames = new Vector();
  +        Vector soapPartNames = new Vector();
  +
  +        List mimeParts = mimeMultipart.getMIMEParts();
  +        Iterator mimePartIt = mimeParts.iterator();
  +        while (mimePartIt.hasNext()) {
  +            Object nextMimePart = mimePartIt.next();
  +            if (nextMimePart instanceof MIMEPart) {
  +                MIMEPart mimePart = (MIMEPart) nextMimePart;
  +                if (!MIMEConstants
  +                    .NS_URI_MIME
  +                    .equals(mimePart.getElementType().getNamespaceURI()))
  +                    throw new WSIFException(
  +                        "A MIME part in binding operation "
  +                            + bindingoperation.getName()
  +                            + " did not have the correct namespace URI of "
  +                            + MIMEConstants.NS_URI_MIME
  +                            + ".");
  +
  +                List mimeContents = mimePart.getExtensibilityElements();
  +                Iterator mimeContentIt = mimeContents.iterator();
  +                while (mimeContentIt.hasNext()) {
  +                    Object nextChild = mimeContentIt.next();
  +                    if (nextChild instanceof MIMEContent) {
  +                        MIMEContent mimeContent = (MIMEContent) nextChild;
  +                        if (!MIMEConstants
  +                            .NS_URI_MIME
  +                            .equals(
  +                                mimePart.getElementType().getNamespaceURI()))
  +                            throw new WSIFException(
  +                                "A MIME part in binding operation "
  +                                    + bindingoperation.getName()
  +                                    + " did not have the correct namespace URI of "
  +                                    + MIMEConstants.NS_URI_MIME
  +                                    + ".");
  +
  +                        mimePartNames.addElement(mimeContent.getPart());
  +                    } else if (nextChild instanceof SOAPBody) {
  +                        List soapPartNameList =
  +                            parseSoapBody(
  +                                wsifoperation_apacheaxis,
  +                                soapoperation,
  +                                (SOAPBody) nextChild,
  +                                true);
  +                        if (soapPartNameList != null)
  +                            soapPartNames.addAll(soapPartNameList);
  +                    }
  +                }
  +            }
  +        }
  +        wsifoperation_apacheaxis.setPartNames(soapPartNames, mimePartNames);
  +        
  +        Trc.exit();
       }
   
       public Definition getDefinition() {
  
  
  

Mime
View raw message