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/05/29 02:40:59 UTC
cvs commit: jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/dom DOMNodePointer.java NamespacePointer.java
dmitri 02/05/28 17:40:59
Modified: jxpath/src/java/org/apache/commons/jxpath/ri/model/beans
BeanPointer.java PropertyPointer.java
jxpath/src/java/org/apache/commons/jxpath/ri/model/dom
DOMNodePointer.java NamespacePointer.java
Log:
Fix problems with pointer comparison
Revision Changes Path
1.4 +16 -4 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.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- BeanPointer.java 8 May 2002 23:05:05 -0000 1.3
+++ BeanPointer.java 29 May 2002 00:40:58 -0000 1.4
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/BeanPointer.java,v 1.3 2002/05/08 23:05:05 dmitri Exp $
- * $Revision: 1.3 $
- * $Date: 2002/05/08 23:05:05 $
+ * $Header: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/BeanPointer.java,v 1.4 2002/05/29 00:40:58 dmitri Exp $
+ * $Revision: 1.4 $
+ * $Date: 2002/05/29 00:40:58 $
*
* ====================================================================
* The Apache Software License, Version 1.1
@@ -74,7 +74,7 @@
* a path, following elements will by of type PropertyPointer.
*
* @author Dmitri Plotnikov
- * @version $Revision: 1.3 $ $Date: 2002/05/08 23:05:05 $
+ * @version $Revision: 1.4 $ $Date: 2002/05/29 00:40:58 $
*/
public class BeanPointer extends PropertyOwnerPointer {
private QName name;
@@ -162,8 +162,20 @@
}
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;
}
1.4 +18 -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.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- PropertyPointer.java 26 Apr 2002 01:00:37 -0000 1.3
+++ PropertyPointer.java 29 May 2002 00:40:58 -0000 1.4
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/PropertyPointer.java,v 1.3 2002/04/26 01:00:37 dmitri Exp $
- * $Revision: 1.3 $
- * $Date: 2002/04/26 01:00:37 $
+ * $Header: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/PropertyPointer.java,v 1.4 2002/05/29 00:40:58 dmitri Exp $
+ * $Revision: 1.4 $
+ * $Date: 2002/05/29 00:40:58 $
*
* ====================================================================
* The Apache Software License, Version 1.1
@@ -70,7 +70,7 @@
* a property of the parent object.
*
* @author Dmitri Plotnikov
- * @version $Revision: 1.3 $ $Date: 2002/04/26 01:00:37 $
+ * @version $Revision: 1.4 $ $Date: 2002/05/29 00:40:58 $
*/
public abstract class PropertyPointer extends NodePointer {
public static int UNSPECIFIED_PROPERTY = Integer.MIN_VALUE;
@@ -166,9 +166,20 @@
}
PropertyPointer other = (PropertyPointer)object;
- return getParent() == other.getParent() &&
- propertyIndex == other.propertyIndex &&
- index == other.index;
+ if (parent != other.parent){
+ if (parent == null || !parent.equals(other.parent)){
+ return false;
+ }
+ }
+
+ if (getPropertyIndex() != other.getPropertyIndex() ||
+ !getPropertyName().equals(other.getPropertyName())){
+ return false;
+ }
+
+ int i_this = (index == WHOLE_COLLECTION ? 0 : index);
+ int i_other = (other.index == WHOLE_COLLECTION ? 0 : other.index);
+ return i_this == i_other;
}
public int compareChildNodePointers(NodePointer pointer1, NodePointer pointer2){
1.6 +30 -6 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.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- DOMNodePointer.java 8 May 2002 23:05:05 -0000 1.5
+++ DOMNodePointer.java 29 May 2002 00:40:58 -0000 1.6
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/dom/DOMNodePointer.java,v 1.5 2002/05/08 23:05:05 dmitri Exp $
- * $Revision: 1.5 $
- * $Date: 2002/05/08 23:05:05 $
+ * $Header: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/dom/DOMNodePointer.java,v 1.6 2002/05/29 00:40:58 dmitri Exp $
+ * $Revision: 1.6 $
+ * $Date: 2002/05/29 00:40:58 $
*
* ====================================================================
* The Apache Software License, Version 1.1
@@ -80,6 +80,7 @@
import org.w3c.dom.Attr;
import org.w3c.dom.Comment;
import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.ProcessingInstruction;
@@ -88,7 +89,7 @@
* A Pointer that points to a DOM node.
*
* @author Dmitri Plotnikov
- * @version $Revision: 1.5 $ $Date: 2002/05/08 23:05:05 $
+ * @version $Revision: 1.6 $ $Date: 2002/05/29 00:40:58 $
*/
public class DOMNodePointer extends NodePointer {
private Node node;
@@ -560,10 +561,33 @@
}
public int compareChildNodePointers(NodePointer pointer1, NodePointer pointer2){
- Node node1 = (Node)pointer1.getNodeValue();
- Node node2 = (Node)pointer2.getNodeValue();
+ Node node1 = (Node)pointer1.getBaseValue();
+ Node node2 = (Node)pointer2.getBaseValue();
if (node1 == node2){
return 0;
+ }
+
+ int t1 = node1.getNodeType();
+ int t2 = node2.getNodeType();
+ if (t1 == Node.ATTRIBUTE_NODE && t2 != Node.ATTRIBUTE_NODE){
+ return -1;
+ }
+ else if (t1 != Node.ATTRIBUTE_NODE && t2 == Node.ATTRIBUTE_NODE){
+ return 1;
+ }
+ else if (t1 == Node.ATTRIBUTE_NODE && t2 == Node.ATTRIBUTE_NODE){
+ NamedNodeMap map = ((Node)getNodeValue()).getAttributes();
+ int length = map.getLength();
+ for (int i = 0; i < length; i++){
+ Node n = map.item(i);
+ if (n == node1){
+ return -1;
+ }
+ else if (n == node2){
+ return 1;
+ }
+ }
+ return 0; // Should not happen
}
Node current = node.getFirstChild();
1.4 +7 -16 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.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- NamespacePointer.java 26 Apr 2002 01:00:38 -0000 1.3
+++ NamespacePointer.java 29 May 2002 00:40:58 -0000 1.4
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/dom/NamespacePointer.java,v 1.3 2002/04/26 01:00:38 dmitri Exp $
- * $Revision: 1.3 $
- * $Date: 2002/04/26 01:00:38 $
+ * $Header: /home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/dom/NamespacePointer.java,v 1.4 2002/05/29 00:40:58 dmitri Exp $
+ * $Revision: 1.4 $
+ * $Date: 2002/05/29 00:40:58 $
*
* ====================================================================
* The Apache Software License, Version 1.1
@@ -71,7 +71,7 @@
* Represents a namespace node.
*
* @author Dmitri Plotnikov
- * @version $Revision: 1.3 $ $Date: 2002/04/26 01:00:38 $
+ * @version $Revision: 1.4 $ $Date: 2002/05/29 00:40:58 $
*/
public class NamespacePointer extends NodePointer {
private String prefix;
@@ -136,13 +136,7 @@
}
public int hashCode(){
- String nsURI = getNamespaceURI();
- if (nsURI == null){
- return 0;
- }
- else {
- return nsURI.hashCode();
- }
+ return prefix.hashCode();
}
public boolean equals(Object object){
@@ -155,12 +149,9 @@
}
NamespacePointer other = (NamespacePointer)object;
- String nsURI = getNamespaceURI();
- String otherNSURI = other.getNamespaceURI();
- return (nsURI == null && otherNSURI == null) ||
- (nsURI != null && nsURI.endsWith(otherNSURI));
+ return prefix.equals(other.prefix);
}
-
+
public int compareChildNodePointers(NodePointer pointer1, NodePointer pointer2){
// Won't happen - namespaces don't have children
return 0;
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>