Java tutorial
/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 2005-2017 Oracle and/or its affiliates. All rights reserved. * * The contents of this file are subject to the terms of either the GNU * General Public License Version 2 only ("GPL") or the Common Development * and Distribution License("CDDL") (collectively, the "License"). You * may not use this file except in compliance with the License. You can * obtain a copy of the License at * https://oss.oracle.com/licenses/CDDL+GPL-1.1 * or LICENSE.txt. See the License for the specific * language governing permissions and limitations under the License. * * When distributing the software, include this License Header Notice in each * file and include the License file at LICENSE.txt. * * GPL Classpath Exception: * Oracle designates this particular file as subject to the "Classpath" * exception as provided by Oracle in the GPL Version 2 section of the License * file that accompanied this code. * * Modifications: * If applicable, add the following below the License Header, with the fields * enclosed by brackets [] replaced by your own identifying information: * "Portions Copyright [year] [name of copyright owner]" * * Contributor(s): * If you wish your version of this file to be governed by only the CDDL or * only the GPL Version 2, indicate your decision by adding "[Contributor] * elects to include this software in this distribution under the [CDDL or GPL * Version 2] license." If you don't indicate a single choice of license, a * recipient has the option to distribute your version of this file under * either the CDDL, the GPL Version 2 or to extend the choice of license to * its licensees as provided above. However, if you add GPL Version 2 code * and therefore, elected the GPL Version 2 license, then the option applies * only if the new code is made subject to such option by the copyright * holder. */ package javax.xml.ws.handler; import java.util.Map; /** * The interface {@code MessageContext} abstracts the message * context that is processed by a handler in the {@code handle} * method. * * <p>The {@code MessageContext} interface provides methods to * manage a property set. {@code MessageContext} properties * enable handlers in a handler chain to share processing related * state. * * @since 1.6, JAX-WS 2.0 */ public interface MessageContext extends Map<String, Object> { /** * Standard property: message direction, {@code true} for * outbound messages, {@code false} for inbound. * <p>Type: boolean */ public static final String MESSAGE_OUTBOUND_PROPERTY = "javax.xml.ws.handler.message.outbound"; /** * Standard property: Map of attachments to a message for the inbound * message, key is the MIME Content-ID, value is a DataHandler. * <p>Type: {@code java.util.Map<String, DataHandler>} */ public static final String INBOUND_MESSAGE_ATTACHMENTS = "javax.xml.ws.binding.attachments.inbound"; /** * Standard property: Map of attachments to a message for the outbound * message, key is the MIME Content-ID, value is a DataHandler. * <p>Type: {@code java.util.Map<String, DataHandler>} */ public static final String OUTBOUND_MESSAGE_ATTACHMENTS = "javax.xml.ws.binding.attachments.outbound"; /** * Standard property: input source for WSDL document. * <p>Type: org.xml.sax.InputSource */ public static final String WSDL_DESCRIPTION = "javax.xml.ws.wsdl.description"; /** * Standard property: name of WSDL service. * <p>Type: javax.xml.namespace.QName */ public static final String WSDL_SERVICE = "javax.xml.ws.wsdl.service"; /** * Standard property: name of WSDL port. * <p>Type: javax.xml.namespace.QName */ public static final String WSDL_PORT = "javax.xml.ws.wsdl.port"; /** * Standard property: name of wsdl interface (2.0) or port type (1.1). * <p>Type: javax.xml.namespace.QName */ public static final String WSDL_INTERFACE = "javax.xml.ws.wsdl.interface"; /** * Standard property: name of WSDL operation. * <p>Type: javax.xml.namespace.QName */ public static final String WSDL_OPERATION = "javax.xml.ws.wsdl.operation"; /** * Standard property: HTTP response status code. * <p>Type: java.lang.Integer */ public static final String HTTP_RESPONSE_CODE = "javax.xml.ws.http.response.code"; /** * Standard property: HTTP request headers. * <p>Type: {@code java.util.Map<java.lang.String, java.util.List<java.lang.String>>} */ public static final String HTTP_REQUEST_HEADERS = "javax.xml.ws.http.request.headers"; /** * Standard property: HTTP response headers. * <p>Type: {@code java.util.Map<java.lang.String, java.util.List<java.lang.String>>} */ public static final String HTTP_RESPONSE_HEADERS = "javax.xml.ws.http.response.headers"; /** * Standard property: HTTP request method. * <p>Type: java.lang.String */ public static final String HTTP_REQUEST_METHOD = "javax.xml.ws.http.request.method"; /** * Standard property: servlet request object. * <p>Type: javax.servlet.http.HttpServletRequest */ public static final String SERVLET_REQUEST = "javax.xml.ws.servlet.request"; /** * Standard property: servlet response object. * <p>Type: javax.servlet.http.HttpServletResponse */ public static final String SERVLET_RESPONSE = "javax.xml.ws.servlet.response"; /** * Standard property: servlet context object. * <p>Type: javax.servlet.ServletContext */ public static final String SERVLET_CONTEXT = "javax.xml.ws.servlet.context"; /** * Standard property: Query string for request. * <p>Type: String **/ public static final String QUERY_STRING = "javax.xml.ws.http.request.querystring"; /** * Standard property: Request Path Info * <p>Type: String */ public static final String PATH_INFO = "javax.xml.ws.http.request.pathinfo"; /** * Standard property: WS Addressing Reference Parameters. * The list MUST include all SOAP headers marked with the * wsa:IsReferenceParameter="true" attribute. * <p>Type: {@code List<Element>} * * @since 1.6, JAX-WS 2.1 */ public static final String REFERENCE_PARAMETERS = "javax.xml.ws.reference.parameters"; /** * Property scope. Properties scoped as {@code APPLICATION} are * visible to handlers, * client applications and service endpoints; properties scoped as * {@code HANDLER} * are only normally visible to handlers. */ public enum Scope { /** * Application visibility. */ APPLICATION, /** * Handler visibility. */ HANDLER }; /** * Sets the scope of a property. * * @param name Name of the property associated with the * {@code MessageContext} * @param scope Desired scope of the property * @throws java.lang.IllegalArgumentException if an illegal * property name is specified */ public void setScope(String name, Scope scope); /** * Gets the scope of a property. * * @param name Name of the property * @return Scope of the property * @throws java.lang.IllegalArgumentException if a non-existant * property name is specified */ public Scope getScope(String name); }