/*
 * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package javax.xml.ws;

import javax.xml.transform.Source;
import javax.xml.bind.JAXBContext;

The LogicalMessage interface represents a protocol agnostic XML message and contains methods that provide access to the payload of the message. @since 1.6, JAX-WS 2.0
/** The {@code LogicalMessage} interface represents a * protocol agnostic XML message and contains methods that * provide access to the payload of the message. * * @since 1.6, JAX-WS 2.0 **/
public interface LogicalMessage {
Gets the message payload as an XML source, may be called multiple times on the same LogicalMessage instance, always returns a new Source that may be used to retrieve the entire message payload.

If the returned Source is an instance of DOMSource, then modifications to the encapsulated DOM tree change the message payload in-place, there is no need to susequently call setPayload. Other types of Source provide only read access to the message payload. @return The contained message payload; returns null if no payload is present in this message.

/** Gets the message payload as an XML source, may be called * multiple times on the same LogicalMessage instance, always * returns a new {@code Source} that may be used to retrieve the entire * message payload. * * <p>If the returned {@code Source} is an instance of * {@code DOMSource}, then * modifications to the encapsulated DOM tree change the message * payload in-place, there is no need to susequently call * {@code setPayload}. Other types of {@code Source} provide only * read access to the message payload. * * @return The contained message payload; returns {@code null} if no * payload is present in this message. **/
public Source getPayload();
Sets the message payload @param payload message payload @throws WebServiceException If any error during the setting of the payload in this message @throws java.lang.UnsupportedOperationException If this operation is not supported
/** Sets the message payload * * @param payload message payload * @throws WebServiceException If any error during the setting * of the payload in this message * @throws java.lang.UnsupportedOperationException If this * operation is not supported **/
public void setPayload(Source payload);
Gets the message payload as a JAXB object. Note that there is no connection between the returned object and the message payload, changes to the payload require calling setPayload. @param context The JAXBContext that should be used to unmarshall the message payload @return The contained message payload; returns null if no payload is present in this message @throws WebServiceException If an error occurs when using a supplied JAXBContext to unmarshall the payload. The cause of the WebServiceException is the original JAXBException.
/** Gets the message payload as a JAXB object. Note that there is no * connection between the returned object and the message payload, * changes to the payload require calling {@code setPayload}. * * @param context The JAXBContext that should be used to unmarshall * the message payload * @return The contained message payload; returns {@code null} if no * payload is present in this message * @throws WebServiceException If an error occurs when using a supplied * JAXBContext to unmarshall the payload. The cause of * the WebServiceException is the original JAXBException. **/
public Object getPayload(JAXBContext context);
Sets the message payload @param payload message payload @param context The JAXBContext that should be used to marshall the payload @throws java.lang.UnsupportedOperationException If this operation is not supported @throws WebServiceException If an error occurs when using the supplied JAXBContext to marshall the payload. The cause of the WebServiceException is the original JAXBException.
/** Sets the message payload * * @param payload message payload * @param context The JAXBContext that should be used to marshall * the payload * @throws java.lang.UnsupportedOperationException If this * operation is not supported * @throws WebServiceException If an error occurs when using the supplied * JAXBContext to marshall the payload. The cause of * the WebServiceException is the original JAXBException. **/
public void setPayload(Object payload, JAXBContext context); }