Class BuiltInFunctions

java.lang.Object
org.casbin.jcasbin.util.BuiltInFunctions

public class BuiltInFunctions extends Object
  • Field Details

    • KEY_MATCH2_PATTERN

      private static final Pattern KEY_MATCH2_PATTERN
    • KEY_MATCH3_PATTERN

      private static final Pattern KEY_MATCH3_PATTERN
    • KEY_MATCH5_PATTERN

      private static final Pattern KEY_MATCH5_PATTERN
  • Constructor Details

    • BuiltInFunctions

      public BuiltInFunctions()
  • Method Details

    • validateVariadicStringArgs

      public static void validateVariadicStringArgs(int expectedLen, String... args) throws IllegalArgumentException
      validate the variadic string parameter size
      Parameters:
      expectedLen - the variadic string arguments to validate.
      args - the expected number of arguments.
      Throws:
      IllegalArgumentException
    • keyMatch

      public static boolean keyMatch(String key1, String key2)
      keyMatch determines whether key1 matches the pattern of key2 (similar to RESTful path), key2 can contain a *.
       For example, "/foo/bar" matches "/foo/*"
       
      Parameters:
      key1 - the first argument.
      key2 - the second argument.
      Returns:
      whether key1 matches key2.
    • keyMatch2

      public static boolean keyMatch2(String key1, String key2)
      keyMatch2 determines whether key1 matches the pattern of key2 (similar to RESTful path), key2 can contain a *.
       For example, "/foo/bar" matches "/foo/*", "/resource1" matches "/:resource"
       
      Parameters:
      key1 - the first argument.
      key2 - the second argument.
      Returns:
      whether key1 matches key2.
    • keyMatch3

      public static boolean keyMatch3(String key1, String key2)
      keyMatch3 determines whether key1 matches the pattern of key2 (similar to RESTful path), key2 can contain a *.
       For example, "/foo/bar" matches "/foo/*", "/resource1" matches "/{resource}"
       
      Parameters:
      key1 - the first argument.
      key2 - the second argument.
      Returns:
      whether key1 matches key2.
    • keyMatch4

      public static boolean keyMatch4(String key1, String key2)
      KeyMatch4 determines whether key1 matches the pattern of key2 (similar to RESTful path), key2 can contain a *. Besides what KeyMatch3 does, KeyMatch4 can also match repeated patterns:
       "/parent/123/child/123" matches "/parent/{id}/child/{id}"
       "/parent/123/child/456" does not match "/parent/{id}/child/{id}"
       But KeyMatch3 will match both.
       
      Attention: key1 cannot contain English commas.
      Parameters:
      key1 - the first argument.
      key2 - the second argument.
      Returns:
      whether key1 matches key2.
    • keyMatch5

      public static boolean keyMatch5(String key1, String key2)
      KeyMatch5 determines whether key1 matches the pattern of key2 and ignores the parameters in key2.
       For example, "/foo/bar?status=1&type=2" matches "/foo/bar"
       
      Parameters:
      key1 - the first argument.
      key2 - the second argument.
      Returns:
      whether key1 matches key2.
    • keyGetFunc

      public static String keyGetFunc(String key1, String key2)
      KeyGet returns the matched part. For example, "/foo/bar/foo" matches "/foo/*", "bar/foo" will been returned
      Parameters:
      key1 - the first argument.
      key2 - the second argument.
      Returns:
      the matched part.
    • keyGet2Func

      public static String keyGet2Func(String key1, String key2, String pathVar)
      KeyGet2 returns value matched pattern.For example, "/resource1" matches "/:resource", if the pathVar == "resource", then "resource1" will be returned.
      Parameters:
      key1 - the first argument.
      key2 - the second argument.
      pathVar - the name of the variable to retrieve from the matched pattern.
      Returns:
      the matched part.
    • regexMatch

      public static boolean regexMatch(String key1, String key2)
      regexMatch determines whether key1 matches the pattern of key2 in regular expression.
      Parameters:
      key1 - the first argument.
      key2 - the second argument.
      Returns:
      whether key1 matches key2.
    • ipMatch

      public static boolean ipMatch(String ip1, String ip2)
      ipMatch determines whether IP address ip1 matches the pattern of IP address ip2, ip2 can be an IP address or a CIDR pattern. For example, "192.168.2.123" matches "192.168.2.0/24"
      Parameters:
      ip1 - the first argument.
      ip2 - the second argument.
      Returns:
      whether ip1 matches ip2.
    • globMatch

      public static boolean globMatch(String key1, String key2)
      globMatch determines whether key1 matches the pattern of key2 in glob expression.
      Parameters:
      key1 - the first argument.
      key2 - the second argument.
      Returns:
      whether key1 matches key2.
    • allMatch

      public static boolean allMatch(String key1, String key2)
      allMatch determines whether key1 matches the pattern of key2 , key2 can contain a *.
       For example, "*" matches everything
       
      Parameters:
      key1 - the first argument.
      key2 - the second argument.
      Returns:
      whether key1 matches key2.
    • eval

      public static boolean eval(String eval, Map<String,Object> env, com.googlecode.aviator.AviatorEvaluatorInstance aviatorEval)
      eval calculates the stringified boolean expression and return its result.
      Parameters:
      eval - the stringified boolean expression.
      env - the key-value pair of the parameters in the expression.
      aviatorEval - the AviatorEvaluatorInstance object which contains built-in functions and custom functions.
      Returns:
      the result of the eval.
    • timeMatchFunc

      public static boolean timeMatchFunc(String... args)
      timeMatchFunc is the wrapper for TimeMatch.
      Parameters:
      args - the arguments for the time match function.
      Returns:
      whether the time matches the pattern.
    • timeMatch

      public static boolean timeMatch(String startTime, String endTime)
      TimeMatch determines whether the current time is between startTime and endTime. You can use "_" to indicate that the parameter is ignored
      Parameters:
      startTime - the start time as a string in the format "yyyy-MM-dd HH:mm:ss". Use "_" to ignore the start time.
      endTime - the end time as a string in the format "yyyy-MM-dd HH:mm:ss". Use "_" to ignore the end time.
      Returns:
      whether the current time is between startTime and endTime