Java 类javax.management.modelmbean.ModelMBeanInfoSupport 实例源码

项目:wildfly-core    文件:TestModelMBean.java   
@Override
public MBeanInfo getMBeanInfo() {
    try {
        ModelMBeanAttributeInfo[] attributes = new ModelMBeanAttributeInfo[0];
        ModelMBeanConstructorInfo[] constructors = new ModelMBeanConstructorInfo[] {
                new ModelMBeanConstructorInfo("-", this.getClass().getConstructor())
        };
        ModelMBeanOperationInfo[] operations = new ModelMBeanOperationInfo[] {
                new ModelMBeanOperationInfo("info", "-", new MBeanParameterInfo[0], Void.class.getName(), ModelMBeanOperationInfo.INFO),
                new ModelMBeanOperationInfo("action", "-", new MBeanParameterInfo[0], Void.class.getName(), ModelMBeanOperationInfo.ACTION),
                new ModelMBeanOperationInfo("actionInfo", "-", new MBeanParameterInfo[0], Void.class.getName(), ModelMBeanOperationInfo.ACTION_INFO),
                new ModelMBeanOperationInfo("unknown", "-", new MBeanParameterInfo[0], Void.class.getName(), ModelMBeanOperationInfo.UNKNOWN)
        };
        ModelMBeanNotificationInfo[] notifications = new ModelMBeanNotificationInfo[0];
        return new ModelMBeanInfoSupport(this.getClass().getName(), "-", attributes, constructors, operations, notifications);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}
项目:freeVM    文件:InvocationTest.java   
/**
 * Verify that returned value of invoked method never retrieves value from
 * cache if currencyTimeLimit is not defended in descriptor of
 * ModelMBeanOperationInfo.
 * <p>
 * Instructions are the same as in testNegative.
 */
public Result testNotPresent() throws Exception {
    Method method = class1.getDeclaredMethod("simpleMethod", null);
    ModelMBeanOperationInfo operationInfo1 = new ModelMBeanOperationInfo(
        "description", method);
    ModelMBeanInfoSupport beanInfoSupport = new ModelMBeanInfoSupport(
        class1.getName(), "description", null, null,
        new ModelMBeanOperationInfo[] { operationInfo1 }, null);
    RequiredModelMBean requiredModelMBean = new RequiredModelMBean(
        beanInfoSupport);
    requiredModelMBean.setManagedResource(this, "ObjectReference");
    ObjectName objectName = new ObjectName("domain", "name", "simple name");
    MBeanServer server = MBeanServerFactory.createMBeanServer();
    server.registerMBean(requiredModelMBean, objectName);
    Object value = server.invoke(objectName, method.getName(), null, null);
    assertEquals(value, returnedObject);
    assertTrue(isInvokedMethod());
    ModelMBeanOperationInfo operationInfo2 = (ModelMBeanOperationInfo)server
        .getMBeanInfo(objectName).getOperations()[0];
    assertTrue(operationInfo1 == operationInfo2);
    value = server.invoke(objectName, method.getName(), null, null);
    assertEquals(value, returnedObject);
    assertTrue(isInvokedMethod());
    return result();
}
项目:spring4-understanding    文件:MBeanExporterOperationsTests.java   
@Test
public void testRegisterExistingMBeanWithUserSuppliedObjectName() throws Exception {
    ObjectName objectName = ObjectNameManager.getInstance("spring:name=Foo");
    ModelMBeanInfo info = new ModelMBeanInfoSupport("myClass", "myDescription", null, null, null, null);
    RequiredModelMBean bean = new RequiredModelMBean(info);

    MBeanExporter exporter = new MBeanExporter();
    exporter.setServer(getServer());
    exporter.registerManagedResource(bean, objectName);

    MBeanInfo infoFromServer = getServer().getMBeanInfo(objectName);
    assertEquals(info, infoFromServer);
}
项目:class-guard    文件:MBeanExporterOperationsTests.java   
@Test
public void testRegisterExistingMBeanWithUserSuppliedObjectName() throws Exception {
    ObjectName objectName = ObjectNameManager.getInstance("spring:name=Foo");
    ModelMBeanInfo info = new ModelMBeanInfoSupport("myClass", "myDescription", null, null, null, null);
    RequiredModelMBean bean = new RequiredModelMBean(info);

    MBeanExporter exporter = new MBeanExporter();
    exporter.setServer(getServer());
    exporter.registerManagedResource(bean, objectName);

    MBeanInfo infoFromServer = getServer().getMBeanInfo(objectName);
    assertEquals(info, infoFromServer);
}
项目:freeVM    文件:UserDefinedDescriptorTest.java   
public Result test01() throws Exception {
    ModelMBeanInfoSupport beanInfoSupport = constractModelMBeanInfoSupport();
    RequiredModelMBean requiredModelMBean = new RequiredModelMBean(
        beanInfoSupport);
    requiredModelMBean.setManagedResource(new UserDefinedDescriptorTest(),
        "ObjectReference");
    ObjectName objectName = new ObjectName("modelmbean:type=Operation");
    MBeanServer server = MBeanServerFactory.createMBeanServer();
    server.registerMBean(requiredModelMBean, objectName);
    verifyModelMBeanInfo((ModelMBeanInfoSupport)server
        .getMBeanInfo(objectName));
    return passed();
}
项目:freeVM    文件:UserDefinedDescriptorTest.java   
/**
 * Do 11-15 steps.
 */
private void verifyModelMBeanInfo(ModelMBeanInfoSupport modelMBeanInfo)
    throws Exception {
    Descriptor descriptor = modelMBeanInfo.getMBeanDescriptor();
    Descriptor descriptor2 = (Descriptor)map.get(modelMBeanInfo.getClass()
        .getName());
    assertTrue(DefaultDescriptorTest.compareDescriptors(descriptor,
        descriptor2));
    verifyDescriptor(modelMBeanInfo.getAttribute("name"));
    verifyDescriptor(modelMBeanInfo.getAttributes());
    verifyDescriptor(modelMBeanInfo.getConstructors());
    verifyDescriptor(modelMBeanInfo.getNotification("name"));
    verifyDescriptor(modelMBeanInfo.getNotifications());
    verifyDescriptor(modelMBeanInfo.getOperations());
}
项目:freeVM    文件:UserDefinedDescriptorTest.java   
/**
 * Do 1-6 steps.
 */
private ModelMBeanInfoSupport constractModelMBeanInfoSupport()
    throws Exception {
    ModelMBeanOperationInfo operationInfo = new ModelMBeanOperationInfo(
        "description", class1.getMethod("simpleOperartion", null));
    setDescriptor(operationInfo);
    ModelMBeanConstructorInfo constructorInfo = new ModelMBeanConstructorInfo(
        "description", class1.getConstructor(null));
    setDescriptor(constructorInfo);
    ModelMBeanAttributeInfo attributeInfo = new ModelMBeanAttributeInfo(
        "name", "description", class1.getMethod("getH", null), class1
            .getMethod("setH", new Class[] { int.class }));
    setDescriptor(attributeInfo);
    ModelMBeanNotificationInfo notificationInfo = new ModelMBeanNotificationInfo(
        new String[] { "specific notification tepes" }, "name",
        "description");
    setDescriptor(notificationInfo);
    ModelMBeanInfoSupport beanInfoSupport = new ModelMBeanInfoSupport(
        class1.getName(), "description",
        new ModelMBeanAttributeInfo[] { attributeInfo },
        new ModelMBeanConstructorInfo[] { constructorInfo },
        new ModelMBeanOperationInfo[] { operationInfo },
        new ModelMBeanNotificationInfo[] { notificationInfo });
    Descriptor descriptor = beanInfoSupport.getMBeanDescriptor();
    String[] strings = getSpesific(beanInfoSupport.getClass());
    descriptor.setField(strings[0], strings[1]);
    map.put(beanInfoSupport.getClass().getName(), descriptor);
    beanInfoSupport.setMBeanDescriptor(descriptor);
    return beanInfoSupport;
}
项目:freeVM    文件:NotificationLoggingTest.java   
/**
 * <ul>
 * Verify that logs of new notifications, when sendNotification is invoked,
 * write to file. File name is value of descriptor of
 * ModelMBeanNotificationInfo.
 * <li>Create java class, which is not MBean. MBean has 1 getter and 1
 * setter methods.
 * <li>Create ModelMBeanNotificationInfo object for my type with descriptor
 * with logging.
 * <li>Create ModelMBeanInfoSupport object. All ModelMBeanXXXInfo except
 * ModelMBeanNotificationInfo are default.
 * <li>Create RequiredModelMBean object.
 * <li>Instance of java class in 1st step sets managed resource for
 * RequiredModelMBean using setManagedResource method.
 * <li>Send my notification using sendNotification method.
 * <li>Verify that logfile was created and size of file > 0.
 * </ul>
 */
public Result testLogging() throws Exception {
    ModelMBeanAttributeInfo attributeInfoForG = new ModelMBeanAttributeInfo(
        "g", "descr", class1.getMethod("getG", null), class1.getMethod(
            "setG", new Class[] { String.class }));
    ModelMBeanAttributeInfo[] attributeInfos = new ModelMBeanAttributeInfo[] { attributeInfoForG };
    ModelMBeanNotificationInfo notificationInfo = new ModelMBeanNotificationInfo(
        new String[] { SimpleNotification.notificationType },
        SimpleNotification.notificationType, "description");
    File file = File.createTempFile("log", ".txt");
    file.deleteOnExit();
    Descriptor descriptor = notificationInfo.getDescriptor();
    descriptor.setField("log", "true");
    descriptor.setField("logfile", file.getAbsolutePath());
    log.info("file name: " + file.getAbsolutePath());
    notificationInfo.setDescriptor(descriptor);
    ModelMBeanInfoSupport beanInfoSupport = new ModelMBeanInfoSupport(
        class1.getName(), "description", attributeInfos, null, null,
        new ModelMBeanNotificationInfo[] { notificationInfo });
    beanInfoSupport.getNotification(new SimpleNotification("src", 1)
        .getType());
    RequiredModelMBean requiredModelMBean = new RequiredModelMBean(
        beanInfoSupport);
    beanInfoSupport.getDescriptor(new SimpleNotification("src", 1)
        .getType(), "notification");
    requiredModelMBean.sendNotification(new SimpleNotification("src", 1));
    assertTrue(file.length() > 0);
    file.delete();
    return result();
}
项目:freeVM    文件:InvocationTest.java   
/**
 * Verify that invoke method throws exception if target operation method
 * throws exception.
 * <ul>
 * Step by step:
 * <li>Create operation method with one string parameter which always
 * throws an exception with message=parameter of this method.
 * <li>Create ModelMBeanOperationInfo object for operation method.
 * <li>Set value currencyTimeLimit = 0 in descriptor for
 * ModelMBeanOperationInfo object.
 * <li>Create ModelMBeanInfoSupport object with default descriptor. All
 * ModelMBeanXXXInfo except ModelMBeanOperationInfo are default.
 * <li>Instance of class created in 1st step sets managed resource for
 * RequiredModelMBean using setManagedResource method.
 * <li>Create ObjectName object.
 * <li>Register RequiredModelMBean object in MBeanServer with above
 * ObjectName.
 * <li>Invoke operation methodThrowException method thru invoke method of
 * MBeanServer with specific msg.
 * <li>Verify that MBeanException was thrown with nested exception which
 * has message which specified in previous step.
 * </ul>
 */
public Result testException() throws Exception {
    Method method = class1.getMethod("methodThrowException",
        new Class[] { String.class });
    ModelMBeanOperationInfo operationInfo1 = new ModelMBeanOperationInfo(
        "description", method);
    Descriptor descriptor = operationInfo1.getDescriptor();
    descriptor.setField("currencyTimeLimit", "0");
    operationInfo1.setDescriptor(descriptor);
    ModelMBeanInfoSupport beanInfoSupport = new ModelMBeanInfoSupport(
        class1.getName(), "description", null, null,
        new ModelMBeanOperationInfo[] { operationInfo1 }, null);
    RequiredModelMBean requiredModelMBean = new RequiredModelMBean(
        beanInfoSupport);
    requiredModelMBean.setManagedResource(this, "ObjectReference");
    ObjectName objectName = new ObjectName("domain", "name", "simple name");
    MBeanServer server = MBeanServerFactory.createMBeanServer();
    server.registerMBean(requiredModelMBean, objectName);
    try {
        server.invoke(objectName, method.getName(),
            new Object[] { "message" }, new String[] { String.class
                .getName() });
        assertTrue(false);
    } catch (MBeanException e) {
        assertEquals(e.getCause().getMessage(), "message");
    }
    assertTrue(isInvokedMethod());
    return result();
}
项目:freeVM    文件:InvocationTest.java   
/**
 * Verify that invoke method never caches returned value of method if
 * currencyTimeLimit < 0.
 * <ul>
 * Step by step:
 * <li>Create operation method without parameters which always returns the
 * same value.
 * <li>Create ModelMBeanOperationInfo object for operation method.
 * <li>Set value currencyTimeLimit <0 in descriptor for
 * ModelMBeanOperationInfo object.
 * <li>Create ModelMBeanInfoSupport object with default descriptor. All
 * ModelMBeanXXXInfo except ModelMBeanOperationInfo are default.
 * <li>Create RequiredModelMBean object.
 * <li>Instance of class created in 1st step sets managed resource for
 * RequiredModelMBean using setManagedResource method.
 * <li>Create ObjectName object.
 * <li>Register RequiredModelMBean object in MBeanServer with above
 * ObjectName.
 * <li>Invoke operation method thru invoke method of MBeanServer.
 * <li>Verify value which the invoke method returned is the same as value
 * which the operation method returned.
 * <li>Verify that operation method was invoked.
 * <li>Invoke again operation method thru invoke method of MBeanServer.
 * <li>Verify value which the invoke method returned is the same as value
 * which the operation method returned.
 * <li>Verify that operation method was invoked.
 * </ul>
 */
public Result testNegative() throws Exception {
    Method method = class1.getDeclaredMethod("simpleMethod", null);
    ModelMBeanOperationInfo operationInfo1 = new ModelMBeanOperationInfo(
        "description", method);
    Descriptor descriptor = operationInfo1.getDescriptor();
    descriptor.setField("currencyTimeLimit", "-1");
    operationInfo1.setDescriptor(descriptor);
    ModelMBeanInfoSupport beanInfoSupport = new ModelMBeanInfoSupport(
        class1.getName(), "description", null, null,
        new ModelMBeanOperationInfo[] { operationInfo1 }, null);
    RequiredModelMBean requiredModelMBean = new RequiredModelMBean(
        beanInfoSupport);
    requiredModelMBean.setManagedResource(this, "ObjectReference");
    ObjectName objectName = new ObjectName("domain", "name", "simple name");
    MBeanServer server = MBeanServerFactory.createMBeanServer();
    server.registerMBean(requiredModelMBean, objectName);
    Object value = server.invoke(objectName, method.getName(), null, null);
    assertEquals(value, returnedObject);
    assertTrue(isInvokedMethod());
    ModelMBeanOperationInfo operationInfo2 = (ModelMBeanOperationInfo)server
        .getMBeanInfo(objectName).getOperations()[0];
    assertTrue(operationInfo1 == operationInfo2);

    value = server.invoke(objectName, method.getName(), null, null);
    assertEquals(value, returnedObject);
    assertTrue(isInvokedMethod());
    return result();
}
项目:flowable-engine    文件:MBeanInfoAssembler.java   
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())) {
            LOGGER.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<>();
        Set<ManagedOperationInfo> operations = new LinkedHashSet<>();
        Set<ModelMBeanAttributeInfo> mBeanAttributes = new LinkedHashSet<>();
        Set<ModelMBeanOperationInfo> mBeanOperations = new LinkedHashSet<>();
        Set<ModelMBeanNotificationInfo> mBeanNotifications = new LinkedHashSet<>();

        // 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);
        LOGGER.trace("Created ModelMBeanInfo {}", info);
        return info;
    }
