@Override public void execute(OperationContext context, ModelNode operation) throws OperationFailedException { String operationName = NAME.resolveModelAttribute(context, operation).asString(); boolean accessControl = ACCESS_CONTROL.resolveModelAttribute(context, operation).asBoolean(); final DescribedOp describedOp = getDescribedOp(context, operationName, operation, !accessControl); if (describedOp == null || (context.getProcessType() == ProcessType.DOMAIN_SERVER && !describedOp.flags.contains(OperationEntry.Flag.RUNTIME_ONLY))) { throw new OperationFailedException( ControllerLogger.ROOT_LOGGER.operationNotRegistered( operationName, context.getCurrentAddress())); } else { ModelNode result = describedOp.getDescription(); if (accessControl) { final PathAddress address = context.getCurrentAddress(); ModelNode operationToCheck = Util.createOperation(operationName, address); operationToCheck.get(OPERATION_HEADERS).set(operation.get(OPERATION_HEADERS)); AuthorizationResult authorizationResult = context.authorizeOperation(operationToCheck); result .get(ACCESS_CONTROL.getName(), EXECUTE) .set(authorizationResult.getDecision() == Decision.PERMIT); } context.getResult().set(result); } }