You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by mb...@apache.org on 2011/04/08 23:19:47 UTC

svn commit: r1090450 - /ant/core/trunk/src/main/org/apache/tools/ant/filters/ExpandProperties.java

Author: mbenson
Date: Fri Apr  8 21:19:47 2011
New Revision: 1090450

URL: http://svn.apache.org/viewvc?rev=1090450&view=rev
Log:
readFully(), then index into a char[], rather than calling substring(1) after each read() call

Modified:
    ant/core/trunk/src/main/org/apache/tools/ant/filters/ExpandProperties.java

Modified: ant/core/trunk/src/main/org/apache/tools/ant/filters/ExpandProperties.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/filters/ExpandProperties.java?rev=1090450&r1=1090449&r2=1090450&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/filters/ExpandProperties.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/filters/ExpandProperties.java Fri Apr  8 21:19:47 2011
@@ -42,8 +42,10 @@ public final class ExpandProperties
     extends BaseFilterReader
     implements ChainableReader {
 
-    /** Data that must be read from, if not null. */
-    private String queuedData = null;
+    private static final int EOF = -1;
+
+    private char[] buffer;
+    private int index;
     private PropertySet propertySet;
 
     /**
@@ -89,24 +91,9 @@ public final class ExpandProperties
      * during reading
      */
     public int read() throws IOException {
-
-        int ch = -1;
-
-        if (queuedData != null && queuedData.length() == 0) {
-            queuedData = null;
-        }
-
-        if (queuedData != null) {
-            ch = queuedData.charAt(0);
-            queuedData = queuedData.substring(1);
-            if (queuedData.length() == 0) {
-                queuedData = null;
-            }
-        } else {
-            queuedData = readFully();
-            if (queuedData == null || queuedData.length() == 0) {
-                ch = -1;
-            } else {
+        if (index > EOF) {
+            if (buffer == null) {
+                String data = readFully();
                 Project project = getProject();
                 GetProperty getProperty;
                 if (propertySet == null) {
@@ -114,18 +101,22 @@ public final class ExpandProperties
                 } else {
                     final Properties props = propertySet.getProperties();
                     getProperty = new GetProperty() {
-                        
+
                         public Object getProperty(String name) {
                             return props.getProperty(name);
                         }
                     };
                 }
-                queuedData = new ParseProperties(project, PropertyHelper.getPropertyHelper(project)
-                        .getExpanders(), getProperty).parseProperties(queuedData).toString();
-                return read();
+                buffer = new ParseProperties(project, PropertyHelper.getPropertyHelper(project)
+                        .getExpanders(), getProperty).parseProperties(data).toString()
+                        .toCharArray();
+            }
+            if (index < buffer.length) {
+                return buffer[index++];
             }
+            index = EOF;
         }
-        return ch;
+        return EOF;
     }
 
     /**