Skip to content

Commit 629f545

Browse files
authored
fix: 'in' operator causes the expression to lose content (casbin#253)
Signed-off-by: Yixiang Zhao <[email protected]>
1 parent 84767f0 commit 629f545

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

src/main/java/org/casbin/jcasbin/util/Util.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,13 @@ public static String convertInSyntax(String expString) {
117117
String reg = "([a-zA-Z0-9_.()\"]*) +in +([a-zA-Z0-9_.()\"]*)";
118118
Matcher m1 = Pattern.compile(reg).matcher(expString);
119119
StringBuffer sb = new StringBuffer();
120-
boolean flag=false;
120+
boolean flag = false;
121121
while (m1.find()) {
122-
flag=true;
123-
m1.appendReplacement(sb,"include($2, $1)");
122+
flag = true;
123+
m1.appendReplacement(sb, "include($2, $1)");
124124
}
125-
return flag?sb.toString():expString;
125+
m1.appendTail(sb);
126+
return flag ? sb.toString() : expString;
126127
}
127128
/**
128129
* removeComments removes the comments starting with # in the text.

src/test/java/org/casbin/jcasbin/main/UtilTest.java

+1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public void testConvertInSyntax(){
4545
assertEquals("include(r_obj, r_sub)", Util.convertInSyntax("r_sub in r_obj"));
4646
assertEquals("include(r_obj, r_sub.name)", Util.convertInSyntax("r_sub.name in r_obj"));
4747
assertEquals("include(r_obj.name, r_sub.name)", Util.convertInSyntax("r_sub.name in r_obj.name"));
48+
assertEquals("include(r_obj, r_sub) && r.obj == p.obj", Util.convertInSyntax("r_sub in r_obj && r.obj == p.obj"));
4849
}
4950

5051
@Test

0 commit comments

Comments
 (0)