jvanzyl 2004/02/07 08:26:51 Modified: maven-mboot/src/main Bootstrapper.java Log: o add functionality to interpolate <extend/> element. Revision Changes Path 1.15 +53 -3 maven-components/maven-mboot/src/main/Bootstrapper.java Index: Bootstrapper.java =================================================================== RCS file: /home/cvs/maven-components/maven-mboot/src/main/Bootstrapper.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- Bootstrapper.java 7 Feb 2004 16:17:49 -0000 1.14 +++ Bootstrapper.java 7 Feb 2004 16:26:51 -0000 1.15 @@ -15,6 +15,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Properties; public class Bootstrapper @@ -285,8 +286,57 @@ return properties; } + private String interpolate( String text, Map namespace ) + { + Iterator keys = namespace.keySet().iterator(); + + while ( keys.hasNext() ) + { + String key = keys.next().toString(); + + Object obj = namespace.get( key ); + + String value = obj.toString(); + + text = replace( text, "${" + key + "}", value ); + + if ( key.indexOf( " " ) == -1 ) + { + text = replace( text, "$" + key, value ); + } + } + return text; + } + + private String replace( String text, String repl, String with ) + { + return replace( text, repl, with, -1 ); + } + + private String replace( String text, String repl, String with, int max ) + { + if ( text == null || repl == null || with == null || repl.length() == 0 ) + { + return text; + } + + StringBuffer buf = new StringBuffer( text.length() ); + int start = 0, end = 0; + while ( ( end = text.indexOf( repl, start ) ) != -1 ) + { + buf.append( text.substring( start, end ) ).append( with ); + start = end + repl.length(); + + if ( --max == 0 ) + { + break; + } + } + buf.append( text.substring( start ) ); + return buf.toString(); + } - static class BootstrapPomParser + class BootstrapPomParser extends DefaultHandler { private List dependencies = new ArrayList(); @@ -299,7 +349,7 @@ private Resource currentResource; - private static SAXParserFactory saxFactory; + private SAXParserFactory saxFactory; private boolean insideDependency = false; @@ -382,7 +432,7 @@ { if ( rawName.equals( "extend" ) ) { - String extend = getBodyText(); + String extend = interpolate( getBodyText(), properties ) ; File f = new File( file.getParentFile(), extend );
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]