项目:Camel    文件:MBeanInfoAssembler.java   
/**
 * Gets the {@link ModelMBeanInfo} for the given managed bean
 *
 * @param defaultManagedBean  the default managed bean
 * @param customManagedBean   an optional custom managed bean
 * @param objectName   the object name
 * @return the model info, or <tt>null</tt> if not possible to create, for example due the managed bean is a proxy class
 * @throws JMException is thrown if error creating the model info
 */
public ModelMBeanInfo getMBeanInfo(Object defaultManagedBean, Object customManagedBean, String objectName) throws JMException {
    // 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;
}
项目:freeVM    文件:DefaultDescriptorTest.java   
/**
 * Verify default fields of descriptor from ModelMBeanInfoSupport:
 * name=nameofClassUsedInConstructor, descriptorType=mbean,
 * displayName=nameofClassUsedInConstructor, persistPolicy=never, log=F,
 * visibility=1.
 * <ul>
 * Step by step:
 * <li>Create ModelMBeanInfoSupport object using ModelMBeanInfoSupport.
 * <li>Extract a descriptor from created object using getMBeanDescriptor()
 * method.
 * <li>Verify that all default fields of the descriptor exist using
 * getFieldValue(String inFieldName) method.
 * <li>There are no other fields.
 * <li>Convert the descriptor to xml.
 * <li>Create new descriptor from xml using DescriptorSupport(String inStr)
 * constructor.
 * </ul>
 */
