KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jaxen > ContextSupport


1 package org.jaxen;
2
3 /*
4  $Id: ContextSupport.java,v 1.10 2005/06/01 11:19:59 elharo Exp $
5
6  Copyright 2003 (C) The Werken Company. All Rights Reserved.
7  
8  Redistribution and use of this software and associated documentation
9  ("Software"), with or without modification, are permitted provided
10  that the following conditions are met:
11
12  1. Redistributions of source code must retain copyright
13     statements and notices. Redistributions must also contain a
14     copy of this document.
15  
16  2. Redistributions in binary form must reproduce the
17     above copyright notice, this list of conditions and the
18     following disclaimer in the documentation and/or other
19     materials provided with the distribution.
20  
21  3. The name "jaxen" must not be used to endorse or promote
22     products derived from this Software without prior written
23     permission of The Werken Company. For written permission,
24     please contact bob@werken.com.
25  
26  4. Products derived from this Software may not be called "jaxen"
27     nor may "jaxen" appear in their names without prior written
28     permission of The Werken Company. "jaxen" is a registered
29     trademark of The Werken Company.
30  
31  5. Due credit should be given to The Werken Company.
32     (http://jaxen.werken.com/).
33  
34  THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
35  ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
36  NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
37  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
38  THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
39  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
40  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
41  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
42  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
43  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
44  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
45  OF THE POSSIBILITY OF SUCH DAMAGE.
46
47  */

48
49 import java.io.Serializable JavaDoc;
50
51 /** Supporting context information for resolving
52  * namespace prefixes, functions, and variables.
53  *
54  * <p>
55  * <b>NOTE:</b> This class is not typically used directly,
56  * but is exposed for writers of implementation-specific
57  * XPath packages.
58  * </p>
59  *
60  * @see org.jaxen.dom4j.Dom4jXPath XPath for dom4j
61  * @see org.jaxen.jdom.JDOMXPath XPath for JDOM
62  * @see org.jaxen.dom.DOMXPath XPath for W3C DOM
63  *
64  * @author <a HREF="mailto:bob@eng.werken.com">bob mcwhirter</a>
65  *
66  * @version $Id: ContextSupport.java,v 1.10 2005/06/01 11:19:59 elharo Exp $
67  */

68 public class ContextSupport
69     implements Serializable JavaDoc
70 {
71
72     /** Function context. */
73     private transient FunctionContext functionContext;
74     
75     /** Namespace context. */
76     private NamespaceContext namespaceContext;
77
78     /** Variable context. */
79     private VariableContext variableContext;
80     
81     /** Model navigator. */
82     private Navigator navigator;
83
84     // ----------------------------------------------------------------------
85
// Constructors
86
// ----------------------------------------------------------------------
87

88     /** Construct an empty <code>ContextSupport</code>.
89      */

90     public ContextSupport()
91     {
92         // intentionally left blank
93
}
94
95     /** Construct.
96      *
97      * @param namespaceContext the NamespaceContext
98      * @param functionContext the FunctionContext
99      * @param variableContext the VariableContext
100      * @param navigator the model navigator
101      */

102     public ContextSupport(NamespaceContext namespaceContext,
103                           FunctionContext functionContext,
104                           VariableContext variableContext,
105                           Navigator navigator)
106     {
107         setNamespaceContext( namespaceContext );
108         setFunctionContext( functionContext );
109         setVariableContext( variableContext );
110
111         this.navigator = navigator;
112     }
113
114     // ----------------------------------------------------------------------
115
// Instance methods
116
// ----------------------------------------------------------------------
117

118     /** Set the <code>NamespaceContext</code>.
119      *
120      * @param namespaceContext the namespace context
121      */

122     public void setNamespaceContext(NamespaceContext namespaceContext)
123     {
124         this.namespaceContext = namespaceContext;
125     }
126
127     /** Retrieve the <code>NamespaceContext</code>.
128      *
129      * @return the namespace context
130      */

131     public NamespaceContext getNamespaceContext()
132     {
133         return this.namespaceContext;
134     }
135
136     /** Set the <code>FunctionContext</code>.
137      *
138      * @param functionContext the function context
139      */

140     public void setFunctionContext(FunctionContext functionContext)
141     {
142         this.functionContext = functionContext;
143     }
144
145     /** Retrieve the <code>FunctionContext</code>.
146      *
147      * @return the function context
148      */

149     public FunctionContext getFunctionContext()
150     {
151         return this.functionContext;
152     }
153
154     /** Set the <code>VariableContext</code>.
155      *
156      * @param variableContext the variable context
157      */

158     public void setVariableContext(VariableContext variableContext)
159     {
160         this.variableContext = variableContext;
161     }
162
163     /** Retrieve the <code>VariableContext</code>.
164      *
165      * @return the variable context
166      */

167     public VariableContext getVariableContext()
168     {
169         return this.variableContext;
170     }
171
172     /** Retrieve the <code>Navigator</code>.
173      *
174      * @return the navigator
175      */

176     public Navigator getNavigator()
177     {
178         return this.navigator;
179     }
180
181     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
182

183     /** Translate a namespace prefix to its URI.
184      *
185      * @param prefix The prefix
186      *
187      * @return the namespace URI mapped to the prefix
188      */

189     public String JavaDoc translateNamespacePrefixToUri(String JavaDoc prefix)
190     {
191         
192         if ("xml".equals(prefix)) {
193             return "http://www.w3.org/XML/1998/namespace";
194         }
195         NamespaceContext context = getNamespaceContext();
196
197         if ( context != null )
198         {
199             return context.translateNamespacePrefixToUri( prefix );
200         }
201
202         return null;
203     }
204
205     /** Retrieve a variable value.
206      *
207      * @param namespaceURI the function namespace URI
208      * @param prefix the function prefix
209      * @param localName the function name
210      *
211      * @return the variable value.
212      *
213      * @throws UnresolvableException if unable to locate a bound variable.
214      */

215     public Object JavaDoc getVariableValue( String JavaDoc namespaceURI,
216                                     String JavaDoc prefix,
217                                     String JavaDoc localName )
218         throws UnresolvableException
219     {
220         VariableContext context = getVariableContext();
221
222         if ( context != null )
223         {
224             return context.getVariableValue( namespaceURI, prefix, localName );
225         }
226         else
227         {
228             throw new UnresolvableException( "No variable context installed" );
229         }
230     }
231
232     /** Retrieve a <code>Function</code>.
233      *
234      * @param namespaceURI the function namespace URI
235      * @param prefix the function prefix
236      * @param localName the function name
237      *
238      * @return the function object
239      *
240      * @throws UnresolvableException if unable to locate a bound function
241      */

242     public Function getFunction( String JavaDoc namespaceURI,
243                                  String JavaDoc prefix,
244                                  String JavaDoc localName )
245         throws UnresolvableException
246     {
247         FunctionContext context = getFunctionContext();
248
249         if ( context != null )
250         {
251             return context.getFunction( namespaceURI, prefix, localName );
252         }
253         else
254         {
255             throw new UnresolvableException( "No function context installed" );
256         }
257     }
258 }
259
Popular Tags