001 /* 002 * Copyright (C) Christian Schulte, 2005-206 003 * All rights reserved. 004 * 005 * Redistribution and use in source and binary forms, with or without 006 * modification, are permitted provided that the following conditions 007 * are met: 008 * 009 * o Redistributions of source code must retain the above copyright 010 * notice, this list of conditions and the following disclaimer. 011 * 012 * o Redistributions in binary form must reproduce the above copyright 013 * notice, this list of conditions and the following disclaimer in 014 * the documentation and/or other materials provided with the 015 * distribution. 016 * 017 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 018 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 019 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 020 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, 021 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 022 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 023 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 024 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 025 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 026 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 027 * 028 * $JOMC: DefaultModelContextTest.java 4255 2012-02-12 22:54:20Z schulte2005 $ 029 * 030 */ 031 package org.jomc.modlet.test; 032 033 import java.io.File; 034 import java.io.FileOutputStream; 035 import java.io.IOException; 036 import java.io.OutputStream; 037 import java.net.URL; 038 import java.util.Properties; 039 import javax.xml.bind.JAXBContext; 040 import javax.xml.bind.Marshaller; 041 import javax.xml.bind.Unmarshaller; 042 import org.jomc.modlet.DefaultModelContext; 043 import org.jomc.modlet.DefaultModletProvider; 044 import org.jomc.modlet.Model; 045 import org.jomc.modlet.ModelException; 046 import org.jomc.modlet.Modlets; 047 import org.jomc.modlet.test.support.IllegalServicesModletProvider; 048 import org.jomc.modlet.test.support.ServicesNotFoundModletProvider; 049 import org.jomc.modlet.test.support.TestModelProcessor; 050 import org.jomc.modlet.test.support.TestModelProvider; 051 import org.jomc.modlet.test.support.TestModelValidator; 052 import org.jomc.modlet.test.support.TestModletProvider; 053 import org.junit.Test; 054 import org.w3c.dom.ls.LSResourceResolver; 055 import org.xml.sax.EntityResolver; 056 import static org.junit.Assert.assertEquals; 057 import static org.junit.Assert.assertFalse; 058 import static org.junit.Assert.assertNotNull; 059 import static org.junit.Assert.assertNull; 060 import static org.junit.Assert.assertTrue; 061 import static org.junit.Assert.fail; 062 063 /** 064 * Test cases for class {@code org.jomc.modlet.DefaultModelContext}. 065 * 066 * @author <a href="mailto:schulte2005@users.sourceforge.net">Christian Schulte</a> 1.0 067 * @version $JOMC: DefaultModelContextTest.java 4255 2012-02-12 22:54:20Z schulte2005 $ 068 */ 069 public class DefaultModelContextTest extends ModelContextTest 070 { 071 072 private static final String MODLET_TEST_NS = "http://jomc.org/modlet/test"; 073 074 /** Creates a new {@code DefaultModelContextTest} instance. */ 075 public DefaultModelContextTest() 076 { 077 super(); 078 } 079 080 /** {@inheritDoc} */ 081 @Override 082 public DefaultModelContext getModelContext() throws ModelException 083 { 084 return (DefaultModelContext) super.getModelContext(); 085 } 086 087 /** {@inheritDoc} */ 088 @Override 089 protected DefaultModelContext newModelContext() 090 { 091 return new DefaultModelContext(); 092 } 093 094 @Test 095 public final void testFindModlets() throws Exception 096 { 097 final File tmpFile = File.createTempFile( this.getClass().getName(), ".properties" ); 098 tmpFile.deleteOnExit(); 099 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 }