KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > axis > SimpleTargetedChain


1 /*
2 * The Apache Software License, Version 1.1
3 *
4 *
5 * Copyright (c) 2001-2003 The Apache Software Foundation. All rights
6 * reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 *
12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 *
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in
17 * the documentation and/or other materials provided with the
18 * distribution.
19 *
20 * 3. The end-user documentation included with the redistribution,
21 * if any, must include the following acknowledgment:
22 * "This product includes software developed by the
23 * Apache Software Foundation (http://www.apache.org/)."
24 * Alternately, this acknowledgment may appear in the software itself,
25 * if and wherever such third-party acknowledgments normally appear.
26 *
27 * 4. The names "Axis" and "Apache Software Foundation" must
28 * not be used to endorse or promote products derived from this
29 * software without prior written permission. For written
30 * permission, please contact apache@apache.org.
31 *
32 * 5. Products derived from this software may not be called "Apache",
33 * nor may "Apache" appear in their name, without prior written
34 * permission of the Apache Software Foundation.
35 *
36 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
40 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47 * SUCH DAMAGE.
48 * ====================================================================
49 *
50 * This software consists of voluntary contributions made by many
51 * individuals on behalf of the Apache Software Foundation. For more
52 * information on the Apache Software Foundation, please see
53 * <http://www.apache.org/>.
54 */

55
56 package org.jboss.axis;
57
58 import org.jboss.axis.handlers.BasicHandler;
59 import org.jboss.logging.Logger;
60
61 /**
62  * A SimpleTargetedChain has a request handler, a pivot handler, and a response
63  * handler (any of which may themselves be chains).
64  *
65  * @author Doug Davis (dug@us.ibm.com)
66  * @author Glyn Normington (norm@uk.ibm.com)
67  */

68 public class SimpleTargetedChain extends SimpleChain implements TargetedChain
69 {
70    private static Logger log = Logger.getLogger(SimpleTargetedChain.class.getName());
71
72    protected Handler requestHandler;
73    protected Handler pivotHandler;
74    protected Handler responseHandler;
75
76    /**
77     * Pivot indicator sets "past pivot point" before the response handler
78     * runs. This avoids having to reimplement SimpleChain.invoke and
79     * SimpleChain.generateWSDL.
80     */

81    private class PivotIndicator extends BasicHandler
82    {
83       public PivotIndicator()
84       {
85       }
86
87       public void invoke(MessageContext msgContext) throws AxisFault
88       {
89          msgContext.setPastPivot(true);
90       }
91    }
92
93    /**
94     * Default no-arg constructor.
95     */

96    public SimpleTargetedChain()
97    {
98    }
99
100    /**
101     * Constructor for an instance with effectively only a pivot handler.
102     */

103    public SimpleTargetedChain(Handler handler)
104    {
105       pivotHandler = handler;
106       if (pivotHandler != null)
107       {
108          addHandler(pivotHandler);
109          addHandler(new PivotIndicator());
110       }
111    }
112
113    /**
114     * Constructor which takes real or null request, pivot, and response
115     * handlers.
116     */

117    public SimpleTargetedChain(Handler reqHandler, Handler pivHandler,
118                               Handler respHandler)
119    {
120       init(reqHandler, null, pivHandler, null, respHandler);
121    }
122
123    /**
124     * Initialiser which takes real or null request, pivot, and response
125     * handlers and which allows for special request and response
126     * handlers to be inserted just before and after any pivot handler.
127     */

128    protected void init(Handler reqHandler, Handler specialReqHandler,
129                        Handler pivHandler, Handler specialRespHandler,
130                        Handler respHandler)
131    {
132
133       requestHandler = reqHandler;
134       if (requestHandler != null)
135          addHandler(requestHandler);
136
137       if (specialReqHandler != null)
138          addHandler(specialReqHandler);
139
140       pivotHandler = pivHandler;
141       if (pivotHandler != null)
142       {
143          addHandler(pivotHandler);
144          addHandler(new PivotIndicator());
145       }
146
147       if (specialRespHandler != null)
148          addHandler(specialRespHandler);
149
150       responseHandler = respHandler;
151       if (responseHandler != null)
152          addHandler(responseHandler);
153    }
154
155    public Handler getRequestHandler()
156    {
157       return (requestHandler);
158    }
159
160    public Handler getPivotHandler()
161    {
162       return (pivotHandler);
163    }
164
165    public Handler getResponseHandler()
166    {
167       return (responseHandler);
168    }
169 }
170
171 ;
172
Popular Tags