dmitri      02/05/29 18:57:23

  Modified:    jxpath/src/java/org/apache/commons/jxpath/ri/axes
                        PredicateContext.java
               jxpath/src/java/org/apache/commons/jxpath/ri/model/beans
                        DynamicPropertyPointer.java
  Log:
  Fixed #9482
  
  Revision  Changes    Path
  1.10      +25 -6     
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.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- PredicateContext.java     8 May 2002 00:40:00 -0000       1.9
  +++ PredicateContext.java     30 May 2002 01:57:23 -0000      1.10
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/axes/PredicateContext.java,v
 1.9 2002/05/08 00:40:00 dmitri Exp $
  - * $Revision: 1.9 $
  - * $Date: 2002/05/08 00:40:00 $
  + * $Header: 
/home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/axes/PredicateContext.java,v
 1.10 2002/05/30 01:57:23 dmitri Exp $
  + * $Revision: 1.10 $
  + * $Date: 2002/05/30 01:57:23 $
    *
    * ====================================================================
    * The Apache Software License, Version 1.1
  @@ -75,7 +75,7 @@
    * EvalContext that checks predicates.
    *
    * @author Dmitri Plotnikov
  - * @version $Revision: 1.9 $ $Date: 2002/05/08 00:40:00 $
  + * @version $Revision: 1.10 $ $Date: 2002/05/30 01:57:23 $
    */
   public class PredicateContext extends EvalContext {
       private Expression expression;
  @@ -87,7 +87,7 @@
           super(parentContext);
           this.expression = expression;
           if (expression instanceof NameAttributeTest){
  -            nameTestExpression = 
  +            nameTestExpression =
                   ((NameAttributeTest)expression).getNameTestExpression();
           }
       }
  @@ -103,6 +103,7 @@
                       pred = ((NodePointer)pred).getValue();
                   }
                   
dynamicPropertyPointer.setPropertyName(InfoSetUtil.stringValue(pred));
  +                position = 1;
                   done = true;
                   return true;
               }
  @@ -143,6 +144,24 @@
           return true;
       }
   
  +    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;
  +        }
  +    }
  +
       public NodePointer getCurrentNodePointer(){
           if (position == 0){
               if (!setPosition(1)){
  @@ -167,7 +186,7 @@
           return parentContext.nextSet();
       }
   
  -    public boolean setPosition(int position){
  +    private boolean setPositionStandard(int position){
           if (this.position > position){
               reset();
           }
  
  
  
  1.7       +10 -4     
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.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- DynamicPropertyPointer.java       29 May 2002 00:38:07 -0000      1.6
  +++ DynamicPropertyPointer.java       30 May 2002 01:57:23 -0000      1.7
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/DynamicPropertyPointer.java,v
 1.6 2002/05/29 00:38:07 dmitri Exp $
  - * $Revision: 1.6 $
  - * $Date: 2002/05/29 00:38:07 $
  + * $Header: 
/home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/model/beans/DynamicPropertyPointer.java,v
 1.7 2002/05/30 01:57:23 dmitri Exp $
  + * $Revision: 1.7 $
  + * $Date: 2002/05/30 01:57:23 $
    *
    * ====================================================================
    * The Apache Software License, Version 1.1
  @@ -75,7 +75,7 @@
    * Pointer pointing to a property of an object with dynamic properties.
    *
    * @author Dmitri Plotnikov
  - * @version $Revision: 1.6 $ $Date: 2002/05/29 00:38:07 $
  + * @version $Revision: 1.7 $ $Date: 2002/05/30 01:57:23 $
    */
   public class DynamicPropertyPointer extends PropertyPointer {
       private DynamicPropertyHandler handler;
  @@ -330,6 +330,12 @@
       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("']");
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to