/** * SwaBindingImpl.java * * This file was auto-generated from WSDL * by the Apache Axis 1.2alpha Dec 07, 2003 (08:01:12 EST) WSDL2Java emitter. */ package samples.swa; import org.apache.axis.AxisFault; import org.apache.axis.Message; import org.apache.axis.MessageContext; import org.apache.axis.attachments.AttachmentPart; import org.apache.axis.attachments.Attachments; import javax.activation.DataHandler; import javax.mail.internet.MimeBodyPart; import java.util.Iterator; /** * Class SwaBindingImpl * * @version %I%, %G% */ public class SwaBindingImpl implements samples.swa.SwaPort { /** * Method swaSend * * @param applicationName * @param content * @return * @throws java.rmi.RemoteException */ public java.lang.String swaSend( java.lang.String applicationName, javax.mail.internet.MimeMultipart content) throws java.rmi.RemoteException { MimeBodyPart mpb = null; System.out.println("Application: " + applicationName); /* * Now do some printing to get information about the multipart * content and the associated attachments. Axis performs * several steps during deserialization of this SOAP * call. Only the steps of interesst are described here. * * The MIME multipart that contains the other parts (because * it's multipart/mixed or multipart/related) is handled as * ONE Axis attachment during the first part of * deserialization. This attachment is identified by the CID: * prefixed string generated during serialization. * * The next step (see * MimeMultipartDataHandlerDeserializer.java) gets the data * handler of the Axis attachment and creates a MimeMultipart * object using the data source as input of the new * MimeMultipart object. The MimeMultipart object parses the * input (on demand? -> this need to be clarified) and builds * the associated body parts. * * The Axis attachment part is not disposed or otherwise * managed after it was serialized into the MimeMultipart * object. Therefore it is a good idea to call the dispose() * method of the Axis attachment part after processing is * complete. Doing so releases all used resources, also * deleting disk cache files if necessary, of this attachment * part. */ try { int contCount = content.getCount(); System.out.println("Number of Mimeparts: " + contCount); for (int i = 0; i < contCount; i++) { mpb = (MimeBodyPart) content.getBodyPart(i); DataHandler dh = mpb.getDataHandler(); System.out.println("Mime data type: " + dh.getContentType()); } } catch (javax.mail.MessagingException ex) { } /* * the next prints are just for information only */ AttachmentPart[] attParts = getMessageAttachments(); System.out.println("Number of attachements: " + attParts.length); if (attParts.length > 0) { try { System.out.println("Att[0] type: " + attParts[0].getContentType()); System.out.println( "Att[0] dh type: " + attParts[0].getDataHandler().getContentType()); System.out.println("Att[0] file: " + attParts[0].getAttachmentFile()); } catch (javax.xml.soap.SOAPException ex) { } } /* * Now process the parametes including the MimeMultipart */ /* * Processing is done, now dispose the attachements. This is not done * by Axis, should be done by service. */ MessageContext msgContext = MessageContext.getCurrentContext(); Message reqMsg = msgContext.getRequestMessage(); Attachments messageAttachments = reqMsg.getAttachmentsImpl(); messageAttachments.dispose(); return null; } /** * extract attachments from the current request * * @return a list of attachmentparts or * an empty array for no attachments support in this axis * buid/runtime * @throws AxisFault */ private AttachmentPart[] getMessageAttachments() throws AxisFault { MessageContext msgContext = MessageContext.getCurrentContext(); Message reqMsg = msgContext.getRequestMessage(); Attachments messageAttachments = reqMsg.getAttachmentsImpl(); int attachmentCount = messageAttachments.getAttachmentCount(); AttachmentPart attachments[] = new AttachmentPart[attachmentCount]; Iterator it = messageAttachments.getAttachments().iterator(); int count = 0; while (it.hasNext()) { AttachmentPart part = (AttachmentPart) it.next(); attachments[count++] = part; } return attachments; } }