private boolean authorizeMBeanOperation(MBeanServerPlugin delegate, ObjectName name, String methodName,
String attributeName, JmxAction.Impact impact,
boolean exception) throws MBeanException {
if (authorizer != null && delegate.shouldAuthorize()) {
JmxTarget target = new JmxTarget(methodName, name, isNonFacadeMBeansSensitive(), jmxEffect, jmxEffect);
JmxAction action = new JmxAction(methodName, impact, attributeName);
SecurityIdentity securityIdentity = securityIdentitySupplier != null ? securityIdentitySupplier.get() : null;
AuthorizationResult authorizationResult = authorizer.authorizeJmxOperation(createCaller(securityIdentity), null, action, target);
if (authorizationResult.getDecision() != Decision.PERMIT) {
if (exception) {
throw JmxLogger.ROOT_LOGGER.unauthorized();
} else {
return false;
}
}
}
return true;
}