Added
Link Here
|
1 |
/******************************************************************************* |
2 |
* Copyright (c) 2013 Oracle. All rights reserved. |
3 |
* This program and the accompanying materials are made available under the |
4 |
* terms of the Eclipse Public License v1.0, which accompanies this distribution |
5 |
* and is available at http://www.eclipse.org/legal/epl-v10.html. |
6 |
* |
7 |
* Contributors: |
8 |
* Oracle - initial API and implementation |
9 |
******************************************************************************/ |
10 |
package org.eclipse.jpt.jpa.core.tests.internal.jpa2_1.context.java; |
11 |
|
12 |
import java.util.Iterator; |
13 |
import java.util.ListIterator; |
14 |
import org.eclipse.jdt.core.ICompilationUnit; |
15 |
import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement.AstNodeType; |
16 |
import org.eclipse.jpt.common.core.resource.java.JavaResourceType; |
17 |
import org.eclipse.jpt.common.utility.internal.iterator.IteratorTools; |
18 |
import org.eclipse.jpt.jpa.core.context.Entity; |
19 |
import org.eclipse.jpt.jpa.core.context.QueryHint; |
20 |
import org.eclipse.jpt.jpa.core.internal.jpa2_1.context.NamedStoredProcedureQuery2_1; |
21 |
import org.eclipse.jpt.jpa.core.internal.jpa2_1.context.StoredProcedureParameter2_1; |
22 |
import org.eclipse.jpt.jpa.core.jpa2_1.resource.java.JPA2_1; |
23 |
import org.eclipse.jpt.jpa.core.jpa2_1.resource.java.NamedStoredProcedureQuery2_1Annotation; |
24 |
import org.eclipse.jpt.jpa.core.resource.java.JPA; |
25 |
import org.eclipse.jpt.jpa.core.tests.internal.jpa2_1.context.Generic2_1ContextModelTestCase; |
26 |
|
27 |
public class GenericJavaNamedStoredProcedureQuery2_1Tests |
28 |
extends Generic2_1ContextModelTestCase |
29 |
{ |
30 |
public GenericJavaNamedStoredProcedureQuery2_1Tests(String name) { |
31 |
super(name); |
32 |
} |
33 |
|
34 |
|
35 |
private static final String QUERY_NAME = "QUERY_NAME"; |
36 |
private static final String PROCEDURE_NAME = "MY_PROCEDURE"; |
37 |
|
38 |
private ICompilationUnit createTestEntityWithNamedStoredProcedureQuery() throws Exception { |
39 |
return this.createTestType(new DefaultAnnotationWriter() { |
40 |
@Override |
41 |
public Iterator<String> imports() { |
42 |
return IteratorTools.iterator(JPA.ENTITY, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
43 |
} |
44 |
@Override |
45 |
public void appendTypeAnnotationTo(StringBuilder sb) { |
46 |
sb.append("@Entity").append(CR); |
47 |
sb.append("@NamedStoredProcedureQuery(name=\"" + QUERY_NAME + "\", procedureName=\"" + PROCEDURE_NAME + "\")"); |
48 |
} |
49 |
}); |
50 |
} |
51 |
|
52 |
|
53 |
// ********** name *********** |
54 |
|
55 |
public void testUpdateName() throws Exception { |
56 |
createTestEntityWithNamedStoredProcedureQuery(); |
57 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
58 |
|
59 |
Entity entity = getJavaEntity(); |
60 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
61 |
|
62 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
63 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
64 |
|
65 |
assertEquals(QUERY_NAME, procedureQueryAnnotation.getName()); |
66 |
assertEquals(QUERY_NAME, procedureQuery.getName()); |
67 |
|
68 |
//set name to null in the resource model |
69 |
procedureQueryAnnotation.setName(null); |
70 |
getJpaProject().synchronizeContextModel(); |
71 |
assertNull(procedureQueryAnnotation.getName()); |
72 |
assertNull(procedureQuery.getName()); |
73 |
|
74 |
//set name in the resource model, verify context model updated |
75 |
procedureQueryAnnotation.setName("foo"); |
76 |
getJpaProject().synchronizeContextModel(); |
77 |
assertEquals("foo", procedureQueryAnnotation.getName()); |
78 |
assertEquals("foo", procedureQuery.getName()); |
79 |
} |
80 |
|
81 |
public void testModifyName() throws Exception { |
82 |
createTestEntityWithNamedStoredProcedureQuery(); |
83 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
84 |
Entity entity = getJavaEntity(); |
85 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
86 |
|
87 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
88 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
89 |
|
90 |
assertEquals(QUERY_NAME, procedureQueryAnnotation.getName()); |
91 |
assertEquals(QUERY_NAME, procedureQuery.getName()); |
92 |
|
93 |
//set name to null in the context model |
94 |
procedureQuery.setName(null); |
95 |
assertNull(procedureQueryAnnotation.getName()); |
96 |
assertNull(procedureQuery.getName()); |
97 |
|
98 |
//set name in the context model, verify resource model updated |
99 |
procedureQuery.setName("foo"); |
100 |
assertEquals("foo", procedureQueryAnnotation.getName()); |
101 |
assertEquals("foo", procedureQuery.getName()); |
102 |
} |
103 |
|
104 |
// ********** procedure name *********** |
105 |
|
106 |
public void testUpdateProcedureName() throws Exception { |
107 |
createTestEntityWithNamedStoredProcedureQuery(); |
108 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
109 |
|
110 |
Entity entity = getJavaEntity(); |
111 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
112 |
|
113 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
114 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
115 |
|
116 |
assertEquals(PROCEDURE_NAME, procedureQueryAnnotation.getProcedureName()); |
117 |
assertEquals(PROCEDURE_NAME, procedureQuery.getProcedureName()); |
118 |
|
119 |
//set procedure name to null in the resource model |
120 |
procedureQueryAnnotation.setProcedureName(null); |
121 |
getJpaProject().synchronizeContextModel(); |
122 |
assertNull(procedureQueryAnnotation.getProcedureName()); |
123 |
assertNull(procedureQuery.getProcedureName()); |
124 |
|
125 |
//set procedure name in the resource model, verify context model updated |
126 |
procedureQueryAnnotation.setProcedureName("foo"); |
127 |
getJpaProject().synchronizeContextModel(); |
128 |
assertEquals("foo", procedureQueryAnnotation.getProcedureName()); |
129 |
assertEquals("foo", procedureQuery.getProcedureName()); |
130 |
} |
131 |
|
132 |
public void testModifyProcedureName() throws Exception { |
133 |
createTestEntityWithNamedStoredProcedureQuery(); |
134 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
135 |
Entity entity = getJavaEntity(); |
136 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
137 |
|
138 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
139 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
140 |
|
141 |
assertEquals(PROCEDURE_NAME, procedureQueryAnnotation.getProcedureName()); |
142 |
assertEquals(PROCEDURE_NAME, procedureQuery.getProcedureName()); |
143 |
|
144 |
//set procedure name to null in the context model |
145 |
procedureQuery.setProcedureName(null); |
146 |
assertNull(procedureQueryAnnotation.getProcedureName()); |
147 |
assertNull(procedureQuery.getProcedureName()); |
148 |
|
149 |
//set procedure name in the context model, verify resource model updated |
150 |
procedureQuery.setProcedureName("foo"); |
151 |
assertEquals("foo", procedureQueryAnnotation.getProcedureName()); |
152 |
assertEquals("foo", procedureQuery.getProcedureName()); |
153 |
} |
154 |
|
155 |
|
156 |
// ******** parameters ********** |
157 |
|
158 |
public void testAddParameter() throws Exception { |
159 |
createTestEntityWithNamedStoredProcedureQuery(); |
160 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
161 |
Entity entity = getJavaEntity(); |
162 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
163 |
|
164 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
165 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
166 |
|
167 |
StoredProcedureParameter2_1 parameter1 = procedureQuery.addParameter(0); |
168 |
parameter1.setName("FOO"); |
169 |
|
170 |
assertEquals("FOO", procedureQueryAnnotation.parameterAt(0).getName()); |
171 |
|
172 |
StoredProcedureParameter2_1 parameter2 = procedureQuery.addParameter(0); |
173 |
parameter2.setName("BAR"); |
174 |
|
175 |
assertEquals("BAR", procedureQueryAnnotation.parameterAt(0).getName()); |
176 |
assertEquals("FOO", procedureQueryAnnotation.parameterAt(1).getName()); |
177 |
|
178 |
StoredProcedureParameter2_1 parameter3 = procedureQuery.addParameter(1); |
179 |
parameter3.setName("BAZ"); |
180 |
|
181 |
assertEquals("BAR", procedureQueryAnnotation.parameterAt(0).getName()); |
182 |
assertEquals("BAZ", procedureQueryAnnotation.parameterAt(1).getName()); |
183 |
assertEquals("FOO", procedureQueryAnnotation.parameterAt(2).getName()); |
184 |
|
185 |
ListIterator<? extends StoredProcedureParameter2_1> parameters = procedureQuery.getParameters().iterator(); |
186 |
assertEquals(parameter2, parameters.next()); |
187 |
assertEquals(parameter3, parameters.next()); |
188 |
assertEquals(parameter1, parameters.next()); |
189 |
|
190 |
parameters = procedureQuery.getParameters().iterator(); |
191 |
assertEquals("BAR", parameters.next().getName()); |
192 |
assertEquals("BAZ", parameters.next().getName()); |
193 |
assertEquals("FOO", parameters.next().getName()); |
194 |
} |
195 |
|
196 |
public void testRemoveParameter() throws Exception { |
197 |
createTestEntityWithNamedStoredProcedureQuery(); |
198 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
199 |
Entity entity = getJavaEntity(); |
200 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
201 |
|
202 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
203 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
204 |
|
205 |
procedureQuery.addParameter(0).setName("FOO"); |
206 |
procedureQuery.addParameter(1).setName("BAR"); |
207 |
procedureQuery.addParameter(2).setName("BAZ"); |
208 |
|
209 |
assertEquals(3, procedureQueryAnnotation.getParametersSize()); |
210 |
|
211 |
procedureQuery.removeParameter(0); |
212 |
assertEquals(2, procedureQueryAnnotation.getParametersSize()); |
213 |
assertEquals("BAR", procedureQueryAnnotation.parameterAt(0).getName()); |
214 |
assertEquals("BAZ", procedureQueryAnnotation.parameterAt(1).getName()); |
215 |
|
216 |
procedureQuery.removeParameter(0); |
217 |
assertEquals(1, procedureQueryAnnotation.getParametersSize()); |
218 |
assertEquals("BAZ", procedureQueryAnnotation.parameterAt(0).getName()); |
219 |
|
220 |
procedureQuery.removeParameter(0); |
221 |
assertEquals(0, procedureQueryAnnotation.getParametersSize()); |
222 |
} |
223 |
|
224 |
public void testMoveParameter() throws Exception { |
225 |
createTestEntityWithNamedStoredProcedureQuery(); |
226 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
227 |
Entity entity = getJavaEntity(); |
228 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
229 |
|
230 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
231 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
232 |
|
233 |
procedureQuery.addParameter(0).setName("FOO"); |
234 |
procedureQuery.addParameter(1).setName("BAR"); |
235 |
procedureQuery.addParameter(2).setName("BAZ"); |
236 |
|
237 |
assertEquals(3, procedureQueryAnnotation.getParametersSize()); |
238 |
|
239 |
|
240 |
procedureQuery.moveParameter(2, 0); |
241 |
ListIterator<? extends StoredProcedureParameter2_1> parameters = procedureQuery.getParameters().iterator(); |
242 |
assertEquals("BAR", parameters.next().getName()); |
243 |
assertEquals("BAZ", parameters.next().getName()); |
244 |
assertEquals("FOO", parameters.next().getName()); |
245 |
|
246 |
assertEquals("BAR", procedureQueryAnnotation.parameterAt(0).getName()); |
247 |
assertEquals("BAZ", procedureQueryAnnotation.parameterAt(1).getName()); |
248 |
assertEquals("FOO", procedureQueryAnnotation.parameterAt(2).getName()); |
249 |
|
250 |
|
251 |
procedureQuery.moveParameter(0, 1); |
252 |
parameters = procedureQuery.getParameters().iterator(); |
253 |
assertEquals("BAZ", parameters.next().getName()); |
254 |
assertEquals("BAR", parameters.next().getName()); |
255 |
assertEquals("FOO", parameters.next().getName()); |
256 |
|
257 |
assertEquals("BAZ", procedureQueryAnnotation.parameterAt(0).getName()); |
258 |
assertEquals("BAR", procedureQueryAnnotation.parameterAt(1).getName()); |
259 |
assertEquals("FOO", procedureQueryAnnotation.parameterAt(2).getName()); |
260 |
} |
261 |
|
262 |
public void testUpdateParameters() throws Exception { |
263 |
createTestEntityWithNamedStoredProcedureQuery(); |
264 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
265 |
Entity entity = getJavaEntity(); |
266 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
267 |
|
268 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
269 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
270 |
|
271 |
procedureQueryAnnotation.addParameter(0).setName("FOO"); |
272 |
procedureQueryAnnotation.addParameter(1).setName("BAR"); |
273 |
procedureQueryAnnotation.addParameter(2).setName("BAZ"); |
274 |
getJpaProject().synchronizeContextModel(); |
275 |
|
276 |
ListIterator<? extends StoredProcedureParameter2_1> parameters = procedureQuery.getParameters().iterator(); |
277 |
assertEquals("FOO", parameters.next().getName()); |
278 |
assertEquals("BAR", parameters.next().getName()); |
279 |
assertEquals("BAZ", parameters.next().getName()); |
280 |
assertFalse(parameters.hasNext()); |
281 |
|
282 |
procedureQueryAnnotation.moveParameter(2, 0); |
283 |
getJpaProject().synchronizeContextModel(); |
284 |
parameters = procedureQuery.getParameters().iterator(); |
285 |
assertEquals("BAR", parameters.next().getName()); |
286 |
assertEquals("BAZ", parameters.next().getName()); |
287 |
assertEquals("FOO", parameters.next().getName()); |
288 |
assertFalse(parameters.hasNext()); |
289 |
|
290 |
procedureQueryAnnotation.moveParameter(0, 1); |
291 |
getJpaProject().synchronizeContextModel(); |
292 |
parameters = procedureQuery.getParameters().iterator(); |
293 |
assertEquals("BAZ", parameters.next().getName()); |
294 |
assertEquals("BAR", parameters.next().getName()); |
295 |
assertEquals("FOO", parameters.next().getName()); |
296 |
assertFalse(parameters.hasNext()); |
297 |
|
298 |
procedureQueryAnnotation.removeParameter(1); |
299 |
getJpaProject().synchronizeContextModel(); |
300 |
parameters = procedureQuery.getParameters().iterator(); |
301 |
assertEquals("BAZ", parameters.next().getName()); |
302 |
assertEquals("FOO", parameters.next().getName()); |
303 |
assertFalse(parameters.hasNext()); |
304 |
|
305 |
procedureQueryAnnotation.removeParameter(1); |
306 |
getJpaProject().synchronizeContextModel(); |
307 |
parameters = procedureQuery.getParameters().iterator(); |
308 |
assertEquals("BAZ", parameters.next().getName()); |
309 |
assertFalse(parameters.hasNext()); |
310 |
|
311 |
procedureQueryAnnotation.removeParameter(0); |
312 |
getJpaProject().synchronizeContextModel(); |
313 |
assertFalse(procedureQuery.getParameters().iterator().hasNext()); |
314 |
} |
315 |
|
316 |
public void testParametersSize() throws Exception { |
317 |
createTestEntityWithNamedStoredProcedureQuery(); |
318 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
319 |
Entity entity = getJavaEntity(); |
320 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
321 |
assertEquals(0, procedureQuery.getParametersSize()); |
322 |
|
323 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
324 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
325 |
|
326 |
procedureQueryAnnotation.addParameter(0); |
327 |
getJpaProject().synchronizeContextModel(); |
328 |
assertEquals(1, procedureQuery.getParametersSize()); |
329 |
|
330 |
procedureQueryAnnotation.addParameter(0); |
331 |
getJpaProject().synchronizeContextModel(); |
332 |
assertEquals(2, procedureQuery.getParametersSize()); |
333 |
|
334 |
procedureQueryAnnotation.removeParameter(0); |
335 |
procedureQueryAnnotation.removeParameter(0); |
336 |
getJpaProject().synchronizeContextModel(); |
337 |
assertEquals(0, procedureQuery.getParametersSize()); |
338 |
} |
339 |
|
340 |
// ********** result classes ********** |
341 |
|
342 |
public void testAddResultClass() throws Exception { |
343 |
createTestEntityWithNamedStoredProcedureQuery(); |
344 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
345 |
Entity entity = getJavaEntity(); |
346 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
347 |
|
348 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
349 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
350 |
|
351 |
procedureQuery.addResultClass("Employee"); |
352 |
assertEquals("Employee", procedureQueryAnnotation.resultClassAt(0)); |
353 |
|
354 |
procedureQuery.addResultClass("Address"); |
355 |
assertEquals("Employee", procedureQueryAnnotation.resultClassAt(0)); |
356 |
assertEquals("Address", procedureQueryAnnotation.resultClassAt(1)); |
357 |
|
358 |
procedureQuery.addResultClass(1, "Project"); |
359 |
assertEquals("Employee", procedureQueryAnnotation.resultClassAt(0)); |
360 |
assertEquals("Project", procedureQueryAnnotation.resultClassAt(1)); |
361 |
assertEquals("Address", procedureQueryAnnotation.resultClassAt(2)); |
362 |
|
363 |
ListIterator<String> resultClasses = procedureQuery.getResultClasses().iterator(); |
364 |
assertEquals("Employee", resultClasses.next()); |
365 |
assertEquals("Project", resultClasses.next()); |
366 |
assertEquals("Address", resultClasses.next()); |
367 |
} |
368 |
|
369 |
public void testRemoveResultClass() throws Exception { |
370 |
createTestEntityWithNamedStoredProcedureQuery(); |
371 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
372 |
Entity entity = getJavaEntity(); |
373 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
374 |
|
375 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
376 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
377 |
|
378 |
procedureQuery.addResultClass("Employee"); |
379 |
procedureQuery.addResultClass("Address"); |
380 |
procedureQuery.addResultClass("Project"); |
381 |
|
382 |
assertEquals(3, procedureQueryAnnotation.getResultClassesSize()); |
383 |
|
384 |
procedureQuery.removeResultClass(0); |
385 |
assertEquals(2, procedureQueryAnnotation.getResultClassesSize()); |
386 |
assertEquals("Address", procedureQueryAnnotation.resultClassAt(0)); |
387 |
assertEquals("Project", procedureQueryAnnotation.resultClassAt(1)); |
388 |
|
389 |
procedureQuery.removeResultClass("Project"); |
390 |
assertEquals(1, procedureQueryAnnotation.getResultClassesSize()); |
391 |
assertEquals("Address", procedureQueryAnnotation.resultClassAt(0)); |
392 |
|
393 |
procedureQuery.removeResultClass(0); |
394 |
assertEquals(0, procedureQueryAnnotation.getResultClassesSize()); |
395 |
} |
396 |
|
397 |
public void testMoveResultClass() throws Exception { |
398 |
createTestEntityWithNamedStoredProcedureQuery(); |
399 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
400 |
Entity entity = getJavaEntity(); |
401 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
402 |
|
403 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
404 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
405 |
|
406 |
procedureQuery.addResultClass("Employee"); |
407 |
procedureQuery.addResultClass("Address"); |
408 |
procedureQuery.addResultClass("Project"); |
409 |
|
410 |
assertEquals(3, procedureQueryAnnotation.getResultClassesSize()); |
411 |
|
412 |
procedureQuery.moveResultClass(2, 0); |
413 |
ListIterator<String> resultClasses = procedureQuery.getResultClasses().iterator(); |
414 |
assertEquals("Address", resultClasses.next()); |
415 |
assertEquals("Project", resultClasses.next()); |
416 |
assertEquals("Employee", resultClasses.next()); |
417 |
|
418 |
assertEquals("Address", procedureQueryAnnotation.resultClassAt(0)); |
419 |
assertEquals("Project", procedureQueryAnnotation.resultClassAt(1)); |
420 |
assertEquals("Employee", procedureQueryAnnotation.resultClassAt(2)); |
421 |
|
422 |
procedureQuery.moveResultClass(0, 1); |
423 |
resultClasses = procedureQuery.getResultClasses().iterator(); |
424 |
assertEquals("Project", resultClasses.next()); |
425 |
assertEquals("Address", resultClasses.next()); |
426 |
assertEquals("Employee", resultClasses.next()); |
427 |
|
428 |
assertEquals("Project", procedureQueryAnnotation.resultClassAt(0)); |
429 |
assertEquals("Address", procedureQueryAnnotation.resultClassAt(1)); |
430 |
assertEquals("Employee", procedureQueryAnnotation.resultClassAt(2)); |
431 |
} |
432 |
|
433 |
public void testUpdateResultClass() throws Exception { |
434 |
createTestEntityWithNamedStoredProcedureQuery(); |
435 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
436 |
Entity entity = getJavaEntity(); |
437 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
438 |
|
439 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
440 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
441 |
|
442 |
procedureQuery.addResultClass("Employee"); |
443 |
procedureQuery.addResultClass("Address"); |
444 |
procedureQuery.addResultClass("Project"); |
445 |
getJpaProject().synchronizeContextModel(); |
446 |
|
447 |
ListIterator<String> resultClasses = procedureQuery.getResultClasses().iterator(); |
448 |
assertEquals("Employee", resultClasses.next()); |
449 |
assertEquals("Address", resultClasses.next()); |
450 |
assertEquals("Project", resultClasses.next()); |
451 |
assertFalse(resultClasses.hasNext()); |
452 |
|
453 |
procedureQueryAnnotation.moveResultClass(2, 0); |
454 |
getJpaProject().synchronizeContextModel(); |
455 |
resultClasses = procedureQuery.getResultClasses().iterator(); |
456 |
assertEquals("Address", resultClasses.next()); |
457 |
assertEquals("Project", resultClasses.next()); |
458 |
assertEquals("Employee", resultClasses.next()); |
459 |
assertFalse(resultClasses.hasNext()); |
460 |
|
461 |
procedureQueryAnnotation.moveResultClass(0, 1); |
462 |
getJpaProject().synchronizeContextModel(); |
463 |
resultClasses = procedureQuery.getResultClasses().iterator(); |
464 |
assertEquals("Project", resultClasses.next()); |
465 |
assertEquals("Address", resultClasses.next()); |
466 |
assertEquals("Employee", resultClasses.next()); |
467 |
assertFalse(resultClasses.hasNext()); |
468 |
|
469 |
procedureQueryAnnotation.removeResultClass(1); |
470 |
getJpaProject().synchronizeContextModel(); |
471 |
resultClasses = procedureQuery.getResultClasses().iterator(); |
472 |
assertEquals("Project", resultClasses.next()); |
473 |
assertEquals("Employee", resultClasses.next()); |
474 |
assertFalse(resultClasses.hasNext()); |
475 |
|
476 |
procedureQueryAnnotation.removeResultClass(1); |
477 |
getJpaProject().synchronizeContextModel(); |
478 |
resultClasses = procedureQuery.getResultClasses().iterator(); |
479 |
assertEquals("Project", resultClasses.next()); |
480 |
assertFalse(resultClasses.hasNext()); |
481 |
|
482 |
procedureQueryAnnotation.removeResultClass(0); |
483 |
getJpaProject().synchronizeContextModel(); |
484 |
assertFalse(procedureQuery.getResultClasses().iterator().hasNext()); |
485 |
} |
486 |
|
487 |
public void testResultClassesSize() throws Exception { |
488 |
createTestEntityWithNamedStoredProcedureQuery(); |
489 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
490 |
Entity entity = getJavaEntity(); |
491 |
|
492 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
493 |
assertEquals(0, procedureQuery.getResultClassesSize()); |
494 |
|
495 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
496 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
497 |
|
498 |
procedureQueryAnnotation.addResultClass("Employee"); |
499 |
getJpaProject().synchronizeContextModel(); |
500 |
assertEquals(1, procedureQuery.getResultClassesSize()); |
501 |
|
502 |
procedureQueryAnnotation.addResultClass(0, "Address"); |
503 |
getJpaProject().synchronizeContextModel(); |
504 |
assertEquals(2, procedureQuery.getResultClassesSize()); |
505 |
|
506 |
procedureQueryAnnotation.removeResultClass(0); |
507 |
procedureQueryAnnotation.removeResultClass(0); |
508 |
getJpaProject().synchronizeContextModel(); |
509 |
assertEquals(0, procedureQuery.getResultClassesSize()); |
510 |
} |
511 |
|
512 |
// ********** result set mappings ********** |
513 |
|
514 |
public void testAddResultSetMapping() throws Exception { |
515 |
createTestEntityWithNamedStoredProcedureQuery(); |
516 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
517 |
Entity entity = getJavaEntity(); |
518 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
519 |
|
520 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
521 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
522 |
|
523 |
procedureQuery.addResultSetMapping("Employee"); |
524 |
assertEquals("Employee", procedureQueryAnnotation.resultSetMappingAt(0)); |
525 |
|
526 |
procedureQuery.addResultSetMapping("Address"); |
527 |
assertEquals("Employee", procedureQueryAnnotation.resultSetMappingAt(0)); |
528 |
assertEquals("Address", procedureQueryAnnotation.resultSetMappingAt(1)); |
529 |
|
530 |
procedureQuery.addResultSetMapping(1, "Project"); |
531 |
assertEquals("Employee", procedureQueryAnnotation.resultSetMappingAt(0)); |
532 |
assertEquals("Project", procedureQueryAnnotation.resultSetMappingAt(1)); |
533 |
assertEquals("Address", procedureQueryAnnotation.resultSetMappingAt(2)); |
534 |
|
535 |
ListIterator<String> resultSetMapping = procedureQuery.getResultSetMappings().iterator(); |
536 |
assertEquals("Employee", resultSetMapping.next()); |
537 |
assertEquals("Project", resultSetMapping.next()); |
538 |
assertEquals("Address", resultSetMapping.next()); |
539 |
} |
540 |
|
541 |
public void testRemoveResultSetMapping() throws Exception { |
542 |
createTestEntityWithNamedStoredProcedureQuery(); |
543 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
544 |
Entity entity = getJavaEntity(); |
545 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
546 |
|
547 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
548 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
549 |
|
550 |
procedureQuery.addResultSetMapping("Employee"); |
551 |
procedureQuery.addResultSetMapping("Address"); |
552 |
procedureQuery.addResultSetMapping("Project"); |
553 |
|
554 |
assertEquals(3, procedureQueryAnnotation.getResultSetMappingsSize()); |
555 |
|
556 |
procedureQuery.removeResultSetMapping(0); |
557 |
assertEquals(2, procedureQueryAnnotation.getResultSetMappingsSize()); |
558 |
assertEquals("Address", procedureQueryAnnotation.resultSetMappingAt(0)); |
559 |
assertEquals("Project", procedureQueryAnnotation.resultSetMappingAt(1)); |
560 |
|
561 |
procedureQuery.removeResultSetMapping("Project"); |
562 |
assertEquals(1, procedureQueryAnnotation.getResultSetMappingsSize()); |
563 |
assertEquals("Address", procedureQueryAnnotation.resultSetMappingAt(0)); |
564 |
|
565 |
procedureQuery.removeResultSetMapping(0); |
566 |
assertEquals(0, procedureQueryAnnotation.getResultSetMappingsSize()); |
567 |
} |
568 |
|
569 |
public void testMoveResultSetMapping() throws Exception { |
570 |
createTestEntityWithNamedStoredProcedureQuery(); |
571 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
572 |
Entity entity = getJavaEntity(); |
573 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
574 |
|
575 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
576 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
577 |
|
578 |
procedureQuery.addResultSetMapping("Employee"); |
579 |
procedureQuery.addResultSetMapping("Address"); |
580 |
procedureQuery.addResultSetMapping("Project"); |
581 |
|
582 |
assertEquals(3, procedureQueryAnnotation.getResultSetMappingsSize()); |
583 |
|
584 |
procedureQuery.moveResultSetMapping(2, 0); |
585 |
ListIterator<String> resultSetMapping = procedureQuery.getResultSetMappings().iterator(); |
586 |
assertEquals("Address", resultSetMapping.next()); |
587 |
assertEquals("Project", resultSetMapping.next()); |
588 |
assertEquals("Employee", resultSetMapping.next()); |
589 |
|
590 |
assertEquals("Address", procedureQueryAnnotation.resultSetMappingAt(0)); |
591 |
assertEquals("Project", procedureQueryAnnotation.resultSetMappingAt(1)); |
592 |
assertEquals("Employee", procedureQueryAnnotation.resultSetMappingAt(2)); |
593 |
|
594 |
procedureQuery.moveResultSetMapping(0, 1); |
595 |
resultSetMapping = procedureQuery.getResultSetMappings().iterator(); |
596 |
assertEquals("Project", resultSetMapping.next()); |
597 |
assertEquals("Address", resultSetMapping.next()); |
598 |
assertEquals("Employee", resultSetMapping.next()); |
599 |
|
600 |
assertEquals("Project", procedureQueryAnnotation.resultSetMappingAt(0)); |
601 |
assertEquals("Address", procedureQueryAnnotation.resultSetMappingAt(1)); |
602 |
assertEquals("Employee", procedureQueryAnnotation.resultSetMappingAt(2)); |
603 |
} |
604 |
|
605 |
public void testUpdateResultSetMapping() throws Exception { |
606 |
createTestEntityWithNamedStoredProcedureQuery(); |
607 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
608 |
Entity entity = getJavaEntity(); |
609 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
610 |
|
611 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
612 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
613 |
|
614 |
procedureQuery.addResultSetMapping("Employee"); |
615 |
procedureQuery.addResultSetMapping("Address"); |
616 |
procedureQuery.addResultSetMapping("Project"); |
617 |
getJpaProject().synchronizeContextModel(); |
618 |
|
619 |
ListIterator<String> resultSetMapping = procedureQuery.getResultSetMappings().iterator(); |
620 |
assertEquals("Employee", resultSetMapping.next()); |
621 |
assertEquals("Address", resultSetMapping.next()); |
622 |
assertEquals("Project", resultSetMapping.next()); |
623 |
assertFalse(resultSetMapping.hasNext()); |
624 |
|
625 |
procedureQueryAnnotation.moveResultSetMapping(2, 0); |
626 |
getJpaProject().synchronizeContextModel(); |
627 |
resultSetMapping = procedureQuery.getResultSetMappings().iterator(); |
628 |
assertEquals("Address", resultSetMapping.next()); |
629 |
assertEquals("Project", resultSetMapping.next()); |
630 |
assertEquals("Employee", resultSetMapping.next()); |
631 |
assertFalse(resultSetMapping.hasNext()); |
632 |
|
633 |
procedureQueryAnnotation.moveResultSetMapping(0, 1); |
634 |
getJpaProject().synchronizeContextModel(); |
635 |
resultSetMapping = procedureQuery.getResultSetMappings().iterator(); |
636 |
assertEquals("Project", resultSetMapping.next()); |
637 |
assertEquals("Address", resultSetMapping.next()); |
638 |
assertEquals("Employee", resultSetMapping.next()); |
639 |
assertFalse(resultSetMapping.hasNext()); |
640 |
|
641 |
procedureQueryAnnotation.removeResultSetMapping(1); |
642 |
getJpaProject().synchronizeContextModel(); |
643 |
resultSetMapping = procedureQuery.getResultSetMappings().iterator(); |
644 |
assertEquals("Project", resultSetMapping.next()); |
645 |
assertEquals("Employee", resultSetMapping.next()); |
646 |
assertFalse(resultSetMapping.hasNext()); |
647 |
|
648 |
procedureQueryAnnotation.removeResultSetMapping(1); |
649 |
getJpaProject().synchronizeContextModel(); |
650 |
resultSetMapping = procedureQuery.getResultSetMappings().iterator(); |
651 |
assertEquals("Project", resultSetMapping.next()); |
652 |
assertFalse(resultSetMapping.hasNext()); |
653 |
|
654 |
procedureQueryAnnotation.removeResultSetMapping(0); |
655 |
getJpaProject().synchronizeContextModel(); |
656 |
assertFalse(procedureQuery.getResultSetMappings().iterator().hasNext()); |
657 |
} |
658 |
|
659 |
public void testResultSetMappingsSize() throws Exception { |
660 |
createTestEntityWithNamedStoredProcedureQuery(); |
661 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
662 |
Entity entity = getJavaEntity(); |
663 |
|
664 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
665 |
assertEquals(0, procedureQuery.getResultSetMappingsSize()); |
666 |
|
667 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
668 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
669 |
|
670 |
procedureQueryAnnotation.addResultSetMapping("Employee"); |
671 |
getJpaProject().synchronizeContextModel(); |
672 |
assertEquals(1, procedureQuery.getResultSetMappingsSize()); |
673 |
|
674 |
procedureQueryAnnotation.addResultSetMapping(0, "Address"); |
675 |
getJpaProject().synchronizeContextModel(); |
676 |
assertEquals(2, procedureQuery.getResultSetMappingsSize()); |
677 |
|
678 |
procedureQueryAnnotation.removeResultSetMapping(0); |
679 |
procedureQueryAnnotation.removeResultSetMapping(0); |
680 |
getJpaProject().synchronizeContextModel(); |
681 |
assertEquals(0, procedureQuery.getResultSetMappingsSize()); |
682 |
} |
683 |
|
684 |
// ************ hints ************ |
685 |
|
686 |
public void testAddHint() throws Exception { |
687 |
createTestEntityWithNamedStoredProcedureQuery(); |
688 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
689 |
Entity entity = getJavaEntity(); |
690 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
691 |
|
692 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
693 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
694 |
|
695 |
QueryHint queryHint = procedureQuery.addHint(0); |
696 |
queryHint.setName("FOO"); |
697 |
|
698 |
assertEquals("FOO", procedureQueryAnnotation.hintAt(0).getName()); |
699 |
|
700 |
QueryHint queryHint2 = procedureQuery.addHint(0); |
701 |
queryHint2.setName("BAR"); |
702 |
|
703 |
assertEquals("BAR", procedureQueryAnnotation.hintAt(0).getName()); |
704 |
assertEquals("FOO", procedureQueryAnnotation.hintAt(1).getName()); |
705 |
|
706 |
QueryHint queryHint3 = procedureQuery.addHint(1); |
707 |
queryHint3.setName("BAZ"); |
708 |
|
709 |
assertEquals("BAR", procedureQueryAnnotation.hintAt(0).getName()); |
710 |
assertEquals("BAZ", procedureQueryAnnotation.hintAt(1).getName()); |
711 |
assertEquals("FOO", procedureQueryAnnotation.hintAt(2).getName()); |
712 |
|
713 |
ListIterator<? extends QueryHint> hints = procedureQuery.getHints().iterator(); |
714 |
assertEquals(queryHint2, hints.next()); |
715 |
assertEquals(queryHint3, hints.next()); |
716 |
assertEquals(queryHint, hints.next()); |
717 |
|
718 |
hints = procedureQuery.getHints().iterator(); |
719 |
assertEquals("BAR", hints.next().getName()); |
720 |
assertEquals("BAZ", hints.next().getName()); |
721 |
assertEquals("FOO", hints.next().getName()); |
722 |
} |
723 |
|
724 |
public void testRemoveHint() throws Exception { |
725 |
createTestEntityWithNamedStoredProcedureQuery(); |
726 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
727 |
Entity entity = getJavaEntity(); |
728 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
729 |
|
730 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
731 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
732 |
|
733 |
procedureQuery.addHint(0).setName("FOO"); |
734 |
procedureQuery.addHint(1).setName("BAR"); |
735 |
procedureQuery.addHint(2).setName("BAZ"); |
736 |
|
737 |
assertEquals(3, procedureQueryAnnotation.getHintsSize()); |
738 |
|
739 |
procedureQuery.removeHint(0); |
740 |
assertEquals(2, procedureQueryAnnotation.getHintsSize()); |
741 |
assertEquals("BAR", procedureQueryAnnotation.hintAt(0).getName()); |
742 |
assertEquals("BAZ", procedureQueryAnnotation.hintAt(1).getName()); |
743 |
|
744 |
procedureQuery.removeHint(0); |
745 |
assertEquals(1, procedureQueryAnnotation.getHintsSize()); |
746 |
assertEquals("BAZ", procedureQueryAnnotation.hintAt(0).getName()); |
747 |
|
748 |
procedureQuery.removeHint(0); |
749 |
assertEquals(0, procedureQueryAnnotation.getHintsSize()); |
750 |
} |
751 |
|
752 |
public void testMoveHint() throws Exception { |
753 |
createTestEntityWithNamedStoredProcedureQuery(); |
754 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
755 |
Entity entity = getJavaEntity(); |
756 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
757 |
|
758 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
759 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
760 |
|
761 |
procedureQuery.addHint(0).setName("FOO"); |
762 |
procedureQuery.addHint(1).setName("BAR"); |
763 |
procedureQuery.addHint(2).setName("BAZ"); |
764 |
|
765 |
assertEquals(3, procedureQueryAnnotation.getHintsSize()); |
766 |
|
767 |
procedureQuery.moveHint(2, 0); |
768 |
ListIterator<? extends QueryHint> hints = procedureQuery.getHints().iterator(); |
769 |
assertEquals("BAR", hints.next().getName()); |
770 |
assertEquals("BAZ", hints.next().getName()); |
771 |
assertEquals("FOO", hints.next().getName()); |
772 |
|
773 |
assertEquals("BAR", procedureQueryAnnotation.hintAt(0).getName()); |
774 |
assertEquals("BAZ", procedureQueryAnnotation.hintAt(1).getName()); |
775 |
assertEquals("FOO", procedureQueryAnnotation.hintAt(2).getName()); |
776 |
|
777 |
|
778 |
procedureQuery.moveHint(0, 1); |
779 |
hints = procedureQuery.getHints().iterator(); |
780 |
assertEquals("BAZ", hints.next().getName()); |
781 |
assertEquals("BAR", hints.next().getName()); |
782 |
assertEquals("FOO", hints.next().getName()); |
783 |
|
784 |
assertEquals("BAZ", procedureQueryAnnotation.hintAt(0).getName()); |
785 |
assertEquals("BAR", procedureQueryAnnotation.hintAt(1).getName()); |
786 |
assertEquals("FOO", procedureQueryAnnotation.hintAt(2).getName()); |
787 |
} |
788 |
|
789 |
public void testUpdateHints() throws Exception { |
790 |
createTestEntityWithNamedStoredProcedureQuery(); |
791 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
792 |
Entity entity = getJavaEntity(); |
793 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
794 |
|
795 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
796 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
797 |
|
798 |
procedureQueryAnnotation.addHint(0).setName("FOO"); |
799 |
procedureQueryAnnotation.addHint(1).setName("BAR"); |
800 |
procedureQueryAnnotation.addHint(2).setName("BAZ"); |
801 |
getJpaProject().synchronizeContextModel(); |
802 |
|
803 |
ListIterator<? extends QueryHint> hints = procedureQuery.getHints().iterator(); |
804 |
assertEquals("FOO", hints.next().getName()); |
805 |
assertEquals("BAR", hints.next().getName()); |
806 |
assertEquals("BAZ", hints.next().getName()); |
807 |
assertFalse(hints.hasNext()); |
808 |
|
809 |
procedureQueryAnnotation.moveHint(2, 0); |
810 |
getJpaProject().synchronizeContextModel(); |
811 |
hints = procedureQuery.getHints().iterator(); |
812 |
assertEquals("BAR", hints.next().getName()); |
813 |
assertEquals("BAZ", hints.next().getName()); |
814 |
assertEquals("FOO", hints.next().getName()); |
815 |
assertFalse(hints.hasNext()); |
816 |
|
817 |
procedureQueryAnnotation.moveHint(0, 1); |
818 |
getJpaProject().synchronizeContextModel(); |
819 |
hints = procedureQuery.getHints().iterator(); |
820 |
assertEquals("BAZ", hints.next().getName()); |
821 |
assertEquals("BAR", hints.next().getName()); |
822 |
assertEquals("FOO", hints.next().getName()); |
823 |
assertFalse(hints.hasNext()); |
824 |
|
825 |
procedureQueryAnnotation.removeHint(1); |
826 |
getJpaProject().synchronizeContextModel(); |
827 |
hints = procedureQuery.getHints().iterator(); |
828 |
assertEquals("BAZ", hints.next().getName()); |
829 |
assertEquals("FOO", hints.next().getName()); |
830 |
assertFalse(hints.hasNext()); |
831 |
|
832 |
procedureQueryAnnotation.removeHint(1); |
833 |
getJpaProject().synchronizeContextModel(); |
834 |
hints = procedureQuery.getHints().iterator(); |
835 |
assertEquals("BAZ", hints.next().getName()); |
836 |
assertFalse(hints.hasNext()); |
837 |
|
838 |
procedureQueryAnnotation.removeHint(0); |
839 |
getJpaProject().synchronizeContextModel(); |
840 |
assertFalse(procedureQuery.getHints().iterator().hasNext()); |
841 |
} |
842 |
|
843 |
public void testHintsSize() throws Exception { |
844 |
createTestEntityWithNamedStoredProcedureQuery(); |
845 |
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); |
846 |
Entity entity = getJavaEntity(); |
847 |
NamedStoredProcedureQuery2_1 procedureQuery = entity.getQueryContainer().getNamedStoredProcedureQueries().iterator().next(); |
848 |
assertEquals(0, procedureQuery.getHintsSize()); |
849 |
|
850 |
JavaResourceType resourceType = (JavaResourceType) getJpaProject().getJavaResourceType(FULLY_QUALIFIED_TYPE_NAME, AstNodeType.TYPE); |
851 |
NamedStoredProcedureQuery2_1Annotation procedureQueryAnnotation = ((NamedStoredProcedureQuery2_1Annotation) resourceType.getAnnotation(0, NamedStoredProcedureQuery2_1Annotation.ANNOTATION_NAME)); |
852 |
|
853 |
procedureQueryAnnotation.addHint(0); |
854 |
getJpaProject().synchronizeContextModel(); |
855 |
assertEquals(1, procedureQuery.getHintsSize()); |
856 |
|
857 |
procedureQueryAnnotation.addHint(0); |
858 |
getJpaProject().synchronizeContextModel(); |
859 |
assertEquals(2, procedureQuery.getHintsSize()); |
860 |
|
861 |
procedureQueryAnnotation.removeHint(0); |
862 |
procedureQueryAnnotation.removeHint(0); |
863 |
getJpaProject().synchronizeContextModel(); |
864 |
assertEquals(0, procedureQuery.getHintsSize()); |
865 |
} |
866 |
|
867 |
} |