package org.ei.drishti.scheduler.router; import java.util.Arrays; import java.util.List; public abstract class Matcher { public abstract boolean matches(String actualValue); public static Matcher eq(String value) { return new EqMatcher(value); } public static Matcher any() { return new AnyMatcher(); } public static Matcher anyOf(String... values) { return new AnyOfMatcher(values); } private static class AnyMatcher extends Matcher { @Override public boolean matches(String actualValue) { return true; } } private static class EqMatcher extends Matcher { private final String expectedValue; public EqMatcher(String expectedValue) { this.expectedValue = expectedValue; } @Override public boolean matches(String actualValue) { return expectedValue.equals(actualValue); } } private static class AnyOfMatcher extends Matcher { private final List<String> expectedValues; public AnyOfMatcher(String... expectedValues) { this.expectedValues = Arrays.asList(expectedValues); } @Override public boolean matches(String actualValue) { return expectedValues.contains(actualValue); } } }