KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tctest > performance > simulate > type > SimulatedCollection


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package com.tctest.performance.simulate.type;
5
6 import java.lang.reflect.Constructor JavaDoc;
7 import java.util.Arrays JavaDoc;
8 import java.util.Collection JavaDoc;
9 import java.util.Iterator JavaDoc;
10
11 final class SimulatedCollection extends AbstractSimulatedType {
12
13   private Collection JavaDoc masterCopy;
14
15   /**
16    * @param collection - elements must be of type: {@link SimulatedType}
17    */

18   SimulatedCollection(Collection JavaDoc collection) {
19     for (Iterator JavaDoc iter = collection.iterator(); iter.hasNext();) {
20       if (!(iter.next() instanceof SimulatedType)) throw new RuntimeException JavaDoc("Collection elements must be of type: "
21                                                                               + SimulatedType.class.getName());
22     }
23     this.masterCopy = collection;
24   }
25
26   public Class JavaDoc getType() {
27     return masterCopy.getClass();
28   }
29
30   public Object JavaDoc cloneUnique() {
31     try {
32       Constructor JavaDoc constructor = masterCopy.getClass().getConstructor(new Class JavaDoc[0]);
33       Collection JavaDoc clone = (Collection JavaDoc) constructor.newInstance(new Object JavaDoc[0]);
34       for (Iterator JavaDoc iter = masterCopy.iterator(); iter.hasNext();) {
35         clone.add(((SimulatedType) iter.next()).cloneUnique());
36       }
37       return clone;
38     } catch (Exception JavaDoc e) {
39       throw new RuntimeException JavaDoc(e);
40     }
41   }
42   
43   public Object JavaDoc clone() {
44     try {
45       Constructor JavaDoc constructor = masterCopy.getClass().getConstructor(new Class JavaDoc[0]);
46       Collection JavaDoc clone = (Collection JavaDoc) constructor.newInstance(new Object JavaDoc[0]);
47       for (Iterator JavaDoc iter = masterCopy.iterator(); iter.hasNext();) {
48         clone.add(((SimulatedType) iter.next()).clone());
49       }
50       return clone;
51     } catch (Exception JavaDoc e) {
52       throw new RuntimeException JavaDoc(e);
53     }
54   }
55
56   public String JavaDoc toString() {
57     return "{type=" + masterCopy.getClass().getName() + " elements=" + Arrays.asList(masterCopy.toArray()) + "}";
58   }
59 }
60
Popular Tags