public Result testModelMBeanInfoSupport() throws Exception {
    ModelMBeanInfoSupport modelMBeanInfoSupport = new ModelMBeanInfoSupport(
        sampleClass.getName(), "description", null, null, null, null);
    descriptor = modelMBeanInfoSupport.getMBeanDescriptor();
    assertEquals(descriptor.getFieldValue("name"), sampleClass.getName());
    assertEquals(descriptor.getFieldValue("descriptorType"), "mbean");
    assertEquals(descriptor.getFieldValue("displayName"), sampleClass
        .getName());
    assertEquals(descriptor.getFieldValue("persistPolicy"), "never");
    assertEquals(descriptor.getFieldValue("log"), "F");
    assertEquals(descriptor.getFieldValue("visibility"), "1");
    assertEquals(descriptor.getFieldValue("export"), "F");
    assertEquals(descriptor.getFields().length, 7);
    commonCheck();
    return result();
}
项目:freeVM    文件:RequiredModelMBeanTest.java   
/**
 * Verify that value of attribute return value which return getter method if
 * currencyTimeLimit < 0.
 * <ul>
 * Step by step:
 * <li>1.Create java class, which is not MBean. This class has getter and
 * setter methods.
 * <li>2.Create ModelMBeanAttibuteInfo object for class in 1st step.
 * <li>3.Extract descriptor from ModelMBeanAttibuteInfo class and set
 * additional fields currencyTimeLimit < 0 and setMethod=nameOfSetterMethod.
 * <li>4.Create ModelMBeanInfoSupport object.
 * <li>5.Create RequiredModelMBean object.
 * <li>6.Create notification listener and register it in RequiredModelMBean
 * object for attribute using addAttributeChangeNotificationListener.
 * <li>7.Instance of java class in 1st step sets managed resource for
 * RequiredModelMBean using setManagedResource method.
 * <li>8.Create objectName.
 * <li>9.Register RequiredModelMBean object in MBeanServer with objectName
 * specified in previous step.
 * <li>10.Set attribute on MBeanServer using setAttribute method.
 * <li>11.Verify that notification listener was notified about change
 * attribute.
 * <li>12.Verify that setter method was invoked.
 * <li>13.Verify that getAttribute of MBeanServer returns correct value of
 * attribute and getter method was invoked.
 * <li>14. Invoke again getAttribute of MBeanServer method and verify
 * returned value. Also verify that getter method was invoked.
 * </ul>
 */
