package rocks.inspectit.ui.rcp.ci.form.part.business.rules.impl;
import java.util.Set;
import rocks.inspectit.shared.cs.ci.business.expression.AbstractExpression;
import rocks.inspectit.shared.cs.ci.business.expression.impl.StringMatchingExpression;
import rocks.inspectit.shared.cs.ci.business.valuesource.impl.HttpUriValueSource;
import rocks.inspectit.ui.rcp.ci.form.part.business.MatchingRulesEditingElementFactory.MatchingRuleType;
import rocks.inspectit.ui.rcp.ci.form.part.business.rules.AbstractStringMatchingRuleEditingElement;
import rocks.inspectit.ui.rcp.validation.AbstractValidationManager;
import rocks.inspectit.ui.rcp.validation.ValidationState;
/**
* Editing element for a HTTP URI matching expression.
*
* @author Marius Oehler
*
*/
public class HttpUriRuleEditingElement extends AbstractStringMatchingRuleEditingElement<HttpUriValueSource> {
/**
* The name of the string source.
*/
private static final String SOURCE_NAME = "URI";
/**
* Description text for the HTTP URI matching rule.
*/
private static final String DESCRIPTION = "This rule applies if the URI of the corresponding request\n" + "matches (equals, starts with, etc.) the specified String value.";
/**
* Constructor.
*
* @param expression
* The {@link AbstractExpression} instance to modify.
* @param editable
* indicates whether this editing element should be editable or read-only. If false,
* this element will be read only.
* @param upstreamValidationManager
* {@link AbstractValidationManager} instance to be notified on validation state
* changes.
*/
public HttpUriRuleEditingElement(StringMatchingExpression expression, boolean editable, AbstractValidationManager<AbstractExpression> upstreamValidationManager) {
super(expression, MatchingRuleType.HTTP_URI, DESCRIPTION, SOURCE_NAME, false, editable, upstreamValidationManager);
}
/**
* Validates the contents of the passed {@link StringMatchingExpression} without the need to
* create corresponding editing controls.
*
* @param expression
* {@link StringMatchingExpression} to validate
* @return a set of {@link ValidationState} instances.
*/
public static Set<ValidationState> validate(StringMatchingExpression expression) {
return AbstractStringMatchingRuleEditingElement.validate(expression, SOURCE_NAME);
}
/**
*
* {@inheritDoc}
*/
@Override
protected boolean isValidExpression(StringMatchingExpression expression) {
return expression.getStringValueSource() instanceof HttpUriValueSource;
}
}