    1   package groovy.xml;
    2
    3   import junit.framework.TestCase;
    4
    5   import javax.xml.parsers.ParserConfigurationException;
    6   import java.security.PrivilegedExceptionAction;
    7   import java.security.PrivilegedActionException;
    8
    9   public class FactorySupportTest extends TestCase {
    10      private static final PrivilegedActionException PRIVILEGED_ACTION_EXCEPTION = new PrivilegedActionException(new IllegalStateException());
    11      private static final ParserConfigurationException PARSER_CONFIGURATION_EXCEPTION = new ParserConfigurationException();
    12
    13      public void testCreatesFactories() throws Exception {
    14          assertNotNull(FactorySupport.createDocumentBuilderFactory());
    15          assertNotNull(FactorySupport.createSaxParserFactory());
    16      }
    17
    18      public void testParserConfigurationExceptionNotWrapped() throws ParserConfigurationException {
    19          try {
    20              FactorySupport.createFactory(new PrivilegedExceptionAction(){
    21                  public Object run() throws Exception {
    22                      throw PARSER_CONFIGURATION_EXCEPTION;
    23                  }
    24              });
    25              fail("Exception was not caught");
    26          } catch (Throwable t) {
    27              assertSame(PARSER_CONFIGURATION_EXCEPTION, t);
    28          }
    29      }
    30
    31      public void testOtherExceptionsWrappedAsUnchecked() throws ParserConfigurationException {
    32          try {
    33              FactorySupport.createFactory(new PrivilegedExceptionAction(){
    34                  public Object run() throws Exception {
    35                      throw PRIVILEGED_ACTION_EXCEPTION;
    36                  }
    37              });
    38              fail("Exception was not caught");
    39          } catch (RuntimeException re) {
    40              assertSame(PRIVILEGED_ACTION_EXCEPTION, re.getCause());
    41          } catch (Throwable t) {
    42              fail("Exception was not wrapped as runtime");
    43          }
    44      }
    45  }