Example usage for org.springframework.jmx.support JmxUtils getAttributeName

List of usage examples for org.springframework.jmx.support JmxUtils getAttributeName

Introduction

In this page you can find the example usage for org.springframework.jmx.support JmxUtils getAttributeName.

Prototype

public static String getAttributeName(PropertyDescriptor property, boolean useStrictCasing) 

Source Link

Document

Return the JMX attribute name to use for the given JavaBeans property.

Usage

From source file:org.springframework.jmx.access.MBeanClientInterceptor.java

@Nullable
private Object invokeAttribute(PropertyDescriptor pd, MethodInvocation invocation)
        throws JMException, IOException {

    Assert.state(this.serverToUse != null, "No MBeanServerConnection available");

    String attributeName = JmxUtils.getAttributeName(pd, this.useStrictCasing);
    MBeanAttributeInfo inf = this.allowedAttributes.get(attributeName);
    // If no attribute is returned, we know that it is not defined in the
    // management interface.
    if (inf == null) {
        throw new InvalidInvocationException(
                "Attribute '" + pd.getName() + "' is not exposed on the management interface");
    }/*w  w  w  .ja  va 2 s . co  m*/

    if (invocation.getMethod().equals(pd.getReadMethod())) {
        if (inf.isReadable()) {
            return this.serverToUse.getAttribute(this.objectName, attributeName);
        } else {
            throw new InvalidInvocationException("Attribute '" + attributeName + "' is not readable");
        }
    } else if (invocation.getMethod().equals(pd.getWriteMethod())) {
        if (inf.isWritable()) {
            this.serverToUse.setAttribute(this.objectName,
                    new Attribute(attributeName, invocation.getArguments()[0]));
            return null;
        } else {
            throw new InvalidInvocationException("Attribute '" + attributeName + "' is not writable");
        }
    } else {
        throw new IllegalStateException(
                "Method [" + invocation.getMethod() + "] is neither a bean property getter nor a setter");
    }
}