001: /*
002: * Portions Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
003: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004: *
005: * This code is free software; you can redistribute it and/or modify it
006: * under the terms of the GNU General Public License version 2 only, as
007: * published by the Free Software Foundation. Sun designates this
008: * particular file as subject to the "Classpath" exception as provided
009: * by Sun in the LICENSE file that accompanied this code.
010: *
011: * This code is distributed in the hope that it will be useful, but WITHOUT
012: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014: * version 2 for more details (a copy is included in the LICENSE file that
015: * accompanied this code).
016: *
017: * You should have received a copy of the GNU General Public License version
018: * 2 along with this work; if not, write to the Free Software Foundation,
019: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020: *
021: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022: * CA 95054 USA or visit www.sun.com if you need additional information or
023: * have any questions.
024: */
025: package com.sun.xml.internal.ws.spi.runtime;
026:
027: /**
028: * A SystemHandlerDelegate is used to inject system level functionality into a
029: * message processing runtime. The methods of this interface are invoked by
030: * the client and enpoint message dispatchers of the message processing
031: * runtime.
032: *
033: * @author WS Development Team
034: */
035:
036: public interface SystemHandlerDelegate {
037:
038: /**
039: * Called by both client and endpoint message dispatchers to activate
040: * injected request message processing.
041: * When called by a client side message dispatcher, this method must be
042: * called just before the message (associated with the MessageContext)
043: * is sent. When called by the message dispatcher at an endpoint, this
044: * method must be called before MustUnderstand processing on the
045: * associated message.
046: *
047: * @param messageContext when called by a SOAPBinding the argument
048: * must be an instanceof com.sun.xml.internal.ws.spi.runtime.SOAPMessageContext, and
049: * when called by a SOAPBinding at an endpoint, the argument must
050: * be an instanceof com.sun.xml.internal.ws.spi.runtime.SOAPMessageContext and the
051: * Invoker (on the context) must be available for use on the server by the
052: * delegate. An argument SOAPMessageContext passed to this method by an endpoint
053: * dispatcher, must have values assigned for the following MessageContext
054: * properties.
055: * <ul>
056: * <li>MessageContext.SERVLET_REQUEST
057: * <li>MessageContext.SERVLET_RESPONSE
058: * <li>MessageContext.SERVLET_SESSION
059: * <li>MessageContext.SERVLET_CONTEXT
060: * </ul>
061: * @return true if processing by the delegate was such that the caller
062: * should continue with its normal message processing. Returns false when
063: * the delegate has established, in the MessageContext,
064: * the response message to be sent. When this method returns
065: * false, the calling message dispatcher must return the response message
066: * without performing MustUnderstand processing and without invoking the
067: * endpoint. Only delegates called by endpoint side message dispatchers
068: * may return false
069: *
070: * @throws java.lang.Exception when the processing by the delegate failed
071: * without yielding a response message; in which case, the caller shall
072: * determine how to process the error.
073: *
074: */
075: public boolean processRequest(MessageContext messageContext)
076: throws Exception;
077:
078: /**
079: * Called by both client and endpoint message dispatchers to activate
080: * injected response message processing.
081: * When called by the message dispatcher at the client, this method must be
082: * called before MustUnderstand processing on the received message
083: * (associated with the MessageContext). When called by the message
084: * dispatcher at an endpoint, this method must be called after the
085: * endpoint has been invoked, and just before the associated response
086: * message is sent. In the special case where invocation of the endpoint
087: * caused an Exception to be thrown, this method must not be called.
088: *
089: * @param messageContext when called by a SOAPBinding the argument
090: * must be an instanceof com.sun.xml.internal.ws.spi.runtime.SOAPMessageContext.
091: *
092: * @throws java.lang.Exception when the processing by the delegate failed.
093: * In this case, the caller must not send the response message but shall
094: * otherwise determine how to process the error.
095: */
096: public void processResponse(MessageContext messageContext)
097: throws Exception;
098:
099: /**
100: * This method must be called by an endpoint message dispatcher after
101: * MustUnderstand processing and before endpoint invocation.
102: *
103: * @param messageContext when called by a SOAPBinding the argument
104: * must be an instanceof com.sun.xml.internal.ws.spi.runtime.SOAPMessageContext, and
105: * must have values assigned for the following MessageContext
106: * properties.
107: * <ul>
108: * <li>MessageContext.SERVLET_REQUEST
109: * <li>MessageContext.SERVLET_RESPONSE
110: * <li>MessageContext.SERVLET_SESSION
111: * <li>MessageContext.SERVLET_CONTEXT
112: * </ul>
113: */
114: public void preInvokeEndpointHook(MessageContext messageContext);
115: }
|