use of javax.management.MBeanParameterInfo in project jdk8u_jdk by JetBrains.
the class MBeanInfoHashCodeNPETest method main.
public static void main(String[] args) throws Exception {
System.out.println("---MBeanInfoHashCodeNPETest-main ...");
// ----
System.out.println("\n---Testing on MBeanAttributeInfo...");
MBeanAttributeInfo mbeanAttributeInfo = new MBeanAttributeInfo(null, SimpleType.INTEGER.getClassName(), "description", true, true, false);
test(mbeanAttributeInfo, "class name");
mbeanAttributeInfo = new MBeanAttributeInfo("name", null, "description", true, true, false);
test(mbeanAttributeInfo, "type");
mbeanAttributeInfo = new MBeanAttributeInfo("name", SimpleType.INTEGER.getClassName(), null, true, true, false);
test(mbeanAttributeInfo, "description");
// ----
System.out.println("\n---Testing on MBeanConstructorInfo...");
MBeanConstructorInfo mbeanConstructorInfo = new MBeanConstructorInfo(null, "", new MBeanParameterInfo[] {}, new DescriptorSupport());
test(mbeanConstructorInfo, "name");
mbeanConstructorInfo = new MBeanConstructorInfo("", null, new MBeanParameterInfo[] {}, new DescriptorSupport());
test(mbeanConstructorInfo, "description");
mbeanConstructorInfo = new MBeanConstructorInfo("", "", null, new DescriptorSupport());
test(mbeanConstructorInfo, "MBeanParameterInfo");
mbeanConstructorInfo = new MBeanConstructorInfo("", "", new MBeanParameterInfo[] {}, null);
test(mbeanConstructorInfo, "descriptor");
// ----
System.out.println("\n---Testing on MBeanOperationInfo...");
MBeanOperationInfo mbeanOperationInfo = new MBeanOperationInfo(null, "description", new MBeanParameterInfo[] {}, "type", 1, new DescriptorSupport());
test(mbeanOperationInfo, "name");
mbeanOperationInfo = new MBeanOperationInfo("name", null, new MBeanParameterInfo[] {}, "type", 1, new DescriptorSupport());
test(mbeanOperationInfo, "description");
mbeanOperationInfo = new MBeanOperationInfo("name", "description", null, "type", 1, new DescriptorSupport());
test(mbeanOperationInfo, "MBeanParameterInfo");
mbeanOperationInfo = new MBeanOperationInfo("name", "description", new MBeanParameterInfo[] {}, null, 1, new DescriptorSupport());
test(mbeanOperationInfo, "type");
mbeanOperationInfo = new MBeanOperationInfo("name", "description", new MBeanParameterInfo[] {}, "type", -1, new DescriptorSupport());
test(mbeanOperationInfo, "native impact");
mbeanOperationInfo = new MBeanOperationInfo("name", "description", new MBeanParameterInfo[] {}, "type", 1, null);
test(mbeanOperationInfo, "Descriptor");
// ----
System.out.println("\n---Testing on MBeanParameterInfo...");
MBeanParameterInfo mbeanParameterInfo = new MBeanParameterInfo(null, "type", "description", new DescriptorSupport());
test(mbeanParameterInfo, "name");
mbeanParameterInfo = new MBeanParameterInfo("name", null, "description", new DescriptorSupport());
test(mbeanParameterInfo, "description");
mbeanParameterInfo = new MBeanParameterInfo("name", "type", null, new DescriptorSupport());
test(mbeanParameterInfo, "description");
mbeanParameterInfo = new MBeanParameterInfo("name", "type", "description", null);
test(mbeanParameterInfo, "Descriptor");
// ----
System.out.println("\n---Testing on MBeanInfo...");
String className = "toto";
String description = "titi";
MBeanAttributeInfo[] attrInfos = new MBeanAttributeInfo[] {};
MBeanConstructorInfo[] constrInfos = new MBeanConstructorInfo[] {};
MBeanOperationInfo[] operaInfos = new MBeanOperationInfo[] {};
MBeanNotificationInfo[] notifInfos = new MBeanNotificationInfo[] {};
MBeanInfo minfo = new MBeanInfo(null, description, attrInfos, constrInfos, operaInfos, notifInfos);
test(minfo, "class name");
minfo = new MBeanInfo(className, description, attrInfos, constrInfos, operaInfos, notifInfos);
test(minfo, "name");
minfo = new MBeanInfo(className, null, attrInfos, constrInfos, operaInfos, notifInfos);
test(minfo, "description");
minfo = new MBeanInfo(className, description, null, constrInfos, operaInfos, notifInfos);
test(minfo, "attrInfos");
minfo = new MBeanInfo(className, description, attrInfos, constrInfos, null, notifInfos);
test(minfo, "operaInfos");
minfo = new MBeanInfo(className, description, attrInfos, constrInfos, operaInfos, null);
test(minfo, "notifInfos");
Thread.sleep(100);
if (failed > 0) {
throw new RuntimeException("Test failed: " + failed);
} else {
System.out.println("---Test: PASSED");
}
}
use of javax.management.MBeanParameterInfo in project jdk8u_jdk by JetBrains.
the class MustBeValidCommand method makeOpInfos.
private static MBeanOperationInfo[] makeOpInfos(String[][] spec) {
final MBeanOperationInfo[] result = new MBeanOperationInfo[spec.length];
final MBeanParameterInfo[] pars = makeParInfos(parameters);
for (int i = 0; i < result.length; i++) {
System.out.println("\tCreate an MBeanOperationInfo: " + spec[i][0]);
final MBeanOperationInfo item = new MBeanOperationInfo(spec[i][2], spec[i][0], pars, spec[i][1], MBeanOperationInfo.ACTION_INFO);
result[i] = item;
}
return result;
}
use of javax.management.MBeanParameterInfo in project jdk8u_jdk by JetBrains.
the class MXBeanTest method testInterface.
private static <T> void testInterface(Class<T> c, MBeanServerConnection mbsc, ObjectName on, NamedMXBeans namedMXBeans, boolean nullTest) throws Exception {
System.out.println("Type check...");
MBeanInfo mbi = mbsc.getMBeanInfo(on);
MBeanAttributeInfo[] mbais = mbi.getAttributes();
for (int i = 0; i < mbais.length; i++) {
MBeanAttributeInfo mbai = mbais[i];
String name = mbai.getName();
Field typeField = c.getField(name + "Type");
OpenType typeValue = (OpenType) typeField.get(null);
OpenType openType = (OpenType) mbai.getDescriptor().getFieldValue("openType");
if (typeValue.equals(openType))
success("attribute " + name);
else {
final String msg = "Wrong type attribute " + name + ": " + openType + " should be " + typeValue;
failure(msg);
}
}
MBeanOperationInfo[] mbois = mbi.getOperations();
for (int i = 0; i < mbois.length; i++) {
MBeanOperationInfo mboi = mbois[i];
String oname = mboi.getName();
if (!oname.startsWith("op"))
throw new Error();
OpenType retType = (OpenType) mboi.getDescriptor().getFieldValue("openType");
MBeanParameterInfo[] params = mboi.getSignature();
MBeanParameterInfo p1i = params[0];
MBeanParameterInfo p2i = params[1];
OpenType p1Type = (OpenType) p1i.getDescriptor().getFieldValue("openType");
OpenType p2Type = (OpenType) p2i.getDescriptor().getFieldValue("openType");
if (!retType.equals(p1Type) || !p1Type.equals(p2Type)) {
final String msg = "Parameter and return open types should all be same " + "but are not: " + retType + " " + oname + "(" + p1Type + ", " + p2Type + ")";
failure(msg);
continue;
}
String name = oname.substring(2);
Field typeField = c.getField(name + "Type");
OpenType typeValue = (OpenType) typeField.get(null);
if (typeValue.equals(retType))
success("operation " + oname);
else {
final String msg = "Wrong type operation " + oname + ": " + retType + " should be " + typeValue;
failure(msg);
}
}
System.out.println("Mapping check...");
Object proxy = JMX.newMXBeanProxy(mbsc, on, c);
Method[] methods = c.getMethods();
for (int i = 0; i < methods.length; i++) {
final Method method = methods[i];
if (method.getDeclaringClass() != c)
// skip hashCode() etc inherited from Object
continue;
final String mname = method.getName();
final int what = getType(method);
final String name = getName(method);
final Field refField = c.getField(name);
if (nullTest && refField.getType().isPrimitive())
continue;
final Field openTypeField = c.getField(name + "Type");
final OpenType openType = (OpenType) openTypeField.get(null);
final Object refValue = nullTest ? null : refField.get(null);
Object setValue = refValue;
try {
Field onField = c.getField(name + "ObjectName");
String refName = (String) onField.get(null);
ObjectName refObjName = ObjectName.getInstance(refName);
Class<?> mxbeanInterface = refField.getType();
setValue = nullTest ? null : JMX.newMXBeanProxy(mbsc, refObjName, mxbeanInterface);
} catch (Exception e) {
// no xObjectName field, setValue == refValue
}
boolean ok = true;
try {
switch(what) {
case GET:
final Object gotOpen = mbsc.getAttribute(on, name);
if (nullTest) {
if (gotOpen != null) {
failure(mname + " got non-null value " + gotOpen);
ok = false;
}
} else if (!openType.isValue(gotOpen)) {
if (gotOpen instanceof TabularData) {
// detail the mismatch
TabularData gotTabular = (TabularData) gotOpen;
compareTabularType((TabularType) openType, gotTabular.getTabularType());
}
failure(mname + " got open data " + gotOpen + " not valid for open type " + openType);
ok = false;
}
final Object got = method.invoke(proxy, (Object[]) null);
if (!equal(refValue, got, namedMXBeans)) {
failure(mname + " got " + string(got) + ", should be " + string(refValue));
ok = false;
}
break;
case SET:
method.invoke(proxy, new Object[] { setValue });
break;
case OP:
final Object opped = method.invoke(proxy, new Object[] { setValue, setValue });
if (!equal(refValue, opped, namedMXBeans)) {
failure(mname + " got " + string(opped) + ", should be " + string(refValue));
ok = false;
}
break;
default:
throw new Error();
}
if (ok)
success(mname);
} catch (Exception e) {
failure(mname, e);
}
}
}
use of javax.management.MBeanParameterInfo in project tdi-studio-se by Talend.
the class OperationsLabelProvider method getMethodSignature.
/**
* Gets the method signature.
*
* @param info The operation info
* @return The method signature
*/
private static String getMethodSignature(MBeanOperationInfo info) {
StringBuffer buffer = new StringBuffer();
buffer.append(info.getName());
//$NON-NLS-1$
buffer.append("(");
StringBuffer paramBuffer = new StringBuffer();
for (MBeanParameterInfo parameterInfo : info.getSignature()) {
if (paramBuffer.length() != 0) {
//$NON-NLS-1$
paramBuffer.append(", ");
}
String param = parameterInfo.getType();
if (param.startsWith("[")) {
//$NON-NLS-1$
param = Signature.toString(param);
}
int index = param.lastIndexOf('.');
if (index > 0) {
param = param.substring(index + 1);
}
paramBuffer.append(param);
}
buffer.append(paramBuffer);
//$NON-NLS-1$
buffer.append(")");
return buffer.toString();
}
use of javax.management.MBeanParameterInfo in project tomee by apache.
the class DynamicMBeanWrapper method parameters.
static MBeanParameterInfo[] parameters(final MBeanOperationInfo jvmInfo, final Class<?>[] classes, final Annotation[][] annots) {
final MBeanParameterInfo[] params = new MBeanParameterInfo[classes.length];
assert classes.length == annots.length;
String desc = "";
for (int i = 0; i < classes.length; i++) {
final Descriptor d = jvmInfo.getSignature()[i].getDescriptor();
final String pn = "arg" + i;
for (final Annotation a : annots[i]) {
final Class<? extends Annotation> type = a.annotationType();
if (type.equals(Description.class) || type.equals(OPENEJB_API_TO_JAVAX.get(Description.class))) {
desc = getDescription(annotationProxy(a, Description.class), desc);
break;
}
}
params[i] = new MBeanParameterInfo(pn, classes[i].getName(), desc, d);
}
return params;
}
Aggregations