User: squirest
Date: 01/12/11 13:19:47
Modified: src/main/javax/management MBeanConstructorInfo.java
MBeanInfo.java MBeanNotificationInfo.java
MBeanOperationInfo.java MBeanParameterInfo.java
Log:
changed constructors to shallow-clone input arrays
changed getXXX() methods to return shallow array clones
formatting and prettying
Revision Changes Path
1.3 +39 -19 jmx/src/main/javax/management/MBeanConstructorInfo.java
Index: MBeanConstructorInfo.java
===================================================================
RCS file: /cvsroot/jboss/jmx/src/main/javax/management/MBeanConstructorInfo.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- MBeanConstructorInfo.java 2001/12/05 14:12:46 1.2
+++ MBeanConstructorInfo.java 2001/12/11 21:19:47 1.3
@@ -1,44 +1,64 @@
/*
- * LGPL
+ * JBoss, the OpenSource J2EE webOS
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
*/
package javax.management;
+/**
+ * Describes a constructor exposed by an MBean
+ *
+ * This implementation protects its immutability by taking shallow clones of all
arrays
+ * supplied in constructors and by returning shallow array clones in getXXX()
methods.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Juha Lindfors</a>.
+ * @author <a href="mailto:[EMAIL PROTECTED]">Trevor Squires</a>.
+ *
+ * @version $Revision: 1.3 $
+ */
public class MBeanConstructorInfo extends MBeanFeatureInfo
- implements java.io.Serializable, Cloneable {
+ implements java.io.Serializable, Cloneable
+{
+ // Attributes ----------------------------------------------------
protected MBeanParameterInfo[] signature = null;
-
+
+ // Constructors --------------------------------------------------
public MBeanConstructorInfo(java.lang.String description,
- java.lang.reflect.Constructor constructor) {
+ java.lang.reflect.Constructor constructor)
+ {
super(constructor.getName(), description);
Class[] sign = constructor.getParameterTypes();
signature = new MBeanParameterInfo[sign.length];
-
- for (int i = 0; i < sign.length; ++i) {
+
+ for (int i = 0; i < sign.length; ++i)
+ {
String name = sign[i].getName();
signature[i] = new MBeanParameterInfo(name, name, "MBean Constructor
Parameter.");
}
-
}
-
+
public MBeanConstructorInfo(java.lang.String name,
java.lang.String description,
- MBeanParameterInfo[] signature) {
+ MBeanParameterInfo[] signature)
+ {
super(name, description);
- this.signature = signature;
+ this.signature = (null == signature) ? new MBeanParameterInfo[0] :
(MBeanParameterInfo[]) signature.clone();
}
- public java.lang.Object clone() throws CloneNotSupportedException {
- MBeanConstructorInfo clone = (MBeanConstructorInfo)super.clone();
- clone.signature = getSignature();
- return clone;
+ // Public --------------------------------------------------------
+ public MBeanParameterInfo[] getSignature()
+ {
+ return (MBeanParameterInfo[]) signature.clone();
}
- public MBeanParameterInfo[] getSignature() {
- return signature;
+ // Cloneable implementation --------------------------------------
+ public java.lang.Object clone() throws CloneNotSupportedException
+ {
+ MBeanConstructorInfo clone = (MBeanConstructorInfo) super.clone();
+ clone.signature = getSignature();
+ return clone;
}
-
-
-
}
1.4 +20 -47 jmx/src/main/javax/management/MBeanInfo.java
Index: MBeanInfo.java
===================================================================
RCS file: /cvsroot/jboss/jmx/src/main/javax/management/MBeanInfo.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- MBeanInfo.java 2001/12/10 17:20:04 1.3
+++ MBeanInfo.java 2001/12/11 21:19:47 1.4
@@ -9,18 +9,21 @@
/**
* Describes an MBeans' management interface.
*
+ * This implementation protects its immutability by taking shallow clones of all
arrays
+ * supplied in constructors and by returning shallow array clones in getXXX()
methods.
+ *
* @see javax.management.MBeanServer
*
* @author <a href="mailto:[EMAIL PROTECTED]">Juha Lindfors</a>.
* @author <a href="mailto:[EMAIL PROTECTED]">Trevor Squires</a>.
+ *
+ * @version $Revision: 1.4 $
*
- * @version $Revision: 1.3 $
- *
*/
public class MBeanInfo
implements Cloneable, java.io.Serializable
{
-
+
// Attributes ----------------------------------------------------
protected String className = null;
protected String description = null;
@@ -38,10 +41,10 @@
{
this.className = className;
this.description = description;
- this.attributes = (null == attributes) ? new MBeanAttributeInfo[0]:
attributes;
- this.constructors = (null == constructors) ? new MBeanConstructorInfo[0] :
constructors;
- this.operations = (null == operations) ? new MBeanOperationInfo[0] :
operations;
- this.notifications = (null == notifications) ? new MBeanNotificationInfo[0] :
notifications;
+ this.attributes = (null == attributes) ? new MBeanAttributeInfo[0] :
(MBeanAttributeInfo[]) attributes.clone();
+ this.constructors = (null == constructors) ? new MBeanConstructorInfo[0] :
(MBeanConstructorInfo[]) constructors.clone();
+ this.operations = (null == operations) ? new MBeanOperationInfo[0] :
(MBeanOperationInfo[]) operations.clone();
+ this.notifications = (null == notifications) ? new MBeanNotificationInfo[0] :
(MBeanNotificationInfo[]) notifications.clone();
}
// Public --------------------------------------------------------
@@ -57,67 +60,37 @@
public MBeanAttributeInfo[] getAttributes()
{
- return attributes;
+ return (MBeanAttributeInfo[]) attributes.clone();
}
public MBeanOperationInfo[] getOperations()
{
- return operations;
+ return (MBeanOperationInfo[]) operations.clone();
}
public MBeanConstructorInfo[] getConstructors()
{
- return constructors;
+ return (MBeanConstructorInfo[]) constructors.clone();
}
public MBeanNotificationInfo[] getNotifications()
{
- return notifications;
+ return (MBeanNotificationInfo[]) notifications.clone();
}
-
+
// Cloneable implementation --------------------------------------
public Object clone() throws CloneNotSupportedException
{
MBeanInfo clone = (MBeanInfo) super.clone();
- clone.className = className;
- clone.description = description;
+ clone.className = getClassName();
+ clone.description = getDescription();
- /**
- * Clones of the internal arrays assumes that constructor replaces null args
- * with zero sized arrays.
- */
-
- int asize = attributes.length;
- clone.attributes = new MBeanAttributeInfo[asize];
- for (int i = 0; i < asize; i++)
- {
- clone.attributes[i] = (MBeanAttributeInfo) this.attributes[i].clone();
- }
-
- asize = constructors.length;
- clone.constructors = new MBeanConstructorInfo[asize];
- for (int i = 0; i < asize; i++)
- {
- clone.constructors[i] = (MBeanConstructorInfo)
this.constructors[i].clone();
- }
-
- asize = operations.length;
- clone.operations = new MBeanOperationInfo[asize];
- for (int i = 0; i < asize; i++)
- {
- clone.operations[i] = (MBeanOperationInfo) this.operations[i].clone();
- }
-
- asize = notifications.length;
- clone.notifications = new MBeanNotificationInfo[asize];
- for (int i = 0; i < asize; i++)
- {
- clone.notifications[i] = (MBeanNotificationInfo)
this.notifications[i].clone();
- }
+ clone.attributes = getAttributes();
+ clone.constructors = getConstructors();
+ clone.operations = getOperations();
+ clone.notifications = getNotifications();
return clone;
}
-
}
-
1.2 +31 -13 jmx/src/main/javax/management/MBeanNotificationInfo.java
Index: MBeanNotificationInfo.java
===================================================================
RCS file: /cvsroot/jboss/jmx/src/main/javax/management/MBeanNotificationInfo.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MBeanNotificationInfo.java 2001/12/03 02:01:30 1.1
+++ MBeanNotificationInfo.java 2001/12/11 21:19:47 1.2
@@ -1,32 +1,50 @@
/*
- * LGPL
+ * JBoss, the OpenSource J2EE webOS
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
*/
package javax.management;
+/**
+ * Describes a notification emitted by an MBean
+ *
+ * This implementation protects its immutability by taking shallow clones of all
arrays
+ * supplied in constructors and by returning shallow array clones in getXXX()
methods.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Juha Lindfors</a>.
+ * @author <a href="mailto:[EMAIL PROTECTED]">Trevor Squires</a>.
+ *
+ * @version $Revision: 1.2 $
+ */
public class MBeanNotificationInfo extends MBeanFeatureInfo
- implements Cloneable, java.io.Serializable {
+ implements Cloneable, java.io.Serializable
+{
+ // Attributes ----------------------------------------------------
protected String[] notifsType = null;
+ // Constructors --------------------------------------------------
public MBeanNotificationInfo(String[] notifsType,
String name,
- String description) {
-
+ String description)
+ {
super(name, description);
- this.notifsType = notifsType;
- }
-
- public Object clone() throws CloneNotSupportedException {
- MBeanNotificationInfo clone = (MBeanNotificationInfo)super.clone();
- clone.notifsType = getNotifTypes();
-
- return clone;
+ this.notifsType = (null == notifsType) ? new String[0] : (String[])
notifsType.clone();
}
+ // Public -------------------------------------------------------
public String[] getNotifTypes()
{
- return notifsType;
+ return (String[]) notifsType.clone();
}
+ // CLoneable implementation -------------------------------------
+ public Object clone() throws CloneNotSupportedException
+ {
+ MBeanNotificationInfo clone = (MBeanNotificationInfo) super.clone();
+ clone.notifsType = getNotifTypes();
+ return clone;
+ }
}
1.3 +48 -25 jmx/src/main/javax/management/MBeanOperationInfo.java
Index: MBeanOperationInfo.java
===================================================================
RCS file: /cvsroot/jboss/jmx/src/main/javax/management/MBeanOperationInfo.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- MBeanOperationInfo.java 2001/12/05 14:12:46 1.2
+++ MBeanOperationInfo.java 2001/12/11 21:19:47 1.3
@@ -1,64 +1,87 @@
/*
- * LGPL
+ * JBoss, the OpenSource J2EE webOS
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
*/
package javax.management;
+/**
+ * Describes an operation exposed by an MBean
+ *
+ * This implementation protects its immutability by taking shallow clones of all
arrays
+ * supplied in constructors and by returning shallow array clones in getXXX()
methods.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Juha Lindfors</a>.
+ * @author <a href="mailto:[EMAIL PROTECTED]">Trevor Squires</a>.
+ *
+ * @version $Revision: 1.3 $
+ */
public class MBeanOperationInfo extends MBeanFeatureInfo
- implements java.io.Serializable, Cloneable {
-
+ implements java.io.Serializable, Cloneable
+{
+ // Attributes ----------------------------------------------------
public static final int INFO = 0x1234;
public static final int ACTION = 0x332;
public static final int ACTION_INFO = 0xabcd;
public static final int UNKNOWN = 0xdead;
-
protected int impact = UNKNOWN;
protected MBeanParameterInfo[] signature = null;
protected String returnType = null;
-
+
+ // Constructors --------------------------------------------------
public MBeanOperationInfo(java.lang.String description,
- java.lang.reflect.Method method) {
+ java.lang.reflect.Method method)
+ {
super(method.getName(), description);
this.returnType = method.getReturnType().getName();
-
+
Class[] sign = method.getParameterTypes();
signature = new MBeanParameterInfo[sign.length];
-
- for (int i = 0; i < sign.length; ++i) {
+
+ for (int i = 0; i < sign.length; ++i)
+ {
String name = sign[i].getName();
signature[i] = new MBeanParameterInfo(name, name, "MBean Operation
Parameter.");
}
}
-
+
public MBeanOperationInfo(String name, String description,
MBeanParameterInfo[] signature,
- String returnType, int impact) {
+ String returnType, int impact)
+ {
super(name, description);
- this.signature = signature;
+ this.signature = (null == signature) ? new MBeanParameterInfo[0] :
(MBeanParameterInfo[]) signature.clone();
this.returnType = returnType;
this.impact = impact;
}
- public java.lang.Object clone() throws CloneNotSupportedException {
- MBeanOperationInfo clone = (MBeanOperationInfo)super.clone();
- clone.signature = getSignature();
- clone.returnType = getReturnType();
- clone.impact = getImpact();
-
- return clone;
- }
-
- public String getReturnType() {
+ // Public --------------------------------------------------------
+ public String getReturnType()
+ {
return returnType;
}
- public MBeanParameterInfo[] getSignature() {
- return signature;
+ public MBeanParameterInfo[] getSignature()
+ {
+ return (MBeanParameterInfo[]) signature.clone();
}
- public int getImpact() {
+ public int getImpact()
+ {
return impact;
}
+ // Cloneable implementation --------------------------------------
+ public java.lang.Object clone() throws CloneNotSupportedException
+ {
+ MBeanOperationInfo clone = (MBeanOperationInfo) super.clone();
+ clone.signature = getSignature();
+ clone.returnType = getReturnType();
+ clone.impact = getImpact();
+
+ return clone;
+ }
}
1.2 +28 -15 jmx/src/main/javax/management/MBeanParameterInfo.java
Index: MBeanParameterInfo.java
===================================================================
RCS file: /cvsroot/jboss/jmx/src/main/javax/management/MBeanParameterInfo.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MBeanParameterInfo.java 2001/12/03 02:01:30 1.1
+++ MBeanParameterInfo.java 2001/12/11 21:19:47 1.2
@@ -1,31 +1,44 @@
/*
- * LGPL
+ * JBoss, the OpenSource J2EE webOS
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
*/
package javax.management;
-public class MBeanParameterInfo extends MBeanFeatureInfo implements
java.io.Serializable, Cloneable {
-
+/**
+ * Describes an argument of an operation exposed by an MBean
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Juha Lindfors</a>.
+ *
+ * @version $Revision: 1.2 $
+ */
+public class MBeanParameterInfo extends MBeanFeatureInfo
+ implements java.io.Serializable, Cloneable
+{
+ // Attributes ----------------------------------------------------
protected String type = null;
-
+
+ // Constructors --------------------------------------------------
public MBeanParameterInfo(java.lang.String name,
java.lang.String type,
- java.lang.String description) {
+ java.lang.String description)
+ {
super(name, description);
this.type = type;
}
-
+ // Public --------------------------------------------------------
+ public java.lang.String getType()
+ {
+ return type;
+ }
- public java.lang.Object clone() throws CloneNotSupportedException {
- MBeanParameterInfo clone = (MBeanParameterInfo)super.clone();
+ // Cloneable implementation --------------------------------------
+ public java.lang.Object clone() throws CloneNotSupportedException
+ {
+ MBeanParameterInfo clone = (MBeanParameterInfo) super.clone();
clone.type = getType();
return clone;
}
-
- public java.lang.String getType() {
- return type;
- }
-
-
}
-
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development