public ExecuteFunctionOperationContext executeFunctionAuthorize(String functionName,
      String region, Set keySet, Object arguments, boolean optimizeForWrite)
      throws NotAuthorizedException {
    ExecuteFunctionOperationContext executeContext = new ExecuteFunctionOperationContext(
        functionName, region, keySet, arguments, optimizeForWrite, false);
    if (!authzCallback.authorizeOperation(region, executeContext)) {
      final String errStr =
          "Not authorized to perform EXECUTE_REGION_FUNCTION operation";
      if (logger.warningEnabled()) {
        logger.warning(String.format("%s : %s", this, errStr));
      }
      if (isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, principal);
      } else {
        throw new NotAuthorizedException(errStr);
      }
    } else {
      if (logger.finestEnabled()) {
        logger
            .finest(this + ": Authorized to perform EXECUTE_REGION_FUNCTION operation ");
      }
    }
    return executeContext;
  }
This class implements authorization calls for various operations. It provides methods to invoke
authorization callback ({@link AccessControl#authorizeOperation}) before the actual operation to
check for authorization (pre-processing) that may modify the arguments to the operations. The
data being passed for the operation is encapsulated in a {@link OperationContext} object that can
be modified by the pre-processing authorization callbacks.

@since GemFire 5.5
geode-core/src/main/java/org/apache/geode/internal/security/AuthorizeRequest.java