diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/NestedString.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/NestedString.java new file mode 100644 index 000000000..27df3c5d4 --- /dev/null +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/NestedString.java @@ -0,0 +1,23 @@ +/* + * 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.tools.ant.taskdefs; + +public class NestedString +{ + private String m_text = ""; + + public String getText() + { + return m_text; + } + + public void addContent( final String text ) + { + m_text = text; + } +} diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Replace.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Replace.java index 467adee84..868f66464 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Replace.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Replace.java @@ -35,27 +35,27 @@ import org.apache.avalon.excalibur.util.StringUtil; * stefano@apache.org * @author Erik Langenbach */ -public class Replace extends MatchingTask +public class Replace + extends MatchingTask { + private File m_src; + private NestedString m_token; + private NestedString m_value = new NestedString(); - private File src = null; - private NestedString token = null; - private NestedString value = new NestedString(); + private File m_propertyFile; + private Properties m_properties; + private ArrayList m_replacefilters = new ArrayList(); - private File propertyFile = null; - private Properties properties = null; - private ArrayList replacefilters = new ArrayList(); - - private File dir = null; - private boolean summary = false; + private File m_dir; + private boolean m_summary; /** * The encoding used to read and write files - if null, uses default */ - private String encoding = null; + private String m_encoding; - private int fileCount; - private int replaceCount; + private int m_fileCount; + private int m_replaceCount; /** * Set the source files path when using matching tasks. @@ -64,7 +64,7 @@ public class Replace extends MatchingTask */ public void setDir( File dir ) { - this.dir = dir; + m_dir = dir; } /** @@ -74,7 +74,7 @@ public class Replace extends MatchingTask */ public void setEncoding( String encoding ) { - this.encoding = encoding; + m_encoding = encoding; } /** @@ -84,7 +84,7 @@ public class Replace extends MatchingTask */ public void setFile( File file ) { - this.src = file; + m_src = file; } /** @@ -94,7 +94,7 @@ public class Replace extends MatchingTask */ public void setPropertyFile( File filename ) { - propertyFile = filename; + m_propertyFile = filename; } /** @@ -105,7 +105,7 @@ public class Replace extends MatchingTask */ public void setSummary( boolean summary ) { - this.summary = summary; + m_summary = summary; } /** @@ -158,11 +158,11 @@ public class Replace extends MatchingTask */ public NestedString createReplaceToken() { - if( token == null ) + if( m_token == null ) { - token = new NestedString(); + m_token = new NestedString(); } - return token; + return m_token; } /** @@ -172,7 +172,7 @@ public class Replace extends MatchingTask */ public NestedString createReplaceValue() { - return value; + return m_value; } /** @@ -182,8 +182,8 @@ public class Replace extends MatchingTask */ public Replacefilter createReplacefilter() { - Replacefilter filter = new Replacefilter(); - replacefilters.add( filter ); + Replacefilter filter = new Replacefilter( this ); + m_replacefilters.add( filter ); return filter; } @@ -197,35 +197,35 @@ public class Replace extends MatchingTask { validateAttributes(); - if( propertyFile != null ) + if( m_propertyFile != null ) { - properties = getProperties( propertyFile ); + m_properties = getProperties( m_propertyFile ); } validateReplacefilters(); - fileCount = 0; - replaceCount = 0; + m_fileCount = 0; + m_replaceCount = 0; - if( src != null ) + if( m_src != null ) { - processFile( src ); + processFile( m_src ); } - if( dir != null ) + if( m_dir != null ) { - DirectoryScanner ds = super.getDirectoryScanner( dir ); + DirectoryScanner ds = super.getDirectoryScanner( m_dir ); String[] srcs = ds.getIncludedFiles(); for( int i = 0; i < srcs.length; i++ ) { - File file = new File( dir, srcs[ i ] ); + File file = new File( m_dir, srcs[ i ] ); processFile( file ); } } - if( summary ) + if( m_summary ) { - getLogger().info( "Replaced " + replaceCount + " occurrences in " + fileCount + " files." ); + getLogger().info( "Replaced " + m_replaceCount + " occurrences in " + m_fileCount + " files." ); } } @@ -238,23 +238,23 @@ public class Replace extends MatchingTask public void validateAttributes() throws TaskException { - if( src == null && dir == null ) + if( m_src == null && m_dir == null ) { String message = "Either the file or the dir attribute " + "must be specified"; throw new TaskException( message ); } - if( propertyFile != null && !propertyFile.exists() ) + if( m_propertyFile != null && !m_propertyFile.exists() ) { - String message = "Property file " + propertyFile.getPath() + " does not exist."; + String message = "Property file " + m_propertyFile.getPath() + " does not exist."; throw new TaskException( message ); } - if( token == null && replacefilters.size() == 0 ) + if( m_token == null && m_replacefilters.size() == 0 ) { String message = "Either token or a nested replacefilter " + "must be specified"; throw new TaskException( message ); } - if( token != null && "".equals( token.getText() ) ) + if( m_token != null && "".equals( m_token.getText() ) ) { String message = "The token attribute must not be an empty string."; throw new TaskException( message ); @@ -270,9 +270,9 @@ public class Replace extends MatchingTask public void validateReplacefilters() throws TaskException { - for( int i = 0; i < replacefilters.size(); i++ ) + for( int i = 0; i < m_replacefilters.size(); i++ ) { - Replacefilter element = (Replacefilter)replacefilters.get( i ); + Replacefilter element = (Replacefilter)m_replacefilters.get( i ); element.validate(); } } @@ -306,10 +306,10 @@ public class Replace extends MatchingTask Writer writer = null; try { - reader = encoding == null ? new FileReader( src ) - : new InputStreamReader( new FileInputStream( src ), encoding ); - writer = encoding == null ? new FileWriter( temp ) - : new OutputStreamWriter( new FileOutputStream( temp ), encoding ); + reader = m_encoding == null ? new FileReader( src ) + : new InputStreamReader( new FileInputStream( src ), m_encoding ); + writer = m_encoding == null ? new FileWriter( temp ) + : new OutputStreamWriter( new FileOutputStream( temp ), m_encoding ); BufferedReader br = new BufferedReader( reader ); BufferedWriter bw = new BufferedWriter( writer ); @@ -340,20 +340,20 @@ public class Replace extends MatchingTask //Preserve original string (buf) so we can compare the result String newString = new String( buf ); - if( token != null ) + if( m_token != null ) { // line separators in values and tokens are "\n" // in order to compare with the file contents, replace them // as needed - final String val = stringReplace( value.getText(), "\n", StringUtil.LINE_SEPARATOR ); - final String tok = stringReplace( token.getText(), "\n", StringUtil.LINE_SEPARATOR ); + final String val = stringReplace( m_value.getText(), "\n", StringUtil.LINE_SEPARATOR ); + final String tok = stringReplace( m_token.getText(), "\n", StringUtil.LINE_SEPARATOR ); // for each found token, replace with value - getLogger().debug( "Replacing in " + src.getPath() + ": " + token.getText() + " --> " + value.getText() ); + getLogger().debug( "Replacing in " + src.getPath() + ": " + m_token.getText() + " --> " + m_value.getText() ); newString = stringReplace( newString, tok, val ); } - if( replacefilters.size() > 0 ) + if( m_replacefilters.size() > 0 ) { newString = processReplacefilters( newString, src.getPath() ); } @@ -375,7 +375,7 @@ public class Replace extends MatchingTask // otherwise, delete the new one if( changes ) { - ++fileCount; + ++m_fileCount; src.delete(); temp.renameTo( src ); temp = null; @@ -420,9 +420,9 @@ public class Replace extends MatchingTask { String newString = new String( buffer ); - for( int i = 0; i < replacefilters.size(); i++ ) + for( int i = 0; i < m_replacefilters.size(); i++ ) { - Replacefilter filter = (Replacefilter)replacefilters.get( i ); + Replacefilter filter = (Replacefilter)m_replacefilters.get( i ); //for each found token, replace with value getLogger().debug( "Replacing in " + filename + ": " + filter.getToken() + " --> " + filter.getReplaceValue() ); @@ -462,7 +462,7 @@ public class Replace extends MatchingTask // search again start = found + str1.length(); found = str.indexOf( str1, start ); - ++replaceCount; + ++m_replaceCount; } // write the remaining characters @@ -474,122 +474,18 @@ public class Replace extends MatchingTask return ret.toString(); } - //Inner class - public class NestedString + public NestedString getValue() { - - private StringBuffer buf = new StringBuffer(); - - public String getText() - { - return buf.toString(); - } - - public void addContent( String val ) - { - buf.append( val ); - } + return m_value; } - //Inner class - public class Replacefilter + public File getPropertyFile() { - private String property; - private String token; - private String value; - - public void setProperty( String property ) - { - this.property = property; - } - - public void setToken( String token ) - { - this.token = token; - } - - public void setValue( String value ) - { - this.value = value; - } - - public String getProperty() - { - return property; - } - - public String getReplaceValue() - { - if( property != null ) - { - return (String)properties.getProperty( property ); - } - else if( value != null ) - { - return value; - } - else if( Replace.this.value != null ) - { - return Replace.this.value.getText(); - } - else - { - //Default is empty string - return new String( "" ); - } - } - - public String getToken() - { - return token; - } - - public String getValue() - { - return value; - } - - public void validate() - throws TaskException - { - //Validate mandatory attributes - if( token == null ) - { - String message = "token is a mandatory attribute " + "of replacefilter."; - throw new TaskException( message ); - } - - if( "".equals( token ) ) - { - String message = "The token attribute must not be an empty string."; - throw new TaskException( message ); - } - - //value and property are mutually exclusive attributes - if( ( value != null ) && ( property != null ) ) - { - String message = "Either value or property " + "can be specified, but a replacefilter " + "element cannot have both."; - throw new TaskException( message ); - } - - if( ( property != null ) ) - { - //the property attribute must have access to a property file - if( propertyFile == null ) - { - String message = "The replacefilter's property attribute " + "can only be used with the replacetask's " + "propertyFile attribute."; - throw new TaskException( message ); - } - - //Make sure property exists in property file - if( properties == null || - properties.getProperty( property ) == null ) - { - String message = "property \"" + property + "\" was not found in " + propertyFile.getPath(); - throw new TaskException( message ); - } - } - } + return m_propertyFile; } + public Properties getProperties() + { + return m_properties; + } } diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Replacefilter.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Replacefilter.java new file mode 100644 index 000000000..f2694a33d --- /dev/null +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Replacefilter.java @@ -0,0 +1,117 @@ +/* + * 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.tools.ant.taskdefs; + +import org.apache.myrmidon.api.TaskException; + +public class Replacefilter +{ + private String m_property; + private String m_token; + private String m_value; + private Replace m_replace; + + public Replacefilter( Replace replace ) + { + m_replace = replace; + } + + public void setProperty( final String property ) + { + this.m_property = property; + } + + public void setToken( String token ) + { + this.m_token = token; + } + + public void setValue( String value ) + { + this.m_value = value; + } + + public String getProperty() + { + return m_property; + } + + public String getReplaceValue() + { + if( m_property != null ) + { + return (String)m_replace.getProperties().getProperty( m_property ); + } + else if( m_value != null ) + { + return m_value; + } + else if( m_replace.getValue() != null ) + { + return m_replace.getValue().getText(); + } + else + { + //Default is empty string + return ""; + } + } + + public String getToken() + { + return m_token; + } + + public String getValue() + { + return m_value; + } + + public void validate() + throws TaskException + { + //Validate mandatory attributes + if( m_token == null ) + { + String message = "token is a mandatory attribute " + "of replacefilter."; + throw new TaskException( message ); + } + + if( "".equals( m_token ) ) + { + String message = "The token attribute must not be an empty string."; + throw new TaskException( message ); + } + + //value and property are mutually exclusive attributes + if( ( m_value != null ) && ( m_property != null ) ) + { + String message = "Either value or property " + "can be specified, but a replacefilter " + "element cannot have both."; + throw new TaskException( message ); + } + + if( ( m_property != null ) ) + { + //the property attribute must have access to a property file + if( m_replace.getPropertyFile() == null ) + { + String message = "The replacefilter's property attribute " + + "can only be used with the replacetask's propertyFile attribute."; + throw new TaskException( message ); + } + + //Make sure property exists in property file + if( m_replace.getProperties() == null || + m_replace.getProperties().getProperty( m_property ) == null ) + { + String message = "property \"" + m_property + "\" was not found in " + m_replace.getPropertyFile().getPath(); + throw new TaskException( message ); + } + } + } +} diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/NestedString.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/NestedString.java new file mode 100644 index 000000000..27df3c5d4 --- /dev/null +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/NestedString.java @@ -0,0 +1,23 @@ +/* + * 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.tools.ant.taskdefs; + +public class NestedString +{ + private String m_text = ""; + + public String getText() + { + return m_text; + } + + public void addContent( final String text ) + { + m_text = text; + } +} diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Replace.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Replace.java index 467adee84..868f66464 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Replace.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Replace.java @@ -35,27 +35,27 @@ import org.apache.avalon.excalibur.util.StringUtil; * stefano@apache.org * @author Erik Langenbach */ -public class Replace extends MatchingTask +public class Replace + extends MatchingTask { + private File m_src; + private NestedString m_token; + private NestedString m_value = new NestedString(); - private File src = null; - private NestedString token = null; - private NestedString value = new NestedString(); + private File m_propertyFile; + private Properties m_properties; + private ArrayList m_replacefilters = new ArrayList(); - private File propertyFile = null; - private Properties properties = null; - private ArrayList replacefilters = new ArrayList(); - - private File dir = null; - private boolean summary = false; + private File m_dir; + private boolean m_summary; /** * The encoding used to read and write files - if null, uses default */ - private String encoding = null; + private String m_encoding; - private int fileCount; - private int replaceCount; + private int m_fileCount; + private int m_replaceCount; /** * Set the source files path when using matching tasks. @@ -64,7 +64,7 @@ public class Replace extends MatchingTask */ public void setDir( File dir ) { - this.dir = dir; + m_dir = dir; } /** @@ -74,7 +74,7 @@ public class Replace extends MatchingTask */ public void setEncoding( String encoding ) { - this.encoding = encoding; + m_encoding = encoding; } /** @@ -84,7 +84,7 @@ public class Replace extends MatchingTask */ public void setFile( File file ) { - this.src = file; + m_src = file; } /** @@ -94,7 +94,7 @@ public class Replace extends MatchingTask */ public void setPropertyFile( File filename ) { - propertyFile = filename; + m_propertyFile = filename; } /** @@ -105,7 +105,7 @@ public class Replace extends MatchingTask */ public void setSummary( boolean summary ) { - this.summary = summary; + m_summary = summary; } /** @@ -158,11 +158,11 @@ public class Replace extends MatchingTask */ public NestedString createReplaceToken() { - if( token == null ) + if( m_token == null ) { - token = new NestedString(); + m_token = new NestedString(); } - return token; + return m_token; } /** @@ -172,7 +172,7 @@ public class Replace extends MatchingTask */ public NestedString createReplaceValue() { - return value; + return m_value; } /** @@ -182,8 +182,8 @@ public class Replace extends MatchingTask */ public Replacefilter createReplacefilter() { - Replacefilter filter = new Replacefilter(); - replacefilters.add( filter ); + Replacefilter filter = new Replacefilter( this ); + m_replacefilters.add( filter ); return filter; } @@ -197,35 +197,35 @@ public class Replace extends MatchingTask { validateAttributes(); - if( propertyFile != null ) + if( m_propertyFile != null ) { - properties = getProperties( propertyFile ); + m_properties = getProperties( m_propertyFile ); } validateReplacefilters(); - fileCount = 0; - replaceCount = 0; + m_fileCount = 0; + m_replaceCount = 0; - if( src != null ) + if( m_src != null ) { - processFile( src ); + processFile( m_src ); } - if( dir != null ) + if( m_dir != null ) { - DirectoryScanner ds = super.getDirectoryScanner( dir ); + DirectoryScanner ds = super.getDirectoryScanner( m_dir ); String[] srcs = ds.getIncludedFiles(); for( int i = 0; i < srcs.length; i++ ) { - File file = new File( dir, srcs[ i ] ); + File file = new File( m_dir, srcs[ i ] ); processFile( file ); } } - if( summary ) + if( m_summary ) { - getLogger().info( "Replaced " + replaceCount + " occurrences in " + fileCount + " files." ); + getLogger().info( "Replaced " + m_replaceCount + " occurrences in " + m_fileCount + " files." ); } } @@ -238,23 +238,23 @@ public class Replace extends MatchingTask public void validateAttributes() throws TaskException { - if( src == null && dir == null ) + if( m_src == null && m_dir == null ) { String message = "Either the file or the dir attribute " + "must be specified"; throw new TaskException( message ); } - if( propertyFile != null && !propertyFile.exists() ) + if( m_propertyFile != null && !m_propertyFile.exists() ) { - String message = "Property file " + propertyFile.getPath() + " does not exist."; + String message = "Property file " + m_propertyFile.getPath() + " does not exist."; throw new TaskException( message ); } - if( token == null && replacefilters.size() == 0 ) + if( m_token == null && m_replacefilters.size() == 0 ) { String message = "Either token or a nested replacefilter " + "must be specified"; throw new TaskException( message ); } - if( token != null && "".equals( token.getText() ) ) + if( m_token != null && "".equals( m_token.getText() ) ) { String message = "The token attribute must not be an empty string."; throw new TaskException( message ); @@ -270,9 +270,9 @@ public class Replace extends MatchingTask public void validateReplacefilters() throws TaskException { - for( int i = 0; i < replacefilters.size(); i++ ) + for( int i = 0; i < m_replacefilters.size(); i++ ) { - Replacefilter element = (Replacefilter)replacefilters.get( i ); + Replacefilter element = (Replacefilter)m_replacefilters.get( i ); element.validate(); } } @@ -306,10 +306,10 @@ public class Replace extends MatchingTask Writer writer = null; try { - reader = encoding == null ? new FileReader( src ) - : new InputStreamReader( new FileInputStream( src ), encoding ); - writer = encoding == null ? new FileWriter( temp ) - : new OutputStreamWriter( new FileOutputStream( temp ), encoding ); + reader = m_encoding == null ? new FileReader( src ) + : new InputStreamReader( new FileInputStream( src ), m_encoding ); + writer = m_encoding == null ? new FileWriter( temp ) + : new OutputStreamWriter( new FileOutputStream( temp ), m_encoding ); BufferedReader br = new BufferedReader( reader ); BufferedWriter bw = new BufferedWriter( writer ); @@ -340,20 +340,20 @@ public class Replace extends MatchingTask //Preserve original string (buf) so we can compare the result String newString = new String( buf ); - if( token != null ) + if( m_token != null ) { // line separators in values and tokens are "\n" // in order to compare with the file contents, replace them // as needed - final String val = stringReplace( value.getText(), "\n", StringUtil.LINE_SEPARATOR ); - final String tok = stringReplace( token.getText(), "\n", StringUtil.LINE_SEPARATOR ); + final String val = stringReplace( m_value.getText(), "\n", StringUtil.LINE_SEPARATOR ); + final String tok = stringReplace( m_token.getText(), "\n", StringUtil.LINE_SEPARATOR ); // for each found token, replace with value - getLogger().debug( "Replacing in " + src.getPath() + ": " + token.getText() + " --> " + value.getText() ); + getLogger().debug( "Replacing in " + src.getPath() + ": " + m_token.getText() + " --> " + m_value.getText() ); newString = stringReplace( newString, tok, val ); } - if( replacefilters.size() > 0 ) + if( m_replacefilters.size() > 0 ) { newString = processReplacefilters( newString, src.getPath() ); } @@ -375,7 +375,7 @@ public class Replace extends MatchingTask // otherwise, delete the new one if( changes ) { - ++fileCount; + ++m_fileCount; src.delete(); temp.renameTo( src ); temp = null; @@ -420,9 +420,9 @@ public class Replace extends MatchingTask { String newString = new String( buffer ); - for( int i = 0; i < replacefilters.size(); i++ ) + for( int i = 0; i < m_replacefilters.size(); i++ ) { - Replacefilter filter = (Replacefilter)replacefilters.get( i ); + Replacefilter filter = (Replacefilter)m_replacefilters.get( i ); //for each found token, replace with value getLogger().debug( "Replacing in " + filename + ": " + filter.getToken() + " --> " + filter.getReplaceValue() ); @@ -462,7 +462,7 @@ public class Replace extends MatchingTask // search again start = found + str1.length(); found = str.indexOf( str1, start ); - ++replaceCount; + ++m_replaceCount; } // write the remaining characters @@ -474,122 +474,18 @@ public class Replace extends MatchingTask return ret.toString(); } - //Inner class - public class NestedString + public NestedString getValue() { - - private StringBuffer buf = new StringBuffer(); - - public String getText() - { - return buf.toString(); - } - - public void addContent( String val ) - { - buf.append( val ); - } + return m_value; } - //Inner class - public class Replacefilter + public File getPropertyFile() { - private String property; - private String token; - private String value; - - public void setProperty( String property ) - { - this.property = property; - } - - public void setToken( String token ) - { - this.token = token; - } - - public void setValue( String value ) - { - this.value = value; - } - - public String getProperty() - { - return property; - } - - public String getReplaceValue() - { - if( property != null ) - { - return (String)properties.getProperty( property ); - } - else if( value != null ) - { - return value; - } - else if( Replace.this.value != null ) - { - return Replace.this.value.getText(); - } - else - { - //Default is empty string - return new String( "" ); - } - } - - public String getToken() - { - return token; - } - - public String getValue() - { - return value; - } - - public void validate() - throws TaskException - { - //Validate mandatory attributes - if( token == null ) - { - String message = "token is a mandatory attribute " + "of replacefilter."; - throw new TaskException( message ); - } - - if( "".equals( token ) ) - { - String message = "The token attribute must not be an empty string."; - throw new TaskException( message ); - } - - //value and property are mutually exclusive attributes - if( ( value != null ) && ( property != null ) ) - { - String message = "Either value or property " + "can be specified, but a replacefilter " + "element cannot have both."; - throw new TaskException( message ); - } - - if( ( property != null ) ) - { - //the property attribute must have access to a property file - if( propertyFile == null ) - { - String message = "The replacefilter's property attribute " + "can only be used with the replacetask's " + "propertyFile attribute."; - throw new TaskException( message ); - } - - //Make sure property exists in property file - if( properties == null || - properties.getProperty( property ) == null ) - { - String message = "property \"" + property + "\" was not found in " + propertyFile.getPath(); - throw new TaskException( message ); - } - } - } + return m_propertyFile; } + public Properties getProperties() + { + return m_properties; + } } diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Replacefilter.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Replacefilter.java new file mode 100644 index 000000000..f2694a33d --- /dev/null +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Replacefilter.java @@ -0,0 +1,117 @@ +/* + * 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.tools.ant.taskdefs; + +import org.apache.myrmidon.api.TaskException; + +public class Replacefilter +{ + private String m_property; + private String m_token; + private String m_value; + private Replace m_replace; + + public Replacefilter( Replace replace ) + { + m_replace = replace; + } + + public void setProperty( final String property ) + { + this.m_property = property; + } + + public void setToken( String token ) + { + this.m_token = token; + } + + public void setValue( String value ) + { + this.m_value = value; + } + + public String getProperty() + { + return m_property; + } + + public String getReplaceValue() + { + if( m_property != null ) + { + return (String)m_replace.getProperties().getProperty( m_property ); + } + else if( m_value != null ) + { + return m_value; + } + else if( m_replace.getValue() != null ) + { + return m_replace.getValue().getText(); + } + else + { + //Default is empty string + return ""; + } + } + + public String getToken() + { + return m_token; + } + + public String getValue() + { + return m_value; + } + + public void validate() + throws TaskException + { + //Validate mandatory attributes + if( m_token == null ) + { + String message = "token is a mandatory attribute " + "of replacefilter."; + throw new TaskException( message ); + } + + if( "".equals( m_token ) ) + { + String message = "The token attribute must not be an empty string."; + throw new TaskException( message ); + } + + //value and property are mutually exclusive attributes + if( ( m_value != null ) && ( m_property != null ) ) + { + String message = "Either value or property " + "can be specified, but a replacefilter " + "element cannot have both."; + throw new TaskException( message ); + } + + if( ( m_property != null ) ) + { + //the property attribute must have access to a property file + if( m_replace.getPropertyFile() == null ) + { + String message = "The replacefilter's property attribute " + + "can only be used with the replacetask's propertyFile attribute."; + throw new TaskException( message ); + } + + //Make sure property exists in property file + if( m_replace.getProperties() == null || + m_replace.getProperties().getProperty( m_property ) == null ) + { + String message = "property \"" + m_property + "\" was not found in " + m_replace.getPropertyFile().getPath(); + throw new TaskException( message ); + } + } + } +}