public Result testNegative() throws Exception {
    Method getter = class1.getMethod("getG", null);
    Method setter = class1.getMethod("setG", new Class[] { String.class });
    ModelMBeanAttributeInfo attributeInfoForG = new ModelMBeanAttributeInfo(
        "name", "description", getter, setter);
    Descriptor descriptor = attributeInfoForG.getDescriptor();
    descriptor.setField("currencyTimeLimit", "-1");
    descriptor.setField("setMethod", setter.getName());
    descriptor.setField("getMethod", getter.getName());
    attributeInfoForG.setDescriptor(descriptor);
    ModelMBeanAttributeInfo[] attributeInfos = new ModelMBeanAttributeInfo[] { attributeInfoForG };
    ModelMBeanOperationInfo[] operationInfos = new ModelMBeanOperationInfo[] {
        new ModelMBeanOperationInfo("description", setter),
        new ModelMBeanOperationInfo("description", getter) };
    ModelMBeanInfoSupport beanInfoSupport = new ModelMBeanInfoSupport(
        class1.getName(), "description", attributeInfos, null,
        operationInfos, null);
    RequiredModelMBean requiredModelMBean = new RequiredModelMBean(
        beanInfoSupport);
    ManageResourceAndNotification notificationListener = new ManageResourceAndNotification();
    requiredModelMBean.addAttributeChangeNotificationListener(
        notificationListener, attributeInfoForG.getName(),
        ManageResourceAndNotification.handback);
    ManageResourceAndNotification managedResource = new ManageResourceAndNotification();
    requiredModelMBean.setManagedResource(managedResource,
        "ObjectReference");
    ObjectName objectName = new ObjectName("domain", "name", "simple name");
    MBeanServer server = MBeanServerFactory.createMBeanServer();
    server.registerMBean(requiredModelMBean, objectName);
    String newValue = "new value";
    server.setAttribute(objectName, new Attribute(attributeInfoForG
        .getName(), newValue));
    assertTrue(notificationListener.isWasHandleNotificationInvoked());
    assertEquals(managedResource.getG(), newValue);
    managedResource.isGetGWasInvoked();
    assertEquals(server.getAttribute(objectName, attributeInfoForG
        .getName()), newValue);
    assertTrue(managedResource.isGetGWasInvoked());
    assertTrue(server.getMBeanInfo(objectName).getAttributes()[0] == attributeInfoForG);
    assertNull(attributeInfoForG.getDescriptor().getFieldValue("value"));
    return result();
}
项目:freeVM    文件:RequiredModelMBeanTest.java   
/**
 * Verify that value of attribute retrieves a value from cache if
 * currencyTimeLimit = 0.
 * <ul>
 * Step by step:
 * <li>1.Create java class, which is not MBean. This class has getter and
 * setter methods.
 * <li>2.Create ModelMBeanAttibuteInfo object for class in 1st step.
 * <li>3.Extract descriptor from ModelMBeanAttibuteInfo class and set
 * additional fields currencyTimeLimit = 0 and setMethod=nameOfSetterMethod.
 * <li>4.Create ModelMBeanInfoSupport object.
 * <li>5.Create RequiredModelMBean object.
 * <li>6.Create notification listener and register it in RequiredModelMBean
 * object for attribute using addAttributeChangeNotificationListener.
 * <li>7.Instance of java class in 1st step sets managed resource for
 * RequiredModelMBean using setManagedResource method.
 * <li>8.Create objectName.
 * <li>9.Register RequiredModelMBean object in MBeanServer with objectName
 * specified in previous step.
 * <li>10.Set attribute on MBeanServer using setAttribute method.
 * <li>11.Verify that notification listener was notified about change
 * attribute.
 * <li>12.Verify that setter method was invoked.
 * <li>13.Verify that getAttribute returns correct value of attribute and
 * getter method was not invoked.
 * <li>14.Verify value of field value of descriptor of
 * ModelMBeanAttibuteInfo.
 */
