public void testCompile() throws Exception {

    final File schema = new File(getClass().getResource("schema.xsd").toURI());
    final File bindings = new File(getClass().getResource("bindings.xjb").toURI());

    final DynamicCompiler compiler =
        new DynamicCompiler(new File[] {schema}, new File[] {bindings}, null, temporaryDirectory);

    compiler.execute();

    final ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
    try {
      final ClassLoader newClassLoader = compiler.createClassLoader(oldClassLoader);
      Thread.currentThread().setContextClassLoader(newClassLoader);

      final RoundtripTest test =
          new RoundtripTest() {
            @Override
            public String getContextPath() {
              return compiler.getContextPath();
            }

            @Override
            protected File getSamplesDirectory() {
              return schema.getParentFile();
            }

            @Override
            protected ClassLoader getContextClassLoader() {
              return Thread.currentThread().getContextClassLoader();
            }
          };

      test.setUp();

      test.testSamples();

      test.tearDown();
    } finally {
      Thread.currentThread().setContextClassLoader(oldClassLoader);
    }
  }
  public void testUnmarshall() throws Exception {

    final File schema = new File(getClass().getResource("schema.xsd").toURI());
    final File bindings = new File(getClass().getResource("bindings.xjb").toURI());
    final File sample = new File(getClass().getResource("po.xml").toURI());

    final DynamicCompiler compiler =
        new DynamicCompiler(new File[] {schema}, new File[] {bindings}, null, temporaryDirectory);

    compiler.execute();

    final JAXBContext context =
        JAXBContext.newInstance(compiler.getContextPath(), compiler.getClassLoader());

    final JAXBElement element = (JAXBElement) context.createUnmarshaller().unmarshal(sample);

    final String elementValueClassName = element.getValue().getClass().getName();
    logger.debug("We have just loaded an instance of [" + elementValueClassName + "]");
    Assert.assertEquals(
        "org.jvnet.hyperjaxb3.ejb.tests.pocustomized.PurchaseOrderType", elementValueClassName);
  }