tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cos...@apache.org
Subject cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/util IntrospectionUtils.java
Date Thu, 08 Mar 2001 01:06:01 GMT
costin      01/03/07 17:06:01

  Modified:    src/share/org/apache/tomcat/util IntrospectionUtils.java
  Log:
  Added replaceProperties - cut&paste from ant, with dependencies removed.
  It can be used with a Hasthable storing properties or with a
  simple adapter ( the PropertySource - it's used to support default
  or "dynamic"/runtime values ).
  
  ( before anyone start screaming "duplication" - I wrote part of the code
  that deal with properties in ant, and it'll be moved in commons as soon
  as possible - if ant people also agree to share it.  )
  
  Revision  Changes    Path
  1.6       +57 -2     jakarta-tomcat/src/share/org/apache/tomcat/util/IntrospectionUtils.java
  
  Index: IntrospectionUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/IntrospectionUtils.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- IntrospectionUtils.java	2001/03/04 03:37:16	1.5
  +++ IntrospectionUtils.java	2001/03/08 01:06:00	1.6
  @@ -197,8 +197,7 @@
   	If found, call the method ( if param is int or boolean we'll convert
   	value to the right type before) - that means you can have setDebug(1).
       */
  -    public static void setProperty( Object o, String name, String value )
  -    {
  +    public static void setProperty( Object o, String name, String value ) {
   	if( dbg > 1 ) d("setProperty(" +
   			o.getClass() + " " +  name + "="  +
   			value  +")" );
  @@ -281,6 +280,52 @@
   	}
       }
   
  +    /** Replace ${NAME} with the property value
  +     */
  +    public static String replaceProperties(String value,
  +					   Object getter )
  +    {
  +        StringBuffer sb=new StringBuffer();
  +        int i=0;
  +        int prev=0;
  +        // assert value!=nil
  +        int pos;
  +        while( (pos=value.indexOf( "$", prev )) >= 0 ) {
  +            if(pos>0) {
  +                sb.append( value.substring( prev, pos ) );
  +            }
  +            if( pos == (value.length() - 1)) {
  +                sb.append('$');
  +                prev = pos + 1;
  +            }
  +            else if (value.charAt( pos + 1 ) != '{' ) {
  +                sb.append( value.charAt( pos + 1 ) );
  +                prev=pos+2; // XXX
  +            } else {
  +                int endName=value.indexOf( '}', pos );
  +                if( endName < 0 ) {
  +		    sb.append( value.substring( pos ));
  +		    prev=value.length();
  +		    continue;
  +                }
  +                String n=value.substring( pos+2, endName );
  +		String v= null;
  +		if( getter instanceof Hashtable ) {
  +		    v=(String)((Hashtable)getter).get(n);
  +		} else if ( getter instanceof PropertySource ) {
  +		    v=((PropertySource)getter).getProperty( n );
  +		}
  +		if( v== null )
  +		    v = "${"+n+"}"; 
  +                
  +                sb.append( v );
  +                prev=endName+1;
  +            }
  +        }
  +        if( prev < value.length() ) sb.append( value.substring( prev ) );
  +        return sb.toString();
  +    }
  +    
       /** Reverse of Introspector.decapitalize
        */
       public static String capitalize(String name) {
  @@ -292,6 +337,16 @@
   	return new String(chars);
       }
   
  +    // -------------------- Get property --------------------
  +    // This provides a layer of abstraction
  +
  +    public static interface PropertySource {
  +
  +	public String getProperty( String key );
  +	
  +    }
  +
  +    
       // debug --------------------
       static final int dbg=0;
       static void d(String s ) {
  
  
  

Mime
View raw message