You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by do...@apache.org on 2001/12/16 05:31:58 UTC

cvs commit: jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant Project.java ProjectHelper.java RuntimeConfigurable.java UnknownElement.java

donaldp     01/12/15 20:31:58

  Modified:    proposal/myrmidon/src/main/org/apache/tools/ant Project.java
  Removed:     proposal/myrmidon/src/main/org/apache/tools/ant
                        ProjectHelper.java RuntimeConfigurable.java
                        UnknownElement.java
  Log:
  No need for the RuntimeConfigurable / UnknownElement / RuntimeConfigurable et al as they are already handled by the myrmidon container
  
  Revision  Changes    Path
  1.5       +99 -1     jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/Project.java
  
  Index: Project.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/Project.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Project.java	2001/12/16 04:12:39	1.4
  +++ Project.java	2001/12/16 04:31:58	1.5
  @@ -1083,7 +1083,105 @@
       public String replaceProperties( String value )
           throws TaskException
       {
  -        return ProjectHelper.replaceProperties( this, value );
  +        return replaceProperties( this, value, getProperties() );
  +    }
  +
  +    /**
  +     * Replace ${} style constructions in the given value with the string value
  +     * of the corresponding data types.
  +     *
  +     * @param value the string to be scanned for property references.
  +     * @param project Description of Parameter
  +     * @param keys Description of Parameter
  +     * @return Description of the Returned Value
  +     * @exception TaskException Description of Exception
  +     */
  +    private String replaceProperties( Project project, String value, Hashtable keys )
  +        throws TaskException
  +    {
  +        if( value == null )
  +        {
  +            return null;
  +        }
  +
  +        Vector fragments = new Vector();
  +        Vector propertyRefs = new Vector();
  +        parsePropertyString( value, fragments, propertyRefs );
  +
  +        StringBuffer sb = new StringBuffer();
  +        Enumeration i = fragments.elements();
  +        Enumeration j = propertyRefs.elements();
  +        while( i.hasMoreElements() )
  +        {
  +            String fragment = (String)i.nextElement();
  +            if( fragment == null )
  +            {
  +                String propertyName = (String)j.nextElement();
  +                if( !keys.containsKey( propertyName ) )
  +                {
  +                    project.log( "Property ${" + propertyName + "} has not been set", Project.MSG_VERBOSE );
  +                }
  +                fragment = ( keys.containsKey( propertyName ) ) ? (String)keys.get( propertyName )
  +                    : "${" + propertyName + "}";
  +            }
  +            sb.append( fragment );
  +        }
  +
  +        return sb.toString();
  +    }
  +
  +    /**
  +     * This method will parse a string containing ${value} style property values
  +     * into two lists. The first list is a collection of text fragments, while
  +     * the other is a set of string property names null entries in the first
  +     * list indicate a property reference from the second list.
  +     *
  +     * @param value Description of Parameter
  +     * @param fragments Description of Parameter
  +     * @param propertyRefs Description of Parameter
  +     * @exception TaskException Description of Exception
  +     */
  +    private void parsePropertyString( String value, Vector fragments, Vector propertyRefs )
  +        throws TaskException
  +    {
  +        int prev = 0;
  +        int pos;
  +        while( ( pos = value.indexOf( "$", prev ) ) >= 0 )
  +        {
  +            if( pos > 0 )
  +            {
  +                fragments.addElement( value.substring( prev, pos ) );
  +            }
  +
  +            if( pos == ( value.length() - 1 ) )
  +            {
  +                fragments.addElement( "$" );
  +                prev = pos + 1;
  +            }
  +            else if( value.charAt( pos + 1 ) != '{' )
  +            {
  +                fragments.addElement( value.substring( pos + 1, pos + 2 ) );
  +                prev = pos + 2;
  +            }
  +            else
  +            {
  +                int endName = value.indexOf( '}', pos );
  +                if( endName < 0 )
  +                {
  +                    throw new TaskException( "Syntax error in property: "
  +                                             + value );
  +                }
  +                String propertyName = value.substring( pos + 2, endName );
  +                fragments.addElement( null );
  +                propertyRefs.addElement( propertyName );
  +                prev = endName + 1;
  +            }
  +        }
  +
  +        if( prev < value.length() )
  +        {
  +            fragments.addElement( value.substring( prev ) );
  +        }
       }
   
       /**
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>