Return-Path: Delivered-To: apmail-jakarta-ant-dev-archive@jakarta.apache.org Received: (qmail 94594 invoked by uid 500); 19 Sep 2001 12:16:43 -0000 Mailing-List: contact ant-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk Reply-To: ant-dev@jakarta.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list ant-dev@jakarta.apache.org Received: (qmail 94584 invoked by uid 500); 19 Sep 2001 12:16:43 -0000 Delivered-To: apmail-jakarta-ant-cvs@apache.org Date: 19 Sep 2001 12:10:25 -0000 Message-ID: <20010919121025.36911.qmail@icarus.apache.org> From: conor@apache.org To: jakarta-ant-cvs@apache.org Subject: cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs Replace.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N conor 01/09/19 05:10:25 Modified: docs/manual/CoreTasks replace.html src/main/org/apache/tools/ant/taskdefs Replace.java Log: Add encoding to task so that replace can work on double byte characters Revision Changes Path 1.4 +5 -0 jakarta-ant/docs/manual/CoreTasks/replace.html Index: replace.html =================================================================== RCS file: /home/cvs/jakarta-ant/docs/manual/CoreTasks/replace.html,v retrieving revision 1.3 retrieving revision 1.4 diff -u -w -u -r1.3 -r1.4 --- replace.html 2001/07/30 13:35:23 1.3 +++ replace.html 2001/09/19 12:10:25 1.4 @@ -31,6 +31,11 @@ multiple files. + encoding + The encoding of the files upon which replace operates. + No - defaults to default JVM encoding + + token the token which must be replaced. Yes, unless a nested replacetoken 1.16 +21 -4 jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Replace.java Index: Replace.java =================================================================== RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Replace.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -w -u -r1.15 -r1.16 --- Replace.java 2001/07/30 13:35:23 1.15 +++ Replace.java 2001/09/19 12:10:25 1.16 @@ -83,6 +83,9 @@ private int replaceCount; private boolean summary = false; + /** The encoding used to read and write files - if null, uses default */ + private String encoding = null; + //Inner class public class NestedString { @@ -291,8 +294,13 @@ } try { - BufferedReader br = new BufferedReader(new FileReader(src)); - BufferedWriter bw = new BufferedWriter(new FileWriter(temp)); + Reader fileReader = encoding == null ? new FileReader(src) + : new InputStreamReader(new FileInputStream(src), encoding); + Writer fileWriter = encoding == null ? new FileWriter(src) + : new OutputStreamWriter(new FileOutputStream(src), encoding); + + BufferedReader br = new BufferedReader(fileReader); + BufferedWriter bw = new BufferedWriter(fileWriter); // read the entire file into a StringBuffer // size of work buffer may be bigger than needed @@ -354,8 +362,8 @@ temp.delete(); } } catch (IOException ioe) { - ioe.printStackTrace(); - throw new BuildException(ioe, location); + throw new BuildException("IOException in " + src + " - " + + ioe.getClass().getName() + ":" + ioe.getMessage(), ioe, location); } } @@ -412,6 +420,15 @@ createReplaceValue().addText(value); } + /** + * Set the file encoding to use on the files read and written by replace + * + * @param encoding the encoding to use on the files + */ + public void setEncoding(String encoding) { + this.encoding = encoding; + } + /** * Nested element. */