KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > commons > jxpath > Pointer


1 /*
2  * Copyright 1999-2004 The Apache Software Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.io.Serializable JavaDoc;
19
20 /**
21  * Pointers represent locations of objects and their properties
22  * in Java object graphs. JXPathContext has methods
23  * ({@link JXPathContext#getPointer(java.lang.String) getPointer()}
24  * and ({@link JXPathContext#iteratePointers(java.lang.String)
25  * iteratePointers()}, which, given an XPath, produce Pointers for the objects
26  * or properties described the the path. For example, <code>ctx.getPointer
27  * ("foo/bar")</code> will produce a Pointer that can get and set the property
28  * "bar" of the object which is the value of the property "foo" of the root
29  * object. The value of <code>ctx.getPointer("aMap/aKey[3]")</code> will be a
30  * pointer to the 3'rd element of the array, which is the value for the key
31  * "aKey" of the map, which is the value of the property "aMap" of the root
32  * object.
33  *
34  * @author Dmitri Plotnikov
35  * @version $Revision: 1.9 $ $Date: 2004/02/29 14:17:42 $
36  */

37 public interface Pointer extends Cloneable JavaDoc, Comparable JavaDoc, Serializable JavaDoc {
38
39     /**
40      * Returns the value of the object, property or collection element
41      * this pointer represents. May convert the value to one of the
42      * canonical InfoSet types: String, Number, Boolean, Set.
43      *
44      * For example, in the case of an XML element, getValue() will
45      * return the text contained by the element rather than
46      * the element itself.
47      */

48     Object JavaDoc getValue();
49
50     /**
51      * Returns the raw value of the object, property or collection element
52      * this pointer represents. Never converts the object to a
53      * canonical type: returns it as is.
54      *
55      * For example, for an XML element, getNode() will
56      * return the element itself rather than the text it contains.
57      */

58     Object JavaDoc getNode();
59
60     /**
61      * Modifies the value of the object, property or collection element
62      * this pointer represents.
63      */

64     void setValue(Object JavaDoc value);
65
66     /**
67      * Returns the node this pointer is based on.
68      */

69     Object JavaDoc getRootNode();
70     
71     /**
72      * Returns a string that is a proper "canonical" XPath that corresponds to
73      * this pointer. Consider this example:
74      * <p><code>Pointer ptr = ctx.getPointer("//employees[firstName = 'John']")
75      * </code>
76      * <p>The value of <code>ptr.asPath()</code> will look something like
77      * <code>"/departments[2]/employees[3]"</code>, so, basically, it represents
78      * the concrete location(s) of the result of a search performed by JXPath.
79      * If an object in the pointer's path is a Dynamic Property object (like a
80      * Map), the asPath method generates an XPath that looks like this: <code>"
81      * /departments[@name = 'HR']/employees[3]"</code>.
82      */

83     String JavaDoc asPath();
84     
85     /**
86      * Pointers are cloneable
87      */

88     Object JavaDoc clone();
89 }
Popular Tags