1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 package org.jomc.modlet.test;
32
33 import java.io.File;
34 import java.io.FileOutputStream;
35 import java.io.IOException;
36 import java.io.OutputStream;
37 import java.net.URL;
38 import java.util.Properties;
39 import javax.xml.bind.JAXBContext;
40 import javax.xml.bind.Marshaller;
41 import javax.xml.bind.Unmarshaller;
42 import org.jomc.modlet.DefaultModelContext;
43 import org.jomc.modlet.DefaultModletProvider;
44 import org.jomc.modlet.Model;
45 import org.jomc.modlet.ModelException;
46 import org.jomc.modlet.Modlets;
47 import org.jomc.modlet.test.support.IllegalServicesModletProvider;
48 import org.jomc.modlet.test.support.ServicesNotFoundModletProvider;
49 import org.jomc.modlet.test.support.TestModelProcessor;
50 import org.jomc.modlet.test.support.TestModelProvider;
51 import org.jomc.modlet.test.support.TestModelValidator;
52 import org.jomc.modlet.test.support.TestModletProvider;
53 import org.junit.Test;
54 import org.w3c.dom.ls.LSResourceResolver;
55 import org.xml.sax.EntityResolver;
56 import static org.junit.Assert.assertEquals;
57 import static org.junit.Assert.assertFalse;
58 import static org.junit.Assert.assertNotNull;
59 import static org.junit.Assert.assertNull;
60 import static org.junit.Assert.assertTrue;
61 import static org.junit.Assert.fail;
62
63
64
65
66
67
68
69 public class DefaultModelContextTest extends ModelContextTest
70 {
71
72 private static final String MODLET_TEST_NS = "http://jomc.org/modlet/test";
73
74
75 public DefaultModelContextTest()
76 {
77 super();
78 }
79
80
81 @Override
82 public DefaultModelContext getModelContext() throws ModelException
83 {
84 return (DefaultModelContext) super.getModelContext();
85 }
86
87
88 @Override
89 protected DefaultModelContext newModelContext()
90 {
91 return new DefaultModelContext();
92 }
93
94 @Test
95 public final void testFindModlets() throws Exception
96 {
97 final File tmpFile = File.createTempFile( this.getClass().getName(), ".properties" );
98 tmpFile.deleteOnExit();
99
100 final Properties properties = new Properties();
101 properties.setProperty( "org.jomc.modlet.ModletProvider.0", "DOES_NOT_EXIST" );
102 this.writePropertiesFile( properties, tmpFile );
103
104 try
105 {
106 DefaultModelContext.setDefaultPlatformProviderLocation( tmpFile.getAbsolutePath() );
107 DefaultModelContext.setDefaultProviderLocation( "DOES_NOT_EXIST" );
108 this.getModelContext().setPlatformProviderLocation( null );
109 this.getModelContext().setProviderLocation( null );
110
111 this.getModelContext().findModlets();
112 fail( "Expected ModelException not thrown." );
113 }
114 catch ( final ModelException e )
115 {
116 assertNotNull( e.getMessage() );
117 System.out.println( e );
118 }
119
120 properties.setProperty( "org.jomc.modlet.ModletProvider.0", "java.lang.Object" );
121 this.writePropertiesFile( properties, tmpFile );
122
123 try
124 {
125 DefaultModelContext.setDefaultPlatformProviderLocation( tmpFile.getAbsolutePath() );
126 DefaultModelContext.setDefaultProviderLocation( "DOES_NOT_EXIST" );
127 this.getModelContext().setPlatformProviderLocation( null );
128 this.getModelContext().setProviderLocation( null );
129
130 this.getModelContext().findModlets();
131 fail( "Expected ModelException not thrown." );
132 }
133 catch ( final ModelException e )
134 {
135 assertNotNull( e.getMessage() );
136 System.out.println( e );
137 }
138
139 properties.setProperty( "org.jomc.modlet.ModletProvider.0", TestModletProvider.class.getName() );
140 this.writePropertiesFile( properties, tmpFile );
141
142 DefaultModelContext.setDefaultPlatformProviderLocation( tmpFile.getAbsolutePath() );
143 DefaultModelContext.setDefaultProviderLocation( "DOES_NOT_EXIST" );
144 this.getModelContext().setPlatformProviderLocation( null );
145 this.getModelContext().setProviderLocation( null );
146
147 assertNotNull( this.getModelContext().findModlets().getModlet( TestModletProvider.class.getName() ) );
148 tmpFile.delete();
149
150 try
151 {
152 DefaultModelContext.setDefaultPlatformProviderLocation( null );
153 DefaultModelContext.setDefaultProviderLocation( "META-INF/non-existent-services" );
154 this.getModelContext().setPlatformProviderLocation( null );
155 this.getModelContext().setProviderLocation( null );
156
157 this.getModelContext().findModlets();
158 fail( "Expected ModelException not thrown." );
159 }
160 catch ( final ModelException e )
161 {
162 assertNotNull( e.getMessage() );
163 System.out.println( e );
164 }
165
166 try
167 {
168 DefaultModelContext.setDefaultPlatformProviderLocation( null );
169 DefaultModelContext.setDefaultProviderLocation( "META-INF/illegal-services" );
170 this.getModelContext().setPlatformProviderLocation( null );
171 this.getModelContext().setProviderLocation( null );
172
173 this.getModelContext().findModlets();
174 fail( "Expected ModelException not thrown." );
175 }
176 catch ( final ModelException e )
177 {
178 assertNotNull( e.getMessage() );
179 System.out.println( e );
180 }
181
182 DefaultModelContext.setDefaultPlatformProviderLocation( null );
183 DefaultModelContext.setDefaultProviderLocation( null );
184 this.getModelContext().setPlatformProviderLocation( null );
185 this.getModelContext().setProviderLocation( null );
186 this.getModelContext().setModlets( null );
187
188 this.getModelContext().setProviderLocation( "META-INF/illegal-services-modlet" );
189 Modlets modlets = this.getModelContext().findModlets();
190 assertNotNull( modlets );
191
192 try
193 {
194 this.getModelContext().findModel( IllegalServicesModletProvider.class.getName() );
195 fail( "Expected ModelException not thrown." );
196 }
197 catch ( final ModelException e )
198 {
199 assertNotNull( e.getMessage() );
200 System.out.println( e.toString() );
201 }
202
203 Model model = new Model();
204 model.setIdentifier( IllegalServicesModletProvider.class.getName() );
205
206 try
207 {
208 this.getModelContext().processModel( model );
209 fail( "Expected ModelException not thrown." );
210 }
211 catch ( final ModelException e )
212 {
213 assertNotNull( e.getMessage() );
214 System.out.println( e.toString() );
215 }
216
217 try
218 {
219 this.getModelContext().validateModel( model );
220 fail( "Expected ModelException not thrown." );
221 }
222 catch ( final ModelException e )
223 {
224 assertNotNull( e.getMessage() );
225 System.out.println( e.toString() );
226 }
227
228 try
229 {
230 this.getModelContext().createMarshaller( model.getIdentifier() );
231 fail( "Expected ModelException not thrown." );
232 }
233 catch ( final ModelException e )
234 {
235 assertNotNull( e.getMessage() );
236 System.out.println( e.toString() );
237 }
238
239 try
240 {
241 this.getModelContext().createUnmarshaller( model.getIdentifier() );
242 fail( "Expected ModelException not thrown." );
243 }
244 catch ( final ModelException e )
245 {
246 assertNotNull( e.getMessage() );
247 System.out.println( e.toString() );
248 }
249
250 this.getModelContext().setProviderLocation( "META-INF/non-existent-services-modlet" );
251 this.getModelContext().setModlets( null );
252 modlets = this.getModelContext().findModlets();
253 assertNotNull( modlets );
254
255 try
256 {
257 this.getModelContext().findModel( ServicesNotFoundModletProvider.class.getName() );
258 fail( "Expected ModelException not thrown." );
259 }
260 catch ( final ModelException e )
261 {
262 assertNotNull( e.getMessage() );
263 System.out.println( e.toString() );
264 }
265
266 model = new Model();
267 model.setIdentifier( ServicesNotFoundModletProvider.class.getName() );
268
269 try
270 {
271 this.getModelContext().processModel( model );
272 fail( "Expected ModelException not thrown." );
273 }
274 catch ( final ModelException e )
275 {
276 assertNotNull( e.getMessage() );
277 System.out.println( e.toString() );
278 }
279
280 try
281 {
282 this.getModelContext().validateModel( model );
283 fail( "Expected ModelException not thrown." );
284 }
285 catch ( final ModelException e )
286 {
287 assertNotNull( e.getMessage() );
288 System.out.println( e.toString() );
289 }
290
291 try
292 {
293 this.getModelContext().createMarshaller( model.getIdentifier() );
294 fail( "Expected ModelException not thrown." );
295 }
296 catch ( final ModelException e )
297 {
298 assertNotNull( e.getMessage() );
299 System.out.println( e.toString() );
300 }
301
302 try
303 {
304 this.getModelContext().createUnmarshaller( model.getIdentifier() );
305 fail( "Expected ModelException not thrown." );
306 }
307 catch ( final ModelException e )
308 {
309 assertNotNull( e.getMessage() );
310 System.out.println( e.toString() );
311 }
312
313 this.getModelContext().setProviderLocation( "META-INF/extended-services" );
314 this.getModelContext().setModlets( null );
315 modlets = this.getModelContext().findModlets();
316 assertNotNull( modlets );
317
318 final TestModletProvider testModletProvider =
319 (TestModletProvider) this.getModelContext().getAttribute( TestModletProvider.class.getName() );
320
321 assertNotNull( testModletProvider );
322 assertTrue( testModletProvider.isBooleanProperty() );
323 assertEquals( 'T', testModletProvider.getCharacterProperty() );
324 assertEquals( (byte) -1, testModletProvider.getByteProperty() );
325 assertEquals( (short) -1, testModletProvider.getShortProperty() );
326 assertEquals( -1, testModletProvider.getIntProperty() );
327 assertEquals( -1, testModletProvider.getLongProperty() );
328 assertEquals( -1, testModletProvider.getFloatProperty(), 0 );
329 assertEquals( -1, testModletProvider.getDoubleProperty(), 0 );
330 assertEquals( "TEST", testModletProvider.getStringProperty() );
331 assertEquals( new URL( "file:///tmp" ), testModletProvider.getUrlProperty() );
332 assertEquals( Thread.State.RUNNABLE, testModletProvider.getEnumProperty() );
333 assertNull( testModletProvider.getObjectProperty() );
334
335 try
336 {
337 this.getModelContext().setProviderLocation( "META-INF/illegal-extended-services-1" );
338 this.getModelContext().setModlets( null );
339 this.getModelContext().findModlets();
340 fail( "Expected 'ModelException' not thrown." );
341 }
342 catch ( final ModelException e )
343 {
344 assertNotNull( e.getMessage() );
345 System.out.println( e.toString() );
346 }
347
348 try
349 {
350 this.getModelContext().setProviderLocation( "META-INF/illegal-extended-services-2" );
351 this.getModelContext().setModlets( null );
352 this.getModelContext().findModlets();
353 fail( "Expected 'ModelException' not thrown." );
354 }
355 catch ( final ModelException e )
356 {
357 assertNotNull( e.getMessage() );
358 System.out.println( e.toString() );
359 }
360
361 try
362 {
363 this.getModelContext().setProviderLocation( "META-INF/illegal-extended-services-3" );
364 this.getModelContext().setModlets( null );
365 this.getModelContext().findModlets();
366 fail( "Expected 'ModelException' not thrown." );
367 }
368 catch ( final ModelException e )
369 {
370 assertNotNull( e.getMessage() );
371 System.out.println( e.toString() );
372 }
373
374 DefaultModelContext.setDefaultPlatformProviderLocation( null );
375 DefaultModelContext.setDefaultProviderLocation( null );
376 this.getModelContext().setPlatformProviderLocation( null );
377 this.getModelContext().setProviderLocation( null );
378 }
379
380 @Test
381 public final void testFindModletsWithAttributes() throws Exception
382 {
383 final File tmpFile = File.createTempFile( this.getClass().getName(), ".properties" );
384 tmpFile.deleteOnExit();
385
386 final Properties properties = new Properties();
387 properties.setProperty( "org.jomc.modlet.ModletProvider.0", "DOES_NOT_EXIST" );
388 this.writePropertiesFile( properties, tmpFile );
389
390 try
391 {
392 DefaultModelContext.setDefaultPlatformProviderLocation( null );
393 DefaultModelContext.setDefaultProviderLocation( null );
394 this.getModelContext().setPlatformProviderLocation( null );
395 this.getModelContext().setProviderLocation( null );
396 this.getModelContext().setAttribute( DefaultModelContext.PLATFORM_PROVIDER_LOCATION_ATTRIBUTE_NAME,
397 tmpFile.getAbsolutePath() );
398
399 this.getModelContext().setAttribute( DefaultModelContext.PROVIDER_LOCATION_ATTRIBUTE_NAME,
400 "DOES_NOT_EXIST" );
401
402 this.getModelContext().findModlets();
403 fail( "Expected ModelException not thrown." );
404 }
405 catch ( final ModelException e )
406 {
407 assertNotNull( e.getMessage() );
408 System.out.println( e );
409 }
410
411 properties.setProperty( "org.jomc.modlet.ModletProvider.0", "java.lang.Object" );
412 this.writePropertiesFile( properties, tmpFile );
413
414 try
415 {
416 DefaultModelContext.setDefaultPlatformProviderLocation( null );
417 DefaultModelContext.setDefaultProviderLocation( null );
418 this.getModelContext().setPlatformProviderLocation( null );
419 this.getModelContext().setProviderLocation( null );
420 this.getModelContext().setAttribute( DefaultModelContext.PLATFORM_PROVIDER_LOCATION_ATTRIBUTE_NAME,
421 tmpFile.getAbsolutePath() );
422
423 this.getModelContext().setAttribute( DefaultModelContext.PROVIDER_LOCATION_ATTRIBUTE_NAME,
424 "DOES_NOT_EXIST" );
425
426 this.getModelContext().findModlets();
427 fail( "Expected ModelException not thrown." );
428 }
429 catch ( final ModelException e )
430 {
431 assertNotNull( e.getMessage() );
432 System.out.println( e );
433 }
434
435 properties.setProperty( "org.jomc.modlet.ModletProvider.0", TestModletProvider.class.getName() );
436 this.writePropertiesFile( properties, tmpFile );
437
438 DefaultModelContext.setDefaultPlatformProviderLocation( null );
439 DefaultModelContext.setDefaultProviderLocation( null );
440 this.getModelContext().setPlatformProviderLocation( null );
441 this.getModelContext().setProviderLocation( null );
442 this.getModelContext().setAttribute( DefaultModelContext.PLATFORM_PROVIDER_LOCATION_ATTRIBUTE_NAME,
443 tmpFile.getAbsolutePath() );
444
445 this.getModelContext().setAttribute( DefaultModelContext.PROVIDER_LOCATION_ATTRIBUTE_NAME,
446 "DOES_NOT_EXIST" );
447
448 assertNotNull( this.getModelContext().findModlets().getModlet( TestModletProvider.class.getName() ) );
449 tmpFile.delete();
450
451 try
452 {
453 DefaultModelContext.setDefaultPlatformProviderLocation( null );
454 DefaultModelContext.setDefaultProviderLocation( null );
455 this.getModelContext().setPlatformProviderLocation( null );
456 this.getModelContext().setProviderLocation( null );
457 this.getModelContext().clearAttribute( DefaultModelContext.PLATFORM_PROVIDER_LOCATION_ATTRIBUTE_NAME );
458 this.getModelContext().setAttribute( DefaultModelContext.PROVIDER_LOCATION_ATTRIBUTE_NAME,
459 "META-INF/non-existent-services" );
460
461 this.getModelContext().findModlets();
462 fail( "Expected ModelException not thrown." );
463 }
464 catch ( final ModelException e )
465 {
466 assertNotNull( e.getMessage() );
467 System.out.println( e );
468 }
469
470 try
471 {
472 DefaultModelContext.setDefaultPlatformProviderLocation( null );
473 DefaultModelContext.setDefaultProviderLocation( null );
474 this.getModelContext().setPlatformProviderLocation( null );
475 this.getModelContext().setProviderLocation( null );
476 this.getModelContext().clearAttribute( DefaultModelContext.PLATFORM_PROVIDER_LOCATION_ATTRIBUTE_NAME );
477 this.getModelContext().setAttribute( DefaultModelContext.PROVIDER_LOCATION_ATTRIBUTE_NAME,
478 "META-INF/illegal-services" );
479
480 this.getModelContext().findModlets();
481 fail( "Expected ModelException not thrown." );
482 }
483 catch ( final ModelException e )
484 {
485 assertNotNull( e.getMessage() );
486 System.out.println( e );
487 }
488
489 DefaultModelContext.setDefaultPlatformProviderLocation( null );
490 DefaultModelContext.setDefaultProviderLocation( null );
491 this.getModelContext().setPlatformProviderLocation( null );
492 this.getModelContext().setProviderLocation( null );
493 this.getModelContext().setModlets( null );
494 this.getModelContext().setAttribute( DefaultModelContext.PROVIDER_LOCATION_ATTRIBUTE_NAME,
495 "META-INF/illegal-services-modlet" );
496
497 Modlets modlets = this.getModelContext().findModlets();
498 assertNotNull( modlets );
499
500 try
501 {
502 this.getModelContext().findModel( IllegalServicesModletProvider.class.getName() );
503 fail( "Expected ModelException not thrown." );
504 }
505 catch ( final ModelException e )
506 {
507 assertNotNull( e.getMessage() );
508 System.out.println( e.toString() );
509 }
510
511 Model model = new Model();
512 model.setIdentifier( IllegalServicesModletProvider.class.getName() );
513
514 try
515 {
516 this.getModelContext().processModel( model );
517 fail( "Expected ModelException not thrown." );
518 }
519 catch ( final ModelException e )
520 {
521 assertNotNull( e.getMessage() );
522 System.out.println( e.toString() );
523 }
524
525 try
526 {
527 this.getModelContext().validateModel( model );
528 fail( "Expected ModelException not thrown." );
529 }
530 catch ( final ModelException e )
531 {
532 assertNotNull( e.getMessage() );
533 System.out.println( e.toString() );
534 }
535
536 try
537 {
538 this.getModelContext().createMarshaller( model.getIdentifier() );
539 fail( "Expected ModelException not thrown." );
540 }
541 catch ( final ModelException e )
542 {
543 assertNotNull( e.getMessage() );
544 System.out.println( e.toString() );
545 }
546
547 try
548 {
549 this.getModelContext().createUnmarshaller( model.getIdentifier() );
550 fail( "Expected ModelException not thrown." );
551 }
552 catch ( final ModelException e )
553 {
554 assertNotNull( e.getMessage() );
555 System.out.println( e.toString() );
556 }
557
558 this.getModelContext().setAttribute( DefaultModelContext.PROVIDER_LOCATION_ATTRIBUTE_NAME,
559 "META-INF/non-existent-services-modlet" );
560
561 this.getModelContext().setProviderLocation( null );
562 this.getModelContext().setModlets( null );
563 modlets = this.getModelContext().findModlets();
564 assertNotNull( modlets );
565
566 try
567 {
568 this.getModelContext().findModel( ServicesNotFoundModletProvider.class.getName() );
569 fail( "Expected ModelException not thrown." );
570 }
571 catch ( final ModelException e )
572 {
573 assertNotNull( e.getMessage() );
574 System.out.println( e.toString() );
575 }
576
577 model = new Model();
578 model.setIdentifier( ServicesNotFoundModletProvider.class.getName() );
579
580 try
581 {
582 this.getModelContext().processModel( model );
583 fail( "Expected ModelException not thrown." );
584 }
585 catch ( final ModelException e )
586 {
587 assertNotNull( e.getMessage() );
588 System.out.println( e.toString() );
589 }
590
591 try
592 {
593 this.getModelContext().validateModel( model );
594 fail( "Expected ModelException not thrown." );
595 }
596 catch ( final ModelException e )
597 {
598 assertNotNull( e.getMessage() );
599 System.out.println( e.toString() );
600 }
601
602 try
603 {
604 this.getModelContext().createMarshaller( model.getIdentifier() );
605 fail( "Expected ModelException not thrown." );
606 }
607 catch ( final ModelException e )
608 {
609 assertNotNull( e.getMessage() );
610 System.out.println( e.toString() );
611 }
612
613 try
614 {
615 this.getModelContext().createUnmarshaller( model.getIdentifier() );
616 fail( "Expected ModelException not thrown." );
617 }
618 catch ( final ModelException e )
619 {
620 assertNotNull( e.getMessage() );
621 System.out.println( e.toString() );
622 }
623
624 this.getModelContext().setAttribute( DefaultModelContext.PROVIDER_LOCATION_ATTRIBUTE_NAME,
625 "META-INF/extended-services" );
626
627 this.getModelContext().setProviderLocation( null );
628 this.getModelContext().setModlets( null );
629 modlets = this.getModelContext().findModlets();
630 assertNotNull( modlets );
631
632 final TestModletProvider testModletProvider =
633 (TestModletProvider) this.getModelContext().getAttribute( TestModletProvider.class.getName() );
634
635 assertNotNull( testModletProvider );
636 assertTrue( testModletProvider.isBooleanProperty() );
637 assertEquals( 'T', testModletProvider.getCharacterProperty() );
638 assertEquals( (byte) -1, testModletProvider.getByteProperty() );
639 assertEquals( (short) -1, testModletProvider.getShortProperty() );
640 assertEquals( -1, testModletProvider.getIntProperty() );
641 assertEquals( -1, testModletProvider.getLongProperty() );
642 assertEquals( -1, testModletProvider.getFloatProperty(), 0 );
643 assertEquals( -1, testModletProvider.getDoubleProperty(), 0 );
644 assertEquals( "TEST", testModletProvider.getStringProperty() );
645 assertEquals( new URL( "file:///tmp" ), testModletProvider.getUrlProperty() );
646 assertEquals( Thread.State.RUNNABLE, testModletProvider.getEnumProperty() );
647 assertNull( testModletProvider.getObjectProperty() );
648
649 try
650 {
651 this.getModelContext().setAttribute( DefaultModelContext.PROVIDER_LOCATION_ATTRIBUTE_NAME,
652 "META-INF/illegal-extended-services-1" );
653
654 this.getModelContext().setProviderLocation( null );
655 this.getModelContext().setModlets( null );
656 this.getModelContext().findModlets();
657 fail( "Expected 'ModelException' not thrown." );
658 }
659 catch ( final ModelException e )
660 {
661 assertNotNull( e.getMessage() );
662 System.out.println( e.toString() );
663 }
664
665 try
666 {
667 this.getModelContext().setAttribute( DefaultModelContext.PROVIDER_LOCATION_ATTRIBUTE_NAME,
668 "META-INF/illegal-extended-services-2" );
669
670 this.getModelContext().setProviderLocation( null );
671 this.getModelContext().setModlets( null );
672 this.getModelContext().findModlets();
673 fail( "Expected 'ModelException' not thrown." );
674 }
675 catch ( final ModelException e )
676 {
677 assertNotNull( e.getMessage() );
678 System.out.println( e.toString() );
679 }
680
681 try
682 {
683 this.getModelContext().setAttribute( DefaultModelContext.PROVIDER_LOCATION_ATTRIBUTE_NAME,
684 "META-INF/illegal-extended-services-3" );
685
686 this.getModelContext().setProviderLocation( null );
687 this.getModelContext().setModlets( null );
688 this.getModelContext().findModlets();
689 fail( "Expected 'ModelException' not thrown." );
690 }
691 catch ( final ModelException e )
692 {
693 assertNotNull( e.getMessage() );
694 System.out.println( e.toString() );
695 }
696
697 DefaultModelContext.setDefaultPlatformProviderLocation( null );
698 DefaultModelContext.setDefaultProviderLocation( null );
699 this.getModelContext().setPlatformProviderLocation( null );
700 this.getModelContext().setProviderLocation( null );
701 }
702
703 @Test
704 public final void testGetDefaultProviderLocation() throws Exception
705 {
706 System.clearProperty( "org.jomc.modlet.DefaultModelContext.defaultProviderLocation" );
707 DefaultModelContext.setDefaultProviderLocation( null );
708 assertEquals( "META-INF/services", DefaultModelContext.getDefaultProviderLocation() );
709 DefaultModelContext.setDefaultProviderLocation( null );
710 System.setProperty( "org.jomc.modlet.DefaultModelContext.defaultProviderLocation", "TEST" );
711 assertEquals( "TEST", DefaultModelContext.getDefaultProviderLocation() );
712 System.clearProperty( "org.jomc.modlet.DefaultModelContext.defaultProviderLocation" );
713 DefaultModelContext.setDefaultProviderLocation( null );
714 assertEquals( "META-INF/services", DefaultModelContext.getDefaultProviderLocation() );
715 }
716
717 @Test
718 public final void testGetDefaultPlatformProviderLocation() throws Exception
719 {
720 System.clearProperty( "org.jomc.modlet.DefaultModelContext.defaultPlatformProviderLocation" );
721 DefaultModelContext.setDefaultPlatformProviderLocation( null );
722 assertNotNull( DefaultModelContext.getDefaultPlatformProviderLocation() );
723 DefaultModelContext.setDefaultPlatformProviderLocation( null );
724 System.setProperty( "org.jomc.modlet.DefaultModelContext.defaultPlatformProviderLocation", "TEST" );
725 assertEquals( "TEST", DefaultModelContext.getDefaultPlatformProviderLocation() );
726 System.clearProperty( "org.jomc.modlet.DefaultModelContext.defaultPlatformProviderLocation" );
727 DefaultModelContext.setDefaultPlatformProviderLocation( null );
728 assertNotNull( DefaultModelContext.getDefaultPlatformProviderLocation() );
729 }
730
731 @Test
732 public final void testGetProviderLocation() throws Exception
733 {
734 DefaultModelContext.setDefaultProviderLocation( null );
735 this.getModelContext().setProviderLocation( null );
736 assertNotNull( this.getModelContext().getProviderLocation() );
737
738 DefaultModelContext.setDefaultProviderLocation( "TEST" );
739 this.getModelContext().setProviderLocation( null );
740 assertEquals( "TEST", this.getModelContext().getProviderLocation() );
741
742 DefaultModelContext.setDefaultProviderLocation( null );
743 this.getModelContext().setProviderLocation( null );
744 }
745
746 @Test
747 public final void testGetPlatformProviderLocation() throws Exception
748 {
749 DefaultModelContext.setDefaultPlatformProviderLocation( null );
750 this.getModelContext().setPlatformProviderLocation( null );
751 assertNotNull( this.getModelContext().getPlatformProviderLocation() );
752
753 DefaultModelContext.setDefaultPlatformProviderLocation( "TEST" );
754 this.getModelContext().setPlatformProviderLocation( null );
755 assertEquals( "TEST", this.getModelContext().getPlatformProviderLocation() );
756
757 DefaultModelContext.setDefaultPlatformProviderLocation( null );
758 this.getModelContext().setPlatformProviderLocation( null );
759 }
760
761 @Test
762 public final void testFindTestModel() throws Exception
763 {
764 final Model model = this.getModelContext().findModel( MODLET_TEST_NS );
765
766 assertNotNull( model );
767 assertEquals( MODLET_TEST_NS, model.getIdentifier() );
768 assertNotNull( this.getModelContext().getAttribute( TestModelProvider.class.getName() ) );
769 assertNotNull( model.getAnyObject( TestComplexType.class ) );
770 }
771
772 @Test
773 public final void testProcessTestModel() throws Exception
774 {
775 Model model = this.getModelContext().findModel( MODLET_TEST_NS );
776
777 assertNotNull( model );
778 assertEquals( MODLET_TEST_NS, model.getIdentifier() );
779
780 model = this.getModelContext().processModel( model );
781 assertNotNull( this.getModelContext().getAttribute( TestModelProcessor.class.getName() ) );
782 assertNotNull( model.getAnyObject( TestComplexType.class ) );
783 assertFalse( model.getAnyObject( TestComplexType.class ).getAny().isEmpty() );
784 }
785
786 @Test
787 public final void testValidateTestModel() throws Exception
788 {
789 final Model model = this.getModelContext().findModel( MODLET_TEST_NS );
790 assertNotNull( model );
791 assertEquals( MODLET_TEST_NS, model.getIdentifier() );
792
793 this.getModelContext().validateModel( model );
794 assertNotNull( this.getModelContext().getAttribute( TestModelValidator.class.getName() ) );
795 }
796
797 @Test
798 public final void testTestModel() throws Exception
799 {
800 this.getModelContext().setModlets( null );
801 final Model model = this.getModelContext().findModel( MODLET_TEST_NS );
802 assertNotNull( model );
803 assertEquals( MODLET_TEST_NS, model.getIdentifier() );
804
805 try
806 {
807 this.getModelContext().createSchema( MODLET_TEST_NS );
808 fail( "Expected ModelException not thrown." );
809 }
810 catch ( final ModelException e )
811 {
812 assertNotNull( e.getMessage() );
813 System.out.println( e.toString() );
814 }
815
816 this.getModelContext().setModlets( null );
817 final JAXBContext context = this.getModelContext().createContext( MODLET_TEST_NS );
818 assertNotNull( context );
819
820 this.getModelContext().setModlets( null );
821 final EntityResolver entityResolver = this.getModelContext().createEntityResolver( MODLET_TEST_NS );
822 assertNotNull( entityResolver );
823
824 this.getModelContext().setModlets( null );
825 final Marshaller marshaller = this.getModelContext().createMarshaller( MODLET_TEST_NS );
826 assertNotNull( marshaller );
827
828 this.getModelContext().setModlets( null );
829 final LSResourceResolver resourceResolver = this.getModelContext().createResourceResolver( MODLET_TEST_NS );
830 assertNotNull( resourceResolver );
831
832 this.getModelContext().setModlets( null );
833 final Unmarshaller unmarshaller = this.getModelContext().createUnmarshaller( MODLET_TEST_NS );
834 assertNotNull( unmarshaller );
835
836 final File tmpFile = File.createTempFile( this.getClass().getSimpleName(), ".xml" );
837 marshaller.marshal( new org.jomc.modlet.ObjectFactory().createModel( model ), tmpFile );
838 assertNotNull( unmarshaller.unmarshal( tmpFile ) );
839 assertTrue( tmpFile.delete() );
840 }
841
842 @Test
843 public final void testServiceProperties() throws Exception
844 {
845 this.getModelContext().setModlets( null );
846 DefaultModletProvider.setDefaultModletLocation( "META-INF/properties-test/jomc-modlet.xml" );
847
848 this.getModelContext().setModlets( null );
849 final JAXBContext context = this.getModelContext().createContext( MODLET_TEST_NS );
850 assertNotNull( context );
851
852 this.getModelContext().setModlets( null );
853 final EntityResolver entityResolver = this.getModelContext().createEntityResolver( MODLET_TEST_NS );
854 assertNotNull( entityResolver );
855
856 this.getModelContext().setModlets( null );
857 final LSResourceResolver resourceResolver = this.getModelContext().createResourceResolver( MODLET_TEST_NS );
858 assertNotNull( resourceResolver );
859
860 try
861 {
862 this.getModelContext().setModlets( null );
863 this.getModelContext().createMarshaller( MODLET_TEST_NS );
864 fail( "Expected 'ModelException' not thrown." );
865 }
866 catch ( final ModelException e )
867 {
868 System.out.println( e.toString() );
869 assertNotNull( e.getMessage() );
870 }
871
872 try
873 {
874 this.getModelContext().setModlets( null );
875 this.getModelContext().createUnmarshaller( MODLET_TEST_NS );
876 fail( "Expected 'ModelException' not thrown." );
877 }
878 catch ( final ModelException e )
879 {
880 System.out.println( e.toString() );
881 assertNotNull( e.getMessage() );
882 }
883
884 try
885 {
886 this.getModelContext().setModlets( null );
887 this.getModelContext().findModel( MODLET_TEST_NS );
888 fail( "Expected 'ModelException' not thrown." );
889 }
890 catch ( final ModelException e )
891 {
892 System.out.println( e.toString() );
893 assertNotNull( e.getMessage() );
894 }
895
896 final Model model = new Model();
897 model.setIdentifier( MODLET_TEST_NS );
898
899 try
900 {
901 this.getModelContext().setModlets( null );
902 this.getModelContext().findModel( model );
903 fail( "Expected 'ModelException' not thrown." );
904 }
905 catch ( final ModelException e )
906 {
907 System.out.println( e.toString() );
908 assertNotNull( e.getMessage() );
909 }
910
911 try
912 {
913 this.getModelContext().setModlets( null );
914 this.getModelContext().processModel( model );
915 fail( "Expected 'ModelException' not thrown." );
916 }
917 catch ( final ModelException e )
918 {
919 System.out.println( e.toString() );
920 assertNotNull( e.getMessage() );
921 }
922
923 try
924 {
925 this.getModelContext().setModlets( null );
926 this.getModelContext().validateModel( model );
927 fail( "Expected 'ModelException' not thrown." );
928 }
929 catch ( final ModelException e )
930 {
931 System.out.println( e.toString() );
932 assertNotNull( e.getMessage() );
933 }
934
935 DefaultModletProvider.setDefaultModletLocation( null );
936 }
937
938 private void writePropertiesFile( final Properties properties, final File file ) throws IOException
939 {
940 OutputStream out = null;
941 boolean suppressExceptionOnClose = true;
942
943 try
944 {
945 out = new FileOutputStream( file );
946 properties.store( out, this.getClass().getName() );
947 suppressExceptionOnClose = false;
948 }
949 finally
950 {
951 try
952 {
953 if ( out != null )
954 {
955 out.close();
956 }
957 }
958 catch ( final IOException e )
959 {
960 if ( !suppressExceptionOnClose )
961 {
962 throw e;
963 }
964 }
965 }
966 }
967
968 }