01: /*
02: * Copyright 1999-2004 The Apache Software Foundation
03: *
04: * Licensed under the Apache License, Version 2.0 (the "License");
05: * you may not use this file except in compliance with the License.
06: * You may obtain a copy of the License at
07: *
08: * http://www.apache.org/licenses/LICENSE-2.0
09: *
10: * Unless required by applicable law or agreed to in writing, software
11: * distributed under the License is distributed on an "AS IS" BASIS,
12: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13: * See the License for the specific language governing permissions and
14: * limitations under the License.
15: */
16: package org.apache.commons.jxpath;
17:
18: import java.util.List;
19:
20: /**
21: * If an extenstion function has an argument of type ExpressionContext,
22: * it can gain access to the current node of an XPath expression context.
23: * <p>
24: * Example:
25: * <blockquote><pre>
26: * public class MyExtenstionFunctions {
27: * public static String objectType(ExpressionContext context){
28: * Object value = context.getContextNodePointer().getValue();
29: * if (value == null){
30: * return "null";
31: * }
32: * return value.getClass().getName();
33: * }
34: * }
35: * </pre></blockquote>
36: *
37: * You can then register this extension function using a {@link ClassFunctions
38: * ClassFunctions} object and call it like this:
39: * <blockquote><pre>
40: * "/descendent-or-self::node()[ns:objectType() = 'java.util.Date']"
41: * </pre></blockquote>
42: * This expression will find all nodes of the graph that are dates.
43: */
44: public interface ExpressionContext {
45:
46: /**
47: * Get the JXPathContext in which this function is being evaluated.
48: *
49: * @return A list representing the current context nodes.
50: */
51: JXPathContext getJXPathContext();
52:
53: /**
54: * Get the current context node.
55: *
56: * @return The current context node pointer.
57: */
58: Pointer getContextNodePointer();
59:
60: /**
61: * Get the current context node list. Each element of the list is
62: * a Pointer.
63: *
64: * @return A list representing the current context nodes.
65: */
66: List getContextNodeList();
67:
68: /**
69: * Returns the current context position.
70: */
71: int getPosition();
72: }
|