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.util.ArrayList;
029: import java.util.List;
030: import java.util.Iterator;
031:
032: /**
033: * A RoleList represents a list of roles (Role objects). It is used as
034: * parameter when creating a relation, and when trying to set several roles
035: * in a relation (via 'setRoles()' method). It is returned as part of a
036: * RoleResult, to provide roles successfully retrieved.
037: */
038: public class RoleList extends ArrayList {
039: /**
040: * Constructs an empty RoleList.
041: */
042: public RoleList() {
043: super ();
044: }
045:
046: /**
047: * Constructs an empty RoleList with the initial capacity specified.
048: *
049: * @param theInitialCapacity - initial capacity
050: */
051: public RoleList(int theInitialCapacity) {
052: super (theInitialCapacity);
053: }
054:
055: /**
056: * Constructs a RoleList containing the elements of the ArrayList specified,
057: * in the order in which they are returned by the ArrayList's iterator.
058: * The RoleList instance has an initial capacity of 110% of the size of
059: * the ArrayList specified.
060: *
061: * @param theList - list of Role objects
062: *
063: * @exception java.lang.IllegalArgumentException - if:
064: * - null parameter or
065: * - an element in the ArrayList is not a Role
066: */
067: public RoleList(List theList) throws IllegalArgumentException {
068: if (theList == null)
069: throw new IllegalArgumentException(
070: "Cannot create RoleList with null parameter!!!");
071:
072: Iterator iter = theList.iterator();
073: int i = 0;
074:
075: while (iter.hasNext()) {
076: Object temp = iter.next();
077: i += 1;
078: super .add(temp);
079:
080: if (!(temp instanceof Role))
081: throw new IllegalArgumentException("Element at " + i
082: + " index is not a Role ");
083: }
084: }
085:
086: /**
087: * Inserts the role specified as an element at the position specified.
088: * Elements with an index greater than or equal to the current position
089: * are shifted up.
090: *
091: * @param theIndex - The position in the list where the new Role object
092: * is to be inserted.
093: *
094: * @param theRole - The Role object to be inserted.
095: *
096: * @throws java.lang.IllegalArgumentException - if the role is null.
097: *
098: * @throws java.lang.IndexOutOfBoundsException - if accessing with an
099: * index outside of the list.
100: */
101: public void add(int theIndex, Role theRole)
102: throws IllegalArgumentException, IndexOutOfBoundsException {
103: if (theRole == null)
104: throw new IllegalArgumentException();
105:
106: // We dont have to specifically throw IndexOutOfBoundsException as it will be thrown
107: // in the ArrayList.add()
108: super .add(theIndex, theRole);
109: }
110:
111: /**
112: * Adds the Role specified as the last element of the list.
113: *
114: * @param theRole - the role to be added.
115: *
116: * @exception java.lang.IllegalArgumentException - if the role is null.
117: */
118: public void add(Role theRole) throws IllegalArgumentException {
119: if (theRole == null)
120: throw new IllegalArgumentException();
121:
122: super .add(theRole);
123: //this.roleList.add(theRole);
124: }
125:
126: /**
127: * Inserts all of the elements in the RoleList specified into this list,
128: * starting at the specified position, in the order in which they are
129: * returned by the Iterator of the RoleList specified.
130: *
131: * @param theIndex - Position at which to insert the first element from
132: * the RoleList specified.
133: *
134: * @param theRoleList - Elements to be inserted into the list.
135: *
136: * @throws java.lang.IllegalArgumentException - if the role is null.
137: *
138: * @throws java.lang.IndexOutOfBoundsException - if accessing with an
139: * index outside of the list.
140: */
141: public boolean addAll(int theIndex, RoleList theRoleList)
142: throws IllegalArgumentException, IndexOutOfBoundsException {
143: if (theRoleList == null)
144: throw new IllegalArgumentException();
145:
146: // We dont have to specifically throw IndexOutOfBoundsException as
147: // it will be thrown in the ArrayList.addAll()
148: return super .addAll(theIndex, theRoleList);
149: }
150:
151: /**
152: * Appends all the elements in the RoleList specified to the end of the
153: * list, in the order in which they are returned by the Iterator of the
154: * RoleList specified.
155: *
156: * @param theRoleList - Elements to be inserted into the list (can be null)
157: *
158: * @throws java.lang.IndexOutOfBoundsException - if accessing with an
159: * index outside of the list.
160: */
161: public boolean addAll(RoleList theRoleList)
162: throws IndexOutOfBoundsException {
163: // We dont have to specifically throw IndexOutOfBoundsException as
164: // it will be thrown in the ArrayList.addAll()
165: if (theRoleList == null)
166: return true;
167:
168: return super .addAll(theRoleList);
169: }
170:
171: /**
172: * Cloning. This will create a duplicate copy of the RoleList.
173: *
174: * @return Returns a new RoleList, but no copy of the included elements.
175: *
176: * Overrides:
177: * clone in class java.util.ArrayList
178: */
179: public java.lang.Object clone() {
180: return new RoleList((ArrayList) (super .clone()));
181: }
182:
183: /**
184: * Sets the element at the position specified to be the role specified.
185: * The previous element at that position is discarded.
186: *
187: * @param theIndex - The position specified.
188: *
189: * @param theRole - The value to which the role element should be set.
190: *
191: * @throws java.lang.IllegalArgumentException - if the role is null.
192: *
193: * @throws java.lang.IndexOutOfBoundsException - if accessing with an
194: * index outside of the list.
195: */
196: public void set(int theIndex, Role theRole)
197: throws IllegalArgumentException, IndexOutOfBoundsException {
198: if (theRole == null)
199: throw new IllegalArgumentException();
200:
201: // We dont have to specifically throw IndexOutOfBoundsException as it will be thrown
202: // in the ArrayList.set()
203:
204: super.set(theIndex, theRole);
205: }
206: }
|