src/share/jaxws_classes/javax/xml/soap/SOAPMessage.java

Fri, 04 Oct 2013 16:21:34 +0100

author
mkos
date
Fri, 04 Oct 2013 16:21:34 +0100
changeset 408
b0610cd08440
parent 368
0989ad8c0860
child 637
9c07ef4934dd
permissions
-rw-r--r--

8025054: Update JAX-WS RI integration to 2.2.9-b130926.1035
Reviewed-by: chegar

ohair@286 1 /*
alanb@368 2 * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved.
ohair@286 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
ohair@286 4 *
ohair@286 5 * This code is free software; you can redistribute it and/or modify it
ohair@286 6 * under the terms of the GNU General Public License version 2 only, as
ohair@286 7 * published by the Free Software Foundation. Oracle designates this
ohair@286 8 * particular file as subject to the "Classpath" exception as provided
ohair@286 9 * by Oracle in the LICENSE file that accompanied this code.
ohair@286 10 *
ohair@286 11 * This code is distributed in the hope that it will be useful, but WITHOUT
ohair@286 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
ohair@286 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
ohair@286 14 * version 2 for more details (a copy is included in the LICENSE file that
ohair@286 15 * accompanied this code).
ohair@286 16 *
ohair@286 17 * You should have received a copy of the GNU General Public License version
ohair@286 18 * 2 along with this work; if not, write to the Free Software Foundation,
ohair@286 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
ohair@286 20 *
ohair@286 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
ohair@286 22 * or visit www.oracle.com if you need additional information or have any
ohair@286 23 * questions.
ohair@286 24 */
ohair@286 25
ohair@286 26 package javax.xml.soap;
ohair@286 27 import java.io.OutputStream;
ohair@286 28 import java.io.IOException;
ohair@286 29
ohair@286 30 import java.util.Iterator;
ohair@286 31
ohair@286 32 import javax.activation.DataHandler;
ohair@286 33
ohair@286 34 /**
ohair@286 35 * The root class for all SOAP messages. As transmitted on the "wire", a SOAP
ohair@286 36 * message is an XML document or a MIME message whose first body part is an
ohair@286 37 * XML/SOAP document.
ohair@286 38 * <P>
ohair@286 39 * A <code>SOAPMessage</code> object consists of a SOAP part and optionally
ohair@286 40 * one or more attachment parts. The SOAP part for a <code>SOAPMessage</code>
ohair@286 41 * object is a <code>SOAPPart</code> object, which contains information used
ohair@286 42 * for message routing and identification, and which can contain
ohair@286 43 * application-specific content. All data in the SOAP Part of a message must be
ohair@286 44 * in XML format.
ohair@286 45 * <P>
ohair@286 46 * A new <code>SOAPMessage</code> object contains the following by default:
ohair@286 47 * <UL>
ohair@286 48 * <LI>A <code>SOAPPart</code> object
ohair@286 49 * <LI>A <code>SOAPEnvelope</code> object
ohair@286 50 * <LI>A <code>SOAPBody</code> object
ohair@286 51 * <LI>A <code>SOAPHeader</code> object
ohair@286 52 * </UL>
ohair@286 53 * The SOAP part of a message can be retrieved by calling the method <code>SOAPMessage.getSOAPPart()</code>.
ohair@286 54 * The <code>SOAPEnvelope</code> object is retrieved from the <code>SOAPPart</code>
ohair@286 55 * object, and the <code>SOAPEnvelope</code> object is used to retrieve the
ohair@286 56 * <code>SOAPBody</code> and <code>SOAPHeader</code> objects.
ohair@286 57 *
ohair@286 58 * <PRE>
ohair@286 59 * SOAPPart sp = message.getSOAPPart();
ohair@286 60 * SOAPEnvelope se = sp.getEnvelope();
ohair@286 61 * SOAPBody sb = se.getBody();
ohair@286 62 * SOAPHeader sh = se.getHeader();
ohair@286 63 * </PRE>
ohair@286 64 *
ohair@286 65 * <P>
ohair@286 66 * In addition to the mandatory <code>SOAPPart</code> object, a <code>SOAPMessage</code>
ohair@286 67 * object may contain zero or more <code>AttachmentPart</code> objects, each
ohair@286 68 * of which contains application-specific data. The <code>SOAPMessage</code>
ohair@286 69 * interface provides methods for creating <code>AttachmentPart</code>
ohair@286 70 * objects and also for adding them to a <code>SOAPMessage</code> object. A
ohair@286 71 * party that has received a <code>SOAPMessage</code> object can examine its
ohair@286 72 * contents by retrieving individual attachment parts.
ohair@286 73 * <P>
ohair@286 74 * Unlike the rest of a SOAP message, an attachment is not required to be in
ohair@286 75 * XML format and can therefore be anything from simple text to an image file.
ohair@286 76 * Consequently, any message content that is not in XML format must be in an
ohair@286 77 * <code>AttachmentPart</code> object.
ohair@286 78 * <P>
ohair@286 79 * A <code>MessageFactory</code> object may create <code>SOAPMessage</code>
ohair@286 80 * objects with behavior that is specialized to a particular implementation or
ohair@286 81 * application of SAAJ. For instance, a <code>MessageFactory</code> object
ohair@286 82 * may produce <code>SOAPMessage</code> objects that conform to a particular
ohair@286 83 * Profile such as ebXML. In this case a <code>MessageFactory</code> object
ohair@286 84 * might produce <code>SOAPMessage</code> objects that are initialized with
ohair@286 85 * ebXML headers.
ohair@286 86 * <P>
ohair@286 87 * In order to ensure backward source compatibility, methods that are added to
ohair@286 88 * this class after version 1.1 of the SAAJ specification are all concrete
ohair@286 89 * instead of abstract and they all have default implementations. Unless
ohair@286 90 * otherwise noted in the JavaDocs for those methods the default
ohair@286 91 * implementations simply throw an <code>UnsupportedOperationException</code>
ohair@286 92 * and the SAAJ implementation code must override them with methods that
ohair@286 93 * provide the specified behavior. Legacy client code does not have this
ohair@286 94 * restriction, however, so long as there is no claim made that it conforms to
ohair@286 95 * some later version of the specification than it was originally written for.
ohair@286 96 * A legacy class that extends the SOAPMessage class can be compiled and/or run
ohair@286 97 * against succeeding versions of the SAAJ API without modification. If such a
ohair@286 98 * class was correctly implemented then it will continue to behave correctly
ohair@286 99 * relative to the version of the specification against which it was written.
ohair@286 100 *
ohair@286 101 * @see MessageFactory
ohair@286 102 * @see AttachmentPart
ohair@286 103 */
ohair@286 104 public abstract class SOAPMessage {
ohair@286 105 /**
ohair@286 106 * Specifies the character type encoding for the SOAP Message. Valid values
ohair@286 107 * include "utf-8" and "utf-16". See vendor documentation for additional
ohair@286 108 * supported values. The default is "utf-8".
ohair@286 109 *
ohair@286 110 * @see SOAPMessage#setProperty(String, Object) SOAPMessage.setProperty
ohair@286 111 * @since SAAJ 1.2
ohair@286 112 */
ohair@286 113 public static final String CHARACTER_SET_ENCODING =
ohair@286 114 "javax.xml.soap.character-set-encoding";
ohair@286 115
ohair@286 116 /**
ohair@286 117 * Specifies whether the SOAP Message will contain an XML declaration when
ohair@286 118 * it is sent. The only valid values are "true" and "false". The default is
ohair@286 119 * "false".
ohair@286 120 *
ohair@286 121 * @see SOAPMessage#setProperty(String, Object) SOAPMessage.setProperty
ohair@286 122 * @since SAAJ 1.2
ohair@286 123 */
ohair@286 124 public static final String WRITE_XML_DECLARATION =
ohair@286 125 "javax.xml.soap.write-xml-declaration";
ohair@286 126
ohair@286 127 /**
ohair@286 128 * Sets the description of this <code>SOAPMessage</code> object's
ohair@286 129 * content with the given description.
ohair@286 130 *
ohair@286 131 * @param description a <code>String</code> describing the content of this
ohair@286 132 * message
ohair@286 133 * @see #getContentDescription
ohair@286 134 */
ohair@286 135 public abstract void setContentDescription(String description);
ohair@286 136
ohair@286 137 /**
ohair@286 138 * Retrieves a description of this <code>SOAPMessage</code> object's
ohair@286 139 * content.
ohair@286 140 *
ohair@286 141 * @return a <code>String</code> describing the content of this
ohair@286 142 * message or <code>null</code> if no description has been set
ohair@286 143 * @see #setContentDescription
ohair@286 144 */
ohair@286 145 public abstract String getContentDescription();
ohair@286 146
ohair@286 147 /**
ohair@286 148 * Gets the SOAP part of this <code>SOAPMessage</code> object.
ohair@286 149 * <P>
ohair@286 150 * <code>SOAPMessage</code> object contains one or more attachments, the
ohair@286 151 * SOAP Part must be the first MIME body part in the message.
ohair@286 152 *
ohair@286 153 * @return the <code>SOAPPart</code> object for this <code>SOAPMessage</code>
ohair@286 154 * object
ohair@286 155 */
ohair@286 156 public abstract SOAPPart getSOAPPart();
ohair@286 157
ohair@286 158 /**
ohair@286 159 * Gets the SOAP Body contained in this <code>SOAPMessage</code> object.
ohair@286 160 * <p>
ohair@286 161 *
ohair@286 162 * @return the <code>SOAPBody</code> object contained by this <code>SOAPMessage</code>
ohair@286 163 * object
ohair@286 164 * @exception SOAPException
ohair@286 165 * if the SOAP Body does not exist or cannot be retrieved
ohair@286 166 * @since SAAJ 1.2
ohair@286 167 */
ohair@286 168 public SOAPBody getSOAPBody() throws SOAPException {
ohair@286 169 throw new UnsupportedOperationException("getSOAPBody must be overridden by all subclasses of SOAPMessage");
ohair@286 170 }
ohair@286 171
ohair@286 172 /**
ohair@286 173 * Gets the SOAP Header contained in this <code>SOAPMessage</code>
ohair@286 174 * object.
ohair@286 175 * <p>
ohair@286 176 *
ohair@286 177 * @return the <code>SOAPHeader</code> object contained by this <code>SOAPMessage</code>
ohair@286 178 * object
ohair@286 179 * @exception SOAPException
ohair@286 180 * if the SOAP Header does not exist or cannot be retrieved
ohair@286 181 * @since SAAJ 1.2
ohair@286 182 */
ohair@286 183 public SOAPHeader getSOAPHeader() throws SOAPException {
ohair@286 184 throw new UnsupportedOperationException("getSOAPHeader must be overridden by all subclasses of SOAPMessage");
ohair@286 185 }
ohair@286 186
ohair@286 187 /**
ohair@286 188 * Removes all <code>AttachmentPart</code> objects that have been added
ohair@286 189 * to this <code>SOAPMessage</code> object.
ohair@286 190 * <P>
ohair@286 191 * This method does not touch the SOAP part.
ohair@286 192 */
ohair@286 193 public abstract void removeAllAttachments();
ohair@286 194
ohair@286 195 /**
ohair@286 196 * Gets a count of the number of attachments in this message. This count
ohair@286 197 * does not include the SOAP part.
ohair@286 198 *
ohair@286 199 * @return the number of <code>AttachmentPart</code> objects that are
ohair@286 200 * part of this <code>SOAPMessage</code> object
ohair@286 201 */
ohair@286 202 public abstract int countAttachments();
ohair@286 203
ohair@286 204 /**
ohair@286 205 * Retrieves all the <code>AttachmentPart</code> objects that are part of
ohair@286 206 * this <code>SOAPMessage</code> object.
ohair@286 207 *
ohair@286 208 * @return an iterator over all the attachments in this message
ohair@286 209 */
ohair@286 210 public abstract Iterator getAttachments();
ohair@286 211
ohair@286 212 /**
ohair@286 213 * Retrieves all the <code>AttachmentPart</code> objects that have header
ohair@286 214 * entries that match the specified headers. Note that a returned
ohair@286 215 * attachment could have headers in addition to those specified.
ohair@286 216 *
ohair@286 217 * @param headers
ohair@286 218 * a <code>MimeHeaders</code> object containing the MIME
ohair@286 219 * headers for which to search
ohair@286 220 * @return an iterator over all attachments that have a header that matches
ohair@286 221 * one of the given headers
ohair@286 222 */
ohair@286 223 public abstract Iterator getAttachments(MimeHeaders headers);
ohair@286 224
ohair@286 225 /**
ohair@286 226 * Removes all the <code>AttachmentPart</code> objects that have header
ohair@286 227 * entries that match the specified headers. Note that the removed
ohair@286 228 * attachment could have headers in addition to those specified.
ohair@286 229 *
ohair@286 230 * @param headers
ohair@286 231 * a <code>MimeHeaders</code> object containing the MIME
ohair@286 232 * headers for which to search
ohair@286 233 * @since SAAJ 1.3
ohair@286 234 */
ohair@286 235 public abstract void removeAttachments(MimeHeaders headers);
ohair@286 236
ohair@286 237
ohair@286 238 /**
ohair@286 239 * Returns an <code>AttachmentPart</code> object that is associated with an
ohair@286 240 * attachment that is referenced by this <code>SOAPElement</code> or
ohair@286 241 * <code>null</code> if no such attachment exists. References can be made
ohair@286 242 * via an <code>href</code> attribute as described in
ohair@286 243 * {@link <a href="http://www.w3.org/TR/SOAP-attachments#SOAPReferenceToAttachements">SOAP Messages with Attachments</a>},
ohair@286 244 * or via a single <code>Text</code> child node containing a URI as
ohair@286 245 * described in the WS-I Attachments Profile 1.0 for elements of schema
ohair@286 246 * type {@link <a href="http://www.ws-i.org/Profiles/AttachmentsProfile-1.0-2004-08-24.html">ref:swaRef</a>}. These two mechanisms must be supported.
ohair@286 247 * The support for references via <code>href</code> attribute also implies that
ohair@286 248 * this method should also be supported on an element that is an
ohair@286 249 * <i>xop:Include</i> element (
ohair@286 250 * {@link <a href="http://www.w3.org/2000/xp/Group/3/06/Attachments/XOP.html">XOP</a>}).
ohair@286 251 * other reference mechanisms may be supported by individual
ohair@286 252 * implementations of this standard. Contact your vendor for details.
ohair@286 253 *
ohair@286 254 * @param element The <code>SOAPElement</code> containing the reference to an Attachment
ohair@286 255 * @return the referenced <code>AttachmentPart</code> or null if no such
ohair@286 256 * <code>AttachmentPart</code> exists or no reference can be
ohair@286 257 * found in this <code>SOAPElement</code>.
ohair@286 258 * @throws SOAPException if there is an error in the attempt to access the
ohair@286 259 * attachment
ohair@286 260 *
ohair@286 261 * @since SAAJ 1.3
ohair@286 262 */
ohair@286 263 public abstract AttachmentPart getAttachment(SOAPElement element) throws SOAPException;
ohair@286 264
ohair@286 265
ohair@286 266 /**
ohair@286 267 * Adds the given <code>AttachmentPart</code> object to this <code>SOAPMessage</code>
ohair@286 268 * object. An <code>AttachmentPart</code> object must be created before
ohair@286 269 * it can be added to a message.
ohair@286 270 *
ohair@286 271 * @param AttachmentPart
ohair@286 272 * an <code>AttachmentPart</code> object that is to become part
ohair@286 273 * of this <code>SOAPMessage</code> object
ohair@286 274 * @exception IllegalArgumentException
ohair@286 275 */
ohair@286 276 public abstract void addAttachmentPart(AttachmentPart AttachmentPart);
ohair@286 277
ohair@286 278 /**
ohair@286 279 * Creates a new empty <code>AttachmentPart</code> object. Note that the
ohair@286 280 * method <code>addAttachmentPart</code> must be called with this new
ohair@286 281 * <code>AttachmentPart</code> object as the parameter in order for it to
ohair@286 282 * become an attachment to this <code>SOAPMessage</code> object.
ohair@286 283 *
ohair@286 284 * @return a new <code>AttachmentPart</code> object that can be populated
ohair@286 285 * and added to this <code>SOAPMessage</code> object
ohair@286 286 */
ohair@286 287 public abstract AttachmentPart createAttachmentPart();
ohair@286 288
ohair@286 289 /**
ohair@286 290 * Creates an <code>AttachmentPart</code> object and populates it using
ohair@286 291 * the given <code>DataHandler</code> object.
ohair@286 292 *
ohair@286 293 * @param dataHandler
ohair@286 294 * the <code>javax.activation.DataHandler</code> object that
ohair@286 295 * will generate the content for this <code>SOAPMessage</code>
ohair@286 296 * object
ohair@286 297 * @return a new <code>AttachmentPart</code> object that contains data
ohair@286 298 * generated by the given <code>DataHandler</code> object
ohair@286 299 * @exception IllegalArgumentException
ohair@286 300 * if there was a problem with the specified <code>DataHandler</code>
ohair@286 301 * object
ohair@286 302 * @see javax.activation.DataHandler
ohair@286 303 * @see javax.activation.DataContentHandler
ohair@286 304 */
ohair@286 305 public AttachmentPart createAttachmentPart(DataHandler dataHandler) {
ohair@286 306 AttachmentPart attachment = createAttachmentPart();
ohair@286 307 attachment.setDataHandler(dataHandler);
ohair@286 308 return attachment;
ohair@286 309 }
ohair@286 310
ohair@286 311 /**
ohair@286 312 * Returns all the transport-specific MIME headers for this <code>SOAPMessage</code>
ohair@286 313 * object in a transport-independent fashion.
ohair@286 314 *
ohair@286 315 * @return a <code>MimeHeaders</code> object containing the <code>MimeHeader</code>
ohair@286 316 * objects
ohair@286 317 */
ohair@286 318 public abstract MimeHeaders getMimeHeaders();
ohair@286 319
ohair@286 320 /**
ohair@286 321 * Creates an <code>AttachmentPart</code> object and populates it with
ohair@286 322 * the specified data of the specified content type. The type of the
ohair@286 323 * <code>Object</code> should correspond to the value given for the
ohair@286 324 * <code>Content-Type</code>.
ohair@286 325 *
ohair@286 326 * @param content
ohair@286 327 * an <code>Object</code> containing the content for the
ohair@286 328 * <code>AttachmentPart</code> object to be created
ohair@286 329 * @param contentType
ohair@286 330 * a <code>String</code> object giving the type of content;
ohair@286 331 * examples are "text/xml", "text/plain", and "image/jpeg"
ohair@286 332 * @return a new <code>AttachmentPart</code> object that contains the
ohair@286 333 * given data
ohair@286 334 * @exception IllegalArgumentException
ohair@286 335 * may be thrown if the contentType does not match the type
ohair@286 336 * of the content object, or if there was no
ohair@286 337 * <code>DataContentHandler</code> object for the given
ohair@286 338 * content object
ohair@286 339 * @see javax.activation.DataHandler
ohair@286 340 * @see javax.activation.DataContentHandler
ohair@286 341 */
ohair@286 342 public AttachmentPart createAttachmentPart(
ohair@286 343 Object content,
ohair@286 344 String contentType) {
ohair@286 345 AttachmentPart attachment = createAttachmentPart();
ohair@286 346 attachment.setContent(content, contentType);
ohair@286 347 return attachment;
ohair@286 348 }
ohair@286 349
ohair@286 350 /**
ohair@286 351 * Updates this <code>SOAPMessage</code> object with all the changes that
ohair@286 352 * have been made to it. This method is called automatically when
ohair@286 353 * {@link SOAPMessage#writeTo(OutputStream)} is called. However, if
ohair@286 354 * changes are made to a message that was received or to one that has
ohair@286 355 * already been sent, the method <code>saveChanges</code> needs to be
ohair@286 356 * called explicitly in order to save the changes. The method <code>saveChanges</code>
ohair@286 357 * also generates any changes that can be read back (for example, a
ohair@286 358 * MessageId in profiles that support a message id). All MIME headers in a
ohair@286 359 * message that is created for sending purposes are guaranteed to have
ohair@286 360 * valid values only after <code>saveChanges</code> has been called.
ohair@286 361 * <P>
ohair@286 362 * In addition, this method marks the point at which the data from all
ohair@286 363 * constituent <code>AttachmentPart</code> objects are pulled into the
ohair@286 364 * message.
ohair@286 365 * <P>
ohair@286 366 *
ohair@286 367 * @exception <code>SOAPException</code> if there was a problem saving
ohair@286 368 * changes to this message.
ohair@286 369 */
ohair@286 370 public abstract void saveChanges() throws SOAPException;
ohair@286 371
ohair@286 372 /**
ohair@286 373 * Indicates whether this <code>SOAPMessage</code> object needs to have
ohair@286 374 * the method <code>saveChanges</code> called on it.
ohair@286 375 *
ohair@286 376 * @return <code>true</code> if <code>saveChanges</code> needs to be
ohair@286 377 * called; <code>false</code> otherwise.
ohair@286 378 */
ohair@286 379 public abstract boolean saveRequired();
ohair@286 380
ohair@286 381 /**
ohair@286 382 * Writes this <code>SOAPMessage</code> object to the given output
ohair@286 383 * stream. The externalization format is as defined by the SOAP 1.1 with
ohair@286 384 * Attachments specification.
ohair@286 385 * <P>
ohair@286 386 * If there are no attachments, just an XML stream is written out. For
ohair@286 387 * those messages that have attachments, <code>writeTo</code> writes a
ohair@286 388 * MIME-encoded byte stream.
ohair@286 389 * <P>
ohair@286 390 * Note that this method does not write the transport-specific MIME Headers
ohair@286 391 * of the Message
ohair@286 392 *
ohair@286 393 * @param out
ohair@286 394 * the <code>OutputStream</code> object to which this <code>SOAPMessage</code>
ohair@286 395 * object will be written
ohair@286 396 * @exception IOException
ohair@286 397 * if an I/O error occurs
ohair@286 398 * @exception SOAPException
ohair@286 399 * if there was a problem in externalizing this SOAP message
ohair@286 400 */
ohair@286 401 public abstract void writeTo(OutputStream out)
ohair@286 402 throws SOAPException, IOException;
ohair@286 403
ohair@286 404 /**
ohair@286 405 * Associates the specified value with the specified property. If there was
ohair@286 406 * already a value associated with this property, the old value is
ohair@286 407 * replaced.
ohair@286 408 * <p>
ohair@286 409 * The valid property names include
ohair@286 410 * {@link SOAPMessage#WRITE_XML_DECLARATION} and
ohair@286 411 * {@link SOAPMessage#CHARACTER_SET_ENCODING}. All of these standard SAAJ
ohair@286 412 * properties are prefixed by "javax.xml.soap". Vendors may also add
ohair@286 413 * implementation specific properties. These properties must be prefixed
ohair@286 414 * with package names that are unique to the vendor.
ohair@286 415 * <p>
ohair@286 416 * Setting the property <code>WRITE_XML_DECLARATION</code> to <code>"true"</code>
ohair@286 417 * will cause an XML Declaration to be written out at the start of the SOAP
ohair@286 418 * message. The default value of "false" suppresses this declaration.
ohair@286 419 * <p>
ohair@286 420 * The property <code>CHARACTER_SET_ENCODING</code> defaults to the value
ohair@286 421 * <code>"utf-8"</code> which causes the SOAP message to be encoded using
ohair@286 422 * UTF-8. Setting <code>CHARACTER_SET_ENCODING</code> to <code>"utf-16"</code>
ohair@286 423 * causes the SOAP message to be encoded using UTF-16.
ohair@286 424 * <p>
ohair@286 425 * Some implementations may allow encodings in addition to UTF-8 and
ohair@286 426 * UTF-16. Refer to your vendor's documentation for details.
ohair@286 427 *
ohair@286 428 * @param property
ohair@286 429 * the property with which the specified value is to be
ohair@286 430 * associated.
ohair@286 431 * @param value
ohair@286 432 * the value to be associated with the specified property
ohair@286 433 * @exception SOAPException
ohair@286 434 * if the property name is not recognized.
ohair@286 435 * @since SAAJ 1.2
ohair@286 436 */
ohair@286 437 public void setProperty(String property, Object value)
ohair@286 438 throws SOAPException {
ohair@286 439 throw new UnsupportedOperationException("setProperty must be overridden by all subclasses of SOAPMessage");
ohair@286 440 }
ohair@286 441
ohair@286 442 /**
ohair@286 443 * Retrieves value of the specified property.
ohair@286 444 *
ohair@286 445 * @param property
ohair@286 446 * the name of the property to retrieve
ohair@286 447 * @return the value associated with the named property or <code>null</code>
ohair@286 448 * if no such property exists.
ohair@286 449 * @exception SOAPException
ohair@286 450 * if the property name is not recognized.
ohair@286 451 * @since SAAJ 1.2
ohair@286 452 */
ohair@286 453 public Object getProperty(String property) throws SOAPException {
ohair@286 454 throw new UnsupportedOperationException("getProperty must be overridden by all subclasses of SOAPMessage");
ohair@286 455 }
ohair@286 456 }

mercurial