You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by gp...@apache.org on 2013/12/28 12:56:00 UTC

git commit: DELTASPIKE-399 fixed handling in case of ambiguous resource-lookups

Updated Branches:
  refs/heads/master aa9cf17b2 -> d51c210c3


DELTASPIKE-399 fixed handling in case of ambiguous resource-lookups


Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/d51c210c
Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/d51c210c
Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/d51c210c

Branch: refs/heads/master
Commit: d51c210c32e2c6485a20a160dc230f4df06a5dcf
Parents: aa9cf17
Author: gpetracek <gp...@apache.org>
Authored: Sat Dec 28 12:45:10 2013 +0100
Committer: gpetracek <gp...@apache.org>
Committed: Sat Dec 28 12:53:16 2013 +0100

----------------------------------------------------------------------
 .../ClasspathResourceProvider.java              | 19 ++++++++++++------
 .../resourceloader/ClasspathResourceTest.java   | 21 ++++++++++++++++----
 .../impl/resourceloader/FileResourceTest.java   |  2 +-
 3 files changed, 31 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/deltaspike/blob/d51c210c/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/resourceloader/ClasspathResourceProvider.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/resourceloader/ClasspathResourceProvider.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/resourceloader/ClasspathResourceProvider.java
index a0a0f05..7111cf4 100644
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/resourceloader/ClasspathResourceProvider.java
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/resourceloader/ClasspathResourceProvider.java
@@ -27,7 +27,9 @@ import javax.enterprise.context.ApplicationScoped;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.Enumeration;
+import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -60,19 +62,24 @@ public class ClasspathResourceProvider extends BaseResourceProvider
     private InputStream readClassPath(final String name) throws IOException
     {
         Enumeration<URL> urls = ClassUtils.getClassLoader(null).getResources(name);
-        if (logger.isLoggable(Level.FINEST))
-        {
-            logger.finest("Found URLS " + urls);
-        }
+
+        InputStream result = null;
+        URL firstURL = null;
         while (urls.hasMoreElements())
         {
             URL url = urls.nextElement();
             InputStream is = url.openStream();
             if (is != null)
             {
-                return is;
+                if (firstURL != null)
+                {
+                    throw new IllegalStateException("multiple files found for '" + name +
+                        "' (" + firstURL.toExternalForm() + ", " + url.toExternalForm() + ")");
+                }
+                firstURL = url;
+                result = is;
             }
         }
-        return null;
+        return result;
     }
 }

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/d51c210c/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/resourceloader/ClasspathResourceTest.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/resourceloader/ClasspathResourceTest.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/resourceloader/ClasspathResourceTest.java
index 9672992..8f2e469 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/resourceloader/ClasspathResourceTest.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/resourceloader/ClasspathResourceTest.java
@@ -19,6 +19,7 @@
 package org.apache.deltaspike.test.core.impl.resourceloader;
 
 
+import org.apache.deltaspike.core.api.literal.ExternalResourceLiteral;
 import org.apache.deltaspike.core.api.resourceloader.ClasspathStorage;
 import org.apache.deltaspike.core.api.resourceloader.ExternalResource;
 import org.apache.deltaspike.test.util.ArchiveUtils;
@@ -33,6 +34,8 @@ import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import javax.enterprise.inject.Any;
+import javax.enterprise.inject.Instance;
 import javax.inject.Inject;
 import java.io.IOException;
 import java.io.InputStream;
@@ -43,21 +46,25 @@ public class ClasspathResourceTest {
     @Deployment
     public static Archive<?> createResourceLoaderArchive()
     {
-        Archive<?> arch = ShrinkWrap.create(WebArchive.class, "resourceloader.war")
+        Archive<?> arch = ShrinkWrap.create(WebArchive.class, ClasspathResourceTest.class.getSimpleName() + ".war")
                 .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
-                .add(new StringAsset("some.propertykey = somevalue"),"WEB-INF/classes/myconfig.properties")
+                .add(new StringAsset("some.propertykey = somevalue"), "WEB-INF/classes/testconfig.properties")
                 .addAsLibraries(ArchiveUtils.getDeltaSpikeCoreArchive());
         return arch;
     }
 
     @Inject
-    @ExternalResource(storage = ClasspathStorage.class,location="myconfig.properties")
+    @ExternalResource(storage = ClasspathStorage.class,location="testconfig.properties")
     private InputStream inputStream;
 
     @Inject
-    @ExternalResource(storage = ClasspathStorage.class,location="myconfig.properties")
+    @ExternalResource(storage = ClasspathStorage.class,location="testconfig.properties")
     private Properties props;
 
+    @Inject
+    @Any
+    private Instance<InputStream> inputStreams;
+
     @Test
     public void testInputStream() throws IOException
     {
@@ -72,4 +79,10 @@ public class ClasspathResourceTest {
     {
         Assert.assertEquals("somevalue", props.getProperty("some.propertykey", "wrong answer"));
     }
+
+    @Test(expected = RuntimeException.class)
+    public void testAmbiguousFileLookup()
+    {
+        inputStreams.select(new ExternalResourceLiteral(ClasspathStorage.class, "META-INF/beans.xml")).get();
+    }
 }

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/d51c210c/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/resourceloader/FileResourceTest.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/resourceloader/FileResourceTest.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/resourceloader/FileResourceTest.java
index fed41a4..1a19b9a 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/resourceloader/FileResourceTest.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/resourceloader/FileResourceTest.java
@@ -71,7 +71,7 @@ public class FileResourceTest
     @Deployment
     public static Archive<?> createResourceLoaderArchive()
     {
-        Archive<?> arch = ShrinkWrap.create(WebArchive.class, "resourceloader.war")
+        Archive<?> arch = ShrinkWrap.create(WebArchive.class, FileResourceTest.class.getSimpleName() + ".war")
                 .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
                 .addAsLibraries(ArchiveUtils.getDeltaSpikeCoreArchive());
         return arch;