alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Axis 2 example source code file (SOAPMessage.java)

This example Axis 2 source code file (SOAPMessage.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Axis 2 tags/keywords

attachmentpart, attachmentpart, character_set_encoding, io, ioexception, iterator, object, soapexception, soapexception, soapheader, soapmessage, soapmessage, string, string, unsupportedoperationexception, util

The Axis 2 SOAPMessage.java source code

/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements. See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership. The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
package javax.xml.soap;

import javax.activation.DataHandler;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Iterator;

/**
 * <P>The root class for all SOAP messages. As transmitted on the "wire", a SOAP message is an XML
 * document or a MIME message whose first body part is an XML/SOAP document.</P>
 * <p/>
 * <P>A SOAPMessage object consists of a SOAP part and optionally one or more
 * attachment parts. The SOAP part for a <CODE>SOAPMessage object is a SOAPPart
 * object, which contains information used for message routing and identification, and which can
 * contain application-specific content. All data in the SOAP Part of a message must be in XML
 * format.</P>
 * <p/>
 * <P>A new SOAPMessage object contains the following by default:

* <p/> * <UL>
  • A SOAPPart object
  • * <p/> * <LI>A SOAPEnvelope object * <p/> * <LI>A SOAPBody object * <p/> * <LI>A SOAPHeader object The SOAP part of a message can be retrieved by * calling the method <CODE>SOAPMessage.getSOAPPart(). The SOAPEnvelope object * is retrieved from the <CODE> SOAPPart object, and the SOAPEnvelope object is * used to retrieve the <CODE>SOAPBody and SOAPHeader objects.
     SOAPPart
     * sp = message.getSOAPPart(); SOAPEnvelope se = sp.getEnvelope(); SOAPBody sb = se.getBody();
     * SOAPHeader sh = se.getHeader(); </PRE>
     * <p/>
     * <P>In addition to the mandatory SOAPPart object, a SOAPMessage object
     * may contain zero or more <CODE> AttachmentPart objects, each of which contains
     * application-specific data. The <CODE>SOAPMessage interface provides methods for creating
     * <CODE> AttachmentPart objects and also for adding them to a SOAPMessage
     * object. A party that has received a <CODE>SOAPMessage object can examine its contents by
     * retrieving individual attachment parts.</P>
     * <p/>
     * <P>Unlike the rest of a SOAP message, an attachment is not required to be in XML format and can
     * therefore be anything from simple text to an image file. Consequently, any message content that
     * is not in XML format must be in an <CODE> AttachmentPart object.

    * <p/> * <P>A MessageFactory object creates new SOAPMessage objects. If the * <CODE>MessageFactory object was initialized with a messaging Profile, it produces * <CODE>SOAPMessage objects that conform to that Profile. For example, a * <CODE>SOAPMessage object created by a MessageFactory object initialized with * the ebXML Profile will have the appropriate ebXML headers.</P> * * @see MessageFactory MessageFactory * @see AttachmentPart AttachmentPart */ public abstract class SOAPMessage { public SOAPMessage() { } /** * Retrieves a description of this <CODE>SOAPMessage object's content. * * @return a <CODE>String describing the content of this message or null if * no description has been set * @see #setContentDescription(String) setContentDescription(java.lang.String) */ public abstract String getContentDescription(); /** * Sets the description of this <CODE>SOAPMessage object's content with the given * description. * * @param description a <CODE>String describing the content of this message * @see #getContentDescription() getContentDescription() */ public abstract void setContentDescription(String description); /** * Gets the SOAP part of this <CODE>SOAPMessage object. * <p/> * <p/> * <P>If a SOAPMessage object contains one or more attachments, the SOAP Part must * be the first MIME body part in the message.</P> * * @return the <CODE>SOAPPart object for this SOAPMessage object */ public abstract SOAPPart getSOAPPart(); /** * Removes all <CODE>AttachmentPart objects that have been added to this * <CODE>SOAPMessage object. * <p/> * <P>This method does not touch the SOAP part.

    */ public abstract void removeAllAttachments(); /** * Gets a count of the number of attachments in this message. This count does not include the * SOAP part. * * @return the number of <CODE>AttachmentPart objects that are part of this * <CODE>SOAPMessage object */ public abstract int countAttachments(); /** * Retrieves all the <CODE>AttachmentPart objects that are part of this * <CODE>SOAPMessage object. * * @return an iterator over all the attachments in this message */ public abstract Iterator getAttachments(); /** * Retrieves all the <CODE>AttachmentPart objects that have header entries that match the * specified headers. Note that a returned attachment could have headers in addition to those * specified. * * @param headers a <CODE>MimeHeaders object containing the MIME headers for which to * search * @return an iterator over all attachments that have a header that matches one of the given * headers */ public abstract Iterator getAttachments(MimeHeaders headers); /** * Adds the given <CODE>AttachmentPart object to this SOAPMessage object. An * <CODE> AttachmentPart object must be created before it can be added to a message. * * @param attachmentpart an <CODE> AttachmentPart object that is to become part of this * <CODE>SOAPMessage object * @throws IllegalArgumentException * */ public abstract void addAttachmentPart(AttachmentPart attachmentpart); /** * Creates a new empty <CODE>AttachmentPart object. Note that the method * <CODE>addAttachmentPart must be called with this new AttachmentPart * object as the parameter in order for it to become an attachment to this * <CODE>SOAPMessage object. * * @return a new <CODE>AttachmentPart object that can be populated and added to this * <CODE>SOAPMessage object */ public abstract AttachmentPart createAttachmentPart(); /** * Creates an <CODE>AttachmentPart object and populates it using the given * <CODE>DataHandler object. * * @param datahandler the <CODE> javax.activation.DataHandler object that will generate * the content for this <CODE>SOAPMessage object * @return a new <CODE>AttachmentPart object that contains data generated by the given * <CODE> DataHandler object * @throws IllegalArgumentException * if there was a problem with the specified <CODE> DataHandler object * @see DataHandler DataHandler * @see javax.activation.DataContentHandler DataContentHandler */ public AttachmentPart createAttachmentPart(DataHandler datahandler) { AttachmentPart attachmentpart = createAttachmentPart(); attachmentpart.setDataHandler(datahandler); return attachmentpart; } /** * Returns all the transport-specific MIME headers for this <CODE>SOAPMessage object in a * transport-independent fashion. * * @return a <CODE>MimeHeaders object containing the MimeHeader objects */ public abstract MimeHeaders getMimeHeaders(); /** * Creates an <CODE>AttachmentPart object and populates it with the specified data of the * specified content type. * * @param content an <CODE>Object containing the content for this * <CODE>SOAPMessage object * @param contentType a <CODE>String object giving the type of content; examples are * "text/xml", "text/plain", and "image/jpeg" * @return a new <CODE>AttachmentPart object that contains the given data * @throws IllegalArgumentException * if the contentType does not match the type of the content object, or if there was no * <CODE> DataContentHandler object for the given content object * @see DataHandler DataHandler * @see javax.activation.DataContentHandler DataContentHandler */ public AttachmentPart createAttachmentPart(Object content, String contentType) { AttachmentPart attachmentpart = createAttachmentPart(); attachmentpart.setContent(content, contentType); return attachmentpart; } /** * Updates this <CODE>SOAPMessage object with all the changes that have been made to it. * This method is called automatically when a message is sent or written to by the methods * <CODE>ProviderConnection.send, SOAPConnection.call, or * SOAPMessage.writeTo</CODE>. However, if changes are made to a message that was received or to * one that has already been sent, the method <CODE>saveChanges needs to be called * explicitly in order to save the changes. The method <CODE>saveChanges also generates * any changes that can be read back (for example, a MessageId in profiles that support a * message id). All MIME headers in a message that is created for sending purposes are * guaranteed to have valid values only after <CODE>saveChanges has been called. * <p/> * <P>In addition, this method marks the point at which the data from all constituent * <CODE>AttachmentPart objects are pulled into the message.

    * * @throws SOAPException if there was a problem saving changes to this message. */ public abstract void saveChanges() throws SOAPException; /** * Indicates whether this <CODE>SOAPMessage object has had the method * <CODE>saveChanges called on it. * * @return <CODE>true if saveChanges has been called on this message at * least once; <CODE> false otherwise. */ public abstract boolean saveRequired(); /** * Writes this <CODE>SOAPMessage object to the given output stream. The externalization * format is as defined by the SOAP 1.1 with Attachments specification. * <p/> * <P>If there are no attachments, just an XML stream is written out. For those messages that * have attachments, <CODE>writeTo writes a MIME-encoded byte stream.

    * * @param out the <CODE>OutputStream object to which this SOAPMessage object * will be written * @throws SOAPException if there was a problem in externalizing this SOAP message * @throws IOException if an I/O error occurs */ public abstract void writeTo(OutputStream out) throws SOAPException, IOException; /** * Gets the SOAP Body contained in this <code>SOAPMessage object. * * @return the <code>SOAPBody object contained by this SOAPMessage object * @throws SOAPException if the SOAP Body does not exist or cannot be retrieved */ public SOAPBody getSOAPBody() throws SOAPException { throw new UnsupportedOperationException( "getSOAPBody must be overridden in subclasses of SOAPMessage"); } /** * Gets the SOAP Header contained in this <code>SOAPMessage object. * * @return the <code>SOAPHeader object contained by this SOAPMessage object * @throws SOAPException if the SOAP Header does not exist or cannot be retrieved */ public SOAPHeader getSOAPHeader() throws SOAPException { throw new UnsupportedOperationException( "getSOAPHeader must be overridden in subclasses of SOAPMessage"); } /** * Associates the specified value with the specified property. If there was already a value * associated with this property, the old value is replaced. * <p/> * The valid property names include <code>WRITE_XML_DECLARATION and * <code>CHARACTER_SET_ENCODING. All of these standard SAAJ properties are prefixed by * "javax.xml.soap". Vendors may also add implementation specific properties. These properties * must be prefixed with package names that are unique to the vendor. * <p/> * Setting the property <code>WRITE_XML_DECLARATION to "true" will cause an * XML Declaration to be written out at the start of the SOAP message. The default value of * "false" suppresses this declaration. * <p/> * The property <code>CHARACTER_SET_ENCODING defaults to the value "utf-8" * which causes the SOAP message to be encoded using UTF-8. Setting * <code>CHARACTER_SET_ENCODING to "utf-16" causes the SOAP message to be * encoded using UTF-16. * <p/> * Some implementations may allow encodings in addition to UTF-8 and UTF-16. Refer to your * vendor's documentation for details. * * @param property the property with which the specified value is to be associated * @param value the value to be associated with the specified property * @throws SOAPException if the property name is not recognized */ public void setProperty(String property, Object value) throws SOAPException { throw new UnsupportedOperationException( "setProperty must be overridden in subclasses of SOAPMessage"); } /** * Retrieves value of the specified property. * * @param property the name of the property to retrieve * @return the value of the property or <code>null if no such property exists * @throws SOAPException if the property name is not recognized */ public Object getProperty(String property) throws SOAPException { throw new UnsupportedOperationException( "getProperty must be overridden in subclasses of SOAPMessage"); } public abstract AttachmentPart getAttachment(SOAPElement soapelement) throws SOAPException; public abstract void removeAttachments(MimeHeaders mimeheaders); /** Specifies the character type encoding for the SOAP Message. */ public static final String CHARACTER_SET_ENCODING = "javax.xml.soap.character-set-encoding"; /** Specifies whether the SOAP Message should contain an XML declaration. */ public static final String WRITE_XML_DECLARATION = "javax.xml.soap.write-xml-declaration"; }

    Other Axis 2 examples (source code examples)

    Here is a short list of links related to this Axis 2 SOAPMessage.java source code file:

    ... this post is sponsored by my books ...

    #1 New Release!

    FP Best Seller

     

    new blog posts

     

    Copyright 1998-2021 Alvin Alexander, alvinalexander.com
    All Rights Reserved.

    A percentage of advertising revenue from
    pages under the /java/jwarehouse URI on this website is
    paid back to open source projects.