KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > mdr > test > MDRTestAssociationEvents


1 /*
2  * TestListeners.java
3  * NetBeans JUnit based test
4  *
5  * Created on 5. duben 2002, 17:00
6  */

7
8 package org.netbeans.mdr.test;
9
10 import java.util.Iterator JavaDoc;
11 import java.util.Collection JavaDoc;
12
13 import junit.framework.*;
14
15 import org.netbeans.mdr.handlers.BaseObjectHandler;
16 import org.netbeans.mdr.NBMDRepositoryImpl;
17
18 import org.netbeans.api.mdr.MDRManager;
19 import org.netbeans.api.mdr.MDRepository;
20 import org.netbeans.api.mdr.CreationFailedException;
21
22 import org.netbeans.api.mdr.events.*;
23
24 import javax.jmi.reflect.*;
25 import javax.jmi.model.*;
26
27 /**
28  *
29  * @author mk97936
30  */

31 public class MDRTestAssociationEvents extends MDREventsTestCase implements MDRChangeListener {
32     
33     private static final String JavaDoc PKG_NAME = "TEST_MOF";
34
35     private EventsList eventsList = new EventsList();
36     
37     public MDRTestAssociationEvents(java.lang.String JavaDoc testName) {
38         super(testName);
39     }
40     
41     protected void setUp() {
42         super.setUp();
43         ((MDRChangeSource) repository).addListener(this);
44     }
45     
46     protected void tearDown() {
47         super.tearDown();
48         ((MDRChangeSource) repository).removeListener(this);
49     }
50     
51     // -------------------------------------------------------------------------
52

53     public void testAddAssociation() {
54         
55         RefPackage testMOFPackage = createMOFExtent(PKG_NAME);
56
57         EventsDataGenerator generator = new EventsDataGenerator(repository.getExtent(PKG_NAME));
58         
59         Collection JavaDoc allMOFAssociations = testMOFPackage.refAllAssociations();
60         Iterator JavaDoc iterAssoc = allMOFAssociations.iterator();
61         while (iterAssoc.hasNext()) {
62             RefAssociation assocProxy = (RefAssociation) iterAssoc.next();
63             Association metaAssoc = (Association) assocProxy.refMetaObject();
64             eventsList.addPattern2(metaAssoc.getName(), EventsList._ADD | EventsList._CHANGED, System.currentTimeMillis());
65             java.util.List JavaDoc ends = generator.generateAssociation(assocProxy, metaAssoc, null, false);
66             // !@#$%^& wait until event arives
67
for (int i = 0; i < 20; i++) {
68                 try { Thread.currentThread().sleep(100); }
69                     catch (InterruptedException JavaDoc ie) { }
70             }
71             if (ends != null) {
72                 assertTrue(eventsList.checkEvents(metaAssoc.getName(), EventsList._ADD | EventsList._CHANGED));
73             }
74             eventsList.clear();
75         }
76         
77     }
78     
79     public void testRemoveAssociation() {
80         
81         RefPackage testMOFPackage = createMOFExtent(PKG_NAME);
82
83         EventsDataGenerator generator = new EventsDataGenerator(repository.getExtent(PKG_NAME));
84         
85         Collection JavaDoc allMOFAssociations = testMOFPackage.refAllAssociations();
86         Iterator JavaDoc iterAssoc = allMOFAssociations.iterator();
87         while (iterAssoc.hasNext()) {
88             RefAssociation assocProxy = (RefAssociation) iterAssoc.next();
89             Association metaAssoc = (Association) assocProxy.refMetaObject();
90             eventsList.addPattern2(metaAssoc.getName(), EventsList._ADD | EventsList._CHANGED, System.currentTimeMillis());
91             java.util.List JavaDoc ends = generator.generateAssociation(assocProxy, metaAssoc, null, false);
92             // !@#$%^& wait until event arives
93
for (int i = 0; i < 20; i++) {
94                 try { Thread.currentThread().sleep(100); }
95                     catch (InterruptedException JavaDoc ie) { }
96             }
97             if (ends != null) {
98                 assertTrue(eventsList.checkEvents(metaAssoc.getName(), EventsList._ADD | EventsList._CHANGED));
99             }
100             eventsList.clear();
101             
102             if (ends != null) {
103                 Collection JavaDoc links = assocProxy.refAllLinks();
104                 Object JavaDoc [] linksArray = links.toArray();
105                 if (linksArray.length >= 1) {
106                     RefAssociationLink link = (RefAssociationLink) linksArray[0];
107                     eventsList.addPattern2(metaAssoc.getName(), EventsList._REMOVE | EventsList._CHANGED, System.currentTimeMillis());
108                     assocProxy.refRemoveLink(link.refFirstEnd(), link.refSecondEnd());
109                     // !@#$%^& wait until event arives
110
for (int i = 0; i < 20; i++) {
111                         try { Thread.currentThread().sleep(100); }
112                             catch (InterruptedException JavaDoc ie) { }
113                     }
114                     assertTrue(eventsList.checkEvents(metaAssoc.getName(), EventsList._REMOVE | EventsList._CHANGED));
115                     eventsList.clear();
116                 } else {
117                     fail("Association contained no link!");
118                 }
119             }
120         }
121         
122     }
123     
124     // -------------------------------------------------------------------------
125

126     public void change(MDRChangeEvent e) {
127         processEvent(e, CHANGED);
128     }
129     
130     private void processEvent(MDRChangeEvent e, int type) {
131         
132         if (e.isOfType(AssociationEvent.EVENTMASK_ASSOCIATION)) { // AssociationEvent
133

134             // EVENT_ASSOCIATION_ADD
135
if (e.isOfType(AssociationEvent.EVENT_ASSOCIATION_ADD) && (type == PLANNED)) {
136                 eventsList.addEvent(((ModelElement) ((RefBaseObject)((AssociationEvent) e).getSource()).refMetaObject()).getName(),
137                                     e, System.currentTimeMillis(), EventsList._ADD | EventsList._PLANNED);
138             } else if (e.isOfType(AssociationEvent.EVENT_ASSOCIATION_ADD) && (type == CHANGED)) {
139                 eventsList.addEvent(((ModelElement) ((RefBaseObject)((AssociationEvent) e).getSource()).refMetaObject()).getName(),
140                                     e, System.currentTimeMillis(), EventsList._ADD | EventsList._CHANGED);
141             } else if (e.isOfType(AssociationEvent.EVENT_ASSOCIATION_ADD) && (type == CANCELED)) {
142                 eventsList.addEvent(((ModelElement) ((RefBaseObject)((AssociationEvent) e).getSource()).refMetaObject()).getName(),
143                                     e, System.currentTimeMillis(), EventsList._ADD | EventsList._CANCELED);
144             }
145             // EVENT_ASSOCIATION_SET
146
else if (e.isOfType(AssociationEvent.EVENT_ASSOCIATION_SET) && (type == PLANNED)) {
147                 eventsList.addEvent(((ModelElement) ((RefBaseObject)((AssociationEvent) e).getSource()).refMetaObject()).getName(),
148                                     e, System.currentTimeMillis(), EventsList._SET | EventsList._PLANNED);
149             } else if (e.isOfType(AssociationEvent.EVENT_ASSOCIATION_SET) && (type == CHANGED)) {
150                 eventsList.addEvent(((ModelElement) ((RefBaseObject)((AssociationEvent) e).getSource()).refMetaObject()).getName(),
151                                     e, System.currentTimeMillis(), EventsList._SET | EventsList._CHANGED);
152             } else if (e.isOfType(AssociationEvent.EVENT_ASSOCIATION_SET) && (type == CANCELED)) {
153                 eventsList.addEvent(((ModelElement) ((RefBaseObject)((AssociationEvent) e).getSource()).refMetaObject()).getName(),
154                                     e, System.currentTimeMillis(), EventsList._SET | EventsList._CANCELED);
155             }
156             // EVENT_ASSOCIATION_REMOVE
157
else if (e.isOfType(AssociationEvent.EVENT_ASSOCIATION_REMOVE) && (type == PLANNED)) {
158                 eventsList.addEvent(((ModelElement) ((RefBaseObject)((AssociationEvent) e).getSource()).refMetaObject()).getName(),
159                                     e, System.currentTimeMillis(), EventsList._REMOVE | EventsList._PLANNED);
160             } else if (e.isOfType(AssociationEvent.EVENT_ASSOCIATION_REMOVE) && (type == CHANGED)) {
161                 eventsList.addEvent(((ModelElement) ((RefBaseObject)((AssociationEvent) e).getSource()).refMetaObject()).getName(),
162                                     e, System.currentTimeMillis(), EventsList._REMOVE | EventsList._CHANGED);
163             } else if (e.isOfType(AssociationEvent.EVENT_ASSOCIATION_REMOVE) && (type == CANCELED)) {
164                 eventsList.addEvent(((ModelElement) ((RefBaseObject)((AssociationEvent) e).getSource()).refMetaObject()).getName(),
165                                     e, System.currentTimeMillis(), EventsList._REMOVE | EventsList._CANCELED);
166             }
167             
168         }
169         
170     }
171     
172 }
173
Popular Tags