### Question:
OperationKeyMatcher implements Matcher { public void setOperationName(String operationName) { this.operationName = operationName; }  String getServiceName(); void setServiceName(String serviceName); String getOperationName(); void setOperationName(String operationName); int getMajorVersion(); void setMajorVersion(int majorVersion); int getMinorVersion(); void setMinorVersion(int minorVersion); boolean isInverted(); void setInverted(boolean inverted); String getNamespace(); void setNamespace(String namespace); boolean isRequireNullNamespace(); void setRequireNullNamespace(boolean requireNullNamespace); OperationKey.Type getType(); void setType(String type); void setType(OperationKey.Type type); @Override boolean matches(ExecutionContext ctx, OperationKey key, Object[] args); boolean matches(OperationKey key); String toString();  }### Answer:
@Test public void operationNameMatching() { operationKeyMatcher.setOperationName("wrongOperation"); assertInvocation("With wrong operationName, key must fail to match", false); operationKeyMatcher.setOperationName("operationName"); assertInvocation("With right operationName, key must match", true); operationKeyMatcher.setOperationName("*tionName"); assertInvocation("With left wildcard, key must match", true); operationKeyMatcher.setOperationName("operation*"); assertInvocation("With right wildcard, key must match", true); operationKeyMatcher.setOperationName("*perationNam*"); assertInvocation("With both wildcards, key must match", true); operationKeyMatcher.setOperationName("*aionName"); assertInvocation("With wrong left wildcard, key must fail to match", false); operationKeyMatcher.setOperationName("operatioz*"); assertInvocation("With wrong right wildcard, key must fail to match", false); operationKeyMatcher.setOperationName("*qeratioz*"); assertInvocation("With wrong double wildcard, key must fail to match", false); }