Home » openjdk-7 » javax » management » openmbean » [javadoc | source]
javax.management.openmbean
public class: CompositeDataInvocationHandler [javadoc | source]
java.lang.Object
   javax.management.openmbean.CompositeDataInvocationHandler

All Implemented Interfaces:
    InvocationHandler

An InvocationHandler that forwards getter methods to a CompositeData . If you have an interface that contains only getter methods (such as {@code String getName()} or {@code boolean isActive()}) then you can use this class in conjunction with the Proxy class to produce an implementation of the interface where each getter returns the value of the corresponding item in a {@code CompositeData}.

For example, suppose you have an interface like this:

public interface NamedNumber {
public int getNumber();
public String getName();
}
and a {@code CompositeData} constructed like this:
CompositeData cd =
new CompositeDataSupport (
someCompositeType,
new String[] {"number", "name"},
new Object[] {5, "five"}
);
then you can construct an object implementing {@code NamedNumber} and backed by the object {@code cd} like this:
InvocationHandler handler =
new CompositeDataInvocationHandler(cd);
NamedNumber nn = (NamedNumber)
Proxy.newProxyInstance(NamedNumber.class.getClassLoader(),
new Class[] {NamedNumber.class},
handler);
A call to {@code nn.getNumber()} will then return 5.

If the first letter of the property defined by a getter is a capital, then this handler will look first for an item in the {@code CompositeData} beginning with a capital, then, if that is not found, for an item beginning with the corresponding lowercase letter or code point. For a getter called {@code getNumber()}, the handler will first look for an item called {@code Number}, then for {@code number}. If the getter is called {@code getnumber()}, then the item must be called {@code number}.

If the method given to invoke is the method {@code boolean equals(Object)} inherited from {@code Object}, then it will return true if and only if the argument is a {@code Proxy} whose {@code InvocationHandler} is also a {@code CompositeDataInvocationHandler} and whose backing {@code CompositeData} is equal (not necessarily identical) to this object's. If the method given to {@code invoke} is the method {@code int hashCode()} inherited from {@code Object}, then it will return a value that is consistent with this definition of {@code equals}: if two objects are equal according to {@code equals}, then they will have the same {@code hashCode}.

Constructor:
 public CompositeDataInvocationHandler(CompositeData compositeData) 

    Construct a handler backed by the given {@code CompositeData}.

    Parameters:
    compositeData - the {@code CompositeData} that will supply information to getters.
    Throws:
    IllegalArgumentException - if {@code compositeData} is null.
 CompositeDataInvocationHandler(CompositeData compositeData,
    MXBeanLookup lookup) 

    Construct a handler backed by the given {@code CompositeData}.

    Parameters:
    mbsc - the {@code MBeanServerConnection} related to this {@code CompositeData}. This is only relevant if a method in the interface for which this is an invocation handler returns a type that is an MXBean interface. Otherwise, it can be null.
    compositeData - the {@code CompositeData} that will supply information to getters.
    Throws:
    IllegalArgumentException - if {@code compositeData} is null.
Method from javax.management.openmbean.CompositeDataInvocationHandler Summary:
getCompositeData,   invoke
Methods from java.lang.Object:
clone,   equals,   finalize,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from javax.management.openmbean.CompositeDataInvocationHandler Detail:
 public CompositeData getCompositeData() 
    Return the {@code CompositeData} that was supplied to the constructor.
 public Object invoke(Object proxy,
    Method method,
    Object[] args) throws Throwable