public Result testZero() throws Exception {
    Method getter = class1.getMethod("getG", null);
    Method setter = class1.getMethod("setG", new Class[] { String.class });
    ModelMBeanAttributeInfo attributeInfoForG = new ModelMBeanAttributeInfo(
        "name", "description", getter, setter);
    Descriptor descriptor = attributeInfoForG.getDescriptor();
    descriptor.setField("currencyTimeLimit", "0");
    descriptor.setField("setMethod", setter.getName());
    descriptor.setField("getMethod", getter.getName());
    attributeInfoForG.setDescriptor(descriptor);
    ModelMBeanAttributeInfo[] attributeInfos = new ModelMBeanAttributeInfo[] { attributeInfoForG };
    ModelMBeanOperationInfo[] operationInfos = new ModelMBeanOperationInfo[] {
        new ModelMBeanOperationInfo("description", setter),
        new ModelMBeanOperationInfo("description", getter) };
    ModelMBeanInfoSupport beanInfoSupport = new ModelMBeanInfoSupport(
        class1.getName(), "description", attributeInfos, null,
        operationInfos, null);
    RequiredModelMBean requiredModelMBean = new RequiredModelMBean(
        beanInfoSupport);
    ManageResourceAndNotification notificationListener = new ManageResourceAndNotification();
    requiredModelMBean.addAttributeChangeNotificationListener(
        notificationListener, attributeInfoForG.getName(),
        ManageResourceAndNotification.handback);
    ManageResourceAndNotification managedResource = new ManageResourceAndNotification();
    requiredModelMBean.setManagedResource(managedResource,
        "ObjectReference");
    ObjectName objectName = new ObjectName("domain", "name", "simple name");
    MBeanServer server = MBeanServerFactory.createMBeanServer();
    server.registerMBean(requiredModelMBean, objectName);
    String newValue = "new value";
    server.setAttribute(objectName, new Attribute(attributeInfoForG
        .getName(), newValue));
    assertTrue(notificationListener.isWasHandleNotificationInvoked());
    assertEquals(managedResource.getG(), newValue);
    managedResource.isGetGWasInvoked();
    assertEquals(server.getAttribute(objectName, attributeInfoForG
        .getName()), newValue);
    assertFalse(managedResource.isGetGWasInvoked());
    assertTrue(server.getMBeanInfo(objectName).getAttributes()[0] == attributeInfoForG);
    assertEquals(attributeInfoForG.getDescriptor().getFieldValue("value"),
        newValue);
    return result();
}
项目:freeVM    文件:RequiredModelMBeanTest.java   
/**
 * Verify that value of attribute always retrieves from returned value of
 * getter method if currencyTimeLimit is not defined in descriptor.
 * <p>
 * Instructions are the same as in testNegative.
 */
