ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cos...@apache.org
Subject cvs commit: jakarta-ant/proposal/embed/src/java/org/apache/tools/ant/taskdefs/optional JXPath.java
Date Sat, 28 Dec 2002 22:58:24 GMT
costin      2002/12/28 14:58:24

  Modified:    proposal/embed/src/java/org/apache/tools/ant/taskdefs/optional
                        JXPath.java
  Log:
  Update to the new hook mechanism.
  
  Revision  Changes    Path
  1.6       +68 -52    jakarta-ant/proposal/embed/src/java/org/apache/tools/ant/taskdefs/optional/JXPath.java
  
  Index: JXPath.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/embed/src/java/org/apache/tools/ant/taskdefs/optional/JXPath.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- JXPath.java	28 Dec 2002 05:33:21 -0000	1.5
  +++ JXPath.java	28 Dec 2002 22:58:24 -0000	1.6
  @@ -55,6 +55,7 @@
   package org.apache.tools.ant.taskdefs.optional;
   
   import org.apache.tools.ant.*;
  +import org.apache.tools.ant.PropertyHelper;
   import org.apache.tools.ant.types.*;
   
   import java.io.*;
  @@ -70,49 +71,17 @@
    * @author Costin Manolache
    * @author Nicola Ken Barozzi
    */
  -public class JXPath extends Task implements PropertyInterceptor {
  +public class JXPath extends Task {
   
       public static String PREFIX="jxpath:";
       JXPathContext jxpathCtx;
  -    
  +
       public JXPath() {
       }
   
       public JXPathContext getJXPathContext() {
           return jxpathCtx;
       }
  -    
  -    public boolean setProperty( Object c, String ns, String name, Object v ) {
  -        return false;
  -    }
  -    
  -    public Object getProperty( Object p, String ns, String name ) {
  -        if( ! name.startsWith(PREFIX) )
  -            return null;
  -        name=name.substring( PREFIX.length() );
  -
  -
  -        //Object o=jxpathCtx.getValue( name );
  -        //System.out.println("JXPath: getProperty " + ns + " " + name + "=" + o + o.getClass());
  -
  -        String result = "";
  -        
  -        Iterator iter = jxpathCtx.iterate(name);
  -        
  -        if(iter==null){
  -            return "null";
  -        }
  -        
  -        result += iter.next();
  -        
  -        while (iter.hasNext()) {
  -            Object o = iter.next();
  -            //System.out.println("JXPath: getProperty " + ns + " " + name + "=" + o + o.getClass());
  -            result += ", "+o;
  -        }
  -        
  -        return result;
  -    }
   
       // testing
       String foo;
  @@ -124,24 +93,71 @@
       public String getFoo() {
           return foo;
       }
  -    
  +
       public void execute() {
           JXPathIntrospector.registerDynamicClass(Hashtable.class, JXPathHashtableHandler.class);
  +        jxpathCtx=JXPathContext.newContext( project );
  +        jxpathCtx.setVariables(new AntVariables());
   
  -        PropertyHelper2 phelper=PropertyHelper2.getPropertyHelper( project );
  -        phelper.addPropertyInterceptor( this );
  +        PropertyHelper phelper=PropertyHelper.getPropertyHelper( project );
  +        JXPathPropertyHelper hook=new JXPathPropertyHelper(jxpathCtx);
  +        hook.setNext( phelper.getNext() );
  +        phelper.setNext( hook );
   
           project.addReference( "jxpathTask", this );
  -        
  -        jxpathCtx=JXPathContext.newContext( project );
  -        
  -        jxpathCtx.setVariables(new AntVariables());
  +
  +    }
  +
  +
  +    static class JXPathPropertyHelper extends PropertyHelper {
  +        JXPathContext jxpathCtx;
  +
  +        public JXPathPropertyHelper( JXPathContext jxCtx ) {
  +            this.jxpathCtx=jxCtx;
  +        }
  +
  +        public boolean setProperty( String ns, String name, Object v, boolean inh,
  +                                    boolean user, boolean isNew)
  +        {
  +            return false;
  +        }
  +
  +        public Object getPropertyHook( String ns, String name , boolean user) {
  +            if( ! name.startsWith(PREFIX) )
  +                return null;
  +            name=name.substring( PREFIX.length() );
  +
  +
  +            //Object o=jxpathCtx.getValue( name );
  +            //System.out.println("JXPath: getProperty " + ns + " " + name + "=" + o + o.getClass());
  +
  +            String result = "";
  +
  +            Iterator iter = jxpathCtx.iterate(name);
  +
  +            if(iter==null){
  +                return "null";
  +            }
  +
  +            result += iter.next();
  +
  +            while (iter.hasNext()) {
  +                Object o = iter.next();
  +                //System.out.println("JXPath: getProperty " + ns + " " + name + "=" + o
+ o.getClass());
  +                result += ", "+o;
  +            }
  +
  +            return result;
  +        }
  +
  +
       }
   
  +
       public static class JXPathHashtableHandler implements DynamicPropertyHandler {
   
           private static final String[] STRING_ARRAY = new String[0];
  -        
  +
           /**
            * Returns string representations of all keys in the map.
            */
  @@ -155,7 +171,7 @@
               }
               return names;
           }
  -        
  +
           /**
            * Returns the value for the specified key.
            */
  @@ -163,7 +179,7 @@
               //  System.out.println("getProperty " + object + " " + propertyName);
               return ((Hashtable) object).get(propertyName);
           }
  -        
  +
           /**
            * Sets the specified key value.
            */
  @@ -171,28 +187,28 @@
               ((Hashtable)object).put(propertyName, value);
           }
       }
  -    
  +
       public class AntVariables implements Variables {
  -    
  +
            protected AntVariables(){
            }
  -    
  +
            public void declareVariable(String varName, Object value){
              project.setNewProperty(varName, value.toString());
            }
  -         
  +
            public Object getVariable(String varName){
              return project.getProperty(varName);
            }
  -         
  +
            public boolean isDeclaredVariable(String varName){
              return project.getProperty(varName) == null ? false : true ;
            }
  -         
  +
            public void undeclareVariable(String varName){
              throw new UnsupportedOperationException("Cannot undeclare variables in Ant.");
            }
  -    
  +
       }
  -    
  +
   }
  
  
  

--
To unsubscribe, e-mail:   <mailto:ant-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:ant-dev-help@jakarta.apache.org>


Mime
View raw message