Package com.canoo.webtest.extension

Source Code of com.canoo.webtest.extension.MatchLinesFilter

// Copyright � 2006-2007 ASERT. Released under the Canoo Webtest license.
package com.canoo.webtest.extension;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.canoo.webtest.steps.AbstractFilter;
import com.canoo.webtest.util.ConversionUtil;
import com.gargoylesoftware.htmlunit.WebResponse;

/**
* Removes or keeps lines which match a regular expression.<p>
*
* @author Paul King
* @webtest.step category="Filter"
* name="matchLinesFilter"
* description="Removes or keeps lines which match a <key>regex</key>. For use with steps which take a <em>ContentFilter</em>."
*/
public class MatchLinesFilter extends AbstractFilter
{
    private static final String LS = System.getProperty("line.separator");
    private String fRegex;
    private String fRemove;

    /**
     * @param value
     * @webtest.parameter required="yes"
     * description="The regex to match against lines."
     */
    public void setRegex(final String value) {
        fRegex = value;
    }

    public String getRegex() {
        return fRegex;
    }

    /**
     * @param flag
     * @webtest.parameter
     *   required="no"
     *   default="false"
     *   description="Indicates that lines which match will be removed (true) or kept (false)."
     */
    public void setRemove(final String flag) {
        fRemove = flag;
    }

    public String getRemove() {
        return fRemove;
    }

    public void doExecute() throws Exception {
        final WebResponse webResponse = getContext().getCurrentResponse().getWebResponse();
        final String orig = webResponse.getContentAsString();
        final String origType = webResponse.getContentType();
        final boolean remove = ConversionUtil.convertToBoolean(getRemove(), false);
        final String lineStr = "(^.*$)";
        final Pattern linePattern = Pattern.compile(lineStr, Pattern.MULTILINE);
        final Matcher matcher = linePattern.matcher(orig);
        final StringBuffer buf = new StringBuffer();
        while (matcher.find()) {
            final String line = matcher.group(0);
            if (line.matches(fRegex) != remove) {
                buf.append(line).append(LS);
            }
        }
        defineAsCurrentResponse(buf.toString(), origType);
    }

    protected void verifyParameters() {
        super.verifyParameters();
        nullParamCheck(getRegex(), "regex");
        nullResponseCheck();
    }
}
TOP

Related Classes of com.canoo.webtest.extension.MatchLinesFilter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.