@@ -334,15 +334,10 @@ public static boolean allMatch(String key1, String key2) {
334
334
}
335
335
336
336
337
- public static class generateGFunctionClass {
337
+ public static class GenerateGFunctionClass {
338
338
// key:name such as g,g2 value:user-role mapping
339
339
private static Map <String , Map <String , AviatorBoolean >> memorizedMap = new HashMap <>();
340
340
341
- public static void updateGFunctionCache (String name ){
342
- Map <String , AviatorBoolean > memorized = memorizedMap .get (name );
343
- memorized = new HashMap <>();
344
- }
345
-
346
341
/**
347
342
* generateGFunction is the factory method of the g(_, _) function.
348
343
*
@@ -361,66 +356,26 @@ public AviatorObject variadicCall(Map<String, Object> env, AviatorObject... args
361
356
if (len < 2 ){
362
357
return AviatorBoolean .valueOf (false );
363
358
}
364
- Object name1Obj = FunctionUtils .getJavaObject (args [0 ], env );
359
+ String name1 = FunctionUtils .getStringValue (args [0 ], env );
365
360
String name2 = FunctionUtils .getStringValue (args [1 ], env );
366
- Sequence name1List = null ;
367
- String name1 = null ;
368
- if (name1Obj instanceof java .util .List ) {
369
- name1List = RuntimeUtils .seq (name1Obj ,env );
370
- } else {
371
- name1 = (String ) name1Obj ;
372
- }
373
361
374
362
String key = "" ;
375
- for (int i = 0 ; i < len ; i ++) {
376
- Object nameObj = FunctionUtils .getJavaObject (args [i ], env );
377
- if (nameObj instanceof java .util .List ) {
378
- Sequence nameList = RuntimeUtils .seq (name , env );
379
- for (Object obj : nameList ) {
380
- key += ";" + obj ;
381
- }
382
- } else {
383
- key += ";" + nameObj ;
384
- }
363
+ for (AviatorObject arg : args ) {
364
+ String name = FunctionUtils .getStringValue (arg , env );
365
+ key += ";" + name ;
385
366
}
386
-
387
- AviatorBoolean value = memorized .get (key );
388
- if (value != null ) {
389
- return value ;
367
+ if (memorized .containsKey (key )) {
368
+ return memorized .get (key );
390
369
}
391
370
371
+ AviatorBoolean value ;
392
372
if (rm == null ) {
393
373
value = AviatorBoolean .valueOf (name1 .equals (name2 ));
394
374
} else if (len == 2 ) {
395
- if (name1List !=null ) {
396
- boolean res = false ;
397
- for (Object obj : name1List ) {
398
- if (rm .hasLink ((String ) obj , name2 )){
399
- res = true ;
400
- break ;
401
- }
402
- }
403
- value = AviatorBoolean .valueOf (res );
404
- }
405
375
value = AviatorBoolean .valueOf (rm .hasLink (name1 , name2 ));
406
376
} else if (len == 3 ) {
407
377
String domain = FunctionUtils .getStringValue (args [2 ], env );
408
378
value = AviatorBoolean .valueOf (rm .hasLink (name1 , name2 , domain ));
409
- } else if (len == 4 ) {
410
- String p_dom = FunctionUtils .getStringValue (args [3 ], env );
411
- Object domainObj = FunctionUtils .getJavaObject (args [2 ], env );
412
-
413
- boolean res = false ;
414
- if (domainObj instanceof java .util .List ){
415
- Sequence domainSeq = RuntimeUtils .seq (domainObj ,env );
416
- for (Object r_dom : domainSeq ) {
417
- if (r_dom .equals (p_dom ) && rm .hasLink (name1 , name2 , (String ) r_dom )){
418
- res = true ;
419
- break ;
420
- }
421
- }
422
- }
423
- value = AviatorBoolean .valueOf (res );
424
379
} else {
425
380
value = AviatorBoolean .valueOf (false );
426
381
}
0 commit comments