org.apache.commons.modeler

Class BaseModelMBean

public class BaseModelMBean extends Object implements ModelMBean, MBeanRegistration

Basic implementation of the ModelMBean interface, which supports the minimal requirements of the interface contract.

This can be used directly to wrap an existing java bean, or inside an mlet or anywhere an MBean would be used. The String parameter passed to the constructor will be used to construct an instance of the real object that we wrap. Limitations:

Version: $Revision: 383269 $ $Date: 2006-03-04 21:22:41 -0500 (Sat, 04 Mar 2006) $

Author: Craig R. McClanahan Costin Manolache

Nested Class Summary
static classBaseModelMBean.MethodKey
Field Summary
protected BaseNotificationBroadcasterattributeBroadcaster
Notification broadcaster for attribute changes.
protected HashMapattributes
Attribute values.
protected BaseNotificationBroadcastergeneralBroadcaster
Notification broadcaster for general notifications.
HashtablegetAttMap
protected ModelMBeanInfoinfo
The ModelMBeanInfo object that controls our activity.
HashtableinvokeAttMap
static Loglog
static Object[]NO_ARGS_PARAM
static Class[]NO_ARGS_PARAM_SIG
protected ObjectNameoname
protected Registryregistry
Registry we are associated with
protected Objectresource
The managed resource this MBean is associated with (if any).
protected StringresourceType
HashtablesetAttMap
protected ModelerSourcesource
Source object used to read this mbean.
Constructor Summary
BaseModelMBean()
Construct a ModelMBean with default ModelMBeanInfo information.
BaseModelMBean(ModelMBeanInfo info)
Construct a ModelMBean associated with the specified ModelMBeanInfo information.
BaseModelMBean(String type)
Construct a ModelMBean of a specified type.
BaseModelMBean(String type, ModelerSource source)
Method Summary
voidaddAttributeChangeNotificationListener(NotificationListener listener, String name, Object handback)
Add an attribute change notification event listener to this MBean.
voidaddNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
Add a notification event listener to this MBean.
protected ModelMBeanInfocreateDefaultModelMBeanInfo()
Create and return a default ModelMBeanInfo object.
protected voidcreateResource()
Set the type of the mbean.
ObjectgetAttribute(String name)
Obtain and return the value of a specific attribute of this MBean.
ClassgetAttributeClass(String signature)
AttributeListgetAttributes(String[] names)
Obtain and return the values of several attributes of this MBean.
StringgetClassName()
ObjectNamegetJmxName()
ObjectgetManagedResource()
Get the instance handle of the object against which we execute all methods in this ModelMBean management interface.
MBeanInfogetMBeanInfo()
Return the MBeanInfo object for this MBean.
StringgetModelerType()
MBeanNotificationInfo[]getNotificationInfo()
Return an MBeanNotificationInfo object describing the notifications sent by this MBean.
StringgetObjectName()
RegistrygetRegistry()
protected voidinitModelInfo(String type)
Set the type of the mbean.
Objectinvoke(String name, Object[] params, String[] signature)
Invoke a particular method on this MBean, and return any returned value.
protected booleanisModelMBeanInfoValid(ModelMBeanInfo info)
Is the specified ModelMBeanInfo instance valid?
voidload()
Instantiates this MBean instance from data found in the persistent store.
voidpostDeregister()
voidpostRegister(Boolean registrationDone)
voidpreDeregister()
ObjectNamepreRegister(MBeanServer server, ObjectName name)
voidremoveAttributeChangeNotificationListener(NotificationListener listener, String name)
Remove an attribute change notification event listener from this MBean.
voidremoveAttributeChangeNotificationListener(NotificationListener listener, String attributeName, Object handback)
Remove an attribute change notification event listener from this MBean.
voidremoveNotificationListener(NotificationListener listener)
Remove a notification event listener from this MBean.
voidremoveNotificationListener(NotificationListener listener, Object handback)
Remove a notification event listener from this MBean.
voidremoveNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
Remove a notification event listener from this MBean.
voidsendAttributeChangeNotification(AttributeChangeNotification notification)
Send an AttributeChangeNotification to all registered listeners.
voidsendAttributeChangeNotification(Attribute oldValue, Attribute newValue)
Send an AttributeChangeNotification to all registered listeners.
voidsendNotification(Notification notification)
Send a Notification to all registered listeners as a jmx.modelmbean.general notification.
voidsendNotification(String message)
Send a Notification which contains the specified string as a jmx.modelmbean.generic notification.
voidsetAttribute(Attribute attribute)
Set the value of a specific attribute of this MBean.
AttributeListsetAttributes(AttributeList attributes)
Set the values of several attributes of this MBean.
voidsetManagedResource(Object resource, String type)
Set the instance handle of the object against which we will execute all methods in this ModelMBean management interface.
voidsetModeledType(String type)
Set the type of the mbean.
voidsetModelMBeanInfo(ModelMBeanInfo info)
Initialize the ModelMBeanInfo associated with this ModelMBean.
voidsetRegistry(Registry registry)
voidstore()
Capture the current state of this MBean instance and write it out to the persistent store.
StringtoString()

Field Detail

attributeBroadcaster

protected BaseNotificationBroadcaster attributeBroadcaster
Notification broadcaster for attribute changes.

attributes

protected HashMap attributes
Attribute values. XXX That can be stored in the value Field

generalBroadcaster

protected BaseNotificationBroadcaster generalBroadcaster
Notification broadcaster for general notifications.

getAttMap

private Hashtable getAttMap

info

protected ModelMBeanInfo info
The ModelMBeanInfo object that controls our activity.

invokeAttMap

private Hashtable invokeAttMap

log

private static Log log

NO_ARGS_PARAM

static final Object[] NO_ARGS_PARAM

NO_ARGS_PARAM_SIG

static final Class[] NO_ARGS_PARAM_SIG

oname

protected ObjectName oname

registry

protected Registry registry
Registry we are associated with

resource

protected Object resource
The managed resource this MBean is associated with (if any).

resourceType

protected String resourceType

setAttMap

private Hashtable setAttMap

source

protected ModelerSource source
Source object used to read this mbean. Can be used to persist the mbean

Constructor Detail

BaseModelMBean

public BaseModelMBean()
Construct a ModelMBean with default ModelMBeanInfo information.

Throws: MBeanException if the initializer of an object throws an exception RuntimeOperationsException if an IllegalArgumentException occurs

BaseModelMBean

public BaseModelMBean(ModelMBeanInfo info)
Construct a ModelMBean associated with the specified ModelMBeanInfo information.

Parameters: info ModelMBeanInfo for this MBean

Throws: MBeanException if the initializer of an object throws an exception RuntimeOperationsException if an IllegalArgumentException occurs

BaseModelMBean

public BaseModelMBean(String type)
Construct a ModelMBean of a specified type. The type can be a class name or the key used in one of the descriptors. If no descriptor is available, we'll first try to locate one in the same package with the class, then use introspection. The mbean resource will be created.

Parameters: type Class name or the type key used in the descriptor.

Throws: MBeanException RuntimeOperationsException

BaseModelMBean

public BaseModelMBean(String type, ModelerSource source)

Method Detail

addAttributeChangeNotificationListener

public void addAttributeChangeNotificationListener(NotificationListener listener, String name, Object handback)
Add an attribute change notification event listener to this MBean.

Parameters: listener Listener that will receive event notifications name Name of the attribute of interest, or null to indicate interest in all attributes handback Handback object to be sent along with event notifications

Throws: IllegalArgumentException if the listener parameter is null

addNotificationListener

public void addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
Add a notification event listener to this MBean.

Parameters: listener Listener that will receive event notifications filter Filter object used to filter event notifications actually delivered, or null for no filtering handback Handback object to be sent along with event notifications

Throws: IllegalArgumentException if the listener parameter is null

createDefaultModelMBeanInfo

protected ModelMBeanInfo createDefaultModelMBeanInfo()
Create and return a default ModelMBeanInfo object.

createResource

protected void createResource()
Set the type of the mbean. This is used as a key to locate the description in the Registry.

getAttribute

public Object getAttribute(String name)
Obtain and return the value of a specific attribute of this MBean.

Parameters: name Name of the requested attribute

Throws: AttributeNotFoundException if this attribute is not supported by this MBean MBeanException if the initializer of an object throws an exception ReflectionException if a Java reflection exception occurs when invoking the getter

getAttributeClass

private Class getAttributeClass(String signature)

getAttributes

public AttributeList getAttributes(String[] names)
Obtain and return the values of several attributes of this MBean.

Parameters: names Names of the requested attributes

getClassName

public String getClassName()

getJmxName

public ObjectName getJmxName()

getManagedResource

public Object getManagedResource()
Get the instance handle of the object against which we execute all methods in this ModelMBean management interface.

Throws: InstanceNotFoundException if the managed resource object cannot be found MBeanException if the initializer of the object throws an exception RuntimeOperationsException if the managed resource or the resource type is null or invalid

getMBeanInfo

public MBeanInfo getMBeanInfo()
Return the MBeanInfo object for this MBean.

getModelerType

public String getModelerType()

getNotificationInfo

public MBeanNotificationInfo[] getNotificationInfo()
Return an MBeanNotificationInfo object describing the notifications sent by this MBean.

getObjectName

public String getObjectName()

getRegistry

public Registry getRegistry()

initModelInfo

protected void initModelInfo(String type)
Set the type of the mbean. This is used as a key to locate the description in the Registry.

Parameters: type the type of classname of the modeled object

invoke

public Object invoke(String name, Object[] params, String[] signature)
Invoke a particular method on this MBean, and return any returned value.

IMPLEMENTATION NOTE - This implementation will attempt to invoke this method on the MBean itself, or (if not available) on the managed resource object associated with this MBean.

Parameters: name Name of the operation to be invoked params Array containing the method parameters of this operation signature Array containing the class names representing the signature of this operation

Throws: MBeanException if the initializer of an object throws an exception ReflectioNException if a Java reflection exception occurs when invoking a method

isModelMBeanInfoValid

protected boolean isModelMBeanInfoValid(ModelMBeanInfo info)
Is the specified ModelMBeanInfo instance valid?

IMPLEMENTATION NOTE - This implementation does not check anything, but this method can be overridden as required.

Parameters: info The ModelMBeanInfo object to check

load

public void load()
Instantiates this MBean instance from data found in the persistent store. The data loaded could include attribute and operation values. This method should be called during construction or initialization of the instance, and before the MBean is registered with the MBeanServer.

IMPLEMENTATION NOTE - This implementation does not support persistence.

Throws: InstanceNotFoundException if the managed resource object cannot be found MBeanException if the initializer of the object throws an exception RuntimeOperationsException if an exception is reported by the persistence mechanism

postDeregister

public void postDeregister()

postRegister

public void postRegister(Boolean registrationDone)

preDeregister

public void preDeregister()

preRegister

public ObjectName preRegister(MBeanServer server, ObjectName name)

removeAttributeChangeNotificationListener

public void removeAttributeChangeNotificationListener(NotificationListener listener, String name)
Remove an attribute change notification event listener from this MBean.

Parameters: listener The listener to be removed name The attribute name for which no more events are required

Throws: ListenerNotFoundException if this listener is not registered in the MBean

removeAttributeChangeNotificationListener

public void removeAttributeChangeNotificationListener(NotificationListener listener, String attributeName, Object handback)
Remove an attribute change notification event listener from this MBean.

Parameters: listener The listener to be removed attributeName The attribute name for which no more events are required handback Handback object to be sent along with event notifications

Throws: ListenerNotFoundException if this listener is not registered in the MBean

removeNotificationListener

public void removeNotificationListener(NotificationListener listener)
Remove a notification event listener from this MBean.

Parameters: listener The listener to be removed (any and all registrations for this listener will be eliminated)

Throws: ListenerNotFoundException if this listener is not registered in the MBean

removeNotificationListener

public void removeNotificationListener(NotificationListener listener, Object handback)
Remove a notification event listener from this MBean.

Parameters: listener The listener to be removed (any and all registrations for this listener will be eliminated) handback Handback object to be sent along with event notifications

Throws: ListenerNotFoundException if this listener is not registered in the MBean

removeNotificationListener

public void removeNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
Remove a notification event listener from this MBean.

Parameters: listener The listener to be removed (any and all registrations for this listener will be eliminated) filter Filter object used to filter event notifications actually delivered, or null for no filtering handback Handback object to be sent along with event notifications

Throws: ListenerNotFoundException if this listener is not registered in the MBean

sendAttributeChangeNotification

public void sendAttributeChangeNotification(AttributeChangeNotification notification)
Send an AttributeChangeNotification to all registered listeners.

Parameters: notification The AttributeChangeNotification that will be passed

Throws: MBeanException if an object initializer throws an exception RuntimeOperationsException wraps IllegalArgumentException when the specified notification is null or invalid

sendAttributeChangeNotification

public void sendAttributeChangeNotification(Attribute oldValue, Attribute newValue)
Send an AttributeChangeNotification to all registered listeners.

Parameters: oldValue The original value of the Attribute newValue The new value of the Attribute

Throws: MBeanException if an object initializer throws an exception RuntimeOperationsException wraps IllegalArgumentException when the specified notification is null or invalid

sendNotification

public void sendNotification(Notification notification)
Send a Notification to all registered listeners as a jmx.modelmbean.general notification.

Parameters: notification The Notification that will be passed

Throws: MBeanException if an object initializer throws an exception RuntimeOperationsException wraps IllegalArgumentException when the specified notification is null or invalid

sendNotification

public void sendNotification(String message)
Send a Notification which contains the specified string as a jmx.modelmbean.generic notification.

Parameters: message The message string to be passed

Throws: MBeanException if an object initializer throws an exception RuntimeOperationsException wraps IllegalArgumentException when the specified notification is null or invalid

setAttribute

public void setAttribute(Attribute attribute)
Set the value of a specific attribute of this MBean.

Parameters: attribute The identification of the attribute to be set and the new value

Throws: AttributeNotFoundException if this attribute is not supported by this MBean MBeanException if the initializer of an object throws an exception ReflectionException if a Java reflection exception occurs when invoking the getter

setAttributes

public AttributeList setAttributes(AttributeList attributes)
Set the values of several attributes of this MBean.

Parameters: attributes THe names and values to be set

Returns: The list of attributes that were set and their new values

setManagedResource

public void setManagedResource(Object resource, String type)
Set the instance handle of the object against which we will execute all methods in this ModelMBean management interface. This method will detect and call "setModelMbean" method. A resource can implement this method to get a reference to the model mbean. The reference can be used to send notification and access the registry.

Parameters: resource The resource object to be managed type The type of reference for the managed resource ("ObjectReference", "Handle", "IOR", "EJBHandle", or "RMIReference")

Throws: InstanceNotFoundException if the managed resource object cannot be found InvalidTargetObjectTypeException if this ModelMBean is asked to handle a reference type it cannot deal with MBeanException if the initializer of the object throws an exception RuntimeOperationsException if the managed resource or the resource type is null or invalid

setModeledType

public void setModeledType(String type)
Set the type of the mbean. This is used as a key to locate the description in the Registry.

Parameters: type the type of classname of the modeled object

setModelMBeanInfo

public void setModelMBeanInfo(ModelMBeanInfo info)
Initialize the ModelMBeanInfo associated with this ModelMBean. After the information and associated descriptors have been customized, the ModelMBean should be registered with the associated MBeanServer. Currently the model can be set after registration. This behavior is deprecated and won't be supported in future versions.

Parameters: info The ModelMBeanInfo object to be used by this ModelMBean

Throws: MBeanException If an exception occurs recording this ModelMBeanInfo information RuntimeOperations if the specified parameter is null or invalid

setRegistry

public void setRegistry(Registry registry)

store

public void store()
Capture the current state of this MBean instance and write it out to the persistent store. The state stored could include attribute and operation values. If one of these methods of persistence is not supported, a "service not found" exception will be thrown.

IMPLEMENTATION NOTE - This implementation does not support persistence.

Throws: InstanceNotFoundException if the managed resource object cannot be found MBeanException if the initializer of the object throws an exception, or persistence is not supported RuntimeOperationsException if an exception is reported by the persistence mechanism

toString

public String toString()
Copyright (c) 2001-2003 - Apache Software Foundation