001: /* JFox, the OpenSource J2EE Application Server
002: *
003: * Copyright (C) 2002 huihoo.org
004: * Distributable under GNU LGPL license
005: * See the GNU Lesser General Public License for more details.
006: */
007:
008: package javax.management.relation;
009:
010: import java.util.Iterator;
011: import java.util.List;
012: import java.util.ArrayList;
013: import java.io.Serializable;
014: import javax.management.ObjectName;
015:
016: /**
017: * Represents a role: includes a role name and referenced MBeans (via their
018: * ObjectNames). The role value is always represented as an ArrayList
019: * collection (of ObjectNames) to homogeneise the access.
020: *
021: * @author <a href="mailto:young_yy@hotmail.org">Young Yang</a>
022: */
023:
024: public class Role implements Serializable {
025:
026: // Role name
027: private String roleName = null;
028:
029: // List of ObjectNames of referenced MBeans
030: private List roleValue = new ArrayList();
031:
032: /**
033: * Constructor
034: * <P>No verification about the provided ObjectNames, no need for them
035: * to be registered at this level. This checking will be made when trying
036: * to set a relation role.
037: *
038: * @param roleName role name
039: * @param roleValue role value (ArrayList of ObjectName objects)
040: *
041: * @exception IllegalArgumentException if null parameter
042: */
043: public Role(String roleName, List roleValue)
044: throws IllegalArgumentException {
045: if (roleName == null || roleValue == null)
046: throw new IllegalArgumentException(
047: "Invalid parameter: roleName and roleValue can not be null");
048: setRoleName(roleName);
049: setRoleValue(roleValue);
050: }
051:
052: /**
053: * Retrieves role name
054: */
055: public String getRoleName() {
056: return roleName;
057: }
058:
059: /**
060: * Retrieves role value
061: *
062: * @return ArrayList of ObjectName objects for referenced MBeans.
063: */
064: public List getRoleValue() {
065: return roleValue;
066: }
067:
068: /**
069: * Sets role name
070: *
071: * @param roleName role name
072: *
073: * @exception IllegalArgumentException if null parameter
074: */
075: public void setRoleName(String roleName)
076: throws IllegalArgumentException {
077: if (roleName == null)
078: throw new IllegalArgumentException(
079: "Invalid parameter: roleName can not be null");
080: this .roleName = roleName;
081: }
082:
083: /**
084: * Sets role value
085: *
086: * @param roleValue ArrayList of ObjectName objects for referenced
087: * MBeans.
088: *
089: * @exception IllegalArgumentException if null parameter
090: */
091: public void setRoleValue(List roleValue)
092: throws IllegalArgumentException {
093: if (roleValue == null) {
094: throw new IllegalArgumentException(
095: "Invalid parameter: roleValue can not be null");
096: }
097: this .roleValue = new ArrayList();
098: for (int i = 0; i < roleValue.size(); i++) {
099: Object obj = roleValue.get(i);
100: if (!(obj instanceof javax.management.ObjectName)) {
101: throw new IllegalArgumentException(
102: "the element at index "
103: + i
104: + " of roleValue is not a javax.manament.ObjectName object.");
105: }
106: this .roleValue.add(obj);
107: }
108:
109: }
110:
111: /**
112: * Prints a string describing the role
113: */
114: public String toString() {
115: StringBuffer result = new StringBuffer();
116: result.append("role name: " + roleName + "; role value: ");
117: for (Iterator it = roleValue.iterator(); it.hasNext();) {
118: ObjectName objName = (ObjectName) (it.next());
119: result.append(objName.toString());
120: if (it.hasNext())
121: result.append(", ");
122: }
123: return result.toString();
124: }
125:
126: /**
127: * Cloning
128: *
129: * @return a Role being an independent copy of the current Role object.
130: */
131: public Object clone() {
132: try {
133: return new Role(roleName, roleValue);
134: } catch (IllegalArgumentException e) {
135: e.printStackTrace();
136: return null; // :)
137: }
138: }
139:
140: /**
141: * Returns a string for the given role value
142: *
143: * @param roleValue ArrayList of ObjectName objects
144: *
145: * @return String being the ObjectNames separated by commas.
146: *
147: * @exception IllegalArgumentException if null parameter
148: */
149: public static String roleValueToString(List roleValue)
150: throws IllegalArgumentException {
151:
152: if (roleValue == null)
153: throw new IllegalArgumentException(
154: "Invalid parameter: roleValue can not be null");
155:
156: StringBuffer result = new StringBuffer();
157: for (Iterator objNameIter = roleValue.iterator(); objNameIter
158: .hasNext();) {
159: ObjectName currObjName = (ObjectName) (objNameIter.next());
160: result.append(currObjName.toString());
161: if (objNameIter.hasNext()) {
162: result.append("\n");
163: }
164: }
165: return result.toString();
166: }
167: }
|