// Copyright � 2004-2007 ASERT. Released under the Canoo Webtest license.
package com.canoo.webtest.extension;
import com.canoo.webtest.steps.AbstractFilter;
import com.gargoylesoftware.htmlunit.WebResponse;
/**
* Replaces all occurrences of a regular expression with some constant data.<p>
*
* @author Paul King
* @webtest.step category="Filter"
* name="lineSeparatorFilter"
* description="Replaces all <em>line.separator</em> combinations within (part of) a response by a <em>LF</em> to support platform independent content processing. For use with steps which take a <em>ContentFilter</em>."
*/
public class LineSeparatorFilter extends AbstractFilter
{
private static final String LF = "\n";
public void doExecute() throws Exception {
final WebResponse webResponse = getContext().getCurrentResponse().getWebResponse();
final String content = webResponse.getContentAsString();
final String origType = webResponse.getContentType();
final String sep = System.getProperty("line.separator");
final int sepSize = sep.length();
final StringBuffer buf = new StringBuffer();
int last = 0;
int pos = content.indexOf(sep, last);
while (pos != -1) {
buf.append(content.substring(last, pos));
buf.append(LF);
last = pos + sepSize;
pos = content.indexOf(sep, last);
}
if (last != content.length()) {
buf.append(content.substring(last));
}
defineAsCurrentResponse(buf.toString(), origType);
}
}