Return-Path: X-Original-To: apmail-deltaspike-commits-archive@www.apache.org Delivered-To: apmail-deltaspike-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 4EAAB101F2 for ; Sat, 28 Dec 2013 11:56:13 +0000 (UTC) Received: (qmail 80523 invoked by uid 500); 28 Dec 2013 11:56:10 -0000 Delivered-To: apmail-deltaspike-commits-archive@deltaspike.apache.org Received: (qmail 80488 invoked by uid 500); 28 Dec 2013 11:56:05 -0000 Mailing-List: contact commits-help@deltaspike.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@deltaspike.apache.org Delivered-To: mailing list commits@deltaspike.apache.org Received: (qmail 80479 invoked by uid 99); 28 Dec 2013 11:56:01 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 28 Dec 2013 11:56:01 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id DC7F488085A; Sat, 28 Dec 2013 11:56:00 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: gpetracek@apache.org To: commits@deltaspike.apache.org Message-Id: <559ea3f71ee64c30bdb7bf11ff5fdb3a@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: git commit: DELTASPIKE-399 fixed handling in case of ambiguous resource-lookups Date: Sat, 28 Dec 2013 11:56:00 +0000 (UTC) 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 Authored: Sat Dec 28 12:45:10 2013 +0100 Committer: gpetracek 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 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 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;