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