001: /**
002: * The XMOJO Project 5
003: * Copyright © 2003 XMOJO.org. All rights reserved.
004:
005: * NO WARRANTY
006:
007: * BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
008: * THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
009: * OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
010: * PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
011: * OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
012: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
013: * TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE
014: * LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
015: * REPAIR OR CORRECTION.
016:
017: * IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
018: * ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
019: * THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
020: * GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
021: * USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF
022: * DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
023: * PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE),
024: * EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
025: * SUCH DAMAGES.
026: **/package javax.management.relation;
027:
028: import java.io.Serializable;
029: import java.util.List;
030: import java.util.Iterator;
031:
032: import javax.management.ObjectName;
033:
034: /**
035: * Represents a role: includes a role name and referenced MBeans (via their
036: * ObjectNames). The role value is always represented as an ArrayList
037: * collection (of ObjectNames) to homogenise the access.
038: */
039: public class Role implements Serializable {
040: List valueList = null;
041: String name = null;
042:
043: /**
044: * Constructor. No verification about the provided ObjectNames, no need
045: * for them to be registered at this level. This checking will be made
046: * when trying to set a relation role.
047: *
048: * @param theRoleName - role name
049: *
050: * @param theRoleValue - role value (ArrayList of ObjectName objects)
051: *
052: * @exception java.lang.IllegalArgumentException - if null parameter
053: */
054: public Role(String theRoleName, List theRoleValue)
055: throws IllegalArgumentException {
056: if (theRoleName == null || theRoleValue == null)
057: throw new IllegalArgumentException(
058: "Cannot create a Role Object with null values");
059:
060: this .name = theRoleName;
061: this .valueList = theRoleValue;
062: }
063:
064: /**
065: * Cloning.Creates a duplicate copy for the current Role object
066: *
067: * Overrides:
068: * clone in class java.lang.Object
069: *
070: * @return
071: * a Role being an independent copy of the current Role object.
072: */
073: public Object clone() {
074: return new Role(getRoleName(), getRoleValue());
075: }
076:
077: /**
078: * Retrieves role name
079: *
080: * @return This gets the name of role
081: */
082: public String getRoleName() {
083: return this .name;
084: }
085:
086: /**
087: * Retrieves role value
088: *
089: * @return
090: * ArrayList of ObjectName objects for referenced MBeans.
091: */
092: public List getRoleValue() {
093: return this .valueList;
094: }
095:
096: /**
097: * Returns a string for the given role value
098: *
099: * @param theRoleValue - ArrayList of ObjectName objects
100: *
101: * @return String being the ObjectNames separated by commas.
102: *
103: * @exception java.lang.IllegalArgumentException - if null parameter
104: */
105: public static String roleValueToString(List theRoleValue)
106: throws IllegalArgumentException {
107: if (theRoleValue == null)
108: throw new IllegalArgumentException(
109: "Cannot convert null RoleValue Objects to String ");
110:
111: //return the Appended form of all the ObjectNames in the List.
112: StringBuffer str = null;
113: Iterator i = theRoleValue.iterator();
114: while (i.hasNext()) {
115: ObjectName temp = (ObjectName) (i.next());
116: str.append(temp.toString());
117: if (i.hasNext())
118: str.append(",");
119: }
120: String toRet = str.toString();
121:
122: return toRet.substring(0, toRet.length() - 1);
123: }
124:
125: /**
126: * Sets role name
127: *
128: * @param theRoleName - role name
129: *
130: * @exception java.lang.IllegalArgumentException - if null parameter
131: */
132: public void setRoleName(String theRoleName)
133: throws IllegalArgumentException {
134: if (theRoleName == null)
135: throw new IllegalArgumentException(
136: "Cannot set null Objects for the RoleNames");
137:
138: this .name = theRoleName;
139: }
140:
141: /**
142: * Sets role value
143: *
144: * @param theRoleValue - ArrayList of ObjectName objects for referenced MBeans.
145: *
146: * @exception java.lang.IllegalArgumentException - if null parameter
147: */
148: public void setRoleValue(List theRoleValue)
149: throws IllegalArgumentException {
150: if (theRoleValue == null)
151: throw new IllegalArgumentException();
152:
153: this .valueList = theRoleValue;
154: }
155:
156: /**
157: * Prints a string describing the role
158: *
159: * Overrides: toString in class java.lang.Object
160: *
161: * @return String format of the role
162: */
163: public String toString() {
164: StringBuffer str = new StringBuffer();
165: str.append(getRoleName());
166: str.append(":");
167:
168: //return the Appended form of all the ObjectNames in the List.
169: for (int i = 0; i < valueList.size(); i++) {
170: str.append(((ObjectName) (valueList.get(i))).toString());
171: str.append(",");
172: }
173: String toRet = str.toString();
174:
175: return toRet.substring(0, str.length() - 1);
176: }
177: }
|