[shrinkwrap-issues] [JBoss JIRA] Created: (SHRINKWRAP-275) Adding Resources via Classloader found in packaged jars results in NullPointerException

Aslak Knutsen (JIRA) jira-events at lists.jboss.org
Tue May 3 09:40:18 EDT 2011


Adding Resources via Classloader found in packaged jars results in NullPointerException
---------------------------------------------------------------------------------------

                 Key: SHRINKWRAP-275
                 URL: https://issues.jboss.org/browse/SHRINKWRAP-275
             Project: ShrinkWrap
          Issue Type: Bug
          Components: impl-base
    Affects Versions: 1.0.0-alpha-13
            Reporter: Aslak Knutsen
            Priority: Critical


Adding a Resource via the String representation pointing to a Resource loaded via a ClassLoader and stored in Jar results in NullPoiinterException. 

{code:title=StackTrace}
java.lang.NullPointerException
	at org.jboss.shrinkwrap.impl.base.container.ContainerBase.addAsManifestResource(ContainerBase.java:608)
	at org.jboss.shrinkwrap.impl.base.container.ContainerBase.addAsManifestResource(ContainerBase.java:557)
	at org.jboss.shrinkwrap.impl.base.container.ContainerBase.addAsManifestResource(ContainerBase.java:545)
	at org.jboss.shrinkwrap.impl.base.test.DynamicContainerTestBase.testAddManifestStringTargetResourceFromJar(DynamicContainerTestBase.java:303)
{code}

{code:title=org.jboss.shrinkwrap.impl.base.test.DynamicContainerTestBase}
   @Test
   @ArchiveType(ManifestContainer.class)
   public void testAddManifestStringTargetResourceFromJar() throws Exception {
      getManifestContainer().addAsManifestResource("java/lang/String.class", "String.class");
      
      ArchivePath testPath = new BasicPath(getManifestPath(), "String.class");
      Assert.assertTrue(
            "Archive should contain " + testPath,
            getArchive().contains(testPath));
   }
{code}

The faulty logic comes from ContainerBase.fileFromResource(String), a URL returned by CL.getResource when packaged in a Jar is not usable as a new File(url.getFile()), the returned value is in the format: file:/usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar!/java/lang/String.class

The File has the following states:
* !file.isFile, 
* !file.isDirectory 
* !file.exists, 
* file.listFiles == null
* new FileInputStream(file) throws FileNotFoundException



--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the shrinkwrap-issues mailing list