ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Donald <pe...@apache.org>
Subject Re: cvs commit: jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/property XPathPropertyResolver.java DefaultPropertyResolver.java ClassicPropertyResolver.java
Date Tue, 25 Jun 2002 21:06:08 GMT
yea!

On Wed, 26 Jun 2002 00:36, adammurdoch@apache.org wrote:
> 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/prop
>erty/DefaultPropertyResolver.java
>
>   Index: DefaultPropertyResolver.java
>   ===================================================================
>   RCS file:
> /home/cvs/jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/compo
>nents/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/prop
>erty/ClassicPropertyResolver.java
>
>   Index: ClassicPropertyResolver.java
>   ===================================================================
>   RCS file:
> /home/cvs/jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/compo
>nents/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/prop
>erty/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 );
>       }
>   }

-- 
Cheers,

Peter Donald
*------------------------------------------------*
| The student who is never required to do what   |
|  he cannot do never does what he can do.       |
|                       - John Stuart Mill       |
*------------------------------------------------*


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