// Copyright � 2004-2007 ASERT. Released under the Canoo Webtest license. package com.canoo.webtest.extension; import java.util.List; import org.apache.tools.ant.Task; import com.canoo.webtest.engine.Context; import com.canoo.webtest.engine.WebClientContext; import com.canoo.webtest.interfaces.IComputeValue; /** * Abstract class used for processing content. */ public abstract class AbstractProcessContentStep extends AbstractProcessFiltersStep implements IComputeValue { private String fPropertyName; private String fPropertyType; private String fComputedValue; /** * Sets the target property type. * * @param type The Property type * @webtest.parameter required="no" * description="The target property type. Either \"ant\" or \"dynamic\"." * default="the \"defaultPropertyType\" as specified in the \"config\" element is used." */ public void setPropertyType(final String type) { fPropertyType = type; } public String getPropertyType() { return fPropertyType; } /** * Sets the target property name. * * @param name The Property Name * @webtest.parameter * required="yes" * description="The target property name." */ public void setProperty(final String name) { fPropertyName = name; } public String getProperty() { return fPropertyName; } public void doExecute() { final List steps = getSteps(); final Context context = getContext(); final WebClientContext.StoredResponses origResponses = context.getResponses(); // TODO: just make table like a normal filter, i.e. add to list of steps to execute applyTableFilterIfNeeded(context); applyExtractionIfNeeded(context); for (int i = 0; i < steps.size(); i++) { final Task step = (Task) steps.get(i); executeContainedStep(step); // context = step.getContext(); } // setWebtestProperty(fPropertyName, processContent(context), fPropertyType); fComputedValue = processContent(getContext()); setWebtestProperty(getProperty(), fComputedValue, getPropertyType()); getContext().restoreResponses(origResponses); } protected abstract String processContent(Context text); /** * Verifies the parameters */ protected void verifyParameters() { super.verifyParameters(); nullParamCheck(getProperty(), "property"); nullResponseCheck(); } public String getComputedValue() { return fComputedValue; } }