public Result testNotPresent() throws Exception {
    Method getter = class1.getMethod("getG", null);
    Method setter = class1.getMethod("setG", new Class[] { String.class });
    ModelMBeanAttributeInfo attributeInfoForG = new ModelMBeanAttributeInfo(
        "name", "description", getter, setter);
    Descriptor descriptor = attributeInfoForG.getDescriptor();
    descriptor.setField("setMethod", setter.getName());
    descriptor.setField("getMethod", getter.getName());
    attributeInfoForG.setDescriptor(descriptor);
    ModelMBeanAttributeInfo[] attributeInfos = new ModelMBeanAttributeInfo[] { attributeInfoForG };
    ModelMBeanOperationInfo[] operationInfos = new ModelMBeanOperationInfo[] {
        new ModelMBeanOperationInfo("description", setter),
        new ModelMBeanOperationInfo("description", getter) };
    ModelMBeanInfoSupport beanInfoSupport = new ModelMBeanInfoSupport(
        class1.getName(), "description", attributeInfos, null,
        operationInfos, null);
    RequiredModelMBean requiredModelMBean = new RequiredModelMBean(
        beanInfoSupport);
    ManageResourceAndNotification notificationListener = new ManageResourceAndNotification();
    requiredModelMBean.addAttributeChangeNotificationListener(
        notificationListener, attributeInfoForG.getName(),
        ManageResourceAndNotification.handback);
    ManageResourceAndNotification managedResource = new ManageResourceAndNotification();
    requiredModelMBean.setManagedResource(managedResource,
        "ObjectReference");
    ObjectName objectName = new ObjectName("domain", "name", "simple name");
    MBeanServer server = MBeanServerFactory.createMBeanServer();
    server.registerMBean(requiredModelMBean, objectName);
    String newValue = "new value";
    server.setAttribute(objectName, new Attribute(attributeInfoForG
        .getName(), newValue));
    assertTrue(notificationListener.isWasHandleNotificationInvoked());
    assertEquals(managedResource.getG(), newValue);
    managedResource.isGetGWasInvoked();
    assertEquals(server.getAttribute(objectName, attributeInfoForG
        .getName()), newValue);
    assertTrue(managedResource.isGetGWasInvoked());
    assertTrue(server.getMBeanInfo(objectName).getAttributes()[0] == attributeInfoForG);
    assertNull(attributeInfoForG.getDescriptor().getFieldValue("value"));
    return result();
}
项目:lams    文件:AbstractMBeanInfoAssembler.java   
/**
 * Create an instance of the {@code ModelMBeanInfoSupport} class supplied with all
 * JMX implementations and populates the metadata through calls to the subclass.
 * @param managedBean the bean that will be exposed (might be an AOP proxy)
 * @param beanKey the key associated with the managed bean
 * @return the populated ModelMBeanInfo instance
 * @throws JMException in case of errors
 * @see #getDescription(Object, String)
 * @see #getAttributeInfo(Object, String)
 * @see #getConstructorInfo(Object, String)
 * @see #getOperationInfo(Object, String)
 * @see #getNotificationInfo(Object, String)
 * @see #populateMBeanDescriptor(javax.management.Descriptor, Object, String)
 */
@Override
public ModelMBeanInfo getMBeanInfo(Object managedBean, String beanKey) throws JMException {
    checkManagedBean(managedBean);
    ModelMBeanInfo info = new ModelMBeanInfoSupport(
            getClassName(managedBean, beanKey), getDescription(managedBean, beanKey),
            getAttributeInfo(managedBean, beanKey), getConstructorInfo(managedBean, beanKey),
            getOperationInfo(managedBean, beanKey), getNotificationInfo(managedBean, beanKey));
    Descriptor desc = info.getMBeanDescriptor();
    populateMBeanDescriptor(desc, managedBean, beanKey);
    info.setMBeanDescriptor(desc);
    return info;
}
项目:spring4-understanding    文件:AbstractMBeanInfoAssembler.java   
/**
 * Create an instance of the {@code ModelMBeanInfoSupport} class supplied with all
 * JMX implementations and populates the metadata through calls to the subclass.
 * @param managedBean the bean that will be exposed (might be an AOP proxy)
 * @param beanKey the key associated with the managed bean
 * @return the populated ModelMBeanInfo instance
 * @throws JMException in case of errors
 * @see #getDescription(Object, String)
 * @see #getAttributeInfo(Object, String)
 * @see #getConstructorInfo(Object, String)
 * @see #getOperationInfo(Object, String)
 * @see #getNotificationInfo(Object, String)
 * @see #populateMBeanDescriptor(javax.management.Descriptor, Object, String)
 */
