private ResourcePermission getOperationContext(ObjectName objectName, String featureName,
      boolean isOp) throws InstanceNotFoundException, ReflectionException {
    MBeanInfo beanInfo;
    try {
      beanInfo = mbs.getMBeanInfo(objectName);
    } catch (IntrospectionException e) {
      throw new GemFireSecurityException("error getting beanInfo of " + objectName, e);
    }
    // If there is no annotation defined either in the class level or method level, we should
    // consider this operation/attribute freely accessible
    ResourcePermission result = null;

    // find the context in the beanInfo if defined in the class level
    result = getOperationContext(beanInfo.getDescriptor(), result);

    MBeanFeatureInfo[] featureInfos;
    if (isOp) {
      featureInfos = beanInfo.getOperations();
    } else {
      featureInfos = beanInfo.getAttributes();
    }
    // still look into the attributes/operations to see if it's defined in the method level
    for (MBeanFeatureInfo info : featureInfos) {
      if (info.getName().equals(featureName)) {
        // found the featureInfo of this method on the bean
        result = getOperationContext(info.getDescriptor(), result);
        break;
      }
    }
    return result;
  }
This class intercepts all MBean requests for GemFire MBeans and passed it to
ManagementInterceptor for authorization

@since Geode 1.0
geode-core/src/main/java/org/apache/geode/management/internal/security/MBeanServerWrapper.java