[ http://issues.apache.org/jira/browse/CACTUS-210?page=all ] Vincent Massol closed CACTUS-210: ---------------------------------
Assign To: Vincent Massol Resolution: Fixed Fix Version: 1.8 Applied. Thanks very much! > XMLFormatter.replace sometimes cuts the result > ---------------------------------------------- > > Key: CACTUS-210 > URL: http://issues.apache.org/jira/browse/CACTUS-210 > Project: Cactus > Type: Bug > Components: Framework > Versions: 1.7 > Reporter: Thorsten Harders > Assignee: Vincent Massol > Priority: Minor > Fix For: 1.8 > > The replace method in the > org.apache.cactus.internal.server.runner.XMLFormatter might cut off > characters... > Example: > replace("12x456x89", 'x', "<X>") > Will return 12<X>456<X> > This method can even produce an infinite loop, if the char that is searched > for is included in the result String. > replace("12x456x890", 'x', "<x>") > But that should not be the case within cactus. > Also the performance of this method is really bad, because String > concatenations are used. A StringBuffer used to produce the result would be > better. > Here is my suggestion for a replacement.... > private static String replace(String theBaseString, char theChar, > String theNewString) { > > if (theBaseString == null) { > return null; > } > int pos = theBaseString.indexOf(theChar); > if (pos < 0) return theBaseString; > int lastPos = 0; > > StringBuffer result = new StringBuffer(); > while (pos > -1) { > result.append(theBaseString.substring(lastPos, pos)); > result.append(theNewString); > lastPos = pos + 1; > pos = theBaseString.indexOf(theChar, lastPos); > } > if (lastPos < theBaseString.length()) > result.append(theBaseString.substring(lastPos)); > return result.toString(); > } -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]