You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by dm...@apache.org on 2002/11/26 02:20:08 UTC
cvs commit: jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/model/jdom JDOMModelTest.java
dmitri 2002/11/25 17:20:08
Modified: jxpath .cvsignore
jxpath/src/java/org/apache/commons/jxpath
XMLDocumentContainer.java
jxpath/src/java/org/apache/commons/jxpath/ri
EvalContext.java
JXPathContextFactoryReferenceImpl.java
jxpath/src/java/org/apache/commons/jxpath/ri/axes
AncestorContext.java ParentContext.java
PrecedingOrFollowingContext.java
PredicateContext.java SimplePathInterpreter.java
jxpath/src/java/org/apache/commons/jxpath/ri/compiler
CoreFunction.java CoreOperation.java
NameAttributeTest.java
jxpath/src/java/org/apache/commons/jxpath/ri/model
NodePointer.java VariablePointer.java
jxpath/src/java/org/apache/commons/jxpath/ri/model/beans
BeanAttributeIterator.java BeanPointer.java
BeanPropertyPointer.java CollectionPointer.java
DynamicPropertyPointer.java
LangAttributePointer.java NullElementPointer.java
NullPropertyPointer.java PropertyOwnerPointer.java
PropertyPointer.java
jxpath/src/java/org/apache/commons/jxpath/ri/model/container
ContainerPointer.java
jxpath/src/java/org/apache/commons/jxpath/ri/model/dom
DOMAttributePointer.java DOMNodePointer.java
NamespacePointer.java
jxpath/src/java/org/apache/commons/jxpath/ri/model/dynabeans
DynaBeanPointer.java DynaBeanPointerFactory.java
DynaBeanPropertyPointer.java
jxpath/src/java/org/apache/commons/jxpath/ri/model/jdom
JDOMAttributePointer.java
JDOMNamespaceIterator.java
JDOMNamespacePointer.java JDOMNodePointer.java
jxpath/src/java/org/apache/commons/jxpath/util
MethodLookupUtils.java TypeUtils.java
ValueUtils.java
jxpath/src/test/org/apache/commons/jxpath
JXPathTestCase.java TestNull.java
jxpath/src/test/org/apache/commons/jxpath/ri/axes
SimplePathInterpreterTest.java
jxpath/src/test/org/apache/commons/jxpath/ri/compiler
CoreFunctionTest.java TestFunctions2.java
jxpath/src/test/org/apache/commons/jxpath/ri/model
BeanModelTestCase.java
TestDynamicPropertyFactory.java
TestMixedModelFactory.java XMLModelTestCase.java
jxpath/src/test/org/apache/commons/jxpath/ri/model/beans
BeanModelTest.java DynamicPropertiesModelTest.java
TestBeanFactory.java
jxpath/src/test/org/apache/commons/jxpath/ri/model/dom
DOMModelTest.java
jxpath/src/test/org/apache/commons/jxpath/ri/model/dynabeans
TestDynaBeanFactory.java
jxpath/src/test/org/apache/commons/jxpath/ri/model/jdom
JDOMModelTest.java
Log:
Organized imports, formatted code
Fixed problems with getValue() and getNode()
Revision Changes Path
1.3 +7 -0 jakarta-commons/jxpath/.cvsignore
Index: .cvsignore
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/.cvsignore,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- .cvsignore 21 Apr 2002 21:52:31 -0000 1.2
+++ .cvsignore 26 Nov 2002 01:20:05 -0000 1.3
@@ -2,3 +2,10 @@
dist
target
bin
+.classpath
+.project
+build.bat
+maven.bat
+maven.log
+docs
+test-reports
\ No newline at end of file
1.7 +4 -15 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/XMLDocumentContainer.java
Index: XMLDocumentContainer.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/XMLDocumentContainer.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- XMLDocumentContainer.java 10 Aug 2002 01:28:49 -0000 1.6
+++ XMLDocumentContainer.java 26 Nov 2002 01:20:06 -0000 1.7
@@ -61,26 +61,15 @@
*/
package org.apache.commons.jxpath;
-import java.io.IOException;
-import java.io.InputStream;
import java.net.URL;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.dom.DOMResult;
-import javax.xml.transform.stream.StreamSource;
import org.apache.commons.jxpath.xml.DocumentContainer;
import org.w3c.dom.Document;
-import org.xml.sax.SAXException;
-
-import org.apache.commons.jxpath.xml.DocumentContainer;
/**
* An XML document container reads and parses XML only when it is
1.19 +8 -10 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/EvalContext.java
Index: EvalContext.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/EvalContext.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- EvalContext.java 20 Oct 2002 03:43:39 -0000 1.18
+++ EvalContext.java 26 Nov 2002 01:20:06 -0000 1.19
@@ -63,13 +63,11 @@
import java.util.*;
-import org.apache.commons.jxpath.*;
-import org.apache.commons.jxpath.ri.axes.*;
-import org.apache.commons.jxpath.ri.compiler.*;
-import org.apache.commons.jxpath.ri.model.NodeIterator;
+import org.apache.commons.jxpath.ExpressionContext;
+import org.apache.commons.jxpath.JXPathContext;
+import org.apache.commons.jxpath.Pointer;
+import org.apache.commons.jxpath.ri.axes.RootContext;
import org.apache.commons.jxpath.ri.model.NodePointer;
-import org.apache.commons.jxpath.ri.model.beans.*;
-import org.apache.commons.jxpath.util.ValueUtils;
/**
* An XPath evaluation context.
1.2 +4 -5 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/JXPathContextFactoryReferenceImpl.java
Index: JXPathContextFactoryReferenceImpl.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/JXPathContextFactoryReferenceImpl.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- JXPathContextFactoryReferenceImpl.java 23 Aug 2001 00:46:59 -0000 1.1
+++ JXPathContextFactoryReferenceImpl.java 26 Nov 2002 01:20:06 -0000 1.2
@@ -61,10 +61,9 @@
*/
package org.apache.commons.jxpath.ri;
+import org.apache.commons.jxpath.JXPathContext;
import org.apache.commons.jxpath.JXPathContextFactory;
import org.apache.commons.jxpath.JXPathContextFactoryConfigurationError;
-import org.apache.commons.jxpath.JXPathContext;
-import org.apache.commons.jxpath.Variables;
/**
* Default implementation of JXPathContextFactory.
1.10 +4 -6 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/axes/AncestorContext.java
Index: AncestorContext.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/axes/AncestorContext.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- AncestorContext.java 20 Oct 2002 03:43:39 -0000 1.9
+++ AncestorContext.java 26 Nov 2002 01:20:06 -0000 1.10
@@ -61,8 +61,6 @@
*/
package org.apache.commons.jxpath.ri.axes;
-import java.util.HashSet;
-
import org.apache.commons.jxpath.ri.EvalContext;
import org.apache.commons.jxpath.ri.compiler.NodeTest;
import org.apache.commons.jxpath.ri.model.NodePointer;
1.9 +4 -6 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/axes/ParentContext.java
Index: ParentContext.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/axes/ParentContext.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- ParentContext.java 20 Oct 2002 03:43:38 -0000 1.8
+++ ParentContext.java 26 Nov 2002 01:20:06 -0000 1.9
@@ -61,8 +61,6 @@
*/
package org.apache.commons.jxpath.ri.axes;
-import java.util.HashSet;
-
import org.apache.commons.jxpath.ri.EvalContext;
import org.apache.commons.jxpath.ri.compiler.NodeTest;
import org.apache.commons.jxpath.ri.model.NodePointer;
1.9 +4 -6 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/axes/PrecedingOrFollowingContext.java
Index: PrecedingOrFollowingContext.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/axes/PrecedingOrFollowingContext.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- PrecedingOrFollowingContext.java 29 May 2002 00:41:32 -0000 1.8
+++ PrecedingOrFollowingContext.java 26 Nov 2002 01:20:06 -0000 1.9
@@ -83,12 +83,10 @@
private Stack nameStack;
private NodePointer currentNodePointer;
private NodePointer currentRootLocation;
- private boolean includeSelf;
private boolean reverse;
public PrecedingOrFollowingContext(EvalContext parentContext, NodeTest nodeTest, boolean reverse){
super(parentContext);
- this.includeSelf = includeSelf;
this.nodeTest = nodeTest;
this.reverse = reverse;
}
1.15 +63 -61 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/axes/PredicateContext.java
Index: PredicateContext.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/axes/PredicateContext.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- PredicateContext.java 12 Oct 2002 21:02:24 -0000 1.14
+++ PredicateContext.java 26 Nov 2002 01:20:06 -0000 1.15
@@ -62,14 +62,14 @@
package org.apache.commons.jxpath.ri.axes;
import java.util.Iterator;
+
import org.apache.commons.jxpath.ri.EvalContext;
-import org.apache.commons.jxpath.ri.compiler.CoreOperation;
+import org.apache.commons.jxpath.ri.InfoSetUtil;
import org.apache.commons.jxpath.ri.compiler.Expression;
import org.apache.commons.jxpath.ri.compiler.NameAttributeTest;
import org.apache.commons.jxpath.ri.model.NodePointer;
import org.apache.commons.jxpath.ri.model.beans.PropertyOwnerPointer;
import org.apache.commons.jxpath.ri.model.beans.PropertyPointer;
-import org.apache.commons.jxpath.ri.InfoSetUtil;
/**
* EvalContext that checks predicates.
@@ -93,46 +93,47 @@
}
public boolean nextNode(){
- if (done){
- return false;
- }
- while (parentContext.nextNode()){
- if (setupDynamicPropertyPointer()){
- Object pred = nameTestExpression.computeValue(parentContext);
- if (pred instanceof NodePointer){
- pred = ((NodePointer)pred).getValue();
- }
- dynamicPropertyPointer.setPropertyName(InfoSetUtil.stringValue(pred));
- position = 1;
- done = true;
- return true;
- }
- else {
- Object pred = expression.computeValue(parentContext);
- if (pred instanceof Iterator){
- if (!((Iterator)pred).hasNext()){
- return false;
- }
- pred = ((Iterator)pred).next();
- }
-
- if (pred instanceof NodePointer){
- pred = ((NodePointer)pred).getNode();
- }
-
- if (pred instanceof Number){
- int pos = (int)InfoSetUtil.doubleValue(pred);
- position++;
- done = true;
- return parentContext.setPosition(pos);
- }
- else if (InfoSetUtil.booleanValue(pred)){
- position++;
- return true;
- }
- }
- }
- return false;
+ if (done) {
+ return false;
+ }
+ while (parentContext.nextNode()) {
+ if (setupDynamicPropertyPointer()) {
+ Object pred = nameTestExpression.computeValue(parentContext);
+ if (pred instanceof NodePointer) {
+ pred = ((NodePointer) pred).getValue();
+ }
+ dynamicPropertyPointer.setPropertyName(
+ InfoSetUtil.stringValue(pred));
+ position = 1;
+ done = true;
+ return true;
+ }
+ else {
+ Object pred = expression.computeValue(parentContext);
+ if (pred instanceof Iterator) {
+ if (!((Iterator) pred).hasNext()) {
+ return false;
+ }
+ pred = ((Iterator) pred).next();
+ }
+
+ if (pred instanceof NodePointer) {
+ pred = ((NodePointer) pred).getNode();
+ }
+
+ if (pred instanceof Number) {
+ int pos = (int) InfoSetUtil.doubleValue(pred);
+ position++;
+ done = true;
+ return parentContext.setPosition(pos);
+ }
+ else if (InfoSetUtil.booleanValue(pred)) {
+ position++;
+ return true;
+ }
+ }
+ }
+ return false;
}
/**
@@ -158,21 +159,22 @@
}
public boolean setPosition(int position){
- if (nameTestExpression == null){
- return setPositionStandard(position);
- }
- else {
- if (dynamicPropertyPointer == null){
- if (!setupDynamicPropertyPointer()){
- return setPositionStandard(position);
- }
- }
- if (position < 1 || position > dynamicPropertyPointer.getLength()){
- return false;
- }
- dynamicPropertyPointer.setIndex(position - 1);
- return true;
- }
+ if (nameTestExpression == null) {
+ return setPositionStandard(position);
+ }
+ else {
+ if (dynamicPropertyPointer == null) {
+ if (!setupDynamicPropertyPointer()) {
+ return setPositionStandard(position);
+ }
+ }
+ if (position < 1
+ || position > dynamicPropertyPointer.getLength()) {
+ return false;
+ }
+ dynamicPropertyPointer.setIndex(position - 1);
+ return true;
+ }
}
public NodePointer getCurrentNodePointer(){
1.8 +12 -11 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/axes/SimplePathInterpreter.java
Index: SimplePathInterpreter.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/axes/SimplePathInterpreter.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- SimplePathInterpreter.java 13 Oct 2002 02:59:01 -0000 1.7
+++ SimplePathInterpreter.java 26 Nov 2002 01:20:06 -0000 1.8
@@ -111,7 +111,8 @@
{
// PATH = createNullPointer(context, root, steps, 0).toString(); // Dbg
NodePointer pointer = doStep(context, root, steps, 0);
- return valuePointer(pointer);
+// return valuePointer(pointer);
+ return pointer;
}
/**
@@ -129,7 +130,9 @@
{
// PATH = createNullPointerForPredicates(context, root,
// steps, -1, predicates, 0).toString(); // Debugging
- return doPredicate(context, root, steps, -1, predicates, 0);
+ NodePointer pointer = doPredicate(context, root, steps, -1, predicates, 0);
+// return valuePointer(pointer);
+ return pointer;
}
/**
@@ -143,8 +146,6 @@
EvalContext context, NodePointer parent,
Step steps[], int current_step)
{
- parent = valuePointer(parent);
-
if (parent == null){
return null;
}
@@ -154,6 +155,9 @@
return parent;
}
+ // Open all containers
+ parent = valuePointer(parent);
+
Step step = steps[current_step];
Expression predicates[] = step.getPredicates();
@@ -584,7 +588,7 @@
NodePointer pointer = parent;
if (isCollectionElement(pointer, index)){
pointer.setIndex(index);
- return doPredicate(context, valuePointer(pointer),
+ return doPredicate(context, pointer,
steps, current_step, predicates, current_predicate + 1);
}
return createNullPointerForPredicates(context, parent,
@@ -671,10 +675,7 @@
* returns a pointer for the contained value.
*/
private static NodePointer valuePointer(NodePointer pointer){
- while (pointer != null && !pointer.isNode()){
- pointer = pointer.getValuePointer();
- }
- return pointer;
+ return pointer == null ? null : pointer.getValuePointer();
}
/**
@@ -686,11 +687,11 @@
EvalContext context, NodePointer parent, Step[] steps,
int current_step)
{
- parent = valuePointer(parent);
-
if (current_step == steps.length){
return parent;
}
+
+ parent = valuePointer(parent);
Step step = steps[current_step];
1.8 +7 -8 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/compiler/CoreFunction.java
Index: CoreFunction.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/compiler/CoreFunction.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- CoreFunction.java 12 Oct 2002 20:56:03 -0000 1.7
+++ CoreFunction.java 26 Nov 2002 01:20:06 -0000 1.8
@@ -61,15 +61,14 @@
*/
package org.apache.commons.jxpath.ri.compiler;
+import java.util.Collection;
+
import org.apache.commons.jxpath.JXPathContext;
import org.apache.commons.jxpath.JXPathException;
import org.apache.commons.jxpath.ri.Compiler;
-import org.apache.commons.jxpath.ri.InfoSetUtil;
import org.apache.commons.jxpath.ri.EvalContext;
+import org.apache.commons.jxpath.ri.InfoSetUtil;
import org.apache.commons.jxpath.ri.model.NodePointer;
-import org.apache.commons.jxpath.ri.model.beans.NullPointer;
-
-import java.util.Collection;
/**
* An element of the compile tree representing one of built-in functions
1.7 +8 -13 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/compiler/CoreOperation.java
Index: CoreOperation.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/compiler/CoreOperation.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- CoreOperation.java 26 Aug 2002 22:19:51 -0000 1.6
+++ CoreOperation.java 26 Nov 2002 01:20:06 -0000 1.7
@@ -61,20 +61,15 @@
*/
package org.apache.commons.jxpath.ri.compiler;
+import java.util.*;
+
import org.apache.commons.jxpath.Pointer;
-import org.apache.commons.jxpath.ri.Compiler;
-import org.apache.commons.jxpath.ri.InfoSetUtil;
-import org.apache.commons.jxpath.ri.QName;
import org.apache.commons.jxpath.ri.EvalContext;
-import org.apache.commons.jxpath.ri.model.NodePointer;
+import org.apache.commons.jxpath.ri.InfoSetUtil;
import org.apache.commons.jxpath.ri.axes.InitialContext;
import org.apache.commons.jxpath.ri.axes.SelfContext;
import org.apache.commons.jxpath.ri.axes.UnionContext;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.HashSet;
+import org.apache.commons.jxpath.ri.model.NodePointer;
/**
* A compile tree element representing one of the core operations like "+",
1.2 +4 -3 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/compiler/NameAttributeTest.java
Index: NameAttributeTest.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/compiler/NameAttributeTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- NameAttributeTest.java 8 May 2002 00:39:59 -0000 1.1
+++ NameAttributeTest.java 26 Nov 2002 01:20:06 -0000 1.2
@@ -1,9 +1,10 @@
package org.apache.commons.jxpath.ri.compiler;
-import org.apache.commons.jxpath.ri.EvalContext;
/**
- *
+ * Captures the <code>foo[@name=<i>expr</i>]</code> expression. These
+ * expressions are handled in a special way when applied to beans
+ * or maps.
*
* @author Dmitri Plotnikov
* @version $Revision$ $Date$
1.13 +42 -7 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/NodePointer.java
Index: NodePointer.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/NodePointer.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- NodePointer.java 20 Oct 2002 03:47:17 -0000 1.12
+++ NodePointer.java 26 Nov 2002 01:20:06 -0000 1.13
@@ -65,7 +65,6 @@
import org.apache.commons.jxpath.JXPathContext;
import org.apache.commons.jxpath.JXPathException;
-import org.apache.commons.jxpath.JXPathIntrospector;
import org.apache.commons.jxpath.Pointer;
import org.apache.commons.jxpath.ri.Compiler;
import org.apache.commons.jxpath.ri.JXPathContextReferenceImpl;
@@ -216,11 +215,16 @@
public abstract int getLength();
/**
- * By default, returns <code>getNodeValue()</code>, can be overridden to
+ * By default, returns <code>getNode()</code>, can be overridden to
* return a "canonical" value, like for instance a DOM element should
* return its string value.
*/
public Object getValue() {
+ NodePointer valuePointer = getValuePointer();
+ if (valuePointer != this){
+ return valuePointer.getValue();
+ }
+ // Default behavior is to return the same as getNode()
return getNode();
}
@@ -229,12 +233,34 @@
* this method returns the pointer to the contents.
* Only an auxiliary (non-node) pointer can (and should) return a
* value pointer other than itself.
+ * Note that you probably don't want to override <code>getValuePointer()</code>
+ * directly. Override the <code>getImmediateValuePointer()</code>
+ * method instead. The <code>getValuePointer()</code> method is
+ * calls <code>getImmediateValuePointer()</code> and, if the result is not
+ * <code>this</code>, invokes <code>getValuePointer()</code> recursively.
+ * The idea here is to open all nested containers. Let's say we have a
+ * container within a container within a container.
+ * The <code>getValuePointer()</code> method should then open all
+ * those containers and return the pointer to the ultimate contents.
+ * It does so with the above recursion.
*/
public NodePointer getValuePointer() {
+ NodePointer ivp = getImmediateValuePointer();
+ if (ivp != this){
+ return ivp.getValuePointer();
+ }
return this;
}
/**
+ * @see #getValuePointer()
+ *
* @return NodePointer is either <code>this</code> or a pointer
+ * for the immediately contained value.
*/
+ public NodePointer getImmediateValuePointer() {
+ return this;
+ }
+
+ /**
* An actual pointer points to an existing part of an object graph, even
* if it is null. A non-actual pointer represents a part that does not exist
* at all.
@@ -280,9 +306,18 @@
/**
* Returns the object the pointer points to; does not convert it
+ * to a "canonical" type. Opens containers, properties etc and returns
+ * the ultimate contents.
+ */
+ public Object getNode(){
+ return getValuePointer().getImmediateNode();
+ }
+
+ /**
+ * Returns the object the pointer points to; does not convert it
* to a "canonical" type.
*/
- public abstract Object getNode();
+ public abstract Object getImmediateNode();
/**
* Converts the value to the required type and changes the corresponding
1.8 +7 -7 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/VariablePointer.java
Index: VariablePointer.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/VariablePointer.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- VariablePointer.java 20 Oct 2002 03:47:17 -0000 1.7
+++ VariablePointer.java 26 Nov 2002 01:20:06 -0000 1.8
@@ -121,7 +121,7 @@
return value != null && ValueUtils.isCollection(value);
}
- public Object getNode(){
+ public Object getImmediateNode(){
Object value = getBaseValue();
if (index != WHOLE_COLLECTION){
return ValueUtils.getValue(value, index);
@@ -147,11 +147,11 @@
return actual;
}
- public NodePointer getValuePointer(){
+ public NodePointer getImmediateValuePointer(){
if (valuePointer == null){
Object value = null;
if (actual){
- value = getNode();
+ value = getImmediateNode();
}
valuePointer = NodePointer.newChildNodePointer(this, null, value);
}
1.4 +4 -5 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/BeanAttributeIterator.java
Index: BeanAttributeIterator.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/BeanAttributeIterator.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- BeanAttributeIterator.java 13 Oct 2002 02:59:01 -0000 1.3
+++ BeanAttributeIterator.java 26 Nov 2002 01:20:06 -0000 1.4
@@ -62,7 +62,6 @@
package org.apache.commons.jxpath.ri.model.beans;
import org.apache.commons.jxpath.ri.QName;
-import org.apache.commons.jxpath.ri.model.NodeIterator;
import org.apache.commons.jxpath.ri.model.NodePointer;
/**
1.8 +82 -72 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/BeanPointer.java
Index: BeanPointer.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/BeanPointer.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- BeanPointer.java 20 Oct 2002 03:47:17 -0000 1.7
+++ BeanPointer.java 26 Nov 2002 01:20:06 -0000 1.8
@@ -61,14 +61,12 @@
*/
package org.apache.commons.jxpath.ri.model.beans;
-import java.beans.PropertyDescriptor;
import java.util.Locale;
import org.apache.commons.jxpath.JXPathBeanInfo;
import org.apache.commons.jxpath.JXPathIntrospector;
import org.apache.commons.jxpath.ri.QName;
import org.apache.commons.jxpath.ri.model.NodePointer;
-import org.apache.commons.jxpath.util.ValueUtils;
/**
* A Pointer that points to a JavaBean or a collection. It is either
@@ -84,22 +82,32 @@
private Object bean;
private JXPathBeanInfo beanInfo;
- public BeanPointer(QName name, Object bean, JXPathBeanInfo beanInfo, Locale locale){
- super(null, locale);
- this.name = name;
- this.bean = bean;
- this.beanInfo = beanInfo;
- }
+ public BeanPointer(
+ QName name,
+ Object bean,
+ JXPathBeanInfo beanInfo,
+ Locale locale)
+ {
+ super(null, locale);
+ this.name = name;
+ this.bean = bean;
+ this.beanInfo = beanInfo;
+ }
/**
* @param name is the name given to the first node
*/
- public BeanPointer(NodePointer parent, QName name, Object bean, JXPathBeanInfo beanInfo){
- super(parent);
- this.name = name;
- this.bean = bean;
- this.beanInfo = beanInfo;
- }
+ public BeanPointer(
+ NodePointer parent,
+ QName name,
+ Object bean,
+ JXPathBeanInfo beanInfo)
+ {
+ super(parent);
+ this.name = name;
+ this.bean = bean;
+ this.beanInfo = beanInfo;
+ }
public PropertyPointer getPropertyPointer(){
return new BeanPropertyPointer(this, beanInfo);
@@ -140,38 +148,40 @@
return name == null ? 0 : name.hashCode();
}
- public boolean equals(Object object){
- if (object == this){
- return true;
- }
-
- if (!(object instanceof BeanPointer)){
- return false;
- }
-
- BeanPointer other = (BeanPointer)object;
- if (parent != other.parent){
- if (parent == null || !parent.equals(other.parent)){
- return false;
- }
- }
-
- if ((name == null && other.name != null) ||
- (name != null && !name.equals(other.name))){
- return false;
- }
-
- int i_this = (index == WHOLE_COLLECTION ? 0 : index);
- int i_other = (other.index == WHOLE_COLLECTION ? 0 : other.index);
- if (i_this != i_other){
- return false;
- }
-
- if (bean instanceof Number || bean instanceof String || bean instanceof Boolean){
- return bean.equals(other.bean);
- }
- return bean == other.bean;
- }
+ public boolean equals(Object object) {
+ if (object == this) {
+ return true;
+ }
+
+ if (!(object instanceof BeanPointer)) {
+ return false;
+ }
+
+ BeanPointer other = (BeanPointer) object;
+ if (parent != other.parent) {
+ if (parent == null || !parent.equals(other.parent)) {
+ return false;
+ }
+ }
+
+ if ((name == null && other.name != null)
+ || (name != null && !name.equals(other.name))) {
+ return false;
+ }
+
+ int i_this = (index == WHOLE_COLLECTION ? 0 : index);
+ int i_other = (other.index == WHOLE_COLLECTION ? 0 : other.index);
+ if (i_this != i_other) {
+ return false;
+ }
+
+ if (bean instanceof Number
+ || bean instanceof String
+ || bean instanceof Boolean) {
+ return bean.equals(other.bean);
+ }
+ return bean == other.bean;
+ }
/**
* If the pointer has a parent, then parent's path.
@@ -179,26 +189,26 @@
* If the bean is a primitive value, the value itself.
* Otherwise - an empty string.
*/
- public String asPath(){
- if (parent != null){
- return super.asPath();
- }
- else if (bean == null){
- return "null()";
- }
- else if (bean instanceof Number){
- String string = bean.toString();
- if (string.endsWith(".0")){
- string = string.substring(0, string.length() - 2);
- }
- return string;
- }
- else if (bean instanceof Boolean){
- return ((Boolean)bean).booleanValue() ? "true()" : "false()";
- }
- else if (bean instanceof String){
- return "'" + bean + "'";
- }
- return "/";
- }
+ public String asPath() {
+ if (parent != null) {
+ return super.asPath();
+ }
+ else if (bean == null) {
+ return "null()";
+ }
+ else if (bean instanceof Number) {
+ String string = bean.toString();
+ if (string.endsWith(".0")) {
+ string = string.substring(0, string.length() - 2);
+ }
+ return string;
+ }
+ else if (bean instanceof Boolean) {
+ return ((Boolean) bean).booleanValue() ? "true()" : "false()";
+ }
+ else if (bean instanceof String) {
+ return "'" + bean + "'";
+ }
+ return "/";
+ }
}
1.10 +40 -7 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/BeanPropertyPointer.java
Index: BeanPropertyPointer.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/BeanPropertyPointer.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- BeanPropertyPointer.java 20 Oct 2002 03:47:17 -0000 1.9
+++ BeanPropertyPointer.java 26 Nov 2002 01:20:06 -0000 1.10
@@ -62,13 +62,11 @@
package org.apache.commons.jxpath.ri.model.beans;
import java.beans.PropertyDescriptor;
-import java.util.Arrays;
import org.apache.commons.jxpath.AbstractFactory;
import org.apache.commons.jxpath.JXPathBeanInfo;
import org.apache.commons.jxpath.JXPathContext;
import org.apache.commons.jxpath.JXPathException;
-import org.apache.commons.jxpath.JXPathIntrospector;
import org.apache.commons.jxpath.ri.QName;
import org.apache.commons.jxpath.ri.model.NodePointer;
import org.apache.commons.jxpath.util.ValueUtils;
@@ -174,7 +172,7 @@
* property. If the property is not a collection, index should be zero
* and the value will be the property itself.
*/
- public Object getNode(){
+ public Object getImmediateNode(){
if (value == UNINITIALIZED){
Object baseValue = getBaseValue();
if (index == WHOLE_COLLECTION){
@@ -194,6 +192,41 @@
return getPropertyDescriptor() != null;
}
+ public boolean isCollection(){
+ PropertyDescriptor pd = getPropertyDescriptor();
+ if (pd == null){
+ return false;
+ }
+
+ int hint = ValueUtils.getCollectionHint(pd.getPropertyType());
+ if (hint == -1){
+ return false;
+ }
+ if (hint == 1){
+ return true;
+ }
+
+ Object value = getBaseValue();
+ return value != null && ValueUtils.isCollection(value);
+ }
+
+ /**
+ * If the property contains a collection, then the length of that
+ * collection, otherwise - 1.
+ */
+ public int getLength(){
+ PropertyDescriptor pd = getPropertyDescriptor();
+ if (pd == null){
+ return 1;
+ }
+
+ int hint = ValueUtils.getCollectionHint(pd.getPropertyType());
+ if (hint == -1){
+ return 1;
+ }
+ return ValueUtils.getLength(getBaseValue());
+ }
+
/**
* If index == WHOLE_COLLECTION, change the value of the property, otherwise
* change the value of the index'th element of the collection
1.8 +8 -8 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/CollectionPointer.java
Index: CollectionPointer.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/CollectionPointer.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- CollectionPointer.java 20 Oct 2002 03:47:17 -0000 1.7
+++ CollectionPointer.java 26 Nov 2002 01:20:06 -0000 1.8
@@ -117,7 +117,7 @@
return index == WHOLE_COLLECTION;
}
- public Object getNode(){
+ public Object getImmediateNode(){
if (index != WHOLE_COLLECTION){
return ValueUtils.getValue(collection, index);
}
@@ -144,9 +144,9 @@
valuePointer = this;
}
else {
- Object value = getNode();
- valuePointer = NodePointer.
- newChildNodePointer(this, getName(), value);
+ Object value = getImmediateNode();
+ valuePointer =
+ NodePointer.newChildNodePointer(this, getName(), value);
}
}
return valuePointer;
1.10 +133 -112 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/DynamicPropertyPointer.java
Index: DynamicPropertyPointer.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/DynamicPropertyPointer.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- DynamicPropertyPointer.java 20 Oct 2002 03:47:17 -0000 1.9
+++ DynamicPropertyPointer.java 26 Nov 2002 01:20:06 -0000 1.10
@@ -63,11 +63,7 @@
import java.util.Arrays;
-import org.apache.commons.jxpath.AbstractFactory;
-import org.apache.commons.jxpath.DynamicPropertyHandler;
-import org.apache.commons.jxpath.JXPathContext;
-import org.apache.commons.jxpath.JXPathException;
-import org.apache.commons.jxpath.JXPathIntrospector;
+import org.apache.commons.jxpath.*;
import org.apache.commons.jxpath.ri.QName;
import org.apache.commons.jxpath.ri.model.NodePointer;
import org.apache.commons.jxpath.util.ValueUtils;
@@ -84,11 +80,13 @@
private String[] names;
private String requiredPropertyName;
- public DynamicPropertyPointer(NodePointer parent, DynamicPropertyHandler handler){
- super(parent);
- this.handler = handler;
- }
-
+ public DynamicPropertyPointer(
+ NodePointer parent,
+ DynamicPropertyHandler handler)
+ {
+ super(parent);
+ this.handler = handler;
+ }
/**
* This type of node is auxiliary.
*/
@@ -203,15 +201,18 @@
* property. If the property is not a collection, index should be zero
* and the value will be the property itself.
*/
- public Object getNode(){
- Object value;
- if (index == WHOLE_COLLECTION){
- value = handler.getProperty(getBean(), getPropertyName());
- }
- else {
- value = ValueUtils.getValue(handler.getProperty(getBean(), getPropertyName()), index);
- }
- return value;
+ public Object getImmediateNode(){
+ Object value;
+ if (index == WHOLE_COLLECTION) {
+ value = handler.getProperty(getBean(), getPropertyName());
+ }
+ else {
+ value =
+ ValueUtils.getValue(
+ handler.getProperty(getBean(), getPropertyName()),
+ index);
+ }
+ return value;
}
/**
@@ -228,12 +229,15 @@
* represented by the property.
*/
public void setValue(Object value){
- if (index == WHOLE_COLLECTION){
- handler.setProperty(getBean(), getPropertyName(), value);
- }
- else {
- ValueUtils.setValue(handler.getProperty(getBean(), getPropertyName()), index, value);
- }
+ if (index == WHOLE_COLLECTION) {
+ handler.setProperty(getBean(), getPropertyName(), value);
+ }
+ else {
+ ValueUtils.setValue(
+ handler.getProperty(getBean(), getPropertyName()),
+ index,
+ value);
+ }
}
public NodePointer createPath(JXPathContext context, Object value){
@@ -241,101 +245,118 @@
}
public NodePointer createChild(JXPathContext context, QName name, int index, Object value){
- // Ignore the name passed to us, use our own data
- if (index == WHOLE_COLLECTION){
- handler.setProperty(getBean(), getPropertyName(), value);
- }
- else {
- Object collection = getBaseValue();
- if (collection == null){
- AbstractFactory factory = getAbstractFactory(context);
- if (!factory.createObject(context, this, getBean(), getPropertyName(), 0)){
- throw new JXPathException("Factory could not create an object for path: " + asPath());
- }
- collection = getBaseValue();
- }
-
- if (index < 0){
- throw new JXPathException("Index is less than 1: " + asPath());
- }
-
- if (index >= getLength()){
- collection = ValueUtils.expandCollection(collection, index + 1);
- handler.setProperty(getBean(), getPropertyName(), collection);
- }
-
- ValueUtils.setValue(collection, index, value);
- }
- NodePointer ptr = (NodePointer)clone();
- ptr.setIndex(index);
- return ptr;
+ // Ignore the name passed to us, use our own data
+ if (index == WHOLE_COLLECTION) {
+ handler.setProperty(getBean(), getPropertyName(), value);
+ }
+ else {
+ Object collection = getBaseValue();
+ if (collection == null) {
+ AbstractFactory factory = getAbstractFactory(context);
+ if (!factory
+ .createObject(
+ context,
+ this,
+ getBean(),
+ getPropertyName(),
+ 0)) {
+ throw new JXPathException(
+ "Factory could not create an object for path: "
+ + asPath());
+ }
+ collection = getBaseValue();
+ }
+
+ if (index < 0) {
+ throw new JXPathException("Index is less than 1: " + asPath());
+ }
+
+ if (index >= getLength()) {
+ collection = ValueUtils.expandCollection(collection, index + 1);
+ handler.setProperty(getBean(), getPropertyName(), collection);
+ }
+
+ ValueUtils.setValue(collection, index, value);
+ }
+ NodePointer ptr = (NodePointer) clone();
+ ptr.setIndex(index);
+ return ptr;
}
public NodePointer createChild(JXPathContext context, QName name, int index){
- // Ignore the name passed to us, use our own data
- Object collection = getBaseValue();
- if (collection == null){
- AbstractFactory factory = getAbstractFactory(context);
- if (!factory.createObject(context, this, getBean(), getPropertyName(), 0)){
- throw new JXPathException("Factory could not create an object for path: " + asPath());
- }
- collection = getBaseValue();
- }
-
- if (index < 0){
- throw new JXPathException("Index is less than 1: " + asPath());
- }
-
- if (index >= getLength()){
- collection = ValueUtils.expandCollection(collection, index + 1);
- handler.setProperty(getBean(), getPropertyName(), collection);
- }
-
- DynamicPropertyPointer pointer = (DynamicPropertyPointer)this.clone();
- pointer.setIndex(index);
- return pointer;
+ // Ignore the name passed to us, use our own data
+ Object collection = getBaseValue();
+ if (collection == null) {
+ AbstractFactory factory = getAbstractFactory(context);
+ if (!factory
+ .createObject(context, this, getBean(), getPropertyName(), 0)) {
+ throw new JXPathException(
+ "Factory could not create an object for path: " + asPath());
+ }
+ collection = getBaseValue();
+ }
+
+ if (index < 0) {
+ throw new JXPathException("Index is less than 1: " + asPath());
+ }
+
+ if (index >= getLength()) {
+ collection = ValueUtils.expandCollection(collection, index + 1);
+ handler.setProperty(getBean(), getPropertyName(), collection);
+ }
+
+ DynamicPropertyPointer pointer = (DynamicPropertyPointer) this.clone();
+ pointer.setIndex(index);
+ return pointer;
}
public NodePointer createPath(JXPathContext context){
- if (getNode() == null){
- AbstractFactory factory = getAbstractFactory(context);
- int inx = (index == WHOLE_COLLECTION ? 0 : index);
- if (!factory.createObject(context, this, getBean(), getPropertyName(), inx)){
- throw new JXPathException("Factory could not create an object for path: " + asPath());
- }
- }
- return this;
+ if (getNode() == null) {
+ AbstractFactory factory = getAbstractFactory(context);
+ int inx = (index == WHOLE_COLLECTION ? 0 : index);
+ if (!factory
+ .createObject(
+ context,
+ this,
+ getBean(),
+ getPropertyName(),
+ inx)) {
+ throw new JXPathException(
+ "Factory could not create an object for path: " + asPath());
+ }
+ }
+ return this;
}
public void remove(){
- if (index == WHOLE_COLLECTION){
- handler.setProperty(getBean(), getPropertyName(), null);
- }
- else if (isCollection()){
- Object collection = ValueUtils.remove(getBaseValue(), index);
- handler.setProperty(getBean(), getPropertyName(), collection);
- }
- else if (index == 0){
- handler.setProperty(getBean(), getPropertyName(), null);
- }
+ if (index == WHOLE_COLLECTION) {
+ handler.setProperty(getBean(), getPropertyName(), null);
+ }
+ else if (isCollection()) {
+ Object collection = ValueUtils.remove(getBaseValue(), index);
+ handler.setProperty(getBean(), getPropertyName(), collection);
+ }
+ else if (index == 0) {
+ handler.setProperty(getBean(), getPropertyName(), null);
+ }
}
public String asPath(){
- StringBuffer buffer = new StringBuffer();
- buffer.append(getParent().asPath());
- if (buffer.length() == 0){
- buffer.append("/.");
- }
- else if (buffer.charAt(buffer.length() - 1) == '/'){
- buffer.append('.');
- }
- buffer.append("[@name='");
- buffer.append(escape(getPropertyName()));
- buffer.append("']");
- if (index != WHOLE_COLLECTION && isCollection()){
- buffer.append('[').append(index + 1).append(']');
- }
- return buffer.toString();
+ StringBuffer buffer = new StringBuffer();
+ buffer.append(getParent().asPath());
+ if (buffer.length() == 0) {
+ buffer.append("/.");
+ }
+ else if (buffer.charAt(buffer.length() - 1) == '/') {
+ buffer.append('.');
+ }
+ buffer.append("[@name='");
+ buffer.append(escape(getPropertyName()));
+ buffer.append("']");
+ if (index != WHOLE_COLLECTION && isCollection()) {
+ buffer.append('[').append(index + 1).append(']');
+ }
+ return buffer.toString();
}
private String escape(String string){
1.6 +5 -5 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/LangAttributePointer.java
Index: LangAttributePointer.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/LangAttributePointer.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- LangAttributePointer.java 20 Oct 2002 03:47:17 -0000 1.5
+++ LangAttributePointer.java 26 Nov 2002 01:20:06 -0000 1.6
@@ -101,7 +101,7 @@
return parent.getLocale().toString().replace('_', '-');
}
- public Object getNode(){
+ public Object getImmediateNode(){
return getBaseValue();
}
1.10 +5 -5 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/NullElementPointer.java
Index: NullElementPointer.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/NullElementPointer.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- NullElementPointer.java 20 Oct 2002 03:47:17 -0000 1.9
+++ NullElementPointer.java 26 Nov 2002 01:20:06 -0000 1.10
@@ -94,7 +94,7 @@
return null;
}
- public Object getNode(){
+ public Object getImmediateNode(){
return null;
}
1.10 +5 -5 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/NullPropertyPointer.java
Index: NullPropertyPointer.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/NullPropertyPointer.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- NullPropertyPointer.java 20 Oct 2002 03:47:17 -0000 1.9
+++ NullPropertyPointer.java 26 Nov 2002 01:20:06 -0000 1.10
@@ -96,7 +96,7 @@
return null;
}
- public Object getNode(){
+ public Object getImmediateNode(){
return null;
}
1.10 +5 -5 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/PropertyOwnerPointer.java
Index: PropertyOwnerPointer.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/PropertyOwnerPointer.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- PropertyOwnerPointer.java 20 Oct 2002 03:47:17 -0000 1.9
+++ PropertyOwnerPointer.java 26 Nov 2002 01:20:06 -0000 1.10
@@ -130,7 +130,7 @@
private static final Object UNINITIALIZED = new Object();
private Object value = UNINITIALIZED;
- public Object getNode(){
+ public Object getImmediateNode(){
if (value == UNINITIALIZED){
if (index == WHOLE_COLLECTION){
value = getBaseValue();
1.7 +10 -7 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/PropertyPointer.java
Index: PropertyPointer.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/PropertyPointer.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- PropertyPointer.java 20 Oct 2002 03:47:17 -0000 1.6
+++ PropertyPointer.java 26 Nov 2002 01:20:06 -0000 1.7
@@ -128,7 +128,7 @@
private static final Object UNINITIALIZED = new Object();
private Object value = UNINITIALIZED;
- public Object getNode(){
+ public Object getImmediateNode(){
if (value == UNINITIALIZED){
if (index == WHOLE_COLLECTION){
value = getBaseValue();
@@ -164,8 +164,11 @@
* Returns a NodePointer that can be used to access the currently
* selected property value.
*/
- public NodePointer getValuePointer(){
- return NodePointer.newChildNodePointer(this, getName(), getNode());
+ public NodePointer getImmediateValuePointer(){
+ return NodePointer.newChildNodePointer(
+ this,
+ getName(),
+ getImmediateNode());
}
public int hashCode(){
1.6 +10 -9 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/container/ContainerPointer.java
Index: ContainerPointer.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/container/ContainerPointer.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ContainerPointer.java 20 Oct 2002 03:47:18 -0000 1.5
+++ ContainerPointer.java 26 Nov 2002 01:20:07 -0000 1.6
@@ -124,7 +124,7 @@
return getValuePointer().isLeaf();
}
- public Object getNode(){
+ public Object getImmediateNode(){
Object value = getBaseValue();
if (index != WHOLE_COLLECTION){
if (index >= 0 && index < getLength()){
@@ -141,10 +141,11 @@
container.setValue(value);
}
- public NodePointer getValuePointer(){
- if (valuePointer == null){
- Object value = getNode();
- valuePointer = NodePointer.newChildNodePointer(this, getName(), value).getValuePointer();
+ public NodePointer getImmediateValuePointer(){
+ if (valuePointer == null) {
+ Object value = getImmediateNode();
+ valuePointer =
+ NodePointer.newChildNodePointer(this, getName(), value);
}
return valuePointer;
}
1.8 +5 -5 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/dom/DOMAttributePointer.java
Index: DOMAttributePointer.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/dom/DOMAttributePointer.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- DOMAttributePointer.java 20 Oct 2002 03:47:18 -0000 1.7
+++ DOMAttributePointer.java 26 Nov 2002 01:20:07 -0000 1.8
@@ -111,7 +111,7 @@
return 1;
}
- public Object getNode(){
+ public Object getImmediateNode(){
String value = attr.getValue();
if (value == null){
return null;
1.12 +5 -5 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/dom/DOMNodePointer.java
Index: DOMNodePointer.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/dom/DOMNodePointer.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- DOMNodePointer.java 20 Oct 2002 03:44:52 -0000 1.11
+++ DOMNodePointer.java 26 Nov 2002 01:20:07 -0000 1.12
@@ -301,7 +301,7 @@
return node;
}
- public Object getNode(){
+ public Object getImmediateNode(){
return node;
}
1.7 +5 -5 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/dom/NamespacePointer.java
Index: NamespacePointer.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/dom/NamespacePointer.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- NamespacePointer.java 20 Oct 2002 03:47:18 -0000 1.6
+++ NamespacePointer.java 26 Nov 2002 01:20:07 -0000 1.7
@@ -104,7 +104,7 @@
return 1;
}
- public Object getNode(){
+ public Object getImmediateNode(){
return getNamespaceURI();
}
1.2 +7 -10 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/dynabeans/DynaBeanPointer.java
Index: DynaBeanPointer.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/dynabeans/DynaBeanPointer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DynaBeanPointer.java 20 Oct 2002 03:44:18 -0000 1.1
+++ DynaBeanPointer.java 26 Nov 2002 01:20:07 -0000 1.2
@@ -61,16 +61,13 @@
*/
package org.apache.commons.jxpath.ri.model.dynabeans;
-import java.beans.PropertyDescriptor;
import java.util.Locale;
import org.apache.commons.beanutils.DynaBean;
-import org.apache.commons.jxpath.ri.model.beans.PropertyOwnerPointer;
-import org.apache.commons.jxpath.ri.model.beans.PropertyPointer;
-import org.apache.commons.jxpath.JXPathIntrospector;
import org.apache.commons.jxpath.ri.QName;
import org.apache.commons.jxpath.ri.model.NodePointer;
-import org.apache.commons.jxpath.util.ValueUtils;
+import org.apache.commons.jxpath.ri.model.beans.PropertyOwnerPointer;
+import org.apache.commons.jxpath.ri.model.beans.PropertyPointer;
/**
@@ -114,7 +111,7 @@
return dynaBean;
}
- public Object getNode(){
+ public Object getImmediateNode(){
return dynaBean;
}
1.2 +4 -5 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/dynabeans/DynaBeanPointerFactory.java
Index: DynaBeanPointerFactory.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/dynabeans/DynaBeanPointerFactory.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DynaBeanPointerFactory.java 20 Oct 2002 03:44:18 -0000 1.1
+++ DynaBeanPointerFactory.java 26 Nov 2002 01:20:07 -0000 1.2
@@ -64,7 +64,6 @@
import java.util.Locale;
import org.apache.commons.beanutils.DynaBean;
-import org.apache.commons.beanutils.DynaClass;
import org.apache.commons.jxpath.ri.QName;
import org.apache.commons.jxpath.ri.model.NodePointer;
import org.apache.commons.jxpath.ri.model.NodePointerFactory;
1.3 +149 -128 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/dynabeans/DynaBeanPropertyPointer.java
Index: DynaBeanPropertyPointer.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/dynabeans/DynaBeanPropertyPointer.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DynaBeanPropertyPointer.java 20 Oct 2002 03:47:18 -0000 1.2
+++ DynaBeanPropertyPointer.java 26 Nov 2002 01:20:07 -0000 1.3
@@ -67,14 +67,11 @@
import org.apache.commons.beanutils.DynaClass;
import org.apache.commons.beanutils.DynaProperty;
import org.apache.commons.jxpath.AbstractFactory;
-import org.apache.commons.jxpath.ri.model.beans.PropertyOwnerPointer;
import org.apache.commons.jxpath.JXPathContext;
import org.apache.commons.jxpath.JXPathException;
-import org.apache.commons.jxpath.JXPathIntrospector;
import org.apache.commons.jxpath.ri.QName;
-import org.apache.commons.jxpath.ri.model.beans.PropertyPointer;
import org.apache.commons.jxpath.ri.model.NodePointer;
-import org.apache.commons.jxpath.util.TypeConverter;
+import org.apache.commons.jxpath.ri.model.beans.PropertyPointer;
import org.apache.commons.jxpath.util.TypeUtils;
import org.apache.commons.jxpath.util.ValueUtils;
@@ -197,7 +194,7 @@
* property. If the property is not a collection, index should be zero
* and the value will be the property itself.
*/
- public Object getNode(){
+ public Object getImmediateNode(){
String name = getPropertyName();
if (name.equals("*")){
return null;
@@ -265,118 +262,140 @@
public NodePointer createChild(JXPathContext context,
QName name, int index, Object value)
{
- // Ignore the name passed to us, use our own data
- if (index == WHOLE_COLLECTION){
- setValue(index, value);
- }
- else if (isIndexedProperty()){
- dynaBean.set(getPropertyName(), index, convert(value, true));
- }
- else {
- Object collection = getBaseValue();
- if (collection == null){
- AbstractFactory factory = getAbstractFactory(context);
- if (!factory.createObject(
- context, this, getBean(), getPropertyName(), 0)){
- throw new JXPathException(
- "Factory could not create an object for path: " +
- asPath());
- }
- collection = getBaseValue();
- }
-
- if (index < 0){
- throw new JXPathException("Index is less than 1: " + asPath());
- }
-
- if (index >= getLength()){
- collection = ValueUtils.expandCollection(collection, index + 1);
- dynaBean.set(getPropertyName(), collection);
- }
-
- ValueUtils.setValue(collection, index, value);
- }
- NodePointer ptr = (NodePointer)clone();
- ptr.setIndex(index);
- return ptr;
+ // Ignore the name passed to us, use our own data
+ if (index == WHOLE_COLLECTION) {
+ setValue(index, value);
+ }
+ else if (isIndexedProperty()) {
+ dynaBean.set(getPropertyName(), index, convert(value, true));
+ }
+ else {
+ Object collection = getBaseValue();
+ if (collection == null) {
+ AbstractFactory factory = getAbstractFactory(context);
+ if (!factory
+ .createObject(
+ context,
+ this,
+ getBean(),
+ getPropertyName(),
+ 0)) {
+ throw new JXPathException(
+ "Factory could not create an object for path: "
+ + asPath());
+ }
+ collection = getBaseValue();
+ }
+
+ if (index < 0) {
+ throw new JXPathException("Index is less than 1: " + asPath());
+ }
+
+ if (index >= getLength()) {
+ collection = ValueUtils.expandCollection(collection, index + 1);
+ dynaBean.set(getPropertyName(), collection);
+ }
+
+ ValueUtils.setValue(collection, index, value);
+ }
+ NodePointer ptr = (NodePointer) clone();
+ ptr.setIndex(index);
+ return ptr;
}
public NodePointer createChild(JXPathContext context,
QName name, int index)
{
- if (isIndexedProperty()){
- AbstractFactory factory = getAbstractFactory(context);
- if (!factory.createObject(
- context, this, dynaBean, getPropertyName(), index)){
- throw new JXPathException(
- "Factory could not create an object for path: " + asPath());
- }
- }
- else {
- // Ignore the name passed to us, use our own data
- Object collection = getBaseValue();
- if (collection == null){
- AbstractFactory factory = getAbstractFactory(context);
- if (!factory.createObject(
- context, this, dynaBean, getPropertyName(), index)){
- throw new JXPathException(
- "Factory could not create an object for path: " +
- asPath());
- }
- collection = getBaseValue();
- }
-
- if (index < 0){
- throw new JXPathException("Index is less than 1: " + asPath());
- }
-
- if (index >= getLength()){
- collection = ValueUtils.expandCollection(collection, index + 1);
- dynaBean.set(getPropertyName(), collection);
- }
- }
-
- DynaBeanPropertyPointer pointer = (DynaBeanPropertyPointer)this.clone();
- pointer.setIndex(index);
- return pointer;
+ if (isIndexedProperty()) {
+ AbstractFactory factory = getAbstractFactory(context);
+ if (!factory
+ .createObject(
+ context,
+ this,
+ dynaBean,
+ getPropertyName(),
+ index)) {
+ throw new JXPathException(
+ "Factory could not create an object for path: " + asPath());
+ }
+ }
+ else {
+ // Ignore the name passed to us, use our own data
+ Object collection = getBaseValue();
+ if (collection == null) {
+ AbstractFactory factory = getAbstractFactory(context);
+ if (!factory
+ .createObject(
+ context,
+ this,
+ dynaBean,
+ getPropertyName(),
+ index)) {
+ throw new JXPathException(
+ "Factory could not create an object for path: "
+ + asPath());
+ }
+ collection = getBaseValue();
+ }
+
+ if (index < 0) {
+ throw new JXPathException("Index is less than 1: " + asPath());
+ }
+
+ if (index >= getLength()) {
+ collection = ValueUtils.expandCollection(collection, index + 1);
+ dynaBean.set(getPropertyName(), collection);
+ }
+ }
+
+ DynaBeanPropertyPointer pointer =
+ (DynaBeanPropertyPointer) this.clone();
+ pointer.setIndex(index);
+ return pointer;
}
public NodePointer createPath(JXPathContext context){
- if (getNode() == null){
- AbstractFactory factory = getAbstractFactory(context);
- int inx = (index == WHOLE_COLLECTION ? 0 : index);
- if (!factory.createObject(
- context, this, dynaBean, getPropertyName(), inx)){
- throw new JXPathException(
- "Factory could not create an object for path: " +
- asPath());
- }
- }
+ if (getNode() == null) {
+ AbstractFactory factory = getAbstractFactory(context);
+ int inx = (index == WHOLE_COLLECTION ? 0 : index);
+ if (!factory
+ .createObject(
+ context,
+ this,
+ dynaBean,
+ getPropertyName(),
+ inx)) {
+ throw new JXPathException(
+ "Factory could not create an object for path: " + asPath());
+ }
+ }
return this;
}
public void remove(){
- if (index == WHOLE_COLLECTION){
- dynaBean.set(getPropertyName(), null);
- }
- else if (isIndexedProperty()){
- dynaBean.set(getPropertyName(), index, null);
- }
- else if (isCollection()){
- Object collection = ValueUtils.remove(getBaseValue(), index);
- dynaBean.set(getPropertyName(), collection);
- }
- else if (index == 0){
- dynaBean.set(getPropertyName(), null);
- }
+ if (index == WHOLE_COLLECTION) {
+ dynaBean.set(getPropertyName(), null);
+ }
+ else if (isIndexedProperty()) {
+ dynaBean.set(getPropertyName(), index, null);
+ }
+ else if (isCollection()) {
+ Object collection = ValueUtils.remove(getBaseValue(), index);
+ dynaBean.set(getPropertyName(), collection);
+ }
+ else if (index == 0) {
+ dynaBean.set(getPropertyName(), null);
+ }
}
private AbstractFactory getAbstractFactory(JXPathContext context){
- AbstractFactory factory = context.getFactory();
- if (factory == null){
- throw new JXPathException("Factory is not set on the JXPathContext - cannot create path: " + asPath());
- }
- return factory;
+ AbstractFactory factory = context.getFactory();
+ if (factory == null) {
+ throw new JXPathException(
+ "Factory is not set on the JXPathContext - cannot create path: "
+ + asPath());
+ }
+ return factory;
}
private void setValue(int index, Object value){
@@ -394,27 +413,29 @@
private Object convert(Object value, boolean element){
- DynaClass dynaClass = (DynaClass)dynaBean.getDynaClass();
- DynaProperty property =
- dynaClass.getDynaProperty(getPropertyName());
- Class type = property.getType();
- if (element){
- if (type.isArray()){
- type = type.getComponentType();
- }
- else {
- return value; // No need to convert
- }
- }
-
- try {
- return TypeUtils.convert(value, type);
- }
- catch (Exception ex){
- ex.printStackTrace();
- throw new JXPathException("Cannot convert value of class " +
- (value == null ? "null" : value.getClass().getName()) +
- " to type " + type, ex);
- }
+ DynaClass dynaClass = (DynaClass) dynaBean.getDynaClass();
+ DynaProperty property = dynaClass.getDynaProperty(getPropertyName());
+ Class type = property.getType();
+ if (element) {
+ if (type.isArray()) {
+ type = type.getComponentType();
+ }
+ else {
+ return value; // No need to convert
+ }
+ }
+
+ try {
+ return TypeUtils.convert(value, type);
+ }
+ catch (Exception ex) {
+ ex.printStackTrace();
+ throw new JXPathException(
+ "Cannot convert value of class "
+ + (value == null ? "null" : value.getClass().getName())
+ + " to type "
+ + type,
+ ex);
+ }
}
}
1.3 +17 -21 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/jdom/JDOMAttributePointer.java
Index: JDOMAttributePointer.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/jdom/JDOMAttributePointer.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- JDOMAttributePointer.java 20 Oct 2002 03:47:18 -0000 1.2
+++ JDOMAttributePointer.java 26 Nov 2002 01:20:07 -0000 1.3
@@ -61,10 +61,7 @@
*/
package org.apache.commons.jxpath.ri.model.jdom;
-import org.apache.commons.jxpath.ri.Compiler;
import org.apache.commons.jxpath.ri.QName;
-import org.apache.commons.jxpath.ri.compiler.NodeTest;
-import org.apache.commons.jxpath.ri.compiler.NodeTypeTest;
import org.apache.commons.jxpath.ri.model.NodePointer;
import org.apache.commons.jxpath.util.TypeUtils;
import org.jdom.Attribute;
@@ -83,9 +80,11 @@
this.attr = attr;
}
- public QName getName(){
- return new QName(JDOMNodePointer.getPrefix(attr), JDOMNodePointer.getLocalName(attr));
- }
+ public QName getName() {
+ return new QName(
+ JDOMNodePointer.getPrefix(attr),
+ JDOMNodePointer.getLocalName(attr));
+ }
public QName getExpandedName(){
return new QName(getNamespaceURI(), attr.getName());
@@ -111,7 +110,7 @@
return 1;
}
- public Object getNode(){
+ public Object getImmediateNode(){
String value = attr.getValue();
if (value == null){
return null;
@@ -127,12 +126,6 @@
return true;
}
-// public boolean testNode(NodeTest nodeTest){
-// return nodeTest == null ||
-// ((nodeTest instanceof NodeTypeTest) &&
-// ((NodeTypeTest)nodeTest).getNodeType() == Compiler.NODE_TYPE_NODE);
-// }
-
/**
* Sets the value of this attribute.
*/
@@ -177,8 +170,11 @@
return attr == other.attr;
}
- public int compareChildNodePointers(NodePointer pointer1, NodePointer pointer2){
- // Won't happen - attributes don't have children
- return 0;
- }
+ public int compareChildNodePointers(
+ NodePointer pointer1,
+ NodePointer pointer2)
+ {
+ // Won't happen - attributes don't have children
+ return 0;
+ }
}
1.2 +6 -24 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/jdom/JDOMNamespaceIterator.java
Index: JDOMNamespaceIterator.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/jdom/JDOMNamespaceIterator.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- JDOMNamespaceIterator.java 26 Aug 2002 22:29:48 -0000 1.1
+++ JDOMNamespaceIterator.java 26 Nov 2002 01:20:07 -0000 1.2
@@ -61,13 +61,12 @@
*/
package org.apache.commons.jxpath.ri.model.jdom;
-import java.util.ArrayList;
-import java.util.List;
import java.util.*;
import org.apache.commons.jxpath.ri.model.NodeIterator;
import org.apache.commons.jxpath.ri.model.NodePointer;
-import org.jdom.*;
+import org.jdom.Element;
+import org.jdom.Namespace;
/**
* An iterator of namespaces of a DOM Node.
@@ -88,22 +87,10 @@
namespaces = new ArrayList();
prefixes = new HashSet();
collectNamespaces((Element)parent.getNode());
-// System.err.println("NAMESPACES: " + namespaces);
}
}
private void collectNamespaces(Element element){
-// NamedNodeMap map = node.getAttributes();
-// int count = map.getLength();
-// for (int i = 0; i < count; i++){
-// Attr attr = (Attr)map.item(i);
-// String prefix = DOMNodePointer.getPrefix(attr);
-// String name = DOMNodePointer.getLocalName(attr);
-// if ((prefix != null && prefix.equals("xmlns")) ||
-// (prefix == null && name.equals("xmlns"))){
-// attributes.add(attr);
-// }
-// }
Namespace ns = element.getNamespace();
if (ns != null && !prefixes.contains(ns.getPrefix())){
namespaces.add(ns);
@@ -134,12 +121,7 @@
if (index < 0){
index = 0;
}
- String prefix = "";
Namespace ns = (Namespace)namespaces.get(index);
-// String name = attr.getPrefix();
-// if (name != null && name.equals("xmlns")){
-// prefix = JDOMNodePointer.getLocalName(attr);
-// }
return new JDOMNamespacePointer(parent, ns.getPrefix(), ns.getURI());
}
1.3 +21 -24 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/jdom/JDOMNamespacePointer.java
Index: JDOMNamespacePointer.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/jdom/JDOMNamespacePointer.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- JDOMNamespacePointer.java 20 Oct 2002 03:47:18 -0000 1.2
+++ JDOMNamespacePointer.java 26 Nov 2002 01:20:07 -0000 1.3
@@ -61,10 +61,7 @@
*/
package org.apache.commons.jxpath.ri.model.jdom;
-import org.apache.commons.jxpath.ri.Compiler;
import org.apache.commons.jxpath.ri.QName;
-import org.apache.commons.jxpath.ri.compiler.NodeTest;
-import org.apache.commons.jxpath.ri.compiler.NodeTypeTest;
import org.apache.commons.jxpath.ri.model.NodePointer;
/**
@@ -82,11 +79,15 @@
this.prefix = prefix;
}
- public JDOMNamespacePointer(NodePointer parent, String prefix, String namespaceURI){
- super(parent);
- this.prefix = prefix;
- this.namespaceURI = namespaceURI;
- }
+ public JDOMNamespacePointer(
+ NodePointer parent,
+ String prefix,
+ String namespaceURI)
+ {
+ super(parent);
+ this.prefix = prefix;
+ this.namespaceURI = namespaceURI;
+ }
public QName getName(){
return new QName(getNamespaceURI(), prefix);
@@ -104,7 +105,7 @@
return 1;
}
- public Object getNode(){
+ public Object getImmediateNode(){
return getNamespaceURI();
}
@@ -126,13 +127,6 @@
throw new UnsupportedOperationException("Cannot modify a namespace");
}
- /*
- public boolean testNode(NodeTest nodeTest){
- return nodeTest == null ||
- ((nodeTest instanceof NodeTypeTest) &&
- ((NodeTypeTest)nodeTest).getNodeType() == Compiler.NODE_TYPE_NODE);
- }
-*/
public String asPath(){
StringBuffer buffer = new StringBuffer();
if (parent != null){
@@ -164,8 +158,11 @@
return prefix.equals(other.prefix);
}
- public int compareChildNodePointers(NodePointer pointer1, NodePointer pointer2){
- // Won't happen - namespaces don't have children
- return 0;
- }
+ public int compareChildNodePointers(
+ NodePointer pointer1,
+ NodePointer pointer2)
+ {
+ // Won't happen - namespaces don't have children
+ return 0;
+ }
}
1.4 +61 -70 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/jdom/JDOMNodePointer.java
Index: JDOMNodePointer.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/jdom/JDOMNodePointer.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JDOMNodePointer.java 20 Oct 2002 03:44:51 -0000 1.3
+++ JDOMNodePointer.java 26 Nov 2002 01:20:07 -0000 1.4
@@ -61,7 +61,6 @@
*/
package org.apache.commons.jxpath.ri.model.jdom;
-import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
@@ -71,21 +70,11 @@
import org.apache.commons.jxpath.JXPathException;
import org.apache.commons.jxpath.ri.Compiler;
import org.apache.commons.jxpath.ri.QName;
-import org.apache.commons.jxpath.ri.compiler.NodeNameTest;
-import org.apache.commons.jxpath.ri.compiler.NodeTest;
-import org.apache.commons.jxpath.ri.compiler.NodeTypeTest;
-import org.apache.commons.jxpath.ri.compiler.ProcessingInstructionTest;
+import org.apache.commons.jxpath.ri.compiler.*;
import org.apache.commons.jxpath.ri.model.NodeIterator;
import org.apache.commons.jxpath.ri.model.NodePointer;
import org.apache.commons.jxpath.util.TypeUtils;
-import org.jdom.Attribute;
-import org.jdom.CDATA;
-import org.jdom.Comment;
-import org.jdom.Document;
-import org.jdom.Element;
-import org.jdom.Namespace;
-import org.jdom.ProcessingInstruction;
-import org.jdom.Text;
+import org.jdom.*;
/**
* A Pointer that points to a DOM node.
@@ -263,7 +252,7 @@
/**
* @see org.apache.commons.jxpath.ri.model.NodePointer#getNode()
*/
- public Object getNode() {
+ public Object getImmediateNode() {
return node;
}
@@ -580,31 +569,32 @@
}
public NodePointer createAttribute(JXPathContext context, QName name){
- if (!(node instanceof Element)){
- return super.createAttribute(context, name);
- }
-
- Element element = (Element)node;
- String prefix = name.getPrefix();
- if (prefix != null){
- Namespace ns = element.getNamespace(prefix);
- if (ns == null){
- throw new JXPathException("Unknown namespace prefix: " + prefix);
- }
- Attribute attr = element.getAttribute(name.getName(), ns);
- if (attr == null){
- element.setAttribute(name.getName(), "", ns);
- }
- }
- else {
- Attribute attr = element.getAttribute(name.getName());
- if (attr == null){
- element.setAttribute(name.getName(), "");
- }
- }
- NodeIterator it = attributeIterator(name);
- it.setPosition(1);
- return it.getNodePointer();
+ if (!(node instanceof Element)) {
+ return super.createAttribute(context, name);
+ }
+
+ Element element = (Element) node;
+ String prefix = name.getPrefix();
+ if (prefix != null) {
+ Namespace ns = element.getNamespace(prefix);
+ if (ns == null) {
+ throw new JXPathException(
+ "Unknown namespace prefix: " + prefix);
+ }
+ Attribute attr = element.getAttribute(name.getName(), ns);
+ if (attr == null) {
+ element.setAttribute(name.getName(), "", ns);
+ }
+ }
+ else {
+ Attribute attr = element.getAttribute(name.getName());
+ if (attr == null) {
+ element.setAttribute(name.getName(), "");
+ }
+ }
+ NodeIterator it = attributeIterator(name);
+ it.setPosition(1);
+ return it.getNodePointer();
}
public void remove(){
@@ -723,24 +713,25 @@
}
private int getRelativePositionOfPI(String target){
- Element parent = ((ProcessingInstruction)node).getParent();
- if (parent == null){
- return 1;
- }
- List children = parent.getContent();
- int count = 0;
- for (int i = 0; i < children.size(); i++){
- Object child = children.get(i);
- if (child instanceof ProcessingInstruction &&
- (target == null ||
- target.equals(((ProcessingInstruction)child).getTarget()))){
- count++;
- }
- if (child == node){
- break;
- }
- }
- return count;
+ Element parent = ((ProcessingInstruction) node).getParent();
+ if (parent == null) {
+ return 1;
+ }
+ List children = parent.getContent();
+ int count = 0;
+ for (int i = 0; i < children.size(); i++) {
+ Object child = children.get(i);
+ if (child instanceof ProcessingInstruction
+ && (target == null
+ || target.equals(
+ ((ProcessingInstruction) child).getTarget()))) {
+ count++;
+ }
+ if (child == node) {
+ break;
+ }
+ }
+ return count;
}
public int hashCode(){
@@ -760,13 +751,13 @@
return node == other.node;
}
- private AbstractFactory getAbstractFactory(JXPathContext context){
- AbstractFactory factory = context.getFactory();
- if (factory == null){
- throw new JXPathException(
- "Factory is not set on the JXPathContext - " +
- "cannot create path: " + asPath());
- }
- return factory;
- }
+ private AbstractFactory getAbstractFactory(JXPathContext context) {
+ AbstractFactory factory = context.getFactory();
+ if (factory == null) {
+ throw new JXPathException(
+ "Factory is not set on the JXPathContext - cannot create path: "
+ + asPath());
+ }
+ return factory;
+ }
}
1.2 +8 -7 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/util/MethodLookupUtils.java
Index: MethodLookupUtils.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/util/MethodLookupUtils.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MethodLookupUtils.java 12 Jun 2002 21:02:05 -0000 1.1
+++ MethodLookupUtils.java 26 Nov 2002 01:20:07 -0000 1.2
@@ -61,12 +61,13 @@
*/
package org.apache.commons.jxpath.util;
-import java.lang.reflect.*;
-import java.util.*;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.Arrays;
import org.apache.commons.jxpath.ExpressionContext;
import org.apache.commons.jxpath.JXPathException;
-import org.apache.commons.jxpath.Pointer;
/**
* Method lookup utilities, which find static and non-static methods as well
1.9 +4 -11 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/util/TypeUtils.java
Index: TypeUtils.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/util/TypeUtils.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- TypeUtils.java 16 Jun 2002 03:22:21 -0000 1.8
+++ TypeUtils.java 26 Nov 2002 01:20:07 -0000 1.9
@@ -61,13 +61,6 @@
*/
package org.apache.commons.jxpath.util;
-import java.lang.reflect.*;
-import java.util.*;
-
-import org.apache.commons.jxpath.ExpressionContext;
-import org.apache.commons.jxpath.JXPathException;
-import org.apache.commons.jxpath.Pointer;
-
/**
* Global type conversion utilities.
*
1.10 +42 -13 jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/util/ValueUtils.java
Index: ValueUtils.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/util/ValueUtils.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ValueUtils.java 20 Oct 2002 03:43:55 -0000 1.9
+++ ValueUtils.java 26 Nov 2002 01:20:07 -0000 1.10
@@ -63,11 +63,13 @@
import java.beans.IndexedPropertyDescriptor;
import java.beans.PropertyDescriptor;
-import java.lang.reflect.*;
+import java.lang.reflect.Array;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
import java.util.*;
-import org.apache.commons.jxpath.JXPathException;
import org.apache.commons.jxpath.DynamicPropertyHandler;
+import org.apache.commons.jxpath.JXPathException;
/**
* Collection and property access utilities.
@@ -93,6 +95,35 @@
}
return false;
}
+
+ /**
+ * Returns 1 if the type is a collection,
+ * -1 if it is definitely not
+ * and 0 if it may be a collection in some cases.
+ */
+ public static int getCollectionHint(Class clazz){
+ if (clazz.isArray()){
+ return 1;
+ }
+
+ if (Collection.class.isAssignableFrom(clazz)){
+ return 1;
+ }
+
+ if (clazz.isPrimitive()){
+ return -1;
+ }
+
+ if (clazz.isInterface()){
+ return 0;
+ }
+
+ if (Modifier.isFinal(clazz.getModifiers())){
+ return -1;
+ }
+
+ return 0;
+ }
/**
* Returns the length of the supplied collection. If the supplied object
@@ -336,7 +367,6 @@
public static Object getValue(Object bean,
PropertyDescriptor propertyDescriptor, int index){
if (propertyDescriptor instanceof IndexedPropertyDescriptor){
- Object value;
try {
IndexedPropertyDescriptor ipd =
(IndexedPropertyDescriptor)propertyDescriptor;
@@ -448,12 +478,11 @@
}
// Check the implemented interfaces and subinterfaces
- String methodName = method.getName();
- Class[] parameterTypes = method.getParameterTypes();
- method =
- getAccessibleMethodFromInterfaceNest(clazz,
- method.getName(),
- method.getParameterTypes());
+ method =
+ getAccessibleMethodFromInterfaceNest(
+ clazz,
+ method.getName(),
+ method.getParameterTypes());
return (method);
}
1.30 +7 -92 jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/JXPathTestCase.java
Index: JXPathTestCase.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/JXPathTestCase.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- JXPathTestCase.java 20 Oct 2002 03:48:21 -0000 1.29
+++ JXPathTestCase.java 26 Nov 2002 01:20:08 -0000 1.30
@@ -62,26 +62,11 @@
package org.apache.commons.jxpath;
-import java.lang.reflect.InvocationTargetException;
+import java.util.*;
-import junit.framework.Test;
import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import org.w3c.dom.*;
-import java.util.*;
-import java.lang.reflect.*;
-import org.apache.commons.jxpath.*;
-import org.apache.commons.jxpath.util.*;
-import org.apache.commons.jxpath.ri.*;
-import org.apache.commons.jxpath.ri.parser.*;
-import org.apache.commons.jxpath.ri.model.*;
-import org.apache.commons.jxpath.ri.model.beans.*;
-import org.apache.commons.jxpath.ri.axes.*;
-import org.apache.commons.jxpath.ri.compiler.*;
-import org.apache.commons.jxpath.ri.compiler.Expression;
-import org.apache.commons.jxpath.xml.*;
-import java.beans.*;
+import org.apache.commons.jxpath.ri.model.NodePointer;
/**
* Abstract superclass for various JXPath tests.
@@ -101,77 +86,7 @@
{
super(name);
}
-/*
- protected void testXPaths(JXPathContext ctx, XPathTest xpath_tests[])
- throws Exception
- {
- Exception exception = null;
- for (int i=0; i < xpath_tests.length; i++) {
- try {
- Object actual;
- // System.err.println("XPATH: " + xpath_tests[i].xpath);
- if (xpath_tests[i].path){
- if (xpath_tests[i].eval){
- Iterator it = ctx.iteratePointers(xpath_tests[i].xpath);
- List paths = new ArrayList();
- while (it.hasNext()){
- paths.add(((Pointer)it.next()).asPath());
- }
- actual = paths;
- }
- else {
- ctx.setLenient(xpath_tests[i].lenient);
- actual = ctx.getPointer(xpath_tests[i].xpath).asPath();
- }
- }
- else {
- if (xpath_tests[i].eval){
- ArrayList list = new ArrayList();
- Iterator it = ctx.iterate(xpath_tests[i].xpath);
- while (it.hasNext()){
- list.add(it.next());
- }
- actual = list;
- }
- else {
- ctx.setLenient(xpath_tests[i].lenient);
- actual = ctx.getValue(xpath_tests[i].xpath);
- ctx.setLenient(false);
- }
- }
- assertEquals("Evaluating <" + xpath_tests[i].xpath + ">",
- xpath_tests[i].expected, actual);
- }
- catch (Exception ex){
- System.err.println("Exception during <" +
- xpath_tests[i].xpath + ">");
- ex.printStackTrace();
- exception = ex;
- }
- if (exception != null){
- throw exception;
- }
- }
-
- // Make sure that location paths are properly constructed
- for (int i=0; i < xpath_tests.length; i++) {
- try {
- if (!xpath_tests[i].path && !xpath_tests[i].eval){
- Pointer ptr = ctx.getPointer(xpath_tests[i].xpath);
- Pointer test = ctx.getPointer(ptr.asPath());
- assertEquals(
- "Testing pointer for <" + xpath_tests[i].xpath + ">",
- ptr.asPath(), test.asPath());
- }
- }
- catch (Exception ex){
- System.err.println("Exception during pointer test <" +
- xpath_tests[i].xpath + ">");
- ex.printStackTrace();
- }
- }
- }
-*/
+
protected void assertXPathValue(JXPathContext ctx,
String xpath, Object expected)
{
1.2 +3 -4 jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/TestNull.java
Index: TestNull.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/TestNull.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestNull.java 23 Aug 2001 00:47:02 -0000 1.1
+++ TestNull.java 26 Nov 2002 01:20:08 -0000 1.2
@@ -62,7 +62,6 @@
package org.apache.commons.jxpath;
-import java.util.*;
/**
* General purpose test bean for JUnit tests for the "jxpath" component.
1.3 +175 -128 jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/axes/SimplePathInterpreterTest.java
Index: SimplePathInterpreterTest.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/axes/SimplePathInterpreterTest.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- SimplePathInterpreterTest.java 20 Oct 2002 03:48:22 -0000 1.2
+++ SimplePathInterpreterTest.java 26 Nov 2002 01:20:08 -0000 1.3
@@ -55,150 +55,157 @@
public void test_doStep_noPredicates_propertyOwner(){
// Existing scalar property
- testValueAndPointer("/int",
+ assertValueAndPointer("/int",
new Integer(1),
"/int",
+ "Bb",
"BbB");
// self::
- testValueAndPointer("/./int",
+ assertValueAndPointer("/./int",
new Integer(1),
"/int",
+ "Bb",
"BbB");
// Missing property
- testNullPointer("/foo",
+ assertNullPointer("/foo",
"/foo",
- "BnN");
+ "Bn");
// existingProperty/existingScalarProperty
- testValueAndPointer("/nestedBean/int",
+ assertValueAndPointer("/nestedBean/int",
new Integer(1),
"/nestedBean/int",
+ "BbBb",
"BbBbB");
// existingProperty/collectionProperty
- testValueAndPointer("/nestedBean/strings",
+ assertValueAndPointer("/nestedBean/strings",
bean.getNestedBean().getStrings(),
"/nestedBean/strings",
+ "BbBb",
"BbBbC");
// existingProperty/missingProperty
- testNullPointer("/nestedBean/foo",
+ assertNullPointer("/nestedBean/foo",
"/nestedBean/foo",
- "BbBnN");
+ "BbBn");
// map/missingProperty
- testNullPointer("/map/foo",
+ assertNullPointer("/map/foo",
"/map[@name='foo']",
- "BbDdN");
+ "BbDd");
// Existing property by search in collection
- testValueAndPointer("/list/int",
+ assertValueAndPointer("/list/int",
new Integer(1),
"/list[3]/int",
+ "BbBb",
"BbBbB");
// Missing property by search in collection
- testNullPointer("/list/foo",
+ assertNullPointer("/list/foo",
"/list[1]/foo",
- "BbBnN");
+ "BbBn");
// existingProperty/missingProperty/missingProperty
- testNullPointer("/nestedBean/foo/bar",
+ assertNullPointer("/nestedBean/foo/bar",
"/nestedBean/foo/bar",
- "BbBnNnN");
+ "BbBnNn");
// collection/existingProperty/missingProperty
- testNullPointer("/list/int/bar",
+ assertNullPointer("/list/int/bar",
"/list[3]/int/bar",
- "BbBbBnN");
+ "BbBbBn");
// collectionProperty/missingProperty/missingProperty
- testNullPointer("/list/foo/bar",
+ assertNullPointer("/list/foo/bar",
"/list[1]/foo/bar",
- "BbBnNnN");
+ "BbBnNn");
// map/missingProperty/anotherStep
- testNullPointer("/map/foo/bar",
+ assertNullPointer("/map/foo/bar",
"/map[@name='foo']/bar",
- "BbDdNnN");
+ "BbDdNn");
// Existing dynamic property
- testValueAndPointer("/map/Key1",
+ assertValueAndPointer("/map/Key1",
"Value 1",
"/map[@name='Key1']",
+ "BbDd",
"BbDdB");
// collectionProperty
- testValueAndPointer("/integers",
+ assertValueAndPointer("/integers",
bean.getIntegers(),
"/integers",
+ "Bb",
"BbC");
}
public void test_doStep_noPredicates_standard(){
// Existing DOM node
- testValueAndPointer("/vendor/location/address/city",
+ assertValueAndPointer("/vendor/location/address/city",
"Fruit Market",
"/vendor/location[2]/address[1]/city[1]",
"BbMMMM");
// Missing DOM node
- testNullPointer("/vendor/location/address/pity",
+ assertNullPointer("/vendor/location/address/pity",
"/vendor/location[1]/address[1]/pity",
- "BbMMMnN");
+ "BbMMMn");
// Missing DOM node inside a missing element
- testNullPointer("/vendor/location/address/itty/bitty",
+ assertNullPointer("/vendor/location/address/itty/bitty",
"/vendor/location[1]/address[1]/itty/bitty",
- "BbMMMnNnN");
+ "BbMMMnNn");
// Missing DOM node by search for the best match
- testNullPointer("/vendor/location/address/city/pretty",
+ assertNullPointer("/vendor/location/address/city/pretty",
"/vendor/location[2]/address[1]/city[1]/pretty",
- "BbMMMMnN");
+ "BbMMMMn");
}
public void test_doStep_predicates_propertyOwner(){
// missingProperty[@name=foo]
- testNullPointer("/foo[@name='foo']",
+ assertNullPointer("/foo[@name='foo']",
"/foo[@name='foo']",
- "BnNnN");
+ "BnNn");
// missingProperty[index]
- testNullPointer("/foo[3]",
+ assertNullPointer("/foo[3]",
"/foo[3]",
- "BnN");
+ "Bn");
}
public void test_doStep_predicates_standard(){
// Looking for an actual XML attribute called "name"
// nodeProperty/name[@name=value]
- testValueAndPointer("/vendor/contact[@name='jack']",
+ assertValueAndPointer("/vendor/contact[@name='jack']",
"Jack",
"/vendor/contact[2]",
"BbMM");
// Indexing in XML
- testValueAndPointer("/vendor/contact[2]",
+ assertValueAndPointer("/vendor/contact[2]",
"Jack",
"/vendor/contact[2]",
"BbMM");
// Indexing in XML, no result
- testNullPointer("/vendor/contact[5]",
+ assertNullPointer("/vendor/contact[5]",
"/vendor/contact[5]",
- "BbMnN");
+ "BbMn");
// Combination of search by name and indexing in XML
- testValueAndPointer("/vendor/contact[@name='jack'][2]",
+ assertValueAndPointer("/vendor/contact[@name='jack'][2]",
"Jack Black",
"/vendor/contact[4]",
"BbMM");
// Combination of search by name and indexing in XML
- testValueAndPointer("/vendor/contact[@name='jack'][2]",
+ assertValueAndPointer("/vendor/contact[@name='jack'][2]",
"Jack Black",
"/vendor/contact[4]",
"BbMM");
@@ -206,126 +213,135 @@
public void test_doPredicate_name(){
// existingProperty[@name=existingProperty]
- testValueAndPointer("/nestedBean[@name='int']",
+ assertValueAndPointer("/nestedBean[@name='int']",
new Integer(1),
"/nestedBean/int",
+ "BbBb",
"BbBbB");
// /self::node()[@name=existingProperty]
- testValueAndPointer("/.[@name='int']",
+ assertValueAndPointer("/.[@name='int']",
new Integer(1),
"/int",
+ "Bb",
"BbB");
// dynamicProperty[@name=existingProperty]
- testValueAndPointer("/map[@name='Key1']",
+ assertValueAndPointer("/map[@name='Key1']",
"Value 1",
"/map[@name='Key1']",
+ "BbDd",
"BbDdB");
// existingProperty[@name=collectionProperty]
- testValueAndPointer("/nestedBean[@name='strings']",
+ assertValueAndPointer("/nestedBean[@name='strings']",
bean.getNestedBean().getStrings(),
"/nestedBean/strings",
+ "BbBb",
"BbBbC");
// existingProperty[@name=missingProperty]
- testNullPointer("/nestedBean[@name='foo']",
+ assertNullPointer("/nestedBean[@name='foo']",
"/nestedBean[@name='foo']",
- "BbBnN");
+ "BbBn");
// map[@name=collectionProperty]
- testValueAndPointer("/map[@name='Key3']",
+ assertValueAndPointer("/map[@name='Key3']",
bean.getMap().get("Key3"),
"/map[@name='Key3']",
+ "BbDd",
"BbDdC");
-
+
// map[@name=missingProperty]
- testNullPointer("/map[@name='foo']",
+ assertNullPointer("/map[@name='foo']",
"/map[@name='foo']",
- "BbDdN");
+ "BbDd");
// collectionProperty[@name=...] (find node)
- testValueAndPointer("/list[@name='fruitco']",
+ assertValueAndPointer("/list[@name='fruitco']",
context.getValue("/vendor"),
"/list[5]",
"BbCM");
// collectionProperty[@name=...] (find map entry)
- testValueAndPointer("/map/Key3[@name='key']/name",
+ assertValueAndPointer("/map/Key3[@name='key']/name",
"Name 9",
"/map[@name='Key3'][4][@name='key']/name",
+ "BbDdCDdBb",
"BbDdCDdBbB");
// map/collectionProperty[@name...]
- testValueAndPointer("map/Key3[@name='fruitco']",
+ assertValueAndPointer("map/Key3[@name='fruitco']",
context.getValue("/vendor"),
"/map[@name='Key3'][3]",
"BbDdCM");
// Bean property -> DOM Node, name match
- testValueAndPointer("/vendor[@name='fruitco']",
+ assertValueAndPointer("/vendor[@name='fruitco']",
context.getValue("/vendor"),
"/vendor",
"BbM");
// Bean property -> DOM Node, name mismatch
- testNullPointer("/vendor[@name='foo']",
+ assertNullPointer("/vendor[@name='foo']",
"/vendor[@name='foo']",
- "BbMnN");
+ "BbMn");
- testNullPointer("/vendor[@name='foo'][3]",
+ assertNullPointer("/vendor[@name='foo'][3]",
"/vendor[@name='foo'][3]",
- "BbMnN");
+ "BbMn");
// existingProperty(bean)[@name=missingProperty]/anotherStep
- testNullPointer("/nestedBean[@name='foo']/bar",
+ assertNullPointer("/nestedBean[@name='foo']/bar",
"/nestedBean[@name='foo']/bar",
- "BbBnNnN");
+ "BbBnNn");
// map[@name=missingProperty]/anotherStep
- testNullPointer("/map[@name='foo']/bar",
+ assertNullPointer("/map[@name='foo']/bar",
"/map[@name='foo']/bar",
- "BbDdNnN");
+ "BbDdNn");
// existingProperty(node)[@name=missingProperty]/anotherStep
- testNullPointer("/vendor[@name='foo']/bar",
+ assertNullPointer("/vendor[@name='foo']/bar",
"/vendor[@name='foo']/bar",
- "BbMnNnN");
+ "BbMnNn");
// existingProperty(node)[@name=missingProperty][index]/anotherStep
- testNullPointer("/vendor[@name='foo'][3]/bar",
+ assertNullPointer("/vendor[@name='foo'][3]/bar",
"/vendor[@name='foo'][3]/bar",
- "BbMnNnN");
+ "BbMnNn");
// Existing dynamic property + existing property
- testValueAndPointer("/map[@name='Key2'][@name='name']",
+ assertValueAndPointer("/map[@name='Key2'][@name='name']",
"Name 6",
"/map[@name='Key2']/name",
+ "BbDdBb",
"BbDdBbB");
// Existing dynamic property + existing property + index
- testValueAndPointer("/map[@name='Key2'][@name='strings'][2]",
+ assertValueAndPointer("/map[@name='Key2'][@name='strings'][2]",
"String 2",
"/map[@name='Key2']/strings[2]",
+ "BbDdBb",
"BbDdBbB");
// bean/map/map/property
- testValueAndPointer("map[@name='Key5'][@name='key']/name",
+ assertValueAndPointer("map[@name='Key5'][@name='key']/name",
"Name 9",
"/map[@name='Key5'][@name='key']/name",
+ "BbDdDdBb",
"BbDdDdBbB");
- testNullPointer("map[@name='Key2'][@name='foo']",
+ assertNullPointer("map[@name='Key2'][@name='foo']",
"/map[@name='Key2'][@name='foo']",
- "BbDdBnN");
+ "BbDdBn");
- testNullPointer("map[@name='Key2'][@name='foo'][@name='bar']",
+ assertNullPointer("map[@name='Key2'][@name='foo'][@name='bar']",
"/map[@name='Key2'][@name='foo'][@name='bar']",
- "BbDdBnNnN");
+ "BbDdBnNn");
// bean/map/node
- testValueAndPointer("map[@name='Key4'][@name='fruitco']",
+ assertValueAndPointer("map[@name='Key4'][@name='fruitco']",
context.getValue("/vendor"),
"/map[@name='Key4']",
"BbDdM");
@@ -333,40 +349,40 @@
public void test_doPredicates_standard(){
// bean/map/collection/node
- testValueAndPointer("map[@name='Key3'][@name='fruitco']",
+ assertValueAndPointer("map[@name='Key3'][@name='fruitco']",
context.getValue("/vendor"),
"/map[@name='Key3'][3]",
"BbDdCM");
// bean/map/collection/missingNode
- testNullPointer("map[@name='Key3'][@name='foo']",
+ assertNullPointer("map[@name='Key3'][@name='foo']",
"/map[@name='Key3'][4][@name='foo']",
- "BbDdCDdN");
+ "BbDdCDd");
// bean/map/node
- testValueAndPointer("map[@name='Key4'][@name='fruitco']",
+ assertValueAndPointer("map[@name='Key4'][@name='fruitco']",
context.getValue("/vendor"),
"/map[@name='Key4']",
"BbDdM");
// bean/map/emptyCollection[@name=foo]
- testNullPointer("map[@name='Key6'][@name='fruitco']",
+ assertNullPointer("map[@name='Key6'][@name='fruitco']",
"/map[@name='Key6'][@name='fruitco']",
- "BbDdCnN");
+ "BbDdCn");
// bean/node[@name=foo][index]
- testValueAndPointer("/vendor/contact[@name='jack'][2]",
+ assertValueAndPointer("/vendor/contact[@name='jack'][2]",
"Jack Black",
"/vendor/contact[4]",
"BbMM");
// bean/node[@name=foo][missingIndex]
- testNullPointer("/vendor/contact[@name='jack'][5]",
+ assertNullPointer("/vendor/contact[@name='jack'][5]",
"/vendor/contact[@name='jack'][5]",
- "BbMnNnN");
+ "BbMnNn");
// bean/node/.[@name=foo][index]
- testValueAndPointer("/vendor/contact/.[@name='jack']",
+ assertValueAndPointer("/vendor/contact/.[@name='jack']",
"Jack",
"/vendor/contact[2]",
"BbMM");
@@ -374,135 +390,147 @@
public void test_doPredicate_index(){
// Existing dynamic property + existing property + index
- testValueAndPointer("/map[@name='Key2'][@name='strings'][2]",
+ assertValueAndPointer("/map[@name='Key2'][@name='strings'][2]",
"String 2",
"/map[@name='Key2']/strings[2]",
+ "BbDdBb",
"BbDdBbB");
// existingProperty[@name=collectionProperty][index]
- testValueAndPointer("/nestedBean[@name='strings'][2]",
+ assertValueAndPointer("/nestedBean[@name='strings'][2]",
bean.getNestedBean().getStrings()[1],
"/nestedBean/strings[2]",
+ "BbBb",
"BbBbB");
// existingProperty[@name=missingProperty][index]
- testNullPointer("/nestedBean[@name='foo'][3]",
+ assertNullPointer("/nestedBean[@name='foo'][3]",
"/nestedBean[@name='foo'][3]",
- "BbBnN");
+ "BbBn");
// existingProperty[@name=collectionProperty][missingIndex]
- testNullPointer("/nestedBean[@name='strings'][5]",
+ assertNullPointer("/nestedBean[@name='strings'][5]",
"/nestedBean/strings[5]",
- "BbBbEN");
+ "BbBbE");
// map[@name=collectionProperty][index]
- testValueAndPointer("/map[@name='Key3'][2]",
+ assertValueAndPointer("/map[@name='Key3'][2]",
new Integer(2),
"/map[@name='Key3'][2]",
+ "BbDd",
"BbDdB");
// map[@name=collectionProperty][missingIndex]
- testNullPointer("/map[@name='Key3'][5]",
+ assertNullPointer("/map[@name='Key3'][5]",
"/map[@name='Key3'][5]",
- "BbDdEN");
+ "BbDdE");
// map[@name=collectionProperty][missingIndex]/property
- testNullPointer("/map[@name='Key3'][5]/foo",
+ assertNullPointer("/map[@name='Key3'][5]/foo",
"/map[@name='Key3'][5]/foo",
- "BbDdENnN");
+ "BbDdENn");
// map[@name=map][@name=collection][index]
- testValueAndPointer("/map[@name='Key5'][@name='strings'][2]",
+ assertValueAndPointer("/map[@name='Key5'][@name='strings'][2]",
"String 2",
"/map[@name='Key5'][@name='strings'][2]",
+ "BbDdDd",
"BbDdDdB");
// map[@name=map][@name=collection][missingIndex]
- testNullPointer("/map[@name='Key5'][@name='strings'][5]",
+ assertNullPointer("/map[@name='Key5'][@name='strings'][5]",
"/map[@name='Key5'][@name='strings'][5]",
- "BbDdDdEN");
+ "BbDdDdE");
// Existing dynamic property + indexing
- testValueAndPointer("/map[@name='Key3'][2]",
+ assertValueAndPointer("/map[@name='Key3'][2]",
new Integer(2),
"/map[@name='Key3'][2]",
+ "BbDd",
"BbDdB");
// Existing dynamic property + indexing
- testValueAndPointer("/map[@name='Key3'][1]/name",
+ assertValueAndPointer("/map[@name='Key3'][1]/name",
"some",
"/map[@name='Key3'][1]/name",
+ "BbDdBb",
"BbDdBbB");
// map[@name=missingProperty][index]
- testNullPointer("/map[@name='foo'][3]",
+ assertNullPointer("/map[@name='foo'][3]",
"/map[@name='foo'][3]",
- "BbDdEN");
+ "BbDdE");
// collectionProperty[index]
- testValueAndPointer("/integers[2]",
+ assertValueAndPointer("/integers[2]",
new Integer(2),
"/integers[2]",
+ "Bb",
"BbB");
// existingProperty/collectionProperty[index]
- testValueAndPointer("/nestedBean/strings[2]",
+ assertValueAndPointer("/nestedBean/strings[2]",
bean.getNestedBean().getStrings()[1],
"/nestedBean/strings[2]",
+ "BbBb",
"BbBbB");
// existingProperty[index]/existingProperty
- testValueAndPointer("/list[3]/int",
+ assertValueAndPointer("/list[3]/int",
new Integer(1),
"/list[3]/int",
+ "BbBb",
"BbBbB");
// existingProperty[missingIndex]
- testNullPointer("/list[6]",
+ assertNullPointer("/list[6]",
"/list[6]",
- "BbEN");
+ "BbE");
// existingProperty/missingProperty[index]
- testNullPointer("/nestedBean/foo[3]",
+ assertNullPointer("/nestedBean/foo[3]",
"/nestedBean/foo[3]",
- "BbBnN");
+ "BbBn");
// map[@name=missingProperty][index]
- testNullPointer("/map/foo[3]",
+ assertNullPointer("/map/foo[3]",
"/map[@name='foo'][3]",
- "BbDdEN");
+ "BbDdE");
// existingProperty/collectionProperty[missingIndex]
- testNullPointer("/nestedBean/strings[5]",
+ assertNullPointer("/nestedBean/strings[5]",
"/nestedBean/strings[5]",
- "BbBbEN");
+ "BbBbE");
// map/collectionProperty[missingIndex]/property
- testNullPointer("/map/Key3[5]/foo",
+ assertNullPointer("/map/Key3[5]/foo",
"/map[@name='Key3'][5]/foo",
- "BbDdENnN");
+ "BbDdENn");
// map[@name=map]/collection[index]
- testValueAndPointer("/map[@name='Key5']/strings[2]",
+ assertValueAndPointer("/map[@name='Key5']/strings[2]",
"String 2",
"/map[@name='Key5'][@name='strings'][2]",
+ "BbDdDd",
"BbDdDdB");
// map[@name=map]/collection[missingIndex]
- testNullPointer("/map[@name='Key5']/strings[5]",
+ assertNullPointer("/map[@name='Key5']/strings[5]",
"/map[@name='Key5'][@name='strings'][5]",
- "BbDdDdEN");
+ "BbDdDdE");
// scalarPropertyAsCollection[index]
- testValueAndPointer("/int[1]",
+ assertValueAndPointer("/int[1]",
new Integer(1),
"/int",
+ "Bb",
"BbB");
// scalarPropertyAsCollection[index]
- testValueAndPointer(".[1]/int",
+ assertValueAndPointer(".[1]/int",
new Integer(1),
"/int",
+ "Bb",
"BbB");
}
@@ -510,15 +538,27 @@
context.getVariables().declareVariable("array", new String[]{"Value1"});
context.getVariables().declareVariable("testnull", new TestNull());
- testNullPointer("$testnull/nothing[2]",
+ assertNullPointer("$testnull/nothing[2]",
"$testnull/nothing[2]",
- "VBbEN");
+ "VBbE");
}
- private void testValueAndPointer(
+ private void assertValueAndPointer(
String path, Object expectedValue, String expectedPath,
String expectedSignature)
{
+ assertValueAndPointer(
+ path,
+ expectedValue,
+ expectedPath,
+ expectedSignature,
+ expectedSignature);
+ }
+
+ private void assertValueAndPointer(
+ String path, Object expectedValue, String expectedPath,
+ String expectedSignature, String expectedValueSignature)
+ {
Object value = context.getValue(path);
assertEquals("Checking value: " + path, expectedValue, value);
@@ -528,21 +568,28 @@
assertEquals("Checking signature: " + path,
expectedSignature, pointerSignature(pointer));
+
+ Pointer vPointer = ((NodePointer)pointer).getValuePointer();
+ assertEquals("Checking value pointer signature: " + path,
+ expectedValueSignature, pointerSignature(vPointer));
}
-
- private void testNullPointer(String path, String expectedPath,
+ private void assertNullPointer(String path, String expectedPath,
String expectedSignature)
{
Pointer pointer = context.getPointer(path);
assertNotNull("Null path exists: " + path,
pointer);
- assertTrue("Null path is null: " + path,
- !((NodePointer)pointer).isActual());
assertEquals("Null path as path: " + path,
expectedPath, pointer.asPath());
assertEquals("Checking Signature: " + path,
- expectedSignature, pointerSignature(pointer));
+ expectedSignature, pointerSignature(pointer));
+
+ Pointer vPointer = ((NodePointer)pointer).getValuePointer();
+ assertTrue("Null path is null: " + path,
+ !((NodePointer)vPointer).isActual());
+ assertEquals("Checking value pointer signature: " + path,
+ expectedSignature + "N", pointerSignature(vPointer));
}
/**
1.2 +6 -4 jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/compiler/CoreFunctionTest.java
Index: CoreFunctionTest.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/compiler/CoreFunctionTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- CoreFunctionTest.java 20 Oct 2002 03:48:22 -0000 1.1
+++ CoreFunctionTest.java 26 Nov 2002 01:20:08 -0000 1.2
@@ -147,7 +147,9 @@
public void testIDFunction(){
context.setIdentityManager(new IdentityManager(){
public Pointer getPointerByID(JXPathContext context, String id){
- NodePointer ptr = (NodePointer)context.getPointer("/document");
+ NodePointer ptr = (NodePointer)context.
+ getPointer("/document");
+ ptr = ptr.getValuePointer();
return ptr.getPointerByID(context, id);
}
});
1.2 +3 -4 jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/compiler/TestFunctions2.java
Index: TestFunctions2.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/compiler/TestFunctions2.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestFunctions2.java 20 Oct 2002 03:48:22 -0000 1.1
+++ TestFunctions2.java 26 Nov 2002 01:20:08 -0000 1.2
@@ -61,7 +61,6 @@
*/
package org.apache.commons.jxpath.ri.compiler;
-import java.util.*;
/**
* @author Dmitri Plotnikov
1.2 +147 -127 jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/model/BeanModelTestCase.java
Index: BeanModelTestCase.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/model/BeanModelTestCase.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BeanModelTestCase.java 20 Oct 2002 03:48:22 -0000 1.1
+++ BeanModelTestCase.java 26 Nov 2002 01:20:08 -0000 1.2
@@ -62,18 +62,9 @@
package org.apache.commons.jxpath.ri.model;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-
-import junit.framework.TestSuite;
-
-import org.apache.commons.jxpath.AbstractFactory;
-import org.apache.commons.jxpath.JXPathContext;
-import org.apache.commons.jxpath.JXPathTestCase;
-import org.apache.commons.jxpath.NestedTestBean;
-import org.apache.commons.jxpath.Pointer;
+import java.util.*;
+
+import org.apache.commons.jxpath.*;
import org.apache.commons.jxpath.ri.QName;
import org.apache.commons.jxpath.ri.compiler.NodeNameTest;
import org.apache.commons.jxpath.ri.model.beans.PropertyOwnerPointer;
@@ -88,7 +79,6 @@
public abstract class BeanModelTestCase extends JXPathTestCase
{
- private static boolean enabled = true;
private JXPathContext context;
/**
@@ -115,10 +105,6 @@
* Test property iterators, the core of the graph traversal engine
*/
public void testIndividualIterators(){
- if (!enabled){
- return;
- }
-// testIndividual(0, 0, true, false, 3);
testIndividual(+1, 0, true, false, 0);
testIndividual(-1, 0, true, false, 4);
@@ -136,41 +122,49 @@
private void testIndividual(int relativePropertyIndex, int offset,
boolean useStartLocation, boolean reverse, int expected)
{
- PropertyOwnerPointer root =
- (PropertyOwnerPointer)NodePointer.newNodePointer(
- new QName(null, "root"), createContextBean(),
- Locale.getDefault());
-
- NodeIterator it;
-
- PropertyPointer start = null;
-
- if (useStartLocation){
- start = root.getPropertyPointer();
- start.setPropertyIndex(relativeProperty(start, relativePropertyIndex));
- start.setIndex(offset);
- }
- it = root.childIterator(
- new NodeNameTest(new QName(null, "integers")),
- reverse, start);
-
- int size = 0;
- while(it.setPosition(it.getPosition() + 1)){
- size++;
- }
- assertEquals("ITERATIONS: Individual, relativePropertyIndex=" +
- relativePropertyIndex +
- ", offset=" + offset + ", useStartLocation=" + useStartLocation +
- ", reverse=" + reverse, expected, size);
+ PropertyOwnerPointer root =
+ (PropertyOwnerPointer) NodePointer.newNodePointer(
+ new QName(null, "root"),
+ createContextBean(),
+ Locale.getDefault());
+
+ NodeIterator it;
+
+ PropertyPointer start = null;
+
+ if (useStartLocation) {
+ start = root.getPropertyPointer();
+ start.setPropertyIndex(
+ relativeProperty(start, relativePropertyIndex));
+ start.setIndex(offset);
+ }
+ it =
+ root.childIterator(
+ new NodeNameTest(new QName(null, "integers")),
+ reverse,
+ start);
+
+ int size = 0;
+ while (it.setPosition(it.getPosition() + 1)) {
+ size++;
+ }
+ assertEquals(
+ "ITERATIONS: Individual, relativePropertyIndex="
+ + relativePropertyIndex
+ + ", offset="
+ + offset
+ + ", useStartLocation="
+ + useStartLocation
+ + ", reverse="
+ + reverse,
+ expected,
+ size);
}
/**
* Test property iterators with multiple properties returned
*/
public void testMultipleIterators(){
- if (!enabled){
- return;
- }
testMultiple(0, 0, true, false, 20);
testMultiple(3, 0, true, false, 16);
@@ -222,40 +216,40 @@
}
public void testIteratePropertyArrayWithHasNext(){
- if (!enabled){
- return;
- }
- JXPathContext context = JXPathContext.newContext(createContextBean());
- Iterator it = context.iteratePointers("/integers");
- List actual = new ArrayList();
- while(it.hasNext()){
- actual.add(((Pointer)it.next()).asPath());
- }
- assertEquals("Iterating 'hasNext'/'next'<" + "/integers" + ">",
- list("/integers[1]", "/integers[2]", "/integers[3]", "/integers[4]"),
- actual);
- }
-
- public void testIteratePropertyArrayWithoutHasNext(){
- if (!enabled){
- return;
- }
- JXPathContext context = JXPathContext.newContext(createContextBean());
- Iterator it = context.iteratePointers("/integers");
- List actual = new ArrayList();
- for (int i = 0; i < 4; i++){
- actual.add(it.next().toString());
- }
- assertEquals("Iterating 'next'<" + "/integers" + ">",
- list("/integers[1]", "/integers[2]", "/integers[3]", "/integers[4]"),
- actual);
- }
+ JXPathContext context = JXPathContext.newContext(createContextBean());
+ Iterator it = context.iteratePointers("/integers");
+ List actual = new ArrayList();
+ while (it.hasNext()) {
+ actual.add(((Pointer) it.next()).asPath());
+ }
+ assertEquals(
+ "Iterating 'hasNext'/'next'<" + "/integers" + ">",
+ list(
+ "/integers[1]",
+ "/integers[2]",
+ "/integers[3]",
+ "/integers[4]"),
+ actual);
+ }
+
+ public void testIteratePropertyArrayWithoutHasNext() {
+ JXPathContext context = JXPathContext.newContext(createContextBean());
+ Iterator it = context.iteratePointers("/integers");
+ List actual = new ArrayList();
+ for (int i = 0; i < 4; i++) {
+ actual.add(it.next().toString());
+ }
+ assertEquals(
+ "Iterating 'next'<" + "/integers" + ">",
+ list(
+ "/integers[1]",
+ "/integers[2]",
+ "/integers[3]",
+ "/integers[4]"),
+ actual);
+ }
public void testIterateAndSet(){
- if (!enabled){
- return;
- }
-
JXPathContext context = JXPathContext.newContext(createContextBean());
Iterator it = context.iteratePointers("beans/int");
@@ -277,37 +271,40 @@
/**
* Test contributed by Kate Dvortsova
*/
- public void testIteratePointerSetValue() {
- JXPathContext context = JXPathContext.newContext(createContextBean());
+ public void testIteratePointerSetValue() {
+ JXPathContext context = JXPathContext.newContext(createContextBean());
- assertXPathValue(context, "/beans[1]/name", "Name 1");
- assertXPathValue(context, "/beans[2]/name", "Name 2");
+ assertXPathValue(context, "/beans[1]/name", "Name 1");
+ assertXPathValue(context, "/beans[2]/name", "Name 2");
- // Test setting via context
- context.setValue("/beans[2]/name", "Name 2 set");
- assertXPathValue(context, "/beans[2]/name", "Name 2 set");
-
- // Restore original value
- context.setValue("/beans[2]/name", "Name 2");
- assertXPathValue(context, "/beans[2]/name", "Name 2");
-
- int iter_count = 0;
- Iterator iter = context.iteratePointers("/beans/name");
- while (iter.hasNext()) {
- iter_count++;
- Pointer pointer = (Pointer) iter.next();
- String s = (String) pointer.getValue();
- s = s + "suffix";
- pointer.setValue(s);
- assertEquals("pointer.getValue", s, pointer.getValue());
- // fails right here, the value isn't getting set in the bean.
- assertEquals("context.getValue", s, context.getValue(pointer.asPath()));
- }
- assertEquals("Iteration count", 2, iter_count);
-
- assertXPathValue(context, "/beans[1]/name", "Name 1suffix");
- assertXPathValue(context, "/beans[2]/name", "Name 2suffix");
- }
+ // Test setting via context
+ context.setValue("/beans[2]/name", "Name 2 set");
+ assertXPathValue(context, "/beans[2]/name", "Name 2 set");
+
+ // Restore original value
+ context.setValue("/beans[2]/name", "Name 2");
+ assertXPathValue(context, "/beans[2]/name", "Name 2");
+
+ int iter_count = 0;
+ Iterator iter = context.iteratePointers("/beans/name");
+ while (iter.hasNext()) {
+ iter_count++;
+ Pointer pointer = (Pointer) iter.next();
+ String s = (String) pointer.getValue();
+ s = s + "suffix";
+ pointer.setValue(s);
+ assertEquals("pointer.getValue", s, pointer.getValue());
+ // fails right here, the value isn't getting set in the bean.
+ assertEquals(
+ "context.getValue",
+ s,
+ context.getValue(pointer.asPath()));
+ }
+ assertEquals("Iteration count", 2, iter_count);
+
+ assertXPathValue(context, "/beans[1]/name", "Name 1suffix");
+ assertXPathValue(context, "/beans[2]/name", "Name 2suffix");
+ }
public void testRoot(){
assertXPathValueAndPointer(context,
@@ -634,24 +631,47 @@
"/nestedBean/int");
}
- public void testAttributeLang(){
-
- assertXPathValue(context,
- "@xml:lang",
- "en-US");
+ public void testAttributeLang() {
- assertXPathValue(context,
- "count(@xml:*)",
- new Double(1));
-
- assertXPathValue(context,"lang('en')", Boolean.TRUE);
- assertXPathValue(context,"lang('fr')", Boolean.FALSE);
- assertXPathValueIterator(context, "beans[1]/strings[string-length() = 8]", list("String 1", "String 2", "String 3"));
- assertXPathValue(context,"boolean(boolean)", Boolean.FALSE);
- assertXPathValue(context,"boolean(integers[position() < 3])", Boolean.TRUE);
- assertXPathValue(context,"boolean(integers[position() > 4])", Boolean.FALSE);
- assertXPathValue(context,"sum(integers)", new Double(10));
- }
+ assertXPathValue(context,
+ "@xml:lang",
+ "en-US");
+
+ assertXPathValue(context,
+ "count(@xml:*)",
+ new Double(1));
+
+ assertXPathValue(context,
+ "lang('en')",
+ Boolean.TRUE);
+
+ assertXPathValue(context,
+ "lang('fr')",
+ Boolean.FALSE);
+
+ assertXPathValueIterator(
+ context,
+ "beans[1]/strings[string-length() = 8]",
+ list("String 1", "String 2", "String 3"));
+
+ assertXPathValue(context,
+ "boolean(boolean)",
+ Boolean.FALSE);
+
+ assertXPathValue(
+ context,
+ "boolean(integers[position() < 3])",
+ Boolean.TRUE);
+
+ assertXPathValue(
+ context,
+ "boolean(integers[position() > 4])",
+ Boolean.FALSE);
+
+ assertXPathValue(context,
+ "sum(integers)",
+ new Double(10));
+ }
public void testBooleanPredicate(){
// use child axis
1.2 +34 -39 jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/model/TestDynamicPropertyFactory.java
Index: TestDynamicPropertyFactory.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/model/TestDynamicPropertyFactory.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestDynamicPropertyFactory.java 20 Oct 2002 03:48:22 -0000 1.1
+++ TestDynamicPropertyFactory.java 26 Nov 2002 01:20:08 -0000 1.2
@@ -63,17 +63,10 @@
package org.apache.commons.jxpath.ri.model;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import java.util.Vector;
-import org.apache.commons.jxpath.AbstractFactory;
-import org.apache.commons.jxpath.JXPathContext;
-import org.apache.commons.jxpath.NestedTestBean;
-import org.apache.commons.jxpath.Pointer;
-import org.apache.commons.jxpath.TestBean;
-import org.jdom.Element;
-import org.w3c.dom.Node;
+import org.apache.commons.jxpath.*;
/**
* Test AbstractFactory.
@@ -87,33 +80,35 @@
* Create a new instance and put it in the collection on the parent object.
* Return <b>false</b> if this factory cannot create the requested object.
*/
- public boolean createObject(JXPathContext context, Pointer pointer, Object parent, String name, int index){
- if (name.equals("map")){
- ((TestBean)parent).setMap(new HashMap());
- return true;
- }
- else if (name.equals("TestKey1")){
- ((Map)parent).put(name, "");
- return true;
- }
- else if (name.equals("TestKey2")){
- ((Map)parent).put(name, new NestedTestBean("newName"));
- return true;
- }
- else if (name.equals("TestKey3")){
- Vector v = new Vector();
- for (int i = 0; i <= index; i++){
- v.add(null);
- }
- ((Map)parent).put(name, v);
- return true;
- }
- else if (name.equals("TestKey4")){
- ((Map)parent).put(name, new Object[]{new TestBean()});
- return true;
- }
- return false;
- }
+ public boolean createObject(
+ JXPathContext context,
+ Pointer pointer,
+ Object parent,
+ String name,
+ int index)
+ {
+ if (name.equals("map")) {
+ ((TestBean) parent).setMap(new HashMap());
+ return true;
+ } else if (name.equals("TestKey1")) {
+ ((Map) parent).put(name, "");
+ return true;
+ } else if (name.equals("TestKey2")) {
+ ((Map) parent).put(name, new NestedTestBean("newName"));
+ return true;
+ } else if (name.equals("TestKey3")) {
+ Vector v = new Vector();
+ for (int i = 0; i <= index; i++) {
+ v.add(null);
+ }
+ ((Map) parent).put(name, v);
+ return true;
+ } else if (name.equals("TestKey4")) {
+ ((Map) parent).put(name, new Object[] { new TestBean()});
+ return true;
+ }
+ return false;
+ }
public boolean declareVariable(JXPathContext context, String name){
return false;
1.2 +5 -13 jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/model/TestMixedModelFactory.java
Index: TestMixedModelFactory.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/model/TestMixedModelFactory.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestMixedModelFactory.java 20 Oct 2002 03:48:22 -0000 1.1
+++ TestMixedModelFactory.java 26 Nov 2002 01:20:08 -0000 1.2
@@ -63,17 +63,9 @@
package org.apache.commons.jxpath.ri.model;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
-import java.util.Vector;
-import org.apache.commons.jxpath.AbstractFactory;
-import org.apache.commons.jxpath.JXPathContext;
-import org.apache.commons.jxpath.NestedTestBean;
-import org.apache.commons.jxpath.Pointer;
-import org.apache.commons.jxpath.TestBean;
-import org.jdom.Element;
-import org.w3c.dom.Node;
+import org.apache.commons.jxpath.*;
/**
* Test AbstractFactory.
1.3 +12 -5 jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/model/XMLModelTestCase.java
Index: XMLModelTestCase.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/model/XMLModelTestCase.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- XMLModelTestCase.java 20 Oct 2002 03:48:22 -0000 1.2
+++ XMLModelTestCase.java 26 Nov 2002 01:20:08 -0000 1.3
@@ -99,6 +99,8 @@
Variables vars = context.getVariables();
vars.declareVariable("document", docCtr.getValue());
vars.declareVariable("container", docCtr);
+ vars.declareVariable("element",
+ context.getPointer("vendor/location/address/street").getNode());
}
}
@@ -626,7 +628,6 @@
assertXPathValue(context,
"$document/vendor//street",
"Orchard Road");
-
}
public void testContainer() {
@@ -646,6 +647,12 @@
assertXPathValue(context,
"number(vendor/location/employeeCount)",
new Double(10));
+ }
+
+ public void testElementInVariable() {
+ assertXPathValue(context,
+ "$element",
+ "Orchard Road");
}
public void testTypeConversions() {
1.2 +8 -29 jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/model/beans/BeanModelTest.java
Index: BeanModelTest.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/model/beans/BeanModelTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BeanModelTest.java 20 Oct 2002 03:48:22 -0000 1.1
+++ BeanModelTest.java 26 Nov 2002 01:20:08 -0000 1.2
@@ -62,27 +62,11 @@
package org.apache.commons.jxpath.ri.model.beans;
-import java.lang.reflect.InvocationTargetException;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
import junit.framework.TestSuite;
-import org.w3c.dom.*;
-import java.util.*;
-import java.lang.reflect.*;
-import org.apache.commons.jxpath.ri.model.XMLModelTestCase;
-import org.apache.commons.jxpath.*;
-import org.apache.commons.jxpath.util.*;
-import org.apache.commons.jxpath.ri.*;
-import org.apache.commons.jxpath.ri.parser.*;
-import org.apache.commons.jxpath.ri.model.*;
-import org.apache.commons.jxpath.ri.model.beans.*;
-import org.apache.commons.jxpath.ri.axes.*;
-import org.apache.commons.jxpath.ri.compiler.*;
-import org.apache.commons.jxpath.ri.compiler.Expression;
-import org.apache.commons.jxpath.xml.*;
-import java.beans.*;
+import org.apache.commons.jxpath.AbstractFactory;
+import org.apache.commons.jxpath.TestBean;
+import org.apache.commons.jxpath.ri.model.BeanModelTestCase;
/**
* Tests JXPath with JavaBeans
@@ -93,8 +77,6 @@
public class BeanModelTest extends BeanModelTestCase
{
- private static final boolean enabled = true;
-
/**
* Construct a new instance of this test case.
*
@@ -108,10 +90,7 @@
* Return the tests included in this test suite.
*/
public static TestSuite suite(){
-// return (new TestSuite(BeanModelTest.class));
- TestSuite s = new TestSuite();
- s.addTest(new BeanModelTest("testAxisParent"));
- return s;
+ return (new TestSuite(BeanModelTest.class));
}
protected Object createContextBean(){
1.2 +7 -23 jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/model/beans/DynamicPropertiesModelTest.java
Index: DynamicPropertiesModelTest.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/model/beans/DynamicPropertiesModelTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DynamicPropertiesModelTest.java 20 Oct 2002 03:48:22 -0000 1.1
+++ DynamicPropertiesModelTest.java 26 Nov 2002 01:20:08 -0000 1.2
@@ -62,26 +62,10 @@
package org.apache.commons.jxpath.ri.model.beans;
-import java.lang.reflect.InvocationTargetException;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.w3c.dom.*;
-import java.util.*;
-import java.lang.reflect.*;
-import org.apache.commons.jxpath.*;
-import org.apache.commons.jxpath.util.*;
-import org.apache.commons.jxpath.ri.*;
-import org.apache.commons.jxpath.ri.parser.*;
-import org.apache.commons.jxpath.ri.model.*;
-import org.apache.commons.jxpath.ri.model.beans.*;
-import org.apache.commons.jxpath.ri.axes.*;
-import org.apache.commons.jxpath.ri.compiler.*;
-import org.apache.commons.jxpath.ri.compiler.Expression;
-import org.apache.commons.jxpath.xml.*;
-import java.beans.*;
+import org.apache.commons.jxpath.JXPathContext;
+import org.apache.commons.jxpath.JXPathTestCase;
+import org.apache.commons.jxpath.TestBean;
+import org.apache.commons.jxpath.ri.model.TestDynamicPropertyFactory;
/**
* @todo more iterator testing with maps
1.2 +18 -30 jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/model/beans/TestBeanFactory.java
Index: TestBeanFactory.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/model/beans/TestBeanFactory.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestBeanFactory.java 20 Oct 2002 03:48:22 -0000 1.1
+++ TestBeanFactory.java 26 Nov 2002 01:20:08 -0000 1.2
@@ -62,18 +62,7 @@
package org.apache.commons.jxpath.ri.model.beans;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Vector;
-
-import org.apache.commons.jxpath.AbstractFactory;
-import org.apache.commons.jxpath.JXPathContext;
-import org.apache.commons.jxpath.NestedTestBean;
-import org.apache.commons.jxpath.Pointer;
-import org.apache.commons.jxpath.TestBean;
-import org.jdom.Element;
-import org.w3c.dom.Node;
+import org.apache.commons.jxpath.*;
/**
* Test AbstractFactory.
@@ -89,20 +78,19 @@
public boolean createObject(JXPathContext context,
Pointer pointer, Object parent, String name, int index)
{
- if (name.equals("nestedBean")){
- ((TestBean)parent).setNestedBean(new NestedTestBean("newName"));
- return true;
- }
- else if (name.equals("beans")){
- TestBean bean = (TestBean)parent;
- if (bean.getBeans() == null || index >= bean.getBeans().length){
- bean.setBeans(new NestedTestBean[index + 1]);
- }
- ((TestBean)parent).getBeans()[index] = new NestedTestBean("newName");
- return true;
- }
- return false;
- }
+ if (name.equals("nestedBean")) {
+ ((TestBean) parent).setNestedBean(new NestedTestBean("newName"));
+ return true;
+ } else if (name.equals("beans")) {
+ TestBean bean = (TestBean) parent;
+ if (bean.getBeans() == null || index >= bean.getBeans().length) {
+ bean.setBeans(new NestedTestBean[index + 1]);
+ }
+ ((TestBean) parent).getBeans()[index] =
+ new NestedTestBean("newName");
+ return true;
+ }
+ return false; }
/**
* Create a new object and set it on the specified variable
1.4 +8 -7 jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/model/dom/DOMModelTest.java
Index: DOMModelTest.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/model/dom/DOMModelTest.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DOMModelTest.java 20 Oct 2002 03:48:22 -0000 1.3
+++ DOMModelTest.java 26 Nov 2002 01:20:08 -0000 1.4
@@ -68,8 +68,9 @@
import org.apache.commons.jxpath.AbstractFactory;
import org.apache.commons.jxpath.ri.model.XMLModelTestCase;
import org.apache.commons.jxpath.xml.DocumentContainer;
-
-import org.w3c.dom.*;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
/**
* Tests JXPath with DOM
@@ -88,7 +89,7 @@
public DOMModelTest(String name){
super(name);
}
-
+
/**
* Return the tests included in this test suite.
*/
1.2 +29 -30 jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/model/dynabeans/TestDynaBeanFactory.java
Index: TestDynaBeanFactory.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/model/dynabeans/TestDynaBeanFactory.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestDynaBeanFactory.java 20 Oct 2002 03:48:22 -0000 1.1
+++ TestDynaBeanFactory.java 26 Nov 2002 01:20:08 -0000 1.2
@@ -62,16 +62,8 @@
package org.apache.commons.jxpath.ri.model.dynabeans;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Vector;
-
import org.apache.commons.beanutils.DynaBean;
-import org.apache.commons.jxpath.AbstractFactory;
-import org.apache.commons.jxpath.JXPathContext;
-import org.apache.commons.jxpath.NestedTestBean;
-import org.apache.commons.jxpath.Pointer;
-import org.apache.commons.jxpath.TestBean;
+import org.apache.commons.jxpath.*;
/**
* Test AbstractFactory.
@@ -83,23 +75,30 @@
/**
*/
- public boolean createObject(JXPathContext context, Pointer pointer, Object parent, String name, int index){
- if (name.equals("nestedBean")){
- ((DynaBean)parent).set("nestedBean", new NestedTestBean("newName"));
- return true;
- }
- else if (name.equals("beans")){
- DynaBean bean = (DynaBean)parent;
- Object beans[] = (Object[])bean.get("beans");
- if (beans == null || index >= beans.length){
- beans = new NestedTestBean[index + 1];
- bean.set("beans", beans);
- }
- beans[index] = new NestedTestBean("newName");
- return true;
- }
- return false;
- }
+ public boolean createObject(
+ JXPathContext context,
+ Pointer pointer,
+ Object parent,
+ String name,
+ int index)
+ {
+ if (name.equals("nestedBean")) {
+ ((DynaBean) parent).set(
+ "nestedBean",
+ new NestedTestBean("newName"));
+ return true;
+ } else if (name.equals("beans")) {
+ DynaBean bean = (DynaBean) parent;
+ Object beans[] = (Object[]) bean.get("beans");
+ if (beans == null || index >= beans.length) {
+ beans = new NestedTestBean[index + 1];
+ bean.set("beans", beans);
+ }
+ beans[index] = new NestedTestBean("newName");
+ return true;
+ }
+ return false;
+ }
/**
1.4 +7 -20 jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/model/jdom/JDOMModelTest.java
Index: JDOMModelTest.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/model/jdom/JDOMModelTest.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JDOMModelTest.java 20 Oct 2002 03:48:22 -0000 1.3
+++ JDOMModelTest.java 26 Nov 2002 01:20:08 -0000 1.4
@@ -62,28 +62,15 @@
package org.apache.commons.jxpath.ri.model.jdom;
-import java.lang.reflect.InvocationTargetException;
+import java.util.List;
import junit.framework.Test;
-import junit.framework.TestCase;
import junit.framework.TestSuite;
-import java.util.*;
-import java.lang.reflect.*;
+import org.apache.commons.jxpath.AbstractFactory;
import org.apache.commons.jxpath.ri.model.XMLModelTestCase;
-import org.apache.commons.jxpath.*;
-import org.apache.commons.jxpath.util.*;
-import org.apache.commons.jxpath.ri.*;
-import org.apache.commons.jxpath.ri.parser.*;
-import org.apache.commons.jxpath.ri.model.*;
-import org.apache.commons.jxpath.ri.model.beans.*;
-import org.apache.commons.jxpath.ri.axes.*;
-import org.apache.commons.jxpath.ri.compiler.*;
-import org.apache.commons.jxpath.ri.compiler.Expression;
-import org.apache.commons.jxpath.xml.*;
+import org.apache.commons.jxpath.xml.DocumentContainer;
import org.jdom.*;
-
-import java.beans.*;
/**
* Tests JXPath with JDOM
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>