String patternRuleDefinition) throws FlumeException {
patternRuleDefinition = patternRuleDefinition.trim();
//first validate the format
int firstColonIndex = patternRuleDefinition.indexOf(":");
if (firstColonIndex == -1) {
throw new FlumeException(
"Invalid ipFilter patternRule '" + patternRuleDefinition +
"' should look like <'allow' or 'deny'>:<'ip' or " +
"'name'>:<pattern>");
} else {
String ruleAccessFlag = patternRuleDefinition.substring(0,
firstColonIndex);
int secondColonIndex = patternRuleDefinition.indexOf(":",
firstColonIndex + 1);
if ((!ruleAccessFlag.equals("allow") &&
!ruleAccessFlag.equals("deny")) || secondColonIndex == -1) {
throw new FlumeException(
"Invalid ipFilter patternRule '" + patternRuleDefinition +
"' should look like <'allow' or 'deny'>:<'ip' or " +
"'name'>:<pattern>");
}
String patternTypeFlag = patternRuleDefinition.substring(
firstColonIndex + 1, secondColonIndex);
if ((!patternTypeFlag.equals("ip") &&
!patternTypeFlag.equals("name"))) {
throw new FlumeException(
"Invalid ipFilter patternRule '" + patternRuleDefinition +
"' should look like <'allow' or 'deny'>:<'ip' or " +
"'name'>:<pattern>");
}