1 /* 2 * Copyright The Apache Software Foundation. All rights reserved. 3 * 4 * This software is published under the terms of the Apache Software License 5 * version 1.1, a copy of which has been included with this distribution in 6 * the LICENSE.txt file. 7 */ 8 package org.codehaus.spice.configkit; 9 10 import java.net.URL; 11 import java.net.URLClassLoader; 12 import java.util.Properties; 13 import javax.xml.parsers.FactoryConfigurationError; 14 import junit.framework.TestCase; 15 import org.xml.sax.EntityResolver; 16 import org.xml.sax.InputSource; 17 18 /*** 19 * Basic unit tests for the resolver factory. 20 * 21 * @author Peter Donald 22 */ 23 public final class ResolverFactoryTestCase 24 extends TestCase 25 { 26 private static final String PARSER_KEY = "javax.xml.parsers.SAXParserFactory"; 27 28 public void testNullClassLoader() 29 { 30 try 31 { 32 final EntityResolver resolver = ResolverFactory.createResolver( 33 null ); 34 fail( "Expected to get a npe creating resolver: " + resolver ); 35 } 36 catch( NullPointerException npe ) 37 { 38 assertEquals( "npe.getMessage()", 39 npe.getMessage(), 40 "classLoader" ); 41 } 42 catch( Exception e ) 43 { 44 fail( "Unexpected exception creating resolver " + e ); 45 } 46 } 47 48 public void testBadParser() 49 { 50 final ClassLoader classLoader = createClassLoader(); 51 final String oldValue = System.getProperty( PARSER_KEY ); 52 System.setProperty( PARSER_KEY, "Non-existent-parser" ); 53 try 54 { 55 ResolverFactory.createResolver( classLoader ); 56 } 57 catch( FactoryConfigurationError se ) 58 { 59 } 60 catch( Exception e ) 61 { 62 fail( "Unexpected exception creating resolver " + e ); 63 } 64 finally 65 { 66 final Properties properties = System.getProperties(); 67 if( null == oldValue ) 68 { 69 properties.remove( PARSER_KEY ); 70 } 71 else 72 { 73 properties.setProperty( PARSER_KEY, oldValue ); 74 } 75 } 76 } 77 78 public void testLoadPublicFromJar() 79 { 80 doLoadResource( TestData.PUBLIC_ID, null ); 81 } 82 83 public void testLoadSystemFromJar() 84 { 85 doLoadResource( null, TestData.SYSTEM_ID ); 86 } 87 88 private void doLoadResource( final String publicId, 89 final String systemId ) 90 { 91 final EntityResolver resolver = getResolver(); 92 try 93 { 94 final InputSource inputSource = resolver.resolveEntity( publicId, 95 systemId ); 96 assertNotNull( 97 "Expected a input source for id " + publicId + "/" + systemId, 98 inputSource ); 99 } 100 catch( Exception e ) 101 { 102 fail( "Unexpected exception resolving entity" + e ); 103 } 104 } 105 106 private EntityResolver getResolver() 107 { 108 final ClassLoader classLoader = createClassLoader(); 109 try 110 { 111 return ResolverFactory.createResolver( classLoader ); 112 } 113 catch( Exception e ) 114 { 115 fail( "Unexpected exception creating resolver " + e ); 116 } 117 return null; 118 } 119 120 private ClassLoader createClassLoader() 121 { 122 final URL url = getClass().getClassLoader().getResource( 123 TestData.CATALOG_JAR ); 124 assertNotNull( "ResourcePresent: " + TestData.CATALOG_JAR, url ); 125 return new URLClassLoader( new URL[]{url} ); 126 } 127 }

This page was automatically generated by Maven