@Override
public ModelMBeanInfo getMBeanInfo(Object managedBean, String beanKey) throws JMException {
    checkManagedBean(managedBean);
    ModelMBeanInfo info = new ModelMBeanInfoSupport(
            getClassName(managedBean, beanKey), getDescription(managedBean, beanKey),
            getAttributeInfo(managedBean, beanKey), getConstructorInfo(managedBean, beanKey),
            getOperationInfo(managedBean, beanKey), getNotificationInfo(managedBean, beanKey));
    Descriptor desc = info.getMBeanDescriptor();
    populateMBeanDescriptor(desc, managedBean, beanKey);
    info.setMBeanDescriptor(desc);
    return info;
}
项目:my-spring-cache-redis    文件:AbstractMBeanInfoAssembler.java   
/**
 * Create an instance of the {@code ModelMBeanInfoSupport} class supplied with all
 * JMX implementations and populates the metadata through calls to the subclass.
 * @param managedBean the bean that will be exposed (might be an AOP proxy)
 * @param beanKey the key associated with the managed bean
 * @return the populated ModelMBeanInfo instance
 * @throws JMException in case of errors
 * @see #getDescription(Object, String)
 * @see #getAttributeInfo(Object, String)
 * @see #getConstructorInfo(Object, String)
 * @see #getOperationInfo(Object, String)
 * @see #getNotificationInfo(Object, String)
 * @see #populateMBeanDescriptor(javax.management.Descriptor, Object, String)
 */
@Override
public ModelMBeanInfo getMBeanInfo(Object managedBean, String beanKey) throws JMException {
    checkManagedBean(managedBean);
    ModelMBeanInfo info = new ModelMBeanInfoSupport(
            getClassName(managedBean, beanKey), getDescription(managedBean, beanKey),
            getAttributeInfo(managedBean, beanKey), getConstructorInfo(managedBean, beanKey),
            getOperationInfo(managedBean, beanKey), getNotificationInfo(managedBean, beanKey));
    Descriptor desc = info.getMBeanDescriptor();
    populateMBeanDescriptor(desc, managedBean, beanKey);
    info.setMBeanDescriptor(desc);
    return info;
}
项目:spring    文件:AbstractMBeanInfoAssembler.java   
/**
 * Create an instance of the {@code ModelMBeanInfoSupport} class supplied with all
 * JMX implementations and populates the metadata through calls to the subclass.
 * @param managedBean the bean that will be exposed (might be an AOP proxy)
 * @param beanKey the key associated with the managed bean
 * @return the populated ModelMBeanInfo instance
 * @throws JMException in case of errors
 * @see #getDescription(Object, String)
 * @see #getAttributeInfo(Object, String)
 * @see #getConstructorInfo(Object, String)
 * @see #getOperationInfo(Object, String)
 * @see #getNotificationInfo(Object, String)
 * @see #populateMBeanDescriptor(javax.management.Descriptor, Object, String)
 */
@Override
public ModelMBeanInfo getMBeanInfo(Object managedBean, String beanKey) throws JMException {
    checkManagedBean(managedBean);
    ModelMBeanInfo info = new ModelMBeanInfoSupport(
            getClassName(managedBean, beanKey), getDescription(managedBean, beanKey),
            getAttributeInfo(managedBean, beanKey), getConstructorInfo(managedBean, beanKey),
            getOperationInfo(managedBean, beanKey), getNotificationInfo(managedBean, beanKey));
    Descriptor desc = info.getMBeanDescriptor();
    populateMBeanDescriptor(desc, managedBean, beanKey);
    info.setMBeanDescriptor(desc);
    return info;
}
项目:class-guard    文件:AbstractMBeanInfoAssembler.java   
/**
 * Create an instance of the {@code ModelMBeanInfoSupport} class supplied with all
 * JMX implementations and populates the metadata through calls to the subclass.
 * @param managedBean the bean that will be exposed (might be an AOP proxy)
 * @param beanKey the key associated with the managed bean
 * @return the populated ModelMBeanInfo instance
 * @throws JMException in case of errors
 * @see #getDescription(Object, String)
 * @see #getAttributeInfo(Object, String)
 * @see #getConstructorInfo(Object, String)
 * @see #getOperationInfo(Object, String)
 * @see #getNotificationInfo(Object, String)
 * @see #populateMBeanDescriptor(javax.management.Descriptor, Object, String)
 */
public ModelMBeanInfo getMBeanInfo(Object managedBean, String beanKey) throws JMException {
    checkManagedBean(managedBean);
    ModelMBeanInfo info = new ModelMBeanInfoSupport(
            getClassName(managedBean, beanKey), getDescription(managedBean, beanKey),
            getAttributeInfo(managedBean, beanKey), getConstructorInfo(managedBean, beanKey),
            getOperationInfo(managedBean, beanKey), getNotificationInfo(managedBean, beanKey));
    Descriptor desc = info.getMBeanDescriptor();
    populateMBeanDescriptor(desc, managedBean, beanKey);
    info.setMBeanDescriptor(desc);
    return info;
}
项目:freeVM    文件:InvocationTest.java   
/**
 * Verify that invoke method retrieves returned value of method from cache
 * or invoke operation depends on currencyTimeLimit > 0 and
 * lastUpdatedTimeStamp.
 * <ul>
 * Step by step:
 * <li>Create operation method without parameters which always returns
 * value.
 * <li>Create ModelMBeanOperationInfo object for operation method.
 * <li>Set value currencyTimeLimit = > 0 in descriptor for
 * ModelMBeanOperationInfo object.
 * <li>Create ModelMBeanInfoSupport object with default descriptor. All
 * ModelMBeanXXXInfo except ModelMBeanOperationInfo are default.
 * <li>Instance of class created in 1st step sets managed resource for
 * RequiredModelMBean using setManagedResource method.
 * <li>Create ObjectName object.
 * <li>Register RequiredModelMBean object in MBeanServer with above
 * ObjectName.
 * <li>Invoke operation method thru invoke method of MBeanServer.
 * <li>Verify value which the invoke method returned is the same as value
 * which the operation method returned.
 * <li>Verify that operation method was invoked.
 * <li>Verify value of field `value` in descriptor for
 * ModelMBeanOperationInfo object.
 * <li>Invoke again operation method thru invoke method of MBeanServer.
 * <li>Verify returned value is not changed.
 * <li>Verify that operation method wasn't invoked.
 * <li>Verify value of field `value` in descriptor for
 * ModelMBeanOperationInfo object is not changed.
 * <li>Change returned value of operation method.
 * <li> Wait currencyTimeLimit seconds.
 * <li>Invoke again operation method thru invoke method of MBeanServer.
 * <li>Verify value which the invoke method returned is the same as value
 * which the operation method returned.
 * <li>Verify that operation method was invoked.
 * <li>Verify value of field `value` in descriptor for
 * ModelMBeanOperationInfo object is changed and verify this value.
 * </ul>
 */
