Author: bayard Date: Tue Oct 24 13:29:44 2006 New Revision: 467467 URL: http://svn.apache.org/viewvc?view=rev&rev=467467 Log: Applying optimisation from LANG-287. Thanks to Stepan Koltsov and Holger Hoffstatte.
Modified: jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/Entities.java Modified: jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/Entities.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/Entities.java?view=diff&rev=467467&r1=467466&r2=467467 ============================================================================== --- jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/Entities.java (original) +++ jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/Entities.java Tue Oct 24 13:29:44 2006 @@ -811,9 +811,14 @@ * @return A new escaped <code>String</code>. */ public String unescape(String str) { + int firstAmp = str.indexOf('&'); + if (firstAmp < 0) { + return str; + } + StringBuffer buf = new StringBuffer(str.length()); - int i; - for (i = 0; i < str.length(); ++i) { + buf.append(str.substring(0, firstAmp)); + for (int i = firstAmp; i < str.length(); ++i) { char ch = str.charAt(i); if (ch == '&') { int semi = str.indexOf(';', i + 1); @@ -877,11 +882,15 @@ * @see Writer */ public void unescape(Writer writer, String string) throws IOException { - int len = string.length(); - if (len == 0) { + int firstAmp = string.indexOf('&'); + if (firstAmp < 0) { + writer.write(string); return; } - for (int i = 0; i < len; i++) { + + writer.write(string, 0, firstAmp); + int len = string.length(); + for (int i = firstAmp; i < len; i++) { char c = string.charAt(i); if (c == '&') { int nextIdx = i+1; --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]