2222import java .util .HashMap ;
2323import java .util .List ;
2424import java .util .Map ;
25+ import java .util .Arrays ;
26+
27+ import static org .casbin .jcasbin .util .Util .splitCommaDelimited ;
2528
2629/**
2730 * Policy represents the whole access control policy user defined.
@@ -187,6 +190,16 @@ public boolean addPolicy(String sec, String ptype, List<String> rule) {
187190 List <List <String >> policy = assertion .policy ;
188191 int priorityIndex = assertion .priorityIndex ;
189192
193+ String line = ptype + "," + String .join ("," , rule );
194+ if ("" .equals (line )) {
195+ return false ;
196+ }
197+ if (line .charAt (0 ) == '#' ) {
198+ return false ;
199+ }
200+ String [] tokens = splitCommaDelimited (line );
201+ List <String > linePolicy = Arrays .asList (Arrays .copyOfRange (tokens , 1 , tokens .length ));
202+
190203 // ensure the policies is ordered by priority value
191204 if ("p" .equals (sec ) && priorityIndex >= 0 ) {
192205 int value = Integer .parseInt (rule .get (priorityIndex ));
@@ -200,13 +213,13 @@ public boolean addPolicy(String sec, String ptype, List<String> rule) {
200213 right = mid ;
201214 }
202215 }
203- policy .add (left , rule );
216+ policy .add (left , linePolicy );
204217 for (int i = left ; i < assertion .policy .size (); ++i ) {
205218 assertion .policyIndex .put (assertion .policy .get (i ).toString (), i );
206219 }
207220 } else {
208- policy .add (rule );
209- assertion .policyIndex .put (rule .toString (), policy .size () - 1 );
221+ policy .add (linePolicy );
222+ assertion .policyIndex .put (linePolicy .toString (), policy .size () - 1 );
210223 }
211224
212225 return true ;
0 commit comments