/**
* 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;
}
}