SOAPPart.java |
/* * JBoss, the OpenSource EJB server * * Distributable under LGPL license. * See terms of license at gnu.org. */ package javax.xml.soap; import java.util.Iterator; import javax.xml.transform.Source; import org.w3c.dom.Document; /** The container for the SOAP-specific portion of a SOAPMessage object. All messages are required to have a SOAP part, so when a SOAPMessage object is created, it will automatically have a SOAPPart object. A SOAPPart object is a MIME part and has the MIME headers Content-Id, Content-Location, and Content-Type. Because the value of Content-Type must be "text/xml", a SOAPPart object automatically has a MIME header of Content-Type with its value set to "text/xml". The value must be "text/xml" because content in the SOAP part of a message must be in XML format. Content that is not of type "text/xml" must be in an AttachmentPart object rather than in the SOAPPart object. When a message is sent, its SOAP part must have the MIME header Content-Type set to "text/xml". Or, from the other perspective, the SOAP part of any message that is received must have the MIME header Content-Type with a value of "text/xml". A client can access the SOAPPart object of a SOAPMessage object by calling the method SOAPMessage.getSOAPPart. The following line of code, in which message is a SOAPMessage object, retrieves the SOAP part of a message. SOAPPart soapPart = message.getSOAPPart(); A SOAPPart object contains a SOAPEnvelope object, which in turn contains a SOAPBody object and a SOAPHeader object. The SOAPPart method getEnvelope can be used to retrieve the SOAPEnvelope object. * @author Scott.Stark@jboss.org * @version $Revision: 1.2 $ */ public abstract class SOAPPart implements Document { public SOAPPart() { } public abstract SOAPEnvelope getEnvelope() throws SOAPException; public String getContentId() { String[] header = getMimeHeader("Content-Id"); String id = null; if( header != null || header.length > 0 ) id = header[0]; return id; } public void setContentId(String contentId) { setMimeHeader("Content-Id", contentId); } public String getContentLocation() { String[] header = getMimeHeader("Content-Location"); String location = null; if( header != null || header.length > 0 ) location = header[0]; return location; } public void setContentLocation(String contentLocation) { setMimeHeader("Content-Location", contentLocation); } public abstract void removeMimeHeader(String s); public abstract void removeAllMimeHeaders(); public abstract String[] getMimeHeader(String s); public abstract void setMimeHeader(String s, String s1); public abstract void addMimeHeader(String s, String s1); public abstract Iterator getAllMimeHeaders(); public abstract Iterator getMatchingMimeHeaders(String as[]); public abstract Iterator getNonMatchingMimeHeaders(String as[]); /** Sets the content of the SOAPEnvelope object with the data from the given Source object. * This Source must contain a valid SOAP document. * @param source the {@link javax.xml.transform.Source} object with the data to be set * @throws SOAPException if the implementation cannot convert the specified Source object */ public abstract void setContent(Source source) throws SOAPException; /** Returns the content of the SOAPEnvelope as a JAXP <CODE>Source</CODE> object. * @return the content as a <CODE> javax.xml.transform.Source</CODE> object * @throws javax.xml.soap.SOAPException if the implementation cannot convert the specified <CODE>Source</CODE> object * @see #setContent(javax.xml.transform.Source) setContent(javax.xml.transform.Source) */ public abstract Source getContent() throws SOAPException; }
SOAPPart.java |