package rocks.inspectit.shared.cs.ci.business.impl;
import rocks.inspectit.shared.cs.ci.business.expression.AbstractExpression;
/**
* Common interface for entities that provide a {@link AbstractExpression} instance as a matching
* rule.
*
* @author Alexander Wert
*
*/
public interface IMatchingRuleProvider {
/**
* Returns an {@link AbstractExpression} instance.
*
* @return Returns an {@link AbstractExpression} instance.s
*/
AbstractExpression getMatchingRuleExpression();
/**
* Sets the {@link AbstractExpression} for this {@link IMatchingRuleProvider} instance.
*
* @param matchingRuleExpression
* New value for {@link AbstractExpression}.
*/
void setMatchingRuleExpression(AbstractExpression matchingRuleExpression);
/**
* Indicates whether the provided rule is allowed to be changed.
*
* @return Returns true, if the rule is allowed to be changed. Otherwise false.
*/
boolean isChangeable();
}