public Result testPositive() throws Exception {
    Method method = class1.getMethod("simpleMethod", null);
    ModelMBeanOperationInfo operationInfo1 = new ModelMBeanOperationInfo(
        "description", method);
    Descriptor descriptor = operationInfo1.getDescriptor();
    int currencyTimeLimit = 5;
    descriptor.setField("currencyTimeLimit", currencyTimeLimit + "");
    operationInfo1.setDescriptor(descriptor);
    ModelMBeanInfoSupport beanInfoSupport = new ModelMBeanInfoSupport(
        class1.getName(), "description", null, null,
        new ModelMBeanOperationInfo[] { operationInfo1 }, null);
    RequiredModelMBean requiredModelMBean = new RequiredModelMBean(
        beanInfoSupport);
    requiredModelMBean.setManagedResource(this, "ObjectReference");
    ObjectName objectName = new ObjectName("domain", "name", "simple name");
    MBeanServer server = MBeanServerFactory.createMBeanServer();
    server.registerMBean(requiredModelMBean, objectName);
    Object value = server.invoke(objectName, method.getName(), null, null);
    assertEquals(value, returnedObject);
    assertTrue(isInvokedMethod());
    printValue(server.getMBeanInfo(objectName));
    value = server.invoke(objectName, method.getName(), null, null);
    assertEquals(value, returnedObject);
    assertFalse(isInvokedMethod());
    printValue(server.getMBeanInfo(objectName));
    returnedObject = new Integer(10);
    Thread.sleep(1000 * currencyTimeLimit + latancy);
    value = server.invoke(objectName, method.getName(), null, null);
    assertEquals(value, returnedObject);
    printValue(server.getMBeanInfo(objectName));
    assertTrue(isInvokedMethod());
    return result();
}
项目:freeVM    文件:InvocationTest.java   
/**
 * Verify that invoke method invokes correctly method with parameter and
 * without it.
 * <ul>
 * Step by step:
 * <li>Create operation method without parameters which always returns the
 * same value.
 * <li>Create operation method with name as in 1 step with parameter which
 * always returns the parameter.
 * <li>Create 2 ModelMBeanOperationInfo object for both operation method.
 * <li>Create ModelMBeanInfoSupport object with default descriptor. All
 * ModelMBeanXXXInfo except ModelMBeanOperationInfo are default.
 * <li>Create RequiredModelMBean object.
 * <li>Instance of class created in 1st step sets managed resource for
 * RequiredModelMBean using setManagedResource method.
 * <li>Create ObjectName object.
 * <li>Register RequiredModelMBean object in MBeanServer with above
 * ObjectName.
 * <li>Invoke 1st operation method thru invoke method of MBeanServer:
 * server.invoke(objectName, methodName, null, null).
 * <li>Verify value which the invoke method returned is the same as value
 * which the 1st operation method returned.
 * <li>Invoke 2nd operation method thru invoke method of MBeanServer:
 * server.invoke(objectName, methodName, argument, signature).
 * <li>Verify value which the invoke method returned is the same as
 * argument.
 * </ul>
 */
public Result testMethodWithParameter() throws Exception {
    Method method1 = class1.getDeclaredMethod("simpleMethod",
        new Class[] { int.class });
    ModelMBeanOperationInfo operationInfo1 = new ModelMBeanOperationInfo(
        "description", method1);
    Method method2 = class1.getMethod("simpleMethod", null);
    ModelMBeanOperationInfo operationInfo2 = new ModelMBeanOperationInfo(
        "description", method2);
    ModelMBeanInfoSupport beanInfoSupport = new ModelMBeanInfoSupport(
        class1.getName(), "description", null, null,
        new ModelMBeanOperationInfo[] { operationInfo1, operationInfo2 },
        null);
    RequiredModelMBean requiredModelMBean = new RequiredModelMBean(
        beanInfoSupport);
    requiredModelMBean.setManagedResource(this, "ObjectReference");
    ObjectName objectName = new ObjectName("domain", "name", "simple name");
    MBeanServer server = MBeanServerFactory.createMBeanServer();
    server.registerMBean(requiredModelMBean, objectName);
    Object value = server.invoke(objectName, method2.getName(), null, null);
    assertEquals(value, returnedObject);
    int integer = 8;
    value = server.invoke(objectName, method1.getName(),
        new Object[] { new Integer(integer) }, new String[] { method1
            .getParameterTypes()[0].getName() });
    assertEquals(value, new Integer(integer));
    return result();
}