001    /*
002     * Copyright 2001-2004 The Apache Software Foundation.
003     * 
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     * 
008     *      http://www.apache.org/licenses/LICENSE-2.0
009     * 
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package javax.xml.rpc.handler;
017    
018    import javax.xml.namespace.QName;
019    
020    /**
021     * The <code>javax.xml.rpc.handler.GenericHandler</code> class
022     * implements the <code>Handler</code> interface. SOAP Message
023     * Handler developers should typically subclass
024     * <code>GenericHandler</code> class unless the Handler class
025     * needs another class as a superclass.
026     *
027     * <p>
028     * The <code>GenericHandler</code> class is a convenience abstract
029     * class that makes writing Handlers easy. This class provides
030     * default implementations of the lifecycle methods <code>init</code>
031     * and <code>destroy</code> and also different handle methods.
032     * A Handler developer should only override methods that it needs
033     * to specialize as part of the derived <code>Handler</code>
034     * implementation class.
035     *
036     * @version 1.0
037     */
038    public abstract class GenericHandler implements Handler {
039    
040        /**
041         * Default constructor.
042         */
043        protected GenericHandler() {}
044    
045        /**
046         * The <code>handleRequest</code> method processes the request
047         * SOAP message. The default implementation of this method returns
048         * <code>true</code>. This indicates that the handler chain
049         * should continue processing of the request SOAP message.
050         * This method should be overridden if the derived Handler class
051         * needs to specialize implementation of this method.
052         *
053         * @param context the message context
054         * @return true/false
055         */
056        public boolean handleRequest(MessageContext context) {
057            return true;
058        }
059    
060        /**
061         * The <code>handleResponse</code> method processes the response
062         * message. The default implementation of this method returns
063         * <code>true</code>. This indicates that the handler chain
064         * should continue processing of the response SOAP message.
065         * This method should be overridden if the derived Handler class
066         * needs to specialize implementation of this method.
067         *
068         * @param context the message context
069         * @return true/false
070         */
071        public boolean handleResponse(MessageContext context) {
072            return true;
073        }
074    
075        /**
076         * The <code>handleFault</code> method processes the SOAP faults
077         * based on the SOAP message processing model. The default
078         * implementation of this method returns <code>true</code>. This
079         * indicates that the handler chain should continue processing
080         * of the SOAP fault. This method should be overridden if
081         * the derived Handler class needs to specialize implementation
082         * of this method.
083         *
084         * @param context the message context
085         * @return true/false
086         */
087        public boolean handleFault(MessageContext context) {
088            return true;
089        }
090    
091        /**
092         * The <code>init</code> method to enable the Handler instance to
093         * initialize itself. This method should be overridden if
094         * the derived Handler class needs to specialize implementation
095         * of this method.
096         *
097         * @param config handler configuration
098         */
099        public void init(HandlerInfo config) {}
100    
101        /**
102         * The <code>destroy</code> method indicates the end of lifecycle
103         * for a Handler instance. This method should be overridden if
104         * the derived Handler class needs to specialize implementation
105         * of this method.
106         */
107        public void destroy() {}
108    
109        /**
110         * Gets the header blocks processed by this Handler instance.
111         *
112         * @return Array of QNames of header blocks processed by this handler instance.
113         * <code>QName</code> is the qualified name of the outermost element of the Header block.
114         */
115        public abstract QName[] getHeaders();
116    }
117