001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package javax.management;
023:
024: /**
025: * The DynamicMBean interface is implemented by resources that expose
026: * their definition at runtime. The implementation exposes its attributes,
027: * methods and notifications through the {@link #getMBeanInfo() getMBeanInfo}
028: * method.<p>
029: *
030: * From a management point of view, the DynamicMBean behaves like any other
031: * MBean.<p>
032: *
033: * It is the responsibility of the implementation to ensure the MBean works
034: * as self-described. The MBeanServer makes no attempt to validate it. <p>
035: *
036: * Although the self-description is retrieved at runtime and is therefore
037: * dynamic, the implementation must not change it once it has been retrieved.
038: * A manager can expect the attributes, methods and notifications to
039: * remain constant. It is the implementation's responsibility to conform to
040: * this behaviour.
041: *
042: * @see javax.management.MBeanInfo
043: *
044: * @author <a href="mailto:Adrian.Brock@HappeningTimes.com">Adrian Brock</a>.
045: * @version $Revision: 57200 $
046: *
047: */
048: public interface DynamicMBean {
049:
050: // Public ------------------------------------------------------
051:
052: /**
053: * Returns the value of the attribute with the name matching the
054: * passed string.
055: *
056: * @param attribute the name of the attribute.
057: * @return the value of the attribute.
058: * @exception AttributeNotFoundException when there is no such attribute.
059: * @exception MBeanException wraps any error thrown by the resource when
060: * getting the attribute.
061: * @exception ReflectionException wraps any error invoking the resource.
062: */
063: public Object getAttribute(String attribute)
064: throws AttributeNotFoundException, MBeanException,
065: ReflectionException;
066:
067: /**
068: * Sets the value of an attribute. The attribute and new value are
069: * passed in the name value pair {@link Attribute Attribute}.
070: *
071: * @see javax.management.Attribute
072: *
073: * @param attribute the name and new value of the attribute.
074: * @exception AttributeNotFoundException when there is no such attribute.
075: * @exception InvalidAttributeValueException when the new value cannot be
076: * converted to the type of the attribute.
077: * @exception MBeanException wraps any error thrown by the resource when
078: * setting the new value.
079: * @exception ReflectionException wraps any error invoking the resource.
080: */
081: public void setAttribute(Attribute attribute)
082: throws AttributeNotFoundException,
083: InvalidAttributeValueException, MBeanException,
084: ReflectionException;
085:
086: /**
087: * Returns the values of the attributes with names matching the
088: * passed string array.
089: *
090: * @param attributes the names of the attribute.
091: * @return an {@link AttributeList AttributeList} of name and value pairs.
092: */
093: public AttributeList getAttributes(java.lang.String[] attributes);
094:
095: /**
096: * Sets the values of the attributes passed as an
097: * {@link AttributeList AttributeList} of name and new value pairs.
098: *
099: * @param attributes the name an new value pairs.
100: * @return an {@link AttributeList AttributeList} of name and value pairs
101: * that were actually set.
102: */
103: public AttributeList setAttributes(AttributeList attributes);
104:
105: /**
106: * Invokes a resource operation.
107: *
108: * @param actionName the name of the operation to perform.
109: * @param params the parameters to pass to the operation.
110: * @param signature the signartures of the parameters.
111: * @return the result of the operation.
112: * @exception MBeanException wraps any error thrown by the resource when
113: * performing the operation.
114: * @exception ReflectionException wraps any error invoking the resource.
115: */
116: public java.lang.Object invoke(java.lang.String actionName,
117: java.lang.Object[] params, java.lang.String[] signature)
118: throws MBeanException, ReflectionException;
119:
120: /**
121: * Returns the management interface that describes this dynamic resource.
122: * It is the responsibility of the implementation to make sure the
123: * description is accurate.
124: *
125: * @return the management interface.
126: */
127: public MBeanInfo getMBeanInfo();
128: }
|