@Override public <A extends Annotation>ExpressionResult checkUserPermissions(PersistentResource<?> resource,Class<A> annotationClass,String field){
  if (requestScope.getSecurityMode() == SecurityMode.SECURITY_INACTIVE) {
    return ExpressionResult.PASS;
  }
  ExpressionResult expressionResult=userPermissionCheckCache.get(Triple.of(annotationClass,resource.getResourceClass(),field));
  if (expressionResult != null) {
    return expressionResult;
  }
  Expressions expressions=expressionBuilder.buildUserCheckFieldExpressions(resource,annotationClass,field);
  expressionResult=executeExpressions(expressions,annotationClass);
  userPermissionCheckCache.put(Triple.of(annotationClass,resource.getResourceClass(),field),expressionResult);
  if (expressionResult == PASS) {
    expressionResultShortCircuit.add(Triple.of(annotationClass,resource.getResourceClass(),field));
  }
  return expressionResult;
}

@ Override public < A extends Annotation > ExpressionResult checkUserPermissions ( PersistentResource < ? > resource , Class < A > annotationClass , String field ) { if ( requestScope . getSecurityMode ( ) == SecurityMode . SECURITY_INACTIVE ) { return ExpressionResult . PASS ; } ExpressionResult expressionResult = userPermissionCheckCache . get ( Triple . of ( annotationClass , resource . getResourceClass ( ) , field ) ) ; if ( expressionResult != null ) { return expressionResult ; } Expressions expressions = expressionBuilder . buildUserCheckFieldExpressions ( resource , annotationClass , field ) ; expressionResult = executeExpressions ( expressions , annotationClass ) ; userPermissionCheckCache . put ( Triple . of ( annotationClass , resource . getResourceClass ( ) , field ) , expressionResult ) ; if ( expressionResult == PASS ) { expressionResultShortCircuit . add ( Triple . of ( annotationClass , resource . getResourceClass ( ) , field ) ) ; } return expressionResult ; }
check strictly user permissions on a specific field and entity .
