1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.student.contract.model.impl;
17
18 import java.io.File;
19 import java.io.FileNotFoundException;
20 import java.io.PrintStream;
21 import java.util.ArrayList;
22 import java.util.Collection;
23 import java.util.List;
24 import java.util.Set;
25 import java.util.Stack;
26 import org.junit.After;
27 import org.junit.AfterClass;
28 import org.junit.Before;
29 import org.junit.BeforeClass;
30 import org.junit.Test;
31 import static org.junit.Assert.*;
32
33 import org.kuali.student.contract.model.MessageStructure;
34 import org.kuali.student.contract.model.Service;
35 import org.kuali.student.contract.model.ServiceContractModel;
36 import org.kuali.student.contract.model.ServiceMethod;
37 import org.kuali.student.contract.model.ServiceMethodParameter;
38 import org.kuali.student.contract.model.XmlType;
39 import org.kuali.student.contract.model.util.HtmlContractServiceWriter;
40 import org.kuali.student.contract.model.util.MessageStructureHierarchyDumper;
41 import org.kuali.student.contract.model.util.ModelFinder;
42 import org.kuali.student.contract.model.validation.ServiceContractModelValidator;
43
44
45
46
47
48 public class ServiceContractModelQDoxLoaderTest {
49
50 public ServiceContractModelQDoxLoaderTest() {
51 }
52
53 @BeforeClass
54 public static void setUpClass() throws Exception {
55 }
56
57 @AfterClass
58 public static void tearDownClass() throws Exception {
59 }
60
61 @Before
62 public void setUp() {
63 }
64
65 @After
66 public void tearDown() {
67 }
68
69 private static final String RESOURCES_DIRECTORY = "src/test/resources";
70 private static final String TEST_SOURCE_DIRECTORY =
71 "src/test/java/org/kuali/student/contract/model/test/source";
72 private static final String ENROLL_PROJECT_SRC_MAIN = "C:/svn/ks-1.3/ks-enroll/ks-enroll-api/src/main";
73 private static final String ENROLL_PROJECT_JAVA_DIRECTORY = ENROLL_PROJECT_SRC_MAIN + "/java";
74 private static final String RICE_CORE_API_DIRECTORY = "C:/svn/rice/trunk/core/api/src/main/java";
75 private static final String RICE_KIM_API_DIRECTORY = "C:/svn/rice/trunk/kim/kim-api/src/main/java";
76 private static final String RICE_LOCATION_API_DIRECTORY = "C:/svn/rice/trunk/location/api/src/main/java";
77 private static final String RICE_KEW_API_DIRECTORY = "C:/svn/rice/trunk/kew/api/src/main/java";
78 private static final String RICE_KEN_API_DIRECTORY = "C:/svn/rice/trunk/ken/api/src/main/java";
79 private static final String RICE_KSB_API_DIRECTORY = "C:/svn/rice/trunk/ksb/api/src/main/java";
80 private static final String RICE_KRMS_API_DIRECTORY = "C:/svn/rice/trunk/krms/api/src/main/java";
81 private static ServiceContractModel model = null;
82 private ServiceContractModel getModel() {
83 if (model != null) {
84 return model;
85 }
86 List<String> srcDirs = new ArrayList();
87 System.out.println("User directory=" + System.getProperty("user.dir"));
88 System.out.println("Current directory=" + new File(".").getAbsolutePath());
89
90
91 srcDirs.add(RICE_CORE_API_DIRECTORY);
92 srcDirs.add(RICE_KIM_API_DIRECTORY);
93 srcDirs.add(RICE_LOCATION_API_DIRECTORY);
94 srcDirs.add(RICE_KEW_API_DIRECTORY);
95 srcDirs.add(RICE_KEN_API_DIRECTORY);
96 srcDirs.add(RICE_KSB_API_DIRECTORY);
97 srcDirs.add(RICE_KRMS_API_DIRECTORY);
98 boolean validateKualiStudent = false;
99 ServiceContractModel instance = new ServiceContractModelQDoxLoader(srcDirs, validateKualiStudent);
100
101 instance = new ServiceContractModelCache(instance);
102 validate(instance);
103 model = instance;
104 return instance;
105 }
106
107 private String dump(ServiceMethod method) {
108 StringBuilder bldr = new StringBuilder();
109 bldr.append(method.getName());
110 String comma = "";
111 bldr.append("(");
112 for (ServiceMethodParameter param : method.getParameters()) {
113 bldr.append(comma);
114 comma = ", ";
115 bldr.append(param.getType());
116 bldr.append(" ");
117 bldr.append(param.getName());
118 }
119 bldr.append(")");
120 return bldr.toString();
121 }
122
123 private void validate(ServiceContractModel model) {
124 Collection<String> errors =
125 new ServiceContractModelValidator(model).validate();
126 if (errors.size() > 0) {
127 StringBuilder buf = new StringBuilder();
128 buf.append(errors.size()).append(" errors found while validating the data.");
129 int cnt = 0;
130 for (String msg : errors) {
131 cnt++;
132 buf.append("\n");
133 buf.append("*error*").append(cnt).append(":").append(msg);
134 }
135
136 fail(buf.toString());
137 }
138 }
139
140
141
142
143 @Test
144 public void testGetServiceMethods() {
145 System.out.println("getServiceMethods");
146 ServiceContractModel model = getModel();
147 List<ServiceMethod> result = model.getServiceMethods();
148 System.out.println("Number of methods=" + result.size());
149 for (ServiceMethod method : result) {
150 System.out.println(dump(method));
151 }
152 if (result.size() < 10) {
153 fail("too few: " + result.size());
154 }
155 }
156
157
158
159
160
161 public void testGetSourceNames() {
162 System.out.println("getSourceNames");
163 ServiceContractModel model = getModel();
164 List<String> expResult = new ArrayList();
165 expResult.add(TEST_SOURCE_DIRECTORY);
166 List result = model.getSourceNames();
167 assertEquals(expResult, result);
168 }
169
170
171
172
173
174 public void testGetServices() {
175 System.out.println("getServices");
176 ServiceContractModel model = getModel();
177 List<Service> result = model.getServices();
178 for (Service service : result) {
179 System.out.println(service.getKey() + " " + service.getName() + " "
180 + service.getVersion() + " " + service.getStatus());
181 }
182 assertEquals(4, result.size());
183 }
184
185
186
187
188
189 public void testGetXmlTypes() {
190 System.out.println("getXmlTypes");
191 ServiceContractModel model = getModel();
192 List<XmlType> result = model.getXmlTypes();
193 for (XmlType xmlType : result) {
194 System.out.println("XmlType=" + xmlType.getName() + " "
195 + xmlType.getPrimitive());
196 }
197 if (result.size() < 10) {
198 fail("too few: " + result.size());
199 }
200 }
201
202
203
204
205
206 public void testGetMessageStructures() throws FileNotFoundException {
207 System.out.println("getMessageStructures");
208 ServiceContractModel model = getModel();
209 List<MessageStructure> result = model.getMessageStructures();
210 for (MessageStructure ms : result) {
211 if (ms.getId().equalsIgnoreCase("academicCalendarInfo.typeKey")) {
212 System.out.println("MessageStructure=" + ms.getId() + " " + ms.getType() + "required=["+ ms.getRequired() + "]");
213 }
214 }
215 if (result.size() < 10) {
216 fail("too few: " + result.size());
217 }
218 String outputFileName = "target/messageStructures.txt";
219 File file = new File(outputFileName);
220 PrintStream out = new PrintStream(file);
221 new MessageStructureHierarchyDumper(out, model).writeTabbedHeader();
222 Set<XmlType> rootTypes = HtmlContractServiceWriter.calcMainMessageStructures(
223 model, null);
224 ModelFinder finder = new ModelFinder(model);
225 for (XmlType rootType : rootTypes) {
226 Stack<String> stack = new Stack();
227 stack.push(rootType.getName());
228 for (MessageStructure ms : finder.findMessageStructures(rootType.getName())) {
229 new MessageStructureHierarchyDumper(out, model).writeTabbedData(ms, stack);
230 }
231 }
232 }
233 }