ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From adammurd...@apache.org
Subject cvs commit: jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/property XPathPropertyResolver.java DefaultPropertyResolver.java ClassicPropertyResolver.java
Date Tue, 25 Jun 2002 14:36:40 GMT
adammurdoch    2002/06/25 07:36:40

  Modified:    container/src/java/org/apache/myrmidon/components/property
                        DefaultPropertyResolver.java
                        ClassicPropertyResolver.java
  Added:       lib      commons-jxpath-1.0.jar
               container/src/java/org/apache/myrmidon/components/property
                        XPathPropertyResolver.java
  Log:
  Added a property resolver that uses JXPath to evaluate XPath expressions
  in property references.
  
  Revision  Changes    Path
  1.1                  jakarta-ant-myrmidon/lib/commons-jxpath-1.0.jar
  
  	<<Binary file>>
  
  
  1.11      +20 -16    jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/property/DefaultPropertyResolver.java
  
  Index: DefaultPropertyResolver.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/property/DefaultPropertyResolver.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- DefaultPropertyResolver.java	9 Jun 2002 13:22:49 -0000	1.10
  +++ DefaultPropertyResolver.java	25 Jun 2002 14:36:40 -0000	1.11
  @@ -7,17 +7,16 @@
    */
   package org.apache.myrmidon.components.property;
   
  -import org.apache.excalibur.converter.Converter;
  -import org.apache.excalibur.converter.ConverterException;
   import org.apache.avalon.excalibur.i18n.ResourceManager;
   import org.apache.avalon.excalibur.i18n.Resources;
   import org.apache.avalon.framework.service.ServiceException;
   import org.apache.avalon.framework.service.ServiceManager;
   import org.apache.avalon.framework.service.Serviceable;
  -import org.apache.myrmidon.api.TaskException;
  +import org.apache.excalibur.converter.Converter;
  +import org.apache.excalibur.converter.ConverterException;
   import org.apache.myrmidon.api.TaskContext;
  +import org.apache.myrmidon.api.TaskException;
   import org.apache.myrmidon.interfaces.property.PropertyResolver;
  -import org.apache.myrmidon.interfaces.property.PropertyStore;
   
   /**
    * Base class for PropertyResolver implementations.
  @@ -72,7 +71,7 @@
   
           if( 0 == start && end == ( length - 1 ) )
           {
  -            return getPropertyValue( content.substring( start + 2, end ),
  +            return evaluateExpression( content.substring( start + 2, end ),
                                        context );
           }
   
  @@ -131,7 +130,7 @@
           {
               final String propertyName = content.substring( start + 2, end );
               final Object key = recursiveResolveProperty( propertyName, context );
  -            return getPropertyValue( key.toString(), context );
  +            return evaluateExpression( key.toString(), context );
           }
   
           final StringBuffer sb = new StringBuffer( length * 2 );
  @@ -246,11 +245,17 @@
       /**
        * Returns a property's value, converted to a String.
        */
  -    private String getPropertyStringValue( final String propertyName,
  +    private String getPropertyStringValue( final String expression,
                                              final TaskContext context )
           throws TaskException
       {
  -        final Object value = getPropertyValue( propertyName, context );
  +        final Object value = evaluateExpression( expression, context );
  +        if( value == null )
  +        {
  +            final String message = REZ.getString( "prop.missing-value.error", expression
);
  +            throw new TaskException( message );
  +        }
  +
           if( value instanceof String )
           {
               return (String)value;
  @@ -266,24 +271,23 @@
       }
   
       /**
  -     * Retrieve a value from the specified context using the specified key.
  +     * Evaluates an expression.
        *
  -     * @param propertyName the key of value in context
  +     * @param expression the expression to evaluate
        * @param context the set of known properties
        * @return the object retrieved from context
  -     * @throws TaskException if the property is undefined
        */
  -    protected Object getPropertyValue( final String propertyName,
  -                                       final TaskContext context )
  +    protected Object evaluateExpression( final String expression,
  +                                         final TaskContext context )
           throws TaskException
       {
  -        final Object value = context.getProperty( propertyName );
  +        final Object value = context.getProperty( expression );
           if( value != null )
           {
               return value;
           }
   
  -        final String message = REZ.getString( "prop.missing-value.error", propertyName
);
  +        final String message = REZ.getString( "prop.missing-value.error", expression );
           throw new TaskException( message );
       }
   }
  
  
  
  1.7       +9 -11     jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/property/ClassicPropertyResolver.java
  
  Index: ClassicPropertyResolver.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/property/ClassicPropertyResolver.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ClassicPropertyResolver.java	9 Apr 2002 02:26:34 -0000	1.6
  +++ ClassicPropertyResolver.java	25 Jun 2002 14:36:40 -0000	1.7
  @@ -7,10 +7,9 @@
    */
   package org.apache.myrmidon.components.property;
   
  -import org.apache.myrmidon.interfaces.property.PropertyResolver;
  -import org.apache.myrmidon.interfaces.property.PropertyStore;
  -import org.apache.myrmidon.api.TaskException;
   import org.apache.myrmidon.api.TaskContext;
  +import org.apache.myrmidon.api.TaskException;
  +import org.apache.myrmidon.interfaces.property.PropertyResolver;
   
   /**
    * A {@link PropertyResolver} implementation which resolves properties
  @@ -26,24 +25,23 @@
       implements PropertyResolver
   {
       /**
  -     * Retrieve a value from the specified context using the specified key.
  -     * If there is no such value, returns the original property reference.
  +     * Evaluates an expression.
        *
  -     * @param propertyName the name of the property to retrieve
  +     * @param expression the name of the property to retrieve
        * @param context the set of known properties
        */
  -    protected Object getPropertyValue( final String propertyName,
  -                                       final TaskContext context )
  +    protected Object evaluateExpression( final String expression,
  +                                         final TaskContext context )
           throws TaskException
       {
  -        final Object value = context.getProperty( propertyName );
  +        final Object value = context.getProperty( expression );
           if( value != null )
           {
               return value;
           }
           else
           {
  -            return "${" + propertyName + "}";
  +            return "${" + expression + "}";
           }
       }
   }
  
  
  
  1.1                  jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/property/XPathPropertyResolver.java
  
  Index: XPathPropertyResolver.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE.txt file.
   */
  package org.apache.myrmidon.components.property;
  
  import org.apache.commons.jxpath.JXPathContext;
  import org.apache.myrmidon.api.TaskContext;
  import org.apache.myrmidon.api.TaskException;
  
  /**
   * A property resolver that uses JXPath to resolve values.
   *
   * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
   * @version $Revision: 1.1 $ $Date: 2002/06/25 14:36:40 $
   */
  public class XPathPropertyResolver
      extends DefaultPropertyResolver
  {
      /**
       * Evaluates an expression.
       *
       * @param expression the expression to evaluate
       * @param context the set of known properties
       * @return the object retrieved from context
       */
      protected Object evaluateExpression( final String expression,
                                           final TaskContext context )
          throws TaskException
      {
          final JXPathContext jxContext = JXPathContext.newContext( context.getProperties()
);
          return jxContext.getValue( expression );
      }
  }
  
  
  

--
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