use of javax.management.modelmbean.ModelMBeanInfo in project jdk8u_jdk by JetBrains.
the class DescriptorSupportTest method main.
public static void main(String[] args) throws Exception {
boolean ok = true;
System.out.println("Checking that name and descriptorType are " + "mandatory");
// Try omitting name and/or descriptorType
for (int i = 0; i < 3; i++) {
final boolean addName = ((i & 1) != 0);
final boolean addDescriptorType = ((i & 2) != 0);
final List fields = new ArrayList();
if (addName)
fields.add("name=something");
if (addDescriptorType)
fields.add("descriptorType=something-else");
final String[] fs = (String[]) fields.toArray(new String[0]);
final String what = "DescriptorSupport with " + (addName ? "" : "no ") + "name and " + (addDescriptorType ? "" : "no ") + "descriptorType";
DescriptorSupport ds = new DescriptorSupport(fs);
if (ds.isValid()) {
System.out.println("INCORRECTLY ACCEPTED: " + what);
ok = false;
} else
System.out.println("OK: rejected " + what);
}
for (int pass = 0; pass < 2; pass++) {
boolean shouldAccept = (pass == 0);
System.out.println("Trying out " + (shouldAccept ? "correct" : "bogus") + " DescriptorSupport fields");
Object[] fields = shouldAccept ? goodFields : badFields;
for (int i = 0; i < fields.length; i += 2) {
String[] names = { "name", "descriptorType" };
String[] values = { "some-name", "some-type" };
DescriptorSupport d = new DescriptorSupport(names, values);
final String name = (String) fields[i];
final Object value = fields[i + 1];
final String valueS = (value instanceof String) ? ("\"" + value + "\"") : (value == null) ? "null" : value.toString();
final String what = "DescriptorSupport with " + name + " = " + valueS;
try {
d.setField(name, value);
if (shouldAccept)
System.out.println("OK: accepted " + what);
else {
System.out.println("INCORRECTLY ACCEPTED: " + what);
ok = false;
}
} catch (RuntimeOperationsException e) {
if (shouldAccept) {
System.out.println("INCORRECTLY REJECTED: " + what + ": " + e);
ok = false;
} else {
System.out.println("OK: rejected " + what);
// OK: this is what should happen
}
} catch (Exception e) {
System.out.println("WRONG EXCEPTION: " + what + ": " + e);
ok = false;
}
}
}
// 4894856: ModelMBeanInfoSupport.setDescriptor(d, "mbean") fails
System.out.println("Checking that setDescriptor(d, \"mbean\") works");
ModelMBeanInfo mmbi = new ModelMBeanInfoSupport("x", "descr", null, null, null, null);
Descriptor d = mmbi.getDescriptor("x", "mbean");
try {
mmbi.setDescriptor(d, "mbean");
} catch (Exception e) {
System.out.println("Unexpected exception:");
e.printStackTrace(System.out);
ok = false;
}
// 5016685: DescriptorSupport forces field names to lower case
System.out.println("Checking that field name case is ignored " + "but preserved");
ok &= caseTest(new DescriptorSupport(new String[] { "NAME=blah" }), "DescriptorSupport(String[])");
ok &= caseTest(new DescriptorSupport(new String[] { "NAME" }, new String[] { "blah" }), "DescriptorSupport(String[], Object[])");
DescriptorSupport d1 = new DescriptorSupport();
d1.setField("NAME", "blah");
ok &= caseTest(d1, "DescriptorSupport.setField");
d1 = new DescriptorSupport(new String[] { "NAME=blah" });
ok &= caseTest(new DescriptorSupport(d1), "DescriptorSupport(Descriptor)");
d1 = new DescriptorSupport(new String[] { "NAME=blah" });
ok &= caseTest(new DescriptorSupport(d1.toXMLString()), "DescriptorSupport(String)");
d1 = new DescriptorSupport(new String[] { "NAME=blah" });
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(d1);
oos.close();
bos.close();
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bis);
d1 = (DescriptorSupport) ois.readObject();
ok &= caseTest(d1, "serialized DescriptorSupport");
if (ok)
System.out.println("Test passed");
else {
System.out.println("TEST FAILED");
System.exit(1);
}
}
use of javax.management.modelmbean.ModelMBeanInfo in project jdk8u_jdk by JetBrains.
the class UnserializableTargetObjectTest method main.
public static void main(String[] args) throws Exception {
MBeanServer mbs = MBeanServerFactory.newMBeanServer();
ObjectName name = new ObjectName("a:b=c");
Resource resource1 = new Resource();
Resource resource2 = new Resource();
Resource resource3 = new Resource();
Method operationMethod = Resource.class.getMethod("operation");
Method getCountMethod = Resource.class.getMethod("getCount");
Method setCountMethod = Resource.class.getMethod("setCount", int.class);
Descriptor operationDescriptor = new DescriptorSupport(new String[] { "descriptorType", "name", "targetObject" }, new Object[] { "operation", "operation", resource1 });
Descriptor getCountDescriptor = new DescriptorSupport(new String[] { "descriptorType", "name", "targetObject" }, new Object[] { "operation", "getCount", resource2 });
Descriptor setCountDescriptor = new DescriptorSupport(new String[] { "descriptorType", "name", "targetObject" }, new Object[] { "operation", "setCount", resource2 });
Descriptor countDescriptor = new DescriptorSupport(new String[] { "descriptorType", "name", "getMethod", "setMethod" }, new Object[] { "attribute", "Count", "getCount", "setCount" });
ModelMBeanOperationInfo operationInfo = new ModelMBeanOperationInfo("operation description", operationMethod, operationDescriptor);
ModelMBeanOperationInfo getCountInfo = new ModelMBeanOperationInfo("getCount description", getCountMethod, getCountDescriptor);
ModelMBeanOperationInfo setCountInfo = new ModelMBeanOperationInfo("setCount description", setCountMethod, setCountDescriptor);
ModelMBeanAttributeInfo countInfo = new ModelMBeanAttributeInfo("Count", "Count description", getCountMethod, setCountMethod, countDescriptor);
ModelMBeanInfo mmbi = new ModelMBeanInfoSupport(Resource.class.getName(), "ModelMBean to test targetObject", new ModelMBeanAttributeInfo[] { countInfo }, // no constructors
null, new ModelMBeanOperationInfo[] { operationInfo, getCountInfo, setCountInfo }, // no notifications
null);
ModelMBean mmb = new RequiredModelMBean(mmbi);
mmb.setManagedResource(resource3, "ObjectReference");
mbs.registerMBean(mmb, name);
mbs.invoke(name, "operation", null, null);
mbs.setAttribute(name, new Attribute("Count", 53));
if (resource1.operationCount != 1)
throw new Exception("operationCount: " + resource1.operationCount);
if (resource2.count != 53)
throw new Exception("count: " + resource2.count);
int got = (Integer) mbs.getAttribute(name, "Count");
if (got != 53)
throw new Exception("got count: " + got);
JMXServiceURL url = new JMXServiceURL("rmi", null, 0);
JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);
cs.start();
JMXServiceURL addr = cs.getAddress();
JMXConnector cc = JMXConnectorFactory.connect(addr);
MBeanServerConnection mbsc = cc.getMBeanServerConnection();
ModelMBeanInfo rmmbi = (ModelMBeanInfo) mbsc.getMBeanInfo(name);
// Above gets NotSerializableException if resource included in
// serialized form
cc.close();
cs.stop();
System.out.println("TEST PASSED");
}
use of javax.management.modelmbean.ModelMBeanInfo in project jdk8u_jdk by JetBrains.
the class RequiredModelMBeanGetAttributeTest method main.
public static void main(String[] args) throws Exception {
boolean ok = true;
MBeanServer mbs = MBeanServerFactory.createMBeanServer();
// Resource methods
Method nullGetter = Resource.class.getMethod("getNull", (Class[]) null);
Method integerGetter = Resource.class.getMethod("getInteger", (Class[]) null);
Method hashtableGetter = Resource.class.getMethod("getHashtable", (Class[]) null);
Method mapGetter = Resource.class.getMethod("getMap", (Class[]) null);
// ModelMBeanOperationInfo
Descriptor nullOperationDescriptor = new DescriptorSupport(new String[] { "name=getNull", "descriptorType=operation", "role=getter" });
ModelMBeanOperationInfo nullOperationInfo = new ModelMBeanOperationInfo("Null attribute", nullGetter, nullOperationDescriptor);
Descriptor integerOperationDescriptor = new DescriptorSupport(new String[] { "name=getInteger", "descriptorType=operation", "role=getter" });
ModelMBeanOperationInfo integerOperationInfo = new ModelMBeanOperationInfo("Integer attribute", integerGetter, integerOperationDescriptor);
Descriptor hashtableOperationDescriptor = new DescriptorSupport(new String[] { "name=getHashtable", "descriptorType=operation", "role=getter" });
ModelMBeanOperationInfo hashtableOperationInfo = new ModelMBeanOperationInfo("Hashtable attribute", hashtableGetter, hashtableOperationDescriptor);
Descriptor mapOperationDescriptor = new DescriptorSupport(new String[] { "name=getMap", "descriptorType=operation", "role=getter" });
ModelMBeanOperationInfo mapOperationInfo = new ModelMBeanOperationInfo("Map attribute", mapGetter, mapOperationDescriptor);
// ModelMBeanAttributeInfo
Descriptor nullAttributeDescriptor = new DescriptorSupport(new String[] { "name=Null", "descriptorType=attribute", "getMethod=getNull" });
ModelMBeanAttributeInfo nullAttributeInfo = new ModelMBeanAttributeInfo("Null", "java.lang.Object", "Null attribute", true, false, false, nullAttributeDescriptor);
Descriptor integerAttributeDescriptor = new DescriptorSupport(new String[] { "name=Integer", "descriptorType=attribute", "getMethod=getInteger" });
ModelMBeanAttributeInfo integerAttributeInfo = new ModelMBeanAttributeInfo("Integer", "int", "Integer attribute", true, false, false, integerAttributeDescriptor);
Descriptor hashtableAttributeDescriptor = new DescriptorSupport(new String[] { "name=Hashtable", "descriptorType=attribute", "getMethod=getHashtable" });
ModelMBeanAttributeInfo hashtableAttributeInfo = new ModelMBeanAttributeInfo("Hashtable", "java.util.Hashtable", "Hashtable attribute", true, false, false, hashtableAttributeDescriptor);
Descriptor mapAttributeDescriptor = new DescriptorSupport(new String[] { "name=Map", "descriptorType=attribute", "getMethod=getMap" });
ModelMBeanAttributeInfo mapAttributeInfo = new ModelMBeanAttributeInfo("Map", "java.util.Map", "Map attribute", true, false, false, mapAttributeDescriptor);
Descriptor null2AttributeDescriptor = new DescriptorSupport(new String[] { "name=Null2", "descriptorType=attribute" });
null2AttributeDescriptor.setField("default", null);
ModelMBeanAttributeInfo null2AttributeInfo = new ModelMBeanAttributeInfo("Null2", "java.lang.Object", "Null2 attribute", true, false, false, null2AttributeDescriptor);
Descriptor integer2AttributeDescriptor = new DescriptorSupport(new String[] { "name=Integer2", "descriptorType=attribute" });
integer2AttributeDescriptor.setField("default", 10);
ModelMBeanAttributeInfo integer2AttributeInfo = new ModelMBeanAttributeInfo("Integer2", "int", "Integer2 attribute", true, false, false, integer2AttributeDescriptor);
Descriptor hashtable2AttributeDescriptor = new DescriptorSupport(new String[] { "name=Hashtable2", "descriptorType=attribute" });
hashtable2AttributeDescriptor.setField("default", new Hashtable());
ModelMBeanAttributeInfo hashtable2AttributeInfo = new ModelMBeanAttributeInfo("Hashtable2", "java.util.Hashtable", "Hashtable2 attribute", true, false, false, hashtable2AttributeDescriptor);
Descriptor map2AttributeDescriptor = new DescriptorSupport(new String[] { "name=Map2", "descriptorType=attribute" });
map2AttributeDescriptor.setField("default", new Hashtable());
ModelMBeanAttributeInfo map2AttributeInfo = new ModelMBeanAttributeInfo("Map2", "java.util.Map", "Map2 attribute", true, false, false, map2AttributeDescriptor);
// ModelMBeanInfo
ModelMBeanInfo mmbi = new ModelMBeanInfoSupport(Resource.class.getName(), "Resource MBean", new ModelMBeanAttributeInfo[] { nullAttributeInfo, integerAttributeInfo, hashtableAttributeInfo, mapAttributeInfo, null2AttributeInfo, integer2AttributeInfo, hashtable2AttributeInfo, map2AttributeInfo }, null, new ModelMBeanOperationInfo[] { nullOperationInfo, integerOperationInfo, hashtableOperationInfo, mapOperationInfo }, null);
// RequiredModelMBean
ModelMBean mmb = new RequiredModelMBean(mmbi);
mmb.setManagedResource(resource, "ObjectReference");
ObjectName mmbName = new ObjectName(":type=ResourceMBean");
mbs.registerMBean(mmb, mmbName);
// Run tests
System.out.println("\nTesting that we can call getNull()... ");
try {
Object o = mbs.getAttribute(mmbName, "Null");
System.out.println("getNull() = " + o);
System.out.println("Attribute's declared type = java.lang.Object");
System.out.println("Returned value's type = null");
} catch (Exception e) {
System.out.println("TEST FAILED: Caught exception:");
e.printStackTrace(System.out);
ok = false;
}
System.out.println("\nTesting that we can call getInteger()... ");
try {
Integer i = (Integer) mbs.getAttribute(mmbName, "Integer");
System.out.println("getInteger() = " + i);
System.out.println("Attribute's declared type = int");
System.out.println("Returned value's type = " + i.getClass().getName());
} catch (Exception e) {
System.out.println("TEST FAILED: Caught exception:");
e.printStackTrace(System.out);
ok = false;
}
System.out.println("\nTesting that we can call getHashtable()... ");
try {
Hashtable h = (Hashtable) mbs.getAttribute(mmbName, "Hashtable");
System.out.println("getHashtable() = " + h);
System.out.println("Attribute's declared type = " + "java.util.Hashtable");
System.out.println("Returned value's type = " + h.getClass().getName());
} catch (Exception e) {
System.out.println("TEST FAILED: Caught exception:");
e.printStackTrace(System.out);
ok = false;
}
System.out.println("\nTesting that we can call getMap()... ");
try {
Map m = (Map) mbs.getAttribute(mmbName, "Map");
System.out.println("getMap() = " + m);
System.out.println("Attribute's declared type = " + "java.util.Map");
System.out.println("Returned value's type = " + m.getClass().getName());
} catch (Exception e) {
System.out.println("TEST FAILED: Caught exception:");
e.printStackTrace(System.out);
ok = false;
}
System.out.println("\nTesting that we can call getNull2()... ");
try {
Object o = mbs.getAttribute(mmbName, "Null2");
System.out.println("getNull2() = " + o);
System.out.println("Attribute's declared type = java.lang.Object");
System.out.println("Returned value's type = null");
} catch (Exception e) {
System.out.println("TEST FAILED: Caught exception:");
e.printStackTrace(System.out);
ok = false;
}
System.out.println("\nTesting that we can call getInteger2()... ");
try {
Integer i = (Integer) mbs.getAttribute(mmbName, "Integer2");
System.out.println("getInteger2() = " + i);
System.out.println("Attribute's declared type = int");
System.out.println("Returned value's type = " + i.getClass().getName());
} catch (Exception e) {
System.out.println("TEST FAILED: Caught exception:");
e.printStackTrace(System.out);
ok = false;
}
System.out.println("\nTesting that we can call getHashtable2()... ");
try {
Hashtable h = (Hashtable) mbs.getAttribute(mmbName, "Hashtable2");
System.out.println("getHashtable2() = " + h);
System.out.println("Attribute's declared type = " + "java.util.Hashtable");
System.out.println("Returned value's type = " + h.getClass().getName());
} catch (Exception e) {
System.out.println("TEST FAILED: Caught exception:");
e.printStackTrace(System.out);
ok = false;
}
System.out.println("\nTesting that we can call getMap2()... ");
try {
Map m = (Map) mbs.getAttribute(mmbName, "Map2");
System.out.println("getMap2() = " + m);
System.out.println("Attribute's declared type = " + "java.util.Map");
System.out.println("Returned value's type = " + m.getClass().getName());
} catch (Exception e) {
System.out.println("TEST FAILED: Caught exception:");
e.printStackTrace(System.out);
ok = false;
}
if (ok)
System.out.println("\nTest passed.\n");
else {
System.out.println("\nTest failed.\n");
System.exit(1);
}
}
use of javax.management.modelmbean.ModelMBeanInfo in project Activiti by Activiti.
the class MBeanInfoAssembler method getMBeanInfo.
public ModelMBeanInfo getMBeanInfo(Object defaultManagedBean, Object customManagedBean, String objectName) throws JMException {
if ((defaultManagedBean == null && customManagedBean == null) || objectName == null)
return null;
// skip proxy classes
if (defaultManagedBean != null && Proxy.isProxyClass(defaultManagedBean.getClass())) {
LOG.trace("Skip creating ModelMBeanInfo due proxy class {}", defaultManagedBean.getClass());
return null;
}
// maps and lists to contain information about attributes and operations
Map<String, ManagedAttributeInfo> attributes = new LinkedHashMap<String, ManagedAttributeInfo>();
Set<ManagedOperationInfo> operations = new LinkedHashSet<ManagedOperationInfo>();
Set<ModelMBeanAttributeInfo> mBeanAttributes = new LinkedHashSet<ModelMBeanAttributeInfo>();
Set<ModelMBeanOperationInfo> mBeanOperations = new LinkedHashSet<ModelMBeanOperationInfo>();
Set<ModelMBeanNotificationInfo> mBeanNotifications = new LinkedHashSet<ModelMBeanNotificationInfo>();
// extract details from default managed bean
if (defaultManagedBean != null) {
extractAttributesAndOperations(defaultManagedBean.getClass(), attributes, operations);
extractMbeanAttributes(defaultManagedBean, attributes, mBeanAttributes, mBeanOperations);
extractMbeanOperations(defaultManagedBean, operations, mBeanOperations);
extractMbeanNotifications(defaultManagedBean, mBeanNotifications);
}
// extract details from custom managed bean
if (customManagedBean != null) {
extractAttributesAndOperations(customManagedBean.getClass(), attributes, operations);
extractMbeanAttributes(customManagedBean, attributes, mBeanAttributes, mBeanOperations);
extractMbeanOperations(customManagedBean, operations, mBeanOperations);
extractMbeanNotifications(customManagedBean, mBeanNotifications);
}
// create the ModelMBeanInfo
String name = getName(customManagedBean != null ? customManagedBean : defaultManagedBean, objectName);
String description = getDescription(customManagedBean != null ? customManagedBean : defaultManagedBean, objectName);
ModelMBeanAttributeInfo[] arrayAttributes = mBeanAttributes.toArray(new ModelMBeanAttributeInfo[mBeanAttributes.size()]);
ModelMBeanOperationInfo[] arrayOperations = mBeanOperations.toArray(new ModelMBeanOperationInfo[mBeanOperations.size()]);
ModelMBeanNotificationInfo[] arrayNotifications = mBeanNotifications.toArray(new ModelMBeanNotificationInfo[mBeanNotifications.size()]);
ModelMBeanInfo info = new ModelMBeanInfoSupport(name, description, arrayAttributes, null, arrayOperations, arrayNotifications);
LOG.trace("Created ModelMBeanInfo {}", info);
return info;
}
use of javax.management.modelmbean.ModelMBeanInfo in project Activiti by Activiti.
the class MBeanInfoAssemblerTest method testInherited.
@Test
public void testInherited() throws JMException {
ModelMBeanInfo beanInfo = mbeanInfoAssembler.getMBeanInfo(new BadInherited(), null, "someName");
assertNotNull(beanInfo);
assertNotNull(beanInfo.getAttributes());
assertEquals(2, beanInfo.getAttributes().length);
assertNotNull(beanInfo.getOperations());
assertEquals(3, beanInfo.getOperations().length);
}
Aggregations