/** * Create parameter info for the given method. * <p>The default implementation returns an empty array of {@code MBeanParameterInfo}. * @param method the {@code Method} to get the parameter information for * @param beanKey the key associated with the MBean in the beans map * of the {@code MBeanExporter} * @return the {@code MBeanParameterInfo} array */ protected MBeanParameterInfo[] getOperationParameters(Method method, String beanKey) { ParameterNameDiscoverer paramNameDiscoverer = getParameterNameDiscoverer(); String[] paramNames = (paramNameDiscoverer != null ? paramNameDiscoverer.getParameterNames(method) : null); if (paramNames == null) { return new MBeanParameterInfo[0]; } MBeanParameterInfo[] info = new MBeanParameterInfo[paramNames.length]; Class<?>[] typeParameters = method.getParameterTypes(); for (int i = 0; i < info.length; i++) { info[i] = new MBeanParameterInfo(paramNames[i], typeParameters[i].getName(), paramNames[i]); } return info; }
private void buildDynamicMBeanInfo() { Constructor[] constructors = this.getClass().getConstructors(); dConstructors[0] = new MBeanConstructorInfo( "HierarchyDynamicMBean(): Constructs a HierarchyDynamicMBean instance", constructors[0]); dAttributes.add(new MBeanAttributeInfo("name", "java.lang.String", "The name of this Logger.", true, false, false)); dAttributes.add(new MBeanAttributeInfo("priority", "java.lang.String", "The priority of this logger.", true, true, false)); MBeanParameterInfo[] params = new MBeanParameterInfo[2]; params[0] = new MBeanParameterInfo("class name", "java.lang.String", "add an appender to this logger"); params[1] = new MBeanParameterInfo("appender name", "java.lang.String", "name of the appender"); dOperations[0] = new MBeanOperationInfo("addAppender", "addAppender(): add an appender", params, "void", MBeanOperationInfo.ACTION); }
private void buildDynamicMBeanInfo() { Constructor[] constructors = this.getClass().getConstructors(); dConstructors[0] = new MBeanConstructorInfo( "HierarchyDynamicMBean(): Constructs a HierarchyDynamicMBean instance", constructors[0]); vAttributes.add(new MBeanAttributeInfo(THRESHOLD, "java.lang.String", "The \"threshold\" state of the hiearchy.", true, true, false)); MBeanParameterInfo[] params = new MBeanParameterInfo[1]; params[0] = new MBeanParameterInfo("name", "java.lang.String", "Create a logger MBean" ); dOperations[0] = new MBeanOperationInfo("addLoggerMBean", "addLoggerMBean(): add a loggerMBean", params , "javax.management.ObjectName", MBeanOperationInfo.ACTION); }
/** * Create parameter info for the given method. * <p>The default implementation returns an empty array of {@code MBeanParameterInfo}. * @param method the {@code Method} to get the parameter information for * @param beanKey the key associated with the MBean in the beans map * of the {@code MBeanExporter} * @return the {@code MBeanParameterInfo} array */ protected MBeanParameterInfo[] getOperationParameters(Method method, String beanKey) { ParameterNameDiscoverer paramNameDiscoverer = getParameterNameDiscoverer(); String[] paramNames = (paramNameDiscoverer != null ? paramNameDiscoverer.getParameterNames(method) : null); if (paramNames == null) { return new MBeanParameterInfo[0]; } MBeanParameterInfo[] info = new MBeanParameterInfo[paramNames.length]; Class<?>[] typeParameters = method.getParameterTypes(); for (int i = 0; i < info.length; i++) { info[i] = new MBeanParameterInfo(paramNames[i], typeParameters[i].getName(), paramNames[i]); } return info; }
/** * Reads {@code MBeanParameterInfo} from the {@code ManagedOperationParameter} * attributes attached to a method. Returns an empty array of {@code MBeanParameterInfo} * if no attributes are found. */ @Override protected MBeanParameterInfo[] getOperationParameters(Method method, String beanKey) { ManagedOperationParameter[] params = obtainAttributeSource().getManagedOperationParameters(method); if (ObjectUtils.isEmpty(params)) { return super.getOperationParameters(method, beanKey); } MBeanParameterInfo[] parameterInfo = new MBeanParameterInfo[params.length]; Class<?>[] methodParameters = method.getParameterTypes(); for (int i = 0; i < params.length; i++) { ManagedOperationParameter param = params[i]; parameterInfo[i] = new MBeanParameterInfo(param.getName(), methodParameters[i].getName(), param.getDescription()); } return parameterInfo; }
/** * Extract the parameters from a method using the Jmx annotation if present, * or just the raw types otherwise * * @param m The method to extract parameters from * @return An array of parameter infos */ public static MBeanParameterInfo[] extractParameterInfo(Method m) { Class<?>[] types = m.getParameterTypes(); Annotation[][] annotations = m.getParameterAnnotations(); MBeanParameterInfo[] params = new MBeanParameterInfo[types.length]; for(int i = 0; i < params.length; i++) { boolean hasAnnotation = false; for(int j = 0; j < annotations[i].length; j++) { if(annotations[i][j] instanceof JmxParam) { JmxParam param = (JmxParam) annotations[i][j]; params[i] = new MBeanParameterInfo(param.name(), types[i].getName(), param.description()); hasAnnotation = true; break; } } if(!hasAnnotation) { params[i] = new MBeanParameterInfo("", types[i].getName(), ""); } } return params; }
params[0] = new MBeanParameterInfo("layout class", "java.lang.String", "layout class");
/** * Returns operations defined for this MBean as an array of MBeanOperationInfo objects. * * @return operations defined as an array of MBeanOperationInfo objects. */ @Override protected MBeanOperationInfo[] createMBeanOperationInfo() { MBeanOperationInfo[] operationsInfo = new MBeanOperationInfo[MAX_OPERATIONS_COUNT]; operationsInfo[0] = new MBeanOperationInfo("getMembers", "Returns ids as strings for all the members - Application Peers & Cache Servers.", new MBeanParameterInfo[] {}, String[].class.getName(), MBeanOperationInfo.ACTION_INFO); MBeanParameterInfo[] getMemberDetailsArgs = new MBeanParameterInfo[1]; getMemberDetailsArgs[0] = new MBeanParameterInfo("memberId", String.class.getName(), "Id of the member for all the details are to be retrieved."); operationsInfo[1] = new MBeanOperationInfo("getMemberDetails", "Returns details for a given member", getMemberDetailsArgs, Map.class.getName(), MBeanOperationInfo.ACTION_INFO); /* * For retrieving ObjectNames of existing Region MBeans, MBeanServerConnection.queryMBeans(), * could be called */ MBeanParameterInfo[] getRegionSnapArgs = new MBeanParameterInfo[1]; getRegionSnapArgs[0] = new MBeanParameterInfo("memberId", String.class.getName(), "Id of the member on which we want to discover all the region MBean."); operationsInfo[2] = new MBeanOperationInfo("getRegions", "Returns a java.util.Map of details of regions on a member", getRegionSnapArgs, Map.class.getName(), MBeanOperationInfo.ACTION_INFO); return operationsInfo; }
/** * Reads {@code MBeanParameterInfo} from the {@code ManagedOperationParameter} * attributes attached to a method. Returns an empty array of {@code MBeanParameterInfo} * if no attributes are found. */ @Override protected MBeanParameterInfo[] getOperationParameters(Method method, String beanKey) { ManagedOperationParameter[] params = obtainAttributeSource().getManagedOperationParameters(method); if (ObjectUtils.isEmpty(params)) { return super.getOperationParameters(method, beanKey); } MBeanParameterInfo[] parameterInfo = new MBeanParameterInfo[params.length]; Class<?>[] methodParameters = method.getParameterTypes(); for (int i = 0; i < params.length; i++) { ManagedOperationParameter param = params[i]; parameterInfo[i] = new MBeanParameterInfo(param.getName(), methodParameters[i].getName(), param.getDescription()); } return parameterInfo; }
private void buildDynamicMBeanInfo() { Constructor[] constructors = this.getClass().getConstructors(); dConstructors[0] = new MBeanConstructorInfo( "HierarchyDynamicMBean(): Constructs a HierarchyDynamicMBean instance", constructors[0]); dAttributes.add(new MBeanAttributeInfo("name", "java.lang.String", "The name of this Logger.", true, false, false)); dAttributes.add(new MBeanAttributeInfo("priority", "java.lang.String", "The priority of this logger.", true, true, false)); MBeanParameterInfo[] params = new MBeanParameterInfo[2]; params[0] = new MBeanParameterInfo("class name", "java.lang.String", "add an appender to this logger"); params[1] = new MBeanParameterInfo("appender name", "java.lang.String", "name of the appender"); dOperations[0] = new MBeanOperationInfo("addAppender", "addAppender(): add an appender", params, "void", MBeanOperationInfo.ACTION); }
private void buildDynamicMBeanInfo() { Constructor[] constructors = this.getClass().getConstructors(); dConstructors[0] = new MBeanConstructorInfo( "HierarchyDynamicMBean(): Constructs a HierarchyDynamicMBean instance", constructors[0]); vAttributes.add(new MBeanAttributeInfo(THRESHOLD, "java.lang.String", "The \"threshold\" state of the hiearchy.", true, true, false)); MBeanParameterInfo[] params = new MBeanParameterInfo[1]; params[0] = new MBeanParameterInfo("name", "java.lang.String", "Create a logger MBean" ); dOperations[0] = new MBeanOperationInfo("addLoggerMBean", "addLoggerMBean(): add a loggerMBean", params , "javax.management.ObjectName", MBeanOperationInfo.ACTION); }
private MBeanParameterInfo getMBeanParameter(JmxOperationParameter parameter) { return new MBeanParameterInfo(parameter.getName(), parameter.getType().getName(), parameter.getDescription()); }
params[0] = new MBeanParameterInfo("layout class", "java.lang.String", "layout class");
/** * Utility method to convert this <code>MBeanParameterInfo</code> to a * <code>javax.management.MBeanParameterInfo</code> instance. * * @return A JMX <code>MBeanParameterInfo</code> based upon this instance. */ public javax.management.MBeanParameterInfo toMBeanParameterInfo() { return new javax.management.MBeanParameterInfo(name, type, description); }
/** * Utility method to convert this <code>MBeanParameterInfo</code> to a * <code>javax.management.MBeanParameterInfo</code> instance. * * @return A JMX <code>MBeanParameterInfo</code> based upon this instance. */ public javax.management.MBeanParameterInfo toMBeanParameterInfo() { return new javax.management.MBeanParameterInfo(name, type, description); }
private MBeanParameterInfo[] getWrappedParameterInfo(MBeanOperationInfo pOInfo, OperationMapInfo pMapInfo) { MBeanParameterInfo origParamInfo[] = pOInfo.getSignature(); MBeanParameterInfo paramInfo[] = new MBeanParameterInfo[origParamInfo.length]; for (int j = 0; j < origParamInfo.length; j++) { MBeanParameterInfo pInfo = origParamInfo[j]; String pType; if (isDirectlySupported(pInfo.getType())) { pType = pInfo.getType(); pMapInfo.pushParamTypes(pType, null, null); } else { pType = STRING_TYPE; if (pInfo instanceof OpenMBeanParameterInfo) { pMapInfo.pushParamTypes(STRING_TYPE, pInfo.getType(), ((OpenMBeanParameterInfo) pInfo).getOpenType()); } else { pMapInfo.pushParamTypes(STRING_TYPE, pInfo.getType(), null); } } paramInfo[j] = new MBeanParameterInfo( pInfo.getName(), pType, pInfo.getDescription(), pInfo.getDescriptor() ); } return paramInfo; }
@Override public MBeanInfo getMBeanInfo() { MBeanAttributeInfo[] attributes = new MBeanAttributeInfo[] { new MBeanAttributeInfo("AgentId", String.class.getName(), "The agent identifier of the MBeanServer to retrieve", true, false, false), }; MBeanParameterInfo[] signString = new MBeanParameterInfo[] { new MBeanParameterInfo("val", String.class.getName(), "Index number or value") }; MBeanOperationInfo[] operations = new MBeanOperationInfo[] {}; return new MBeanInfo(ManagementMBean.class.getName(), "Ss7 Management", attributes, null, operations, null); }
@Override public MBeanInfo getMBeanInfo() { MBeanAttributeInfo[] attributes = new MBeanAttributeInfo[] { new MBeanAttributeInfo("AgentId", String.class.getName(), "The agent identifier of the MBeanServer to retrieve", true, false, false), }; MBeanParameterInfo[] signString = new MBeanParameterInfo[] { new MBeanParameterInfo("val", String.class.getName(), "Index number or value") }; MBeanOperationInfo[] operations = new MBeanOperationInfo[] {}; return new MBeanInfo(ManagementMBean.class.getName(), "Ss7 Management", attributes, null, operations, null); }
/** * Decorate a paramter * * @param index * @param name * @param description */ public void setDescription(int index, String name, String description) { MBeanParameterInfo old = infos[index]; infos[index] = new MBeanParameterInfo(name, old.getType(), description); } }
private static MBeanParameterInfo[] getSignature(Method method) { Class[] params = method.getParameterTypes(); MBeanParameterInfo[] paramInfos = new MBeanParameterInfo[params.length]; for (int i = 0; i < params.length; i++) { Class cl = params[i]; String name = getName(method, i); String description = getDescription(method, i); paramInfos[i] = new MBeanParameterInfo(name, cl.getName(), description); } return paramInfos; }