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.resource.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.JavaResourceType; |
16 |
import org.eclipse.jpt.common.utility.internal.iterator.ArrayIterator; |
17 |
import org.eclipse.jpt.jpa.core.jpa2_1.resource.java.JPA2_1; |
18 |
import org.eclipse.jpt.jpa.core.jpa2_1.resource.java.NamedStoredProcedureQuery2_1Annoation; |
19 |
import org.eclipse.jpt.jpa.core.jpa2_1.resource.java.StoredProcedureParameter2_1Annotation; |
20 |
import org.eclipse.jpt.jpa.core.resource.java.JPA; |
21 |
import org.eclipse.jpt.jpa.core.resource.java.QueryHintAnnotation; |
22 |
|
23 |
public class NamedStoredProcedureQuery2_1AnnoationTests |
24 |
extends JavaResourceModel2_1TestCase |
25 |
{ |
26 |
|
27 |
private static final String QUERY_NAME = "myQuery"; |
28 |
private static final String PROCEDURE_NAME = "myProcedure"; |
29 |
|
30 |
public NamedStoredProcedureQuery2_1AnnoationTests(String name) { |
31 |
super(name); |
32 |
} |
33 |
|
34 |
private ICompilationUnit createTestNamedStoredProcedureQuery() throws Exception { |
35 |
return this.createTestType(new DefaultAnnotationWriter() { |
36 |
@Override |
37 |
public Iterator<String> imports() { |
38 |
return new ArrayIterator<String>(JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
39 |
} |
40 |
@Override |
41 |
public void appendTypeAnnotationTo(StringBuilder sb) { |
42 |
sb.append("@NamedStoredProcedureQuery"); |
43 |
} |
44 |
}); |
45 |
} |
46 |
|
47 |
private ICompilationUnit createTestNamedStoredProcedureQueryWithName() throws Exception { |
48 |
return createTestNamedStoredProcedureQueryWithStringElement("name", QUERY_NAME); |
49 |
} |
50 |
|
51 |
private ICompilationUnit createTestNamedNativeQueryWithProcedureName() throws Exception { |
52 |
return createTestNamedStoredProcedureQueryWithStringElement("procedureName", PROCEDURE_NAME); |
53 |
} |
54 |
|
55 |
|
56 |
private ICompilationUnit createTestNamedStoredProcedureQueryWithStringElement(final String elementName, final String value) throws Exception { |
57 |
return this.createTestType(new DefaultAnnotationWriter() { |
58 |
@Override |
59 |
public Iterator<String> imports() { |
60 |
return new ArrayIterator<String>(JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
61 |
} |
62 |
@Override |
63 |
public void appendTypeAnnotationTo(StringBuilder sb) { |
64 |
sb.append("@NamedStoredProcedureQuery(" + elementName + " = \"" + value + "\")"); |
65 |
} |
66 |
}); |
67 |
} |
68 |
|
69 |
private ICompilationUnit createTestNamedStoredProcedureQueryWithParameters() throws Exception { |
70 |
return this.createTestType(new DefaultAnnotationWriter() { |
71 |
@Override |
72 |
public Iterator<String> imports() { |
73 |
return new ArrayIterator<String>(JPA2_1.NAMED_STORED_PROCEDURE_QUERY, JPA2_1.NAMED_STORED_PROCEDURE_PARAMETER, JPA2_1.PARAMETER_MODE); |
74 |
} |
75 |
@Override |
76 |
public void appendTypeAnnotationTo(StringBuilder sb) { |
77 |
sb.append("@NamedStoredProcedureQuery(parameters = {@StoredProcedureParameter(name = \"BAR\", " + |
78 |
"mode=ParameterMode.IN, type=Integer.class), @StoredProcedureParameter})"); |
79 |
} |
80 |
}); |
81 |
} |
82 |
|
83 |
private ICompilationUnit createTestNamedStoredProcedureQueryWithResultClasses() throws Exception { |
84 |
return this.createTestType(new DefaultAnnotationWriter() { |
85 |
@Override |
86 |
public Iterator<String> imports() { |
87 |
return new ArrayIterator<String>(JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
88 |
} |
89 |
@Override |
90 |
public void appendTypeAnnotationTo(StringBuilder sb) { |
91 |
sb.append("@NamedStoredProcedureQuery(resultClasses = { Employee.class, Address.class })"); |
92 |
} |
93 |
}); |
94 |
} |
95 |
|
96 |
private ICompilationUnit createTestNamedStoredProcedureQueryWithResultSetMappings() throws Exception { |
97 |
return this.createTestType(new DefaultAnnotationWriter() { |
98 |
@Override |
99 |
public Iterator<String> imports() { |
100 |
return new ArrayIterator<String>(JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
101 |
} |
102 |
@Override |
103 |
public void appendTypeAnnotationTo(StringBuilder sb) { |
104 |
sb.append("@NamedStoredProcedureQuery(resultSetMappings = { \"EmpRSMapping\", \"AddrRSMapping\" })"); |
105 |
} |
106 |
}); |
107 |
} |
108 |
|
109 |
private ICompilationUnit createTestNamedStoredProcedureQueryWithHints() throws Exception { |
110 |
return this.createTestType(new DefaultAnnotationWriter() { |
111 |
@Override |
112 |
public Iterator<String> imports() { |
113 |
return new ArrayIterator<String>(JPA2_1.NAMED_STORED_PROCEDURE_QUERY, JPA.QUERY_HINT); |
114 |
} |
115 |
@Override |
116 |
public void appendTypeAnnotationTo(StringBuilder sb) { |
117 |
sb.append("@NamedStoredProcedureQuery(hints = {@QueryHint(name = \"BAR\", value = \"FOO\"), @QueryHint})"); |
118 |
} |
119 |
}); |
120 |
} |
121 |
|
122 |
public void testNamedStoredProcedureQuery() throws Exception { |
123 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQuery(); |
124 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
125 |
|
126 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
127 |
assertNotNull(namedQuery); |
128 |
} |
129 |
|
130 |
// ************ name *********** |
131 |
|
132 |
public void testGetName() throws Exception { |
133 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQueryWithName(); |
134 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
135 |
|
136 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
137 |
assertEquals(QUERY_NAME, namedQuery.getName()); |
138 |
} |
139 |
|
140 |
public void testSetName() throws Exception { |
141 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQueryWithName(); |
142 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
143 |
|
144 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
145 |
assertEquals(QUERY_NAME, namedQuery.getName()); |
146 |
|
147 |
namedQuery.setName("foo"); |
148 |
assertEquals("foo", namedQuery.getName()); |
149 |
|
150 |
assertSourceContains("@NamedStoredProcedureQuery(name = \"foo\")", cu); |
151 |
|
152 |
namedQuery.setName(null); |
153 |
assertNull(namedQuery.getName()); |
154 |
|
155 |
assertSourceDoesNotContain("@NamedStoredProcedureQuery(", cu); |
156 |
} |
157 |
|
158 |
// ************ procedure name *************** |
159 |
|
160 |
public void testGetProcedureName() throws Exception { |
161 |
ICompilationUnit cu = this.createTestNamedNativeQueryWithProcedureName(); |
162 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
163 |
|
164 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
165 |
assertEquals(PROCEDURE_NAME, namedQuery.getProcedureName()); |
166 |
} |
167 |
|
168 |
public void testSetProcedureName() throws Exception { |
169 |
ICompilationUnit cu = this.createTestNamedNativeQueryWithProcedureName(); |
170 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
171 |
|
172 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
173 |
assertEquals(PROCEDURE_NAME, namedQuery.getProcedureName()); |
174 |
|
175 |
namedQuery.setProcedureName("foo"); |
176 |
assertEquals("foo", namedQuery.getProcedureName()); |
177 |
|
178 |
assertSourceContains("@NamedStoredProcedureQuery(procedureName = \"foo\")", cu); |
179 |
|
180 |
namedQuery.setProcedureName(null); |
181 |
assertNull(namedQuery.getProcedureName()); |
182 |
|
183 |
assertSourceDoesNotContain("@NamedStoredProcedureQuery(", cu); |
184 |
} |
185 |
|
186 |
// ************ parameters ********* |
187 |
|
188 |
public void testParameters1() throws Exception { |
189 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQuery(); |
190 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
191 |
|
192 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
193 |
|
194 |
assertEquals(0, namedQuery.getParametersSize()); |
195 |
} |
196 |
|
197 |
public void testParameters2() throws Exception { |
198 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQuery(); |
199 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
200 |
|
201 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
202 |
|
203 |
namedQuery.addParameter(0); |
204 |
namedQuery.addParameter(1); |
205 |
|
206 |
assertEquals(2, namedQuery.getParametersSize()); |
207 |
} |
208 |
|
209 |
public void testParameters3() throws Exception { |
210 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQueryWithParameters(); |
211 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
212 |
|
213 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
214 |
|
215 |
assertEquals(2, namedQuery.getParametersSize()); |
216 |
|
217 |
ListIterator<StoredProcedureParameter2_1Annotation> iterator = namedQuery.getParameters().iterator(); |
218 |
assertEquals("BAR", iterator.next().getName()); |
219 |
assertNull(iterator.next().getName()); |
220 |
} |
221 |
|
222 |
public void testAddParameter() throws Exception { |
223 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQuery(); |
224 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
225 |
|
226 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
227 |
|
228 |
namedQuery.addParameter(0).setName("FOO"); |
229 |
namedQuery.addParameter(1); |
230 |
namedQuery.addParameter(0).setName("BAR"); |
231 |
|
232 |
assertEquals("BAR", namedQuery.parameterAt(0).getName()); |
233 |
assertEquals("FOO", namedQuery.parameterAt(1).getName()); |
234 |
assertNull(namedQuery.parameterAt(2).getName()); |
235 |
assertSourceContains("@NamedStoredProcedureQuery(parameters = {@StoredProcedureParameter(name = \"BAR\")," + |
236 |
"@StoredProcedureParameter(name = \"FOO\"), @StoredProcedureParameter})", cu); |
237 |
} |
238 |
|
239 |
public void testRemoveParameter() throws Exception { |
240 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQueryWithParameters(); |
241 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
242 |
|
243 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
244 |
|
245 |
namedQuery.addParameter(0).setName("BAZ"); |
246 |
|
247 |
assertEquals("BAZ", namedQuery.parameterAt(0).getName()); |
248 |
assertEquals("BAR", namedQuery.parameterAt(1).getName()); |
249 |
assertNull(namedQuery.parameterAt(2).getName()); |
250 |
assertEquals(3, namedQuery.getParametersSize()); |
251 |
|
252 |
namedQuery.removeParameter(2); |
253 |
assertEquals("BAZ", namedQuery.parameterAt(0).getName()); |
254 |
assertEquals("BAR", namedQuery.parameterAt(1).getName()); |
255 |
assertEquals(2, namedQuery.getParametersSize()); |
256 |
assertSourceContains("@NamedStoredProcedureQuery(parameters = {@StoredProcedureParameter(name = \"BAZ\"), " + |
257 |
"@StoredProcedureParameter(name = \"BAR\", mode=ParameterMode.IN, type=Integer.class)})", cu); |
258 |
|
259 |
namedQuery.removeParameter(0); |
260 |
assertEquals("BAR", namedQuery.parameterAt(0).getName()); |
261 |
assertEquals(1, namedQuery.getParametersSize()); |
262 |
assertSourceContains("@NamedStoredProcedureQuery(parameters = " + |
263 |
"@StoredProcedureParameter(name = \"BAR\", mode=ParameterMode.IN, type=Integer.class))", cu); |
264 |
|
265 |
namedQuery.removeParameter(0); |
266 |
assertEquals(0, namedQuery.getParametersSize()); |
267 |
assertSourceDoesNotContain("@NamedStoredProcedureQuery(", cu); |
268 |
} |
269 |
|
270 |
public void testMoveParameter1() throws Exception { |
271 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQueryWithParameters(); |
272 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
273 |
|
274 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
275 |
|
276 |
namedQuery.addParameter(0).setName("BAZ"); |
277 |
|
278 |
assertEquals("BAZ", namedQuery.parameterAt(0).getName()); |
279 |
assertEquals("BAR", namedQuery.parameterAt(1).getName()); |
280 |
assertNull(namedQuery.parameterAt(2).getName()); |
281 |
assertEquals(3, namedQuery.getParametersSize()); |
282 |
|
283 |
namedQuery.moveParameter(2, 0); |
284 |
|
285 |
assertEquals("BAR", namedQuery.parameterAt(0).getName()); |
286 |
assertNull(namedQuery.parameterAt(1).getName()); |
287 |
assertEquals("BAZ", namedQuery.parameterAt(2).getName()); |
288 |
assertEquals(3, namedQuery.getParametersSize()); |
289 |
assertSourceContains("@NamedStoredProcedureQuery(parameters = {@StoredProcedureParameter(name = \"BAR\", mode=ParameterMode.IN, type=Integer.class), " + |
290 |
"@StoredProcedureParameter, @StoredProcedureParameter(name = \"BAZ\")})", cu); |
291 |
} |
292 |
|
293 |
public void testMoveParameter2() throws Exception { |
294 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQueryWithParameters(); |
295 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
296 |
|
297 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
298 |
namedQuery.addParameter(0).setName("BAZ"); |
299 |
|
300 |
assertEquals("BAZ", namedQuery.parameterAt(0).getName()); |
301 |
assertEquals("BAR", namedQuery.parameterAt(1).getName()); |
302 |
assertNull(namedQuery.parameterAt(2).getName()); |
303 |
assertEquals(3, namedQuery.getParametersSize()); |
304 |
|
305 |
namedQuery.moveParameter(0, 2); |
306 |
|
307 |
assertNull(namedQuery.parameterAt(0).getName()); |
308 |
assertEquals("BAZ", namedQuery.parameterAt(1).getName()); |
309 |
assertEquals("BAR", namedQuery.parameterAt(2).getName()); |
310 |
assertEquals(3, namedQuery.getParametersSize()); |
311 |
assertSourceContains("@NamedStoredProcedureQuery(parameters = {@StoredProcedureParameter, @StoredProcedureParameter(name = \"BAZ\"), " + |
312 |
"@StoredProcedureParameter(name = \"BAR\", mode=ParameterMode.IN, type=Integer.class)})", cu); |
313 |
} |
314 |
|
315 |
// ************ result classes ********* |
316 |
|
317 |
public void testResultClasses1() throws Exception { |
318 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQuery(); |
319 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
320 |
|
321 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
322 |
|
323 |
assertEquals(0, namedQuery.getResultClassesSize()); |
324 |
} |
325 |
|
326 |
public void testResultClasses2() throws Exception { |
327 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQueryWithResultClasses(); |
328 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
329 |
|
330 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
331 |
|
332 |
assertEquals(2, namedQuery.getResultClassesSize()); |
333 |
|
334 |
ListIterator<String> iterator = namedQuery.getResultClasses().iterator(); |
335 |
assertEquals("Employee", iterator.next()); |
336 |
assertEquals("Address", iterator.next()); |
337 |
} |
338 |
|
339 |
public void testAddResultClass() throws Exception { |
340 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQuery(); |
341 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
342 |
|
343 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
344 |
|
345 |
namedQuery.addResultClass("Project"); |
346 |
namedQuery.addResultClass("Phone"); |
347 |
|
348 |
assertEquals(2, namedQuery.getResultClassesSize()); |
349 |
|
350 |
assertEquals("Project", namedQuery.resultClassAt(0)); |
351 |
assertEquals("Phone", namedQuery.resultClassAt(1)); |
352 |
assertSourceContains("@NamedStoredProcedureQuery(resultClasses = { Project.class, Phone.class })", cu); |
353 |
} |
354 |
|
355 |
public void testRemoveResultClass1() throws Exception { |
356 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQueryWithResultClasses(); |
357 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
358 |
|
359 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
360 |
|
361 |
namedQuery.addResultClass("Project"); |
362 |
|
363 |
assertEquals("Employee", namedQuery.resultClassAt(0)); |
364 |
assertEquals("Address", namedQuery.resultClassAt(1)); |
365 |
assertEquals("Project", namedQuery.resultClassAt(2)); |
366 |
assertEquals(3, namedQuery.getResultClassesSize()); |
367 |
|
368 |
namedQuery.removeResultClass(1); |
369 |
assertEquals("Employee", namedQuery.resultClassAt(0)); |
370 |
assertEquals("Project", namedQuery.resultClassAt(1)); |
371 |
assertEquals(2, namedQuery.getResultClassesSize()); |
372 |
assertSourceContains("@NamedStoredProcedureQuery(resultClasses = { Employee.class, Project.class })", cu); |
373 |
|
374 |
namedQuery.removeResultClass(0); |
375 |
assertEquals("Project", namedQuery.resultClassAt(0)); |
376 |
assertEquals(1, namedQuery.getResultClassesSize()); |
377 |
assertSourceContains("@NamedStoredProcedureQuery(resultClasses = Project.class)", cu); |
378 |
|
379 |
namedQuery.removeResultClass(0); |
380 |
assertEquals(0, namedQuery.getResultClassesSize()); |
381 |
assertSourceDoesNotContain("@NamedStoredProcedureQuery(", cu); |
382 |
} |
383 |
|
384 |
public void testRemoveResultClass2() throws Exception { |
385 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQueryWithResultClasses(); |
386 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
387 |
|
388 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
389 |
|
390 |
namedQuery.addResultClass("Project"); |
391 |
|
392 |
assertEquals("Employee", namedQuery.resultClassAt(0)); |
393 |
assertEquals("Address", namedQuery.resultClassAt(1)); |
394 |
assertEquals("Project", namedQuery.resultClassAt(2)); |
395 |
assertEquals(3, namedQuery.getResultClassesSize()); |
396 |
|
397 |
namedQuery.removeResultClass("Address"); |
398 |
assertEquals("Employee", namedQuery.resultClassAt(0)); |
399 |
assertEquals("Project", namedQuery.resultClassAt(1)); |
400 |
assertEquals(2, namedQuery.getResultClassesSize()); |
401 |
assertSourceContains("@NamedStoredProcedureQuery(resultClasses = { Employee.class, Project.class })", cu); |
402 |
|
403 |
namedQuery.removeResultClass("Employee"); |
404 |
assertEquals("Project", namedQuery.resultClassAt(0)); |
405 |
assertEquals(1, namedQuery.getResultClassesSize()); |
406 |
assertSourceContains("@NamedStoredProcedureQuery(resultClasses = Project.class)", cu); |
407 |
|
408 |
namedQuery.removeResultClass("Project"); |
409 |
assertEquals(0, namedQuery.getResultClassesSize()); |
410 |
assertSourceDoesNotContain("@NamedStoredProcedureQuery(", cu); |
411 |
} |
412 |
|
413 |
public void testMoveResultClass1() throws Exception { |
414 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQueryWithResultClasses(); |
415 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
416 |
|
417 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
418 |
|
419 |
namedQuery.addResultClass("Project"); |
420 |
|
421 |
assertEquals("Employee", namedQuery.resultClassAt(0)); |
422 |
assertEquals("Address", namedQuery.resultClassAt(1)); |
423 |
assertEquals("Project", namedQuery.resultClassAt(2)); |
424 |
assertEquals(3, namedQuery.getResultClassesSize()); |
425 |
|
426 |
namedQuery.moveResultClass(2, 0); |
427 |
|
428 |
assertEquals("Address", namedQuery.resultClassAt(0)); |
429 |
assertEquals("Project", namedQuery.resultClassAt(1)); |
430 |
assertEquals("Employee", namedQuery.resultClassAt(2)); |
431 |
assertEquals(3, namedQuery.getResultClassesSize()); |
432 |
assertSourceContains("@NamedStoredProcedureQuery(resultClasses = { Address.class, Project.class, Employee.class })", cu); |
433 |
} |
434 |
|
435 |
public void testMoveResultClass2() throws Exception { |
436 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQueryWithResultClasses(); |
437 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
438 |
|
439 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
440 |
namedQuery.addResultClass("Project"); |
441 |
|
442 |
assertEquals("Employee", namedQuery.resultClassAt(0)); |
443 |
assertEquals("Address", namedQuery.resultClassAt(1)); |
444 |
assertEquals("Project", namedQuery.resultClassAt(2)); |
445 |
assertEquals(3, namedQuery.getResultClassesSize()); |
446 |
|
447 |
namedQuery.moveResultClass(0, 2); |
448 |
|
449 |
assertEquals("Project", namedQuery.resultClassAt(0)); |
450 |
assertEquals("Employee", namedQuery.resultClassAt(1)); |
451 |
assertEquals("Address", namedQuery.resultClassAt(2)); |
452 |
assertEquals(3, namedQuery.getResultClassesSize()); |
453 |
assertSourceContains("@NamedStoredProcedureQuery(resultClasses = { Project.class, Employee.class, Address.class })", cu); |
454 |
} |
455 |
|
456 |
|
457 |
// ************ result set mappings ********* |
458 |
|
459 |
public void testResultSetMappings1() throws Exception { |
460 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQuery(); |
461 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
462 |
|
463 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
464 |
|
465 |
assertEquals(0, namedQuery.getResultSetMappingsSize()); |
466 |
} |
467 |
|
468 |
public void testResultSetMappings2() throws Exception { |
469 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQueryWithResultSetMappings(); |
470 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
471 |
|
472 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
473 |
|
474 |
assertEquals(2, namedQuery.getResultSetMappingsSize()); |
475 |
|
476 |
ListIterator<String> iterator = namedQuery.getResultSetMappings().iterator(); |
477 |
assertEquals("EmpRSMapping", iterator.next()); |
478 |
assertEquals("AddrRSMapping", iterator.next()); |
479 |
assertSourceContains("@NamedStoredProcedureQuery(resultSetMappings = { \"EmpRSMapping\", \"AddrRSMapping\" })", cu); |
480 |
} |
481 |
|
482 |
public void testAddResultSetMapping() throws Exception { |
483 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQuery(); |
484 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
485 |
|
486 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
487 |
|
488 |
namedQuery.addResultSetMapping("ProjRSMapping"); |
489 |
namedQuery.addResultSetMapping("PhRSMapping"); |
490 |
|
491 |
assertEquals(2, namedQuery.getResultSetMappingsSize()); |
492 |
|
493 |
assertEquals("ProjRSMapping", namedQuery.resultSetMappingAt(0)); |
494 |
assertEquals("PhRSMapping", namedQuery.resultSetMappingAt(1)); |
495 |
assertSourceContains("@NamedStoredProcedureQuery(resultSetMappings = { \"ProjRSMapping\", \"PhRSMapping\" })", cu); |
496 |
} |
497 |
|
498 |
public void testRemoveResultSetMapping1() throws Exception { |
499 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQueryWithResultSetMappings(); |
500 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
501 |
|
502 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
503 |
|
504 |
namedQuery.addResultSetMapping("ProjRSMapping"); |
505 |
|
506 |
assertEquals("EmpRSMapping", namedQuery.resultSetMappingAt(0)); |
507 |
assertEquals("AddrRSMapping", namedQuery.resultSetMappingAt(1)); |
508 |
assertEquals("ProjRSMapping", namedQuery.resultSetMappingAt(2)); |
509 |
assertEquals(3, namedQuery.getResultSetMappingsSize()); |
510 |
|
511 |
namedQuery.removeResultSetMapping(1); |
512 |
assertEquals("EmpRSMapping", namedQuery.resultSetMappingAt(0)); |
513 |
assertEquals("ProjRSMapping", namedQuery.resultSetMappingAt(1)); |
514 |
assertEquals(2, namedQuery.getResultSetMappingsSize()); |
515 |
assertSourceContains("@NamedStoredProcedureQuery(resultSetMappings = { \"EmpRSMapping\", \"ProjRSMapping\" })", cu); |
516 |
|
517 |
namedQuery.removeResultSetMapping(0); |
518 |
assertEquals("ProjRSMapping", namedQuery.resultSetMappingAt(0)); |
519 |
assertEquals(1, namedQuery.getResultSetMappingsSize()); |
520 |
assertSourceContains("@NamedStoredProcedureQuery(resultSetMappings = \"ProjRSMapping\")", cu); |
521 |
|
522 |
namedQuery.removeResultSetMapping(0); |
523 |
assertEquals(0, namedQuery.getResultSetMappingsSize()); |
524 |
assertSourceDoesNotContain("@NamedStoredProcedureQuery(", cu); |
525 |
} |
526 |
|
527 |
public void testRemoveResultSetMapping2() throws Exception { |
528 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQueryWithResultSetMappings(); |
529 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
530 |
|
531 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
532 |
|
533 |
namedQuery.addResultSetMapping("ProjRSMapping"); |
534 |
|
535 |
assertEquals("EmpRSMapping", namedQuery.resultSetMappingAt(0)); |
536 |
assertEquals("AddrRSMapping", namedQuery.resultSetMappingAt(1)); |
537 |
assertEquals("ProjRSMapping", namedQuery.resultSetMappingAt(2)); |
538 |
assertEquals(3, namedQuery.getResultSetMappingsSize()); |
539 |
|
540 |
namedQuery.removeResultSetMapping("AddrRSMapping"); |
541 |
assertEquals("EmpRSMapping", namedQuery.resultSetMappingAt(0)); |
542 |
assertEquals("ProjRSMapping", namedQuery.resultSetMappingAt(1)); |
543 |
assertEquals(2, namedQuery.getResultSetMappingsSize()); |
544 |
assertSourceContains("@NamedStoredProcedureQuery(resultSetMappings = { \"EmpRSMapping\", \"ProjRSMapping\" })", cu); |
545 |
|
546 |
namedQuery.removeResultSetMapping("EmpRSMapping"); |
547 |
assertEquals("ProjRSMapping", namedQuery.resultSetMappingAt(0)); |
548 |
assertEquals(1, namedQuery.getResultSetMappingsSize()); |
549 |
assertSourceContains("@NamedStoredProcedureQuery(resultSetMappings = \"ProjRSMapping\")", cu); |
550 |
|
551 |
namedQuery.removeResultSetMapping("ProjRSMapping"); |
552 |
assertEquals(0, namedQuery.getResultSetMappingsSize()); |
553 |
assertSourceDoesNotContain("@NamedStoredProcedureQuery(", cu); |
554 |
} |
555 |
public void testMoveResultSetMapping1() throws Exception { |
556 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQueryWithResultSetMappings(); |
557 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
558 |
|
559 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
560 |
|
561 |
namedQuery.addResultSetMapping("ProjRSMapping"); |
562 |
|
563 |
assertEquals("EmpRSMapping", namedQuery.resultSetMappingAt(0)); |
564 |
assertEquals("AddrRSMapping", namedQuery.resultSetMappingAt(1)); |
565 |
assertEquals("ProjRSMapping", namedQuery.resultSetMappingAt(2)); |
566 |
assertEquals(3, namedQuery.getResultSetMappingsSize()); |
567 |
|
568 |
namedQuery.moveResultSetMapping(2, 0); |
569 |
|
570 |
assertEquals("AddrRSMapping", namedQuery.resultSetMappingAt(0)); |
571 |
assertEquals("ProjRSMapping", namedQuery.resultSetMappingAt(1)); |
572 |
assertEquals("EmpRSMapping", namedQuery.resultSetMappingAt(2)); |
573 |
assertEquals(3, namedQuery.getResultSetMappingsSize()); |
574 |
assertSourceContains("@NamedStoredProcedureQuery(resultSetMappings = { \"AddrRSMapping\", \"ProjRSMapping\", \"EmpRSMapping\" })", cu); |
575 |
} |
576 |
|
577 |
public void testMoveResultSetMapping2() throws Exception { |
578 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQueryWithResultSetMappings(); |
579 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
580 |
|
581 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
582 |
namedQuery.addResultSetMapping("ProjRSMapping"); |
583 |
|
584 |
assertEquals("EmpRSMapping", namedQuery.resultSetMappingAt(0)); |
585 |
assertEquals("AddrRSMapping", namedQuery.resultSetMappingAt(1)); |
586 |
assertEquals("ProjRSMapping", namedQuery.resultSetMappingAt(2)); |
587 |
assertEquals(3, namedQuery.getResultSetMappingsSize()); |
588 |
|
589 |
namedQuery.moveResultSetMapping(0, 2); |
590 |
|
591 |
assertEquals("ProjRSMapping", namedQuery.resultSetMappingAt(0)); |
592 |
assertEquals("EmpRSMapping", namedQuery.resultSetMappingAt(1)); |
593 |
assertEquals("AddrRSMapping", namedQuery.resultSetMappingAt(2)); |
594 |
assertEquals(3, namedQuery.getResultSetMappingsSize()); |
595 |
assertSourceContains("@NamedStoredProcedureQuery(resultSetMappings = { \"ProjRSMapping\", \"EmpRSMapping\", \"AddrRSMapping\" })", cu); |
596 |
} |
597 |
|
598 |
// *********** hints ************ |
599 |
|
600 |
public void testHints1() throws Exception { |
601 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQuery(); |
602 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
603 |
|
604 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
605 |
|
606 |
assertEquals(0, namedQuery.getHintsSize()); |
607 |
} |
608 |
|
609 |
public void testHints2() throws Exception { |
610 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQuery(); |
611 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
612 |
|
613 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
614 |
|
615 |
namedQuery.addHint(0); |
616 |
namedQuery.addHint(1); |
617 |
|
618 |
assertEquals(2, namedQuery.getHintsSize()); |
619 |
} |
620 |
|
621 |
public void testHints3() throws Exception { |
622 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQueryWithHints(); |
623 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
624 |
|
625 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
626 |
|
627 |
assertEquals(2, namedQuery.getHintsSize()); |
628 |
|
629 |
ListIterator<QueryHintAnnotation> iterator = namedQuery.getHints().iterator(); |
630 |
assertEquals("BAR", iterator.next().getName()); |
631 |
assertNull(iterator.next().getName()); |
632 |
} |
633 |
|
634 |
public void testAddHint() throws Exception { |
635 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQuery(); |
636 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
637 |
|
638 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
639 |
|
640 |
namedQuery.addHint(0).setName("FOO"); |
641 |
namedQuery.addHint(1); |
642 |
namedQuery.addHint(0).setName("BAR"); |
643 |
|
644 |
assertEquals("BAR", namedQuery.hintAt(0).getName()); |
645 |
assertEquals("FOO", namedQuery.hintAt(1).getName()); |
646 |
assertNull(namedQuery.hintAt(2).getName()); |
647 |
assertSourceContains("@NamedStoredProcedureQuery(hints = {@QueryHint(name = \"BAR\"),@QueryHint(name = \"FOO\"), @QueryHint})", cu); |
648 |
} |
649 |
|
650 |
public void testRemoveHint() throws Exception { |
651 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQueryWithHints(); |
652 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
653 |
|
654 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
655 |
namedQuery.addHint(0).setName("BAZ"); |
656 |
|
657 |
assertEquals("BAZ", namedQuery.hintAt(0).getName()); |
658 |
assertEquals("BAR", namedQuery.hintAt(1).getName()); |
659 |
assertNull(namedQuery.hintAt(2).getName()); |
660 |
assertEquals(3, namedQuery.getHintsSize()); |
661 |
|
662 |
namedQuery.removeHint(2); |
663 |
assertEquals("BAZ", namedQuery.hintAt(0).getName()); |
664 |
assertEquals("BAR", namedQuery.hintAt(1).getName()); |
665 |
assertEquals(2, namedQuery.getHintsSize()); |
666 |
assertSourceContains("@NamedStoredProcedureQuery(hints = {@QueryHint(name = \"BAZ\"), @QueryHint(name = \"BAR\", value = \"FOO\")})", cu); |
667 |
|
668 |
namedQuery.removeHint(0); |
669 |
assertEquals("BAR", namedQuery.hintAt(0).getName()); |
670 |
assertEquals(1, namedQuery.getHintsSize()); |
671 |
assertSourceContains("@NamedStoredProcedureQuery(hints = @QueryHint(name = \"BAR\", value = \"FOO\"))", cu); |
672 |
|
673 |
|
674 |
namedQuery.removeHint(0); |
675 |
assertEquals(0, namedQuery.getHintsSize()); |
676 |
assertSourceDoesNotContain("@NamedStoredProcedureQuery(", cu); |
677 |
} |
678 |
|
679 |
public void testMoveHint1() throws Exception { |
680 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQueryWithHints(); |
681 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
682 |
|
683 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
684 |
|
685 |
namedQuery.addHint(0).setName("BAZ"); |
686 |
|
687 |
assertEquals("BAZ", namedQuery.hintAt(0).getName()); |
688 |
assertEquals("BAR", namedQuery.hintAt(1).getName()); |
689 |
assertNull(namedQuery.hintAt(2).getName()); |
690 |
assertEquals(3, namedQuery.getHintsSize()); |
691 |
|
692 |
namedQuery.moveHint(2, 0); |
693 |
|
694 |
assertEquals("BAR", namedQuery.hintAt(0).getName()); |
695 |
assertNull(namedQuery.hintAt(1).getName()); |
696 |
assertEquals("BAZ", namedQuery.hintAt(2).getName()); |
697 |
assertEquals(3, namedQuery.getHintsSize()); |
698 |
assertSourceContains("@NamedStoredProcedureQuery(hints = {@QueryHint(name = \"BAR\", value = \"FOO\"), @QueryHint, @QueryHint(name = \"BAZ\")})", cu); |
699 |
} |
700 |
|
701 |
public void testMoveHint2() throws Exception { |
702 |
ICompilationUnit cu = this.createTestNamedStoredProcedureQueryWithHints(); |
703 |
JavaResourceType resourceType = buildJavaResourceType(cu); |
704 |
|
705 |
NamedStoredProcedureQuery2_1Annoation namedQuery = (NamedStoredProcedureQuery2_1Annoation) resourceType.getAnnotation(0, JPA2_1.NAMED_STORED_PROCEDURE_QUERY); |
706 |
namedQuery.addHint(0).setName("BAZ"); |
707 |
|
708 |
assertEquals("BAZ", namedQuery.hintAt(0).getName()); |
709 |
assertEquals("BAR", namedQuery.hintAt(1).getName()); |
710 |
assertNull(namedQuery.hintAt(2).getName()); |
711 |
assertEquals(3, namedQuery.getHintsSize()); |
712 |
|
713 |
namedQuery.moveHint(0, 2); |
714 |
|
715 |
assertNull(namedQuery.hintAt(0).getName()); |
716 |
assertEquals("BAZ", namedQuery.hintAt(1).getName()); |
717 |
assertEquals("BAR", namedQuery.hintAt(2).getName()); |
718 |
assertEquals(3, namedQuery.getHintsSize()); |
719 |
assertSourceContains("@NamedStoredProcedureQuery(hints = {@QueryHint, @QueryHint(name = \"BAZ\"), @QueryHint(name = \"BAR\", value = \"FOO\")})", cu); |
720 |
} |
721 |
|
722 |
} |