2 * This is a common dao with basic CRUD operations and is not limited to any
3 * persistent layer implementation
5 * Copyright (C) 2008 Imran M Yousuf (imyousuf@smartitengineering.com)
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 3 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 package com
.smartitengineering
.exim
.impl
;
21 import com
.smartitengineering
.exim
.AssociationConfig
;
22 import com
.smartitengineering
.exim
.EximResourceConfig
;
23 import com
.smartitengineering
.exim
.impl
.data
.IResource
;
24 import com
.smartitengineering
.exim
.impl
.data
.IResourceImpl
;
25 import com
.smartitengineering
.exim
.impl
.data
.InheritedResource
;
26 import com
.smartitengineering
.exim
.impl
.data
.MultiResourceImpl
;
27 import com
.smartitengineering
.exim
.impl
.data
.SomeResource
;
28 import com
.smartitengineering
.exim
.impl
.data
.TestClass
;
29 import com
.smartitengineering
.exim
.impl
.data
.TestResourceDomain
;
30 import com
.smartitengineering
.exim
.impl
.data
.TestResourceDomainField
;
31 import java
.util
.Collection
;
33 import junit
.framework
.TestCase
;
39 public class DefaultAnnotationConfigScannerTest
42 public DefaultAnnotationConfigScannerTest(String testName
) {
47 protected void setUp()
53 * Test of getInstance method, of class DefaultAnnotationConfigScanner.
55 public void testGetInstance() {
56 System
.out
.println("getInstance");
57 DefaultAnnotationConfigScanner expResult
=
58 DefaultAnnotationConfigScanner
.
60 DefaultAnnotationConfigScanner result
=
61 DefaultAnnotationConfigScanner
.
63 assertEquals(expResult
,
68 * Test of getConfigurations method, of class DefaultAnnotationConfigScanner.
70 public void testGetConfigurations() {
71 System
.out
.println("getConfigurations");
72 DefaultAnnotationConfigScanner instance
=
73 new DefaultAnnotationConfigScanner();
74 Map
<Class
, EximResourceConfig
> result
= instance
.getConfigurations();
77 instance
.getResourceConfigForClass(TestClass
.class);
80 assertTrue(result
.keySet().contains(TestResourceDomain
.class));
81 assertTrue(result
.keySet().contains(TestResourceDomainField
.class));
82 assertTrue(result
.keySet().contains(IResource
.class));
83 assertFalse(result
.keySet().contains(TestClass
.class));
84 assertFalse(result
.keySet().contains(SomeResource
.class));
85 instance
.getResourceConfigForClass(TestResourceDomain
.class);
88 assertTrue(result
.keySet().contains(TestResourceDomain
.class));
89 assertTrue(result
.keySet().contains(IResource
.class));
90 assertTrue(result
.keySet().contains(TestResourceDomainField
.class));
91 assertFalse(result
.keySet().contains(TestClass
.class));
92 assertFalse(result
.keySet().contains(SomeResource
.class));
96 * Test of getConfiguredResourceClasses method, of class DefaultAnnotationConfigScanner.
98 public void testGetConfiguredResourceClasses() {
99 System
.out
.println("getConfiguredResourceClasses");
100 DefaultAnnotationConfigScanner instance
=
101 new DefaultAnnotationConfigScanner();
102 Collection
<Class
> result
= instance
.getConfiguredResourceClasses();
103 assertTrue(result
.isEmpty());
104 Package resourcePackage
= Package
.getPackage(getClass().getPackage().
105 getName().concat(".data"));
106 instance
.scanPackageForResourceConfigs(resourcePackage
);
107 result
= instance
.getConfiguredResourceClasses();
110 assertTrue(result
.contains(TestResourceDomain
.class));
111 assertTrue(result
.contains(TestResourceDomainField
.class));
112 assertTrue(result
.contains(IResource
.class));
113 assertFalse(result
.contains(TestClass
.class));
114 assertFalse(result
.contains(SomeResource
.class));
118 * Test of getResourceConfigForClass method, of class DefaultAnnotationConfigScanner.
120 public void testGetResourceConfigForClass() {
121 System
.out
.println("getResourceConfigForClass");
122 DefaultAnnotationConfigScanner instance
=
123 new DefaultAnnotationConfigScanner();
125 EximResourceConfig result
;
126 Map
<String
, AssociationConfig
> asssocConfigs
;
127 AssociationConfig associationConfig
;
130 * Test TestResourceDomain's config
132 resourceClass
= TestResourceDomain
.class;
133 result
= instance
.getResourceConfigForClass(resourceClass
);
134 assertNotNull(result
);
135 assertTrue(result
.isAccessByPropertyEnabled());
136 assertFalse(result
.isAssociateExportPolicyAsUri());
137 assertFalse(result
.isIdentityCustomizerImplemented());
138 assertFalse(result
.isImporterImplemented());
139 assertTrue(result
.isExporterImplemented());
140 assertEquals(TestResourceDomain
.class, result
.getDomainClass());
141 assertEquals(TestResourceDomain
.ID_PREFIX
, result
.getIdPrefix());
142 assertEquals(TestResourceDomain
.ID
, result
.getIdPropertyName());
143 assertEquals(result
.getDomainClass().getName(), result
.getName());
144 assertEquals(TestResourceDomain
.PATH
, result
.getPathToResource());
145 assertEquals(0, result
.getPriority());
146 asssocConfigs
= result
.getAssociationConfigs();
147 assertNotNull(asssocConfigs
);
148 assertFalse(asssocConfigs
.isEmpty());
150 asssocConfigs
.size());
152 assertTrue(asssocConfigs
.containsKey(TestResourceDomain
.ID
));
153 associationConfig
= asssocConfigs
.get(TestResourceDomain
.ID
);
154 assertEquals("getId", associationConfig
.getAccessorName());
155 assertEquals(AssociationConfig
.AssociationType
.TYPE_OBJECT
,
156 associationConfig
.getAssociationType());
157 assertEquals(TestResourceDomain
.ID
, associationConfig
.getName());
158 assertFalse(associationConfig
.isEagerSet());
159 assertFalse(associationConfig
.isItToBeExportedAsUri());
160 assertFalse(associationConfig
.isStringProviderImplemented());
161 assertFalse(associationConfig
.isTransient());
163 assertTrue(asssocConfigs
.containsKey(TestResourceDomain
.SOME_PROP
));
164 associationConfig
= asssocConfigs
.get(TestResourceDomain
.SOME_PROP
);
165 assertEquals("getSomeProp", associationConfig
.getAccessorName());
166 assertEquals(AssociationConfig
.AssociationType
.TYPE_OBJECT
,
167 associationConfig
.getAssociationType());
168 assertEquals(TestResourceDomain
.SOME_PROP_NAME
, associationConfig
.
170 assertFalse(associationConfig
.isEagerSet());
171 assertTrue(associationConfig
.isItToBeExportedAsUri());
172 assertFalse(associationConfig
.isStringProviderImplemented());
173 assertFalse(associationConfig
.isTransient());
175 assertTrue(asssocConfigs
.containsKey(TestResourceDomain
.SOME_BOOL_PROP
));
176 associationConfig
= asssocConfigs
.get(TestResourceDomain
.SOME_BOOL_PROP
);
177 assertEquals("hasSomeBoolProp", associationConfig
.getAccessorName());
178 assertEquals(AssociationConfig
.AssociationType
.TYPE_OBJECT
,
179 associationConfig
.getAssociationType());
180 assertEquals(TestResourceDomain
.SOME_BOOL_PROP
, associationConfig
.
182 assertTrue(associationConfig
.isEagerSet());
183 assertFalse(associationConfig
.isItToBeExportedAsUri());
184 assertFalse(associationConfig
.isStringProviderImplemented());
185 assertFalse(associationConfig
.isTransient());
186 //Some transient prop
187 assertTrue(asssocConfigs
.containsKey(
188 TestResourceDomain
.SOME_TRANSIENT_PROP
));
189 associationConfig
= asssocConfigs
.get(
190 TestResourceDomain
.SOME_TRANSIENT_PROP
);
191 assertEquals("getSomeTransientProp", associationConfig
.getAccessorName());
192 assertEquals(AssociationConfig
.AssociationType
.TYPE_OBJECT
,
193 associationConfig
.getAssociationType());
194 assertEquals(TestResourceDomain
.SOME_TRANSIENT_PROP
, associationConfig
.
196 assertFalse(associationConfig
.isEagerSet());
197 assertFalse(associationConfig
.isItToBeExportedAsUri());
198 assertFalse(associationConfig
.isStringProviderImplemented());
199 assertTrue(associationConfig
.isTransient());
202 * Test TestResourceDomainField's config
204 resourceClass
= TestResourceDomainField
.class;
205 result
= instance
.getResourceConfigForClass(resourceClass
);
206 assertNotNull(result
);
207 assertFalse(result
.isAccessByPropertyEnabled());
208 assertTrue(result
.isAssociateExportPolicyAsUri());
209 assertTrue(result
.isIdentityCustomizerImplemented());
210 assertTrue(result
.isImporterImplemented());
211 assertFalse(result
.isExporterImplemented());
212 assertEquals(TestResourceDomainField
.class, result
.getDomainClass());
213 assertEquals(null, result
.getIdPrefix());
214 assertEquals(null, result
.getIdPropertyName());
215 assertEquals(TestResourceDomainField
.NAME
, result
.getName());
216 assertEquals("", result
.getPathToResource());
217 assertEquals(0, result
.getPriority());
218 asssocConfigs
= result
.getAssociationConfigs();
219 assertNotNull(asssocConfigs
);
220 assertFalse(asssocConfigs
.isEmpty());
221 assertEquals(2, asssocConfigs
.size());
223 assertTrue(asssocConfigs
.containsKey(
224 TestResourceDomainField
.SOME_STR_PROP
));
225 associationConfig
= asssocConfigs
.get(
226 TestResourceDomainField
.SOME_STR_PROP
);
227 assertEquals(TestResourceDomainField
.SOME_STR_PROP
,
228 associationConfig
.getAccessorName());
229 assertEquals(AssociationConfig
.AssociationType
.TYPE_OBJECT
,
230 associationConfig
.getAssociationType());
231 assertEquals(TestResourceDomainField
.SOME_STR_PROP
, associationConfig
.
233 assertFalse(associationConfig
.isEagerSet());
234 assertFalse(associationConfig
.isItToBeExportedAsUri());
235 assertFalse(associationConfig
.isStringProviderImplemented());
236 assertFalse(associationConfig
.isTransient());
237 //someTransientStrProp
238 assertTrue(asssocConfigs
.containsKey(
239 TestResourceDomainField
.SOME_TRANSIENT_STR_PROP
));
240 associationConfig
= asssocConfigs
.get(
241 TestResourceDomainField
.SOME_TRANSIENT_STR_PROP
);
242 assertEquals(TestResourceDomainField
.SOME_TRANSIENT_STR_PROP
,
243 associationConfig
.getAccessorName());
244 assertEquals(AssociationConfig
.AssociationType
.TYPE_OBJECT
,
245 associationConfig
.getAssociationType());
246 assertEquals(TestResourceDomainField
.SOME_TRANSIENT_STR_PROP
,
247 associationConfig
.getName());
248 assertFalse(associationConfig
.isEagerSet());
249 assertFalse(associationConfig
.isItToBeExportedAsUri());
250 assertFalse(associationConfig
.isStringProviderImplemented());
251 assertTrue(associationConfig
.isTransient());
254 * Test IResource's config
256 resourceClass
= IResource
.class;
257 result
= instance
.getResourceConfigForClass(resourceClass
);
258 assertNotNull(result
);
259 assertTrue(result
.isAccessByPropertyEnabled());
260 assertTrue(result
.isAssociateExportPolicyAsUri());
261 assertFalse(result
.isIdentityCustomizerImplemented());
262 assertFalse(result
.isImporterImplemented());
263 assertFalse(result
.isExporterImplemented());
264 assertEquals(IResource
.class, result
.getDomainClass());
265 assertEquals("", result
.getIdPrefix());
266 assertEquals(IResource
.RESOURCE_ID
, result
.getIdPropertyName());
267 assertEquals(result
.getDomainClass().getName(), result
.getName());
268 assertEquals("", result
.getPathToResource());
269 assertEquals(IResource
.PRIORITY
, result
.getPriority());
270 asssocConfigs
= result
.getAssociationConfigs();
271 assertNotNull(asssocConfigs
);
272 assertFalse(asssocConfigs
.isEmpty());
273 assertEquals(7, asssocConfigs
.size());
275 assertTrue(asssocConfigs
.containsKey(IResource
.RESOURCE_ID
));
276 associationConfig
= asssocConfigs
.get(IResource
.RESOURCE_ID
);
277 assertEquals(AssociationConfig
.AssociationType
.TYPE_OBJECT
,
278 associationConfig
.getAssociationType());
280 assertTrue(asssocConfigs
.containsKey(IResource
.LIST
));
281 associationConfig
= asssocConfigs
.get(IResource
.LIST
);
282 assertEquals(AssociationConfig
.AssociationType
.TYPE_LIST
,
283 associationConfig
.getAssociationType());
285 assertTrue(asssocConfigs
.containsKey(IResource
.SET
));
286 associationConfig
= asssocConfigs
.get(IResource
.SET
);
287 assertEquals(AssociationConfig
.AssociationType
.TYPE_SET
,
288 associationConfig
.getAssociationType());
289 assertEquals(IResource
.SET_NAME
, associationConfig
.getName());
291 assertTrue(asssocConfigs
.containsKey(IResource
.COLLECTION
));
292 associationConfig
= asssocConfigs
.get(IResource
.COLLECTION
);
293 assertEquals(AssociationConfig
.AssociationType
.TYPE_COLLECTION
,
294 associationConfig
.getAssociationType());
296 assertTrue(asssocConfigs
.containsKey(IResource
.MAP
));
297 associationConfig
= asssocConfigs
.get(IResource
.MAP
);
298 assertEquals(AssociationConfig
.AssociationType
.TYPE_MAP
,
299 associationConfig
.getAssociationType());
300 assertTrue(associationConfig
.isEagerSet());
302 assertTrue(asssocConfigs
.containsKey(IResource
.ARRAY
));
303 associationConfig
= asssocConfigs
.get(IResource
.ARRAY
);
304 assertEquals(AssociationConfig
.AssociationType
.TYPE_ARRAY
,
305 associationConfig
.getAssociationType());
307 assertTrue(asssocConfigs
.containsKey(IResource
.VALID
));
308 associationConfig
= asssocConfigs
.get(IResource
.VALID
);
309 assertEquals(AssociationConfig
.AssociationType
.TYPE_OBJECT
,
310 associationConfig
.getAssociationType());
315 * Test of scanPackageForResourceConfigs method, of class DefaultAnnotationConfigScanner.
317 public void testScanPackageForResourceConfigs() {
318 System
.out
.println("scanPackageForResourceConfigs");
319 Package resourcePackage
= Package
.getPackage(getClass().getPackage().
320 getName().concat(".data"));
321 DefaultAnnotationConfigScanner instance
=
322 new DefaultAnnotationConfigScanner();
323 Map
<Class
, EximResourceConfig
> result
= instance
.getConfigurations();
324 assertEquals(0, result
.size());
325 instance
.scanPackageForResourceConfigs(resourcePackage
);
326 assertEquals(4, result
.size());
327 assertTrue(result
.keySet().contains(TestResourceDomain
.class));
328 assertTrue(result
.keySet().contains(TestResourceDomainField
.class));
329 assertTrue(result
.keySet().contains(IResource
.class));
330 assertFalse(result
.keySet().contains(TestClass
.class));
331 assertFalse(result
.keySet().contains(SomeResource
.class));
334 public void testGetConfigForInheritence() {
335 DefaultAnnotationConfigScanner instance
=
336 new DefaultAnnotationConfigScanner();
337 Package resourcePackage
= Package
.getPackage(getClass().getPackage().
338 getName().concat(".data"));
339 instance
.scanPackageForResourceConfigs(resourcePackage
);
340 EximResourceConfig config
= instance
.getResourceConfigForClass(
341 IResourceImpl
.class);
342 assertNotNull(config
);
343 assertEquals(IResource
.class, config
.getDomainClass());
344 config
= instance
.getResourceConfigForClass(InheritedResource
.class);
345 assertNotNull(config
);
346 assertEquals(IResource
.class, config
.getDomainClass());
347 config
= instance
.getResourceConfigForClass(MultiResourceImpl
.class);
348 assertNotNull(config
);
349 assertEquals(IResource
.class, config
.getDomainClass());
353 * Test of getPropertyNameFromMethodName method, of class DefaultAnnotationConfigScanner.
355 public void testGetPropertyNameFromMethodName() {
356 System
.out
.println("getPropertyNameFromMethodName");
357 String methodName
= "getPropertyNameFromMethodName";
358 DefaultAnnotationConfigScanner instance
=
359 new DefaultAnnotationConfigScanner();
360 String expResult
= "propertyNameFromMethodName";
361 String result
= instance
.getPropertyNameFromMethodName(methodName
);
362 assertEquals(expResult
, result
);
363 methodName
= "isPropertyNameFromMethodName";
364 result
= instance
.getPropertyNameFromMethodName(methodName
);
365 assertEquals(expResult
, result
);
366 methodName
= "hasPropertyNameFromMethodName";
367 result
= instance
.getPropertyNameFromMethodName(methodName
);
368 assertEquals(expResult
, result
);
369 methodName
= "somePropertyNameFromMethodName";
371 result
= instance
.getPropertyNameFromMethodName(methodName
);
372 fail("should not pass!");
374 catch (IllegalArgumentException ex
) {
378 result
= instance
.getPropertyNameFromMethodName(methodName
);
379 fail("should not pass!");
381 catch (NullPointerException ex
) {