Skip to content

keyGet3 function not implemented in jcasbin #523

@AlabLan

Description

@AlabLan

I followed the documentation at https://casbin.apache.org/docs/function and tried to use the keyGet3 function, but discovered that the Java implementation of casbin does not have this function.

After checking the source code, I confirmed that jcasbin only has keyGet and keyGet2 (using :var style), but is missing keyGet3 (using {var} style) which exists in the Go version.

I ported the keyGet3 function from the Go version following the existing code style of keyGet and keyGet2. However, during implementation, I encountered a regex incompatibility issue between Go and Java
where certain valid Go test patterns cause regex compilation errors in Java.

Specifically, patterns like "/{id/using/{resId}" work in Go but fail in Java because Java treats "{" as a repetition quantifier modifier, causing "/{id/using/(" to be interpreted as an invalid quantifier
pattern.

I added extra logic to escape remaining { and } characters after replacement to maintain compatibility with Go's behavior.

Fixes #522

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions