test_class.file: api/src/test/java/net/adamcin/oakpal/api/RuleTest.java
test_class.identifier: RuleTest
test_case.body: @Test
      public void testLastMatch() {
          final Rule allowsDigits = Rules.fromJson(key(Rule.keys().type(), "ALLOW")
                  .key(Rule.keys().pattern(), "[0-9]*").get());
          final Rule deniesLetters = Rules.fromJson(key(Rule.keys().type(), "DENY")
                  .key(Rule.keys().pattern(), "[a-z]*").get());
  
          final List<Rule> expectRules = Arrays.asList(allowsDigits, deniesLetters);
          final Rule adHocDefault = new Rule(RuleType.ALLOW, Pattern.compile("\\.\\."));
          final Rule matched0 = Rules.lastMatch(expectRules, "...", rules -> adHocDefault);
          assertSame("expect specific default", adHocDefault, matched0);
  
          final Rule matched1 = Rules.lastMatch(expectRules, "...", null);
          assertSame("expect globbal default", Rules.DEFAULT_INCLUDE, matched1);
  
          final Rule matchedDigits = Rules.lastMatch(expectRules, "123");
          assertSame("expect digits rule", allowsDigits, matchedDigits);
  
          final Rule matchedAlpha = Rules.lastMatch(expectRules, "abc");
          assertSame("expect alpha rule", deniesLetters, matchedAlpha);
  
      }
test_case.class_method_signature: RuleTest.testLastMatch()
test_case.full_signature: @Test public void testLastMatch()
test_case.identifier: testLastMatch
test_case.invocations: fromJson get key key type keys pattern keys fromJson get key key type keys pattern keys asList compile lastMatch assertSame lastMatch assertSame lastMatch assertSame lastMatch assertSame
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testLastMatch()
focal_class.declarator: KEYS = new JsonKeys() {
          @Override
          public String type() {
              return "type";
          }
  
          @Override
          public String pattern() {
              return "pattern";
          }
      }
focal_class.modifier: private static final
focal_class.original_string: private static final JsonKeys KEYS = new JsonKeys() {
          @Override
          public String type() {
              return "type";
          }
  
          @Override
          public String pattern() {
              return "pattern";
          }
      };
focal_class.type: JsonKeys
focal_class.var_name: KEYS
focal_class.declarator: type
focal_class.modifier: private final
focal_class.original_string: private final RuleType type;
focal_class.type: RuleType
focal_class.var_name: type
focal_class.declarator: pattern
focal_class.modifier: private final
focal_class.original_string: private final Pattern pattern;
focal_class.type: Pattern
focal_class.var_name: pattern
focal_class.file: api/src/main/java/net/adamcin/oakpal/api/Rule.java
focal_class.identifier: Rule
focal_class.interfaces: implements JsonObjectConvertible
focal_class.class_method_signature: Rule.keys()
focal_class.full_signature: @NotNull public static JsonKeys keys()
focal_class.identifier: keys
focal_class.modifiers: @NotNull public static
focal_class.parameters: ()
focal_class.return: JsonKeys
focal_class.signature: JsonKeys keys()
focal_class.class_method_signature: Rule.Rule(final RuleType type, final Pattern pattern)
focal_class.full_signature: public  Rule(final RuleType type, final Pattern pattern)
focal_class.identifier: Rule
focal_class.modifiers: public
focal_class.parameters: (final RuleType type, final Pattern pattern)
focal_class.signature:  Rule(final RuleType type, final Pattern pattern)
focal_class.class_method_signature: Rule.getType()
focal_class.full_signature: public RuleType getType()
focal_class.identifier: getType
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: RuleType
focal_class.signature: RuleType getType()
focal_class.class_method_signature: Rule.getPattern()
focal_class.full_signature: public Pattern getPattern()
focal_class.identifier: getPattern
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: Pattern
focal_class.signature: Pattern getPattern()
focal_class.class_method_signature: Rule.isInclude()
focal_class.full_signature: public boolean isInclude()
focal_class.identifier: isInclude
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isInclude()
focal_class.class_method_signature: Rule.isExclude()
focal_class.full_signature: public boolean isExclude()
focal_class.identifier: isExclude
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isExclude()
focal_class.class_method_signature: Rule.isAllow()
focal_class.full_signature: public boolean isAllow()
focal_class.identifier: isAllow
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isAllow()
focal_class.class_method_signature: Rule.isDeny()
focal_class.full_signature: public boolean isDeny()
focal_class.identifier: isDeny
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isDeny()
focal_class.class_method_signature: Rule.matches(String value)
focal_class.full_signature: public boolean matches(String value)
focal_class.identifier: matches
focal_class.modifiers: public
focal_class.parameters: (String value)
focal_class.return: boolean
focal_class.signature: boolean matches(String value)
focal_class.class_method_signature: Rule.toJson()
focal_class.full_signature: @Override public JsonObject toJson()
focal_class.identifier: toJson
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: JsonObject
focal_class.signature: JsonObject toJson()
focal_class.class_method_signature: Rule.toString()
focal_class.full_signature: @Override public String toString()
focal_class.identifier: toString
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String toString()
focal_class.class_method_signature: Rule.equals(final Object o)
focal_class.full_signature: @Override public boolean equals(final Object o)
focal_class.identifier: equals
focal_class.modifiers: @Override public
focal_class.parameters: (final Object o)
focal_class.return: boolean
focal_class.signature: boolean equals(final Object o)
focal_class.class_method_signature: Rule.hashCode()
focal_class.full_signature: @Override public int hashCode()
focal_class.identifier: hashCode
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int hashCode()
focal_method.body: @NotNull
      public static JsonKeys keys() {
          return KEYS;
      }
focal_method.class_method_signature: Rule.keys()
focal_method.full_signature: @NotNull public static JsonKeys keys()
focal_method.identifier: keys
focal_method.modifiers: @NotNull public static
focal_method.parameters: ()
focal_method.return: JsonKeys
focal_method.signature: JsonKeys keys()