KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > test > ozoneDB > tools > OPP > srcgen > resolve > TestSourceUpdateMethodReslover


1 // You can redistribute this software and/or modify it under the terms of
2
// the Ozone Library License version 1 published by ozone-db.org.
3
//
4
// The original code and portions created by Joakim Ohlrogge are
5
// Copyright (C) 1997-@year@ by Joakim Ohlrogge. All rights reserved.
6
//
7
// $Id$
8

9 package test.ozoneDB.tools.OPP.srcgen.resolve;
10
11 import junit.framework.TestCase;
12 import org.ozoneDB.tools.OPP.srcgen.resolve.SourceUpdateMethodResolver;
13 import org.ozoneDB.tools.OPP.srcgen.resolve.UpdateMethodBagMapAdapter;
14 import org.ozoneDB.tools.OPP.srcgen.MethodResolver;
15 import org.ozoneDB.tools.OPP.srcgen.ResolverException;
16 import org.ozoneDB.tools.OPP.message.MessageWriter;
17 import org.ozoneDB.tools.OPP.message.StdOutMessageWriter;
18 import org.ozoneDB.core.Lock;
19 import test.ozoneDB.tools.OPP.srcgen.streamfactory.MockInputStreamFactory;
20 import test.ozoneDB.tools.OPP.srcgen.query.MockClassQuery;
21
22 import java.io.StringWriter JavaDoc;
23 import java.io.PrintWriter JavaDoc;
24 import java.util.Map JavaDoc;
25 import java.util.HashMap JavaDoc;
26
27 import com.mockobjects.util.Verifier;
28
29 /**
30  * User: Jocke
31  * Date: 2004-jan-02
32  * Time: 01:13:21
33  */

34 public class TestSourceUpdateMethodReslover extends TestCase {
35     private MockInputStreamFactory isFactory;
36     private MockClassQuery classQuery;
37     private MessageWriter messageWriter;
38
39     public TestSourceUpdateMethodReslover(String JavaDoc s) {
40         super(s);
41     }
42
43     protected void setUp() {
44         isFactory = new MockInputStreamFactory();
45         messageWriter = new StdOutMessageWriter(false, true);
46         classQuery = new MockClassQuery();
47     }
48
49     /**
50      * Sets up the ClassQury for an extremely basic case of an ozone object.
51      * An ozone object implements an OznoneRemote extending interface.
52      *
53      */

54     private void setupSimpleScenario() {
55
56         // The SourceUpdateMethodResolver will ask for all interfaces of class MyOzoneObjectImpl
57
// we will return MyOzoneObject
58
String JavaDoc myOzoneObjectImplInterfaces[] = {"MyOzoneObject"};
59         classQuery.setupGetInterfaces("MyOzoneObjectImpl", myOzoneObjectImplInterfaces);
60
61         //MyOzoneObject extends OzoneRemote
62
String JavaDoc myOzoneObjectInterfaces[] = {"org.ozoneDB.OzoneRemote"};
63         classQuery.setupGetInterfaces("MyOzoneObject", myOzoneObjectInterfaces);
64
65         // Both MyOzoneObject and MyOzoneObjectImpl are assignable from OzoneRemote
66
classQuery.setupIsAssignable("org.ozoneDB.OzoneRemote", "MyOzoneObject", true);
67         classQuery.setupIsAssignable("org.ozoneDB.OzoneRemote", "MyOzoneObjectImpl", true);
68     }
69
70
71     public void testUpdateMethodDetectionInImpl() throws ResolverException {
72         setupSimpleScenario();
73
74         StringWriter JavaDoc ifWr = new StringWriter JavaDoc();
75         PrintWriter JavaDoc ifPWr = new PrintWriter JavaDoc(ifWr);
76
77         // Setup a very simple interface source
78
ifPWr.println("import org.ozoneDB.*;");
79         ifPWr.println("public interface MyOzoneObject extends OzoneRemote {");
80         ifPWr.println(" public void myRegularMethod();");
81         ifPWr.println(" public void myUpdateMethod();");
82         ifPWr.println(" public void myUpdateMethod2();");
83         ifPWr.println(" public void myUpdateMethod3();");
84         ifPWr.println(" public void myRegularMethod2();");
85         ifPWr.println("}");
86         ifPWr.flush();
87
88         StringWriter JavaDoc obWr = new StringWriter JavaDoc();
89         PrintWriter JavaDoc obPWr = new PrintWriter JavaDoc(obWr);
90
91         // Setup the OzoneObjectSource with 3 update methods
92
obPWr.println("import org.ozoneDB.*;");
93         obPWr.println("public interface MyOzoneObject extends OzoneRemote {");
94         obPWr.println(" public void myRegularMethod() {");
95         obPWr.println(" }");
96         obPWr.println(" public void myUpdateMethod() //update");
97         obPWr.println(" {");
98         obPWr.println(" }");
99         obPWr.println(" public void myUpdateMethod2() /*update*/{");
100         obPWr.println(" }");
101         obPWr.println(" /**");
102         obPWr.println(" * @update");
103         obPWr.println(" */");
104         obPWr.println(" public void myUpdateMethod3() {");
105         obPWr.println(" }");
106         obPWr.println(" public void myRegularMethod2() {");
107         obPWr.println(" }");
108         obPWr.println("}");
109         obPWr.flush();
110
111         // Add sources to the MockInputStreamFactory
112
isFactory.setupNewInstanceReturnValue("MyOzoneObject", ifWr.toString());
113         isFactory.setupNewInstanceReturnValue("MyOzoneObjectImpl", obWr.toString());
114
115         Map JavaDoc updateMethods = new HashMap JavaDoc();
116         MethodResolver.UpdateMethodBag updateMethodBag = new UpdateMethodBagMapAdapter(updateMethods);
117
118         // create the resolver and do the resolve
119
MethodResolver resolver = new SourceUpdateMethodResolver(isFactory, messageWriter, classQuery);
120         resolver.resolveMethods("MyOzoneObjectImpl", updateMethodBag);
121
122         // Verify that all mockobjects has returned all expected data
123
Verifier.verifyObject(this);
124
125         // verify that the resolver has identified all updatemethods as such
126
assertTrue("Map does not contain myUpdateMethod", updateMethods.containsKey("myUpdateMethod"));
127         assertTrue("Map does not contain myUpdateMethod2", updateMethods.containsKey("myUpdateMethod2"));
128         assertTrue("Map does not contain myUpdateMethod3", updateMethods.containsKey("myUpdateMethod3"));
129
130         // verify that the resolver has identified the appropriate locklevel for all methods
131
assertEquals("myUpdateMethod does not have lockLevel write", Lock.LEVEL_WRITE, ((Integer JavaDoc) updateMethods.get("myUpdateMethod")).intValue());
132         assertEquals("myUpdateMethod2 does not have lockLevel write", Lock.LEVEL_WRITE, ((Integer JavaDoc) updateMethods.get("myUpdateMethod2")).intValue());
133         assertEquals("myUpdateMethod3 does not have lockLevel write", Lock.LEVEL_WRITE, ((Integer JavaDoc) updateMethods.get("myUpdateMethod3")).intValue());
134     }
135
136     public void testUpdateMethodDetectionInItf() throws ResolverException {
137         setupSimpleScenario();
138
139         StringWriter JavaDoc ifWr = new StringWriter JavaDoc();
140         PrintWriter JavaDoc ifPWr = new PrintWriter JavaDoc(ifWr);
141
142         // Setup a very simple interface source
143
ifPWr.println("import org.ozoneDB.*;");
144         ifPWr.println("public interface MyOzoneObject extends OzoneRemote {");
145         ifPWr.println(" public void myRegularMethod();");
146         ifPWr.println(" public void myUpdateMethod(); //update");
147         ifPWr.println(" public void myUpdateMethod2(); /*update*/");
148         ifPWr.println(" /**");
149         ifPWr.println(" * @update");
150         ifPWr.println(" */");
151         ifPWr.println(" public void myUpdateMethod3(); ");
152         ifPWr.println(" public void myRegularMethod2();");
153         ifPWr.println("}");
154         ifPWr.flush();
155
156         StringWriter JavaDoc obWr = new StringWriter JavaDoc();
157         PrintWriter JavaDoc obPWr = new PrintWriter JavaDoc(obWr);
158
159         // Setup the OzoneObjectSource with 3 update methods
160
obPWr.println("import org.ozoneDB.*;");
161         obPWr.println("public interface MyOzoneObject extends OzoneRemote {");
162         obPWr.println(" public void myRegularMethod() {");
163         obPWr.println(" }");
164         obPWr.println(" public void myUpdateMethod() {");
165         obPWr.println(" ");
166         obPWr.println(" }");
167         obPWr.println(" public void myUpdateMethod2() {");
168         obPWr.println(" }");
169         obPWr.println(" public void myUpdateMethod3() {");
170         obPWr.println(" }");
171         obPWr.println(" public void myRegularMethod2() {");
172         obPWr.println(" }");
173         obPWr.println("}");
174         obPWr.flush();
175
176         // Add sources to the MockInputStreamFactory
177
isFactory.setupNewInstanceReturnValue("MyOzoneObject", ifWr.toString());
178         isFactory.setupNewInstanceReturnValue("MyOzoneObjectImpl", obWr.toString());
179
180         Map JavaDoc updateMethods = new HashMap JavaDoc();
181         MethodResolver.UpdateMethodBag updateMethodBag = new UpdateMethodBagMapAdapter(updateMethods);
182
183         // create the resolver and do the resolve
184
MethodResolver resolver = new SourceUpdateMethodResolver(isFactory, messageWriter, classQuery);
185         resolver.resolveMethods("MyOzoneObjectImpl", updateMethodBag);
186
187         // Verify that all mockobjects has returned all expected data
188
Verifier.verifyObject(this);
189
190         // verify that the resolver has identified all updatemethods as such
191
assertTrue("Map does not contain myUpdateMethod", updateMethods.containsKey("myUpdateMethod"));
192         assertTrue("Map does not contain myUpdateMethod2", updateMethods.containsKey("myUpdateMethod2"));
193         assertTrue("Map does not contain myUpdateMethod3", updateMethods.containsKey("myUpdateMethod3"));
194
195         // verify that the resolver has identified the appropriate locklevel for all methods
196
assertEquals("myUpdateMethod does not have lockLevel write", Lock.LEVEL_WRITE, ((Integer JavaDoc) updateMethods.get("myUpdateMethod")).intValue());
197         assertEquals("myUpdateMethod2 does not have lockLevel write", Lock.LEVEL_WRITE, ((Integer JavaDoc) updateMethods.get("myUpdateMethod2")).intValue());
198         assertEquals("myUpdateMethod3 does not have lockLevel write", Lock.LEVEL_WRITE, ((Integer JavaDoc) updateMethods.get("myUpdateMethod3")).intValue());
199     }
200 }
201
Popular Tags