Repository: struts Updated Branches: refs/heads/master 3144b6c99 -> 98979423a
WW-3787 WW-3961 Allows include config files from JARs Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/98979423 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/98979423 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/98979423 Branch: refs/heads/master Commit: 98979423a164e264d1291ac34dc9a16759173aea Parents: 3144b6c Author: Lukasz Lenart <[email protected]> Authored: Sat Dec 31 12:04:35 2016 +0100 Committer: Lukasz Lenart <[email protected]> Committed: Sat Dec 31 12:04:35 2016 +0100 ---------------------------------------------------------------------- .../xwork2/util/ClassPathFinder.java | 26 +++++++++++++++++--- ...onfigurationProviderWildCardIncludeTest.java | 4 +++ .../providers/xwork-test-wildcard-include.xml | 2 ++ 3 files changed, 28 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/struts/blob/98979423/core/src/main/java/com/opensymphony/xwork2/util/ClassPathFinder.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/com/opensymphony/xwork2/util/ClassPathFinder.java b/core/src/main/java/com/opensymphony/xwork2/util/ClassPathFinder.java index 45eeaf3..289ab8c 100644 --- a/core/src/main/java/com/opensymphony/xwork2/util/ClassPathFinder.java +++ b/core/src/main/java/com/opensymphony/xwork2/util/ClassPathFinder.java @@ -20,12 +20,16 @@ package com.opensymphony.xwork2.util; import com.opensymphony.xwork2.XWorkException; import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import java.net.URLClassLoader; import java.util.HashMap; import java.util.Vector; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; /** * This class is an utility class that will search through the classpath @@ -88,10 +92,24 @@ public class ClassPathFinder { } catch (URISyntaxException e) { continue; } - File entry = new File(entryURI) ; - Vector<String> results = checkEntries(entry.list(), entry, ""); - if (results != null ) { - matches.addAll(results); + File entry = new File(entryURI); + if (entry.isFile() && entry.toString().endsWith(".jar")) { + try { + ZipInputStream zip = new ZipInputStream(new FileInputStream(entry)); + for (ZipEntry zipEntry = zip.getNextEntry(); zipEntry != null; zipEntry = zip.getNextEntry()) { + boolean doesMatch = patternMatcher.match(new HashMap<String, String>(), zipEntry.getName(), compiledPattern); + if (doesMatch) { + matches.add(zipEntry.getName()); + } + } + } catch (IOException e) { + e.printStackTrace(); + } + } else { + Vector<String> results = checkEntries(entry.list(), entry, ""); + if (results != null) { + matches.addAll(results); + } } } return matches; http://git-wip-us.apache.org/repos/asf/struts/blob/98979423/core/src/test/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProviderWildCardIncludeTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProviderWildCardIncludeTest.java b/core/src/test/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProviderWildCardIncludeTest.java index 71cfc25..de37435 100644 --- a/core/src/test/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProviderWildCardIncludeTest.java +++ b/core/src/test/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProviderWildCardIncludeTest.java @@ -41,6 +41,10 @@ public class XmlConfigurationProviderWildCardIncludeTest extends ConfigurationTe assertNotNull(defaultTwoPackage); assertEquals("default-2", defaultTwoPackage.getName()); + PackageConfig defaultPackage = configuration.getPackageConfig("default"); + assertNotNull(defaultPackage); + assertEquals("default", defaultPackage.getName()); + configurationManager.addContainerProvider(provider); configurationManager.reload(); http://git-wip-us.apache.org/repos/asf/struts/blob/98979423/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-wildcard-include.xml ---------------------------------------------------------------------- diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-wildcard-include.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-wildcard-include.xml index d101a40..1080229 100644 --- a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-wildcard-include.xml +++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-wildcard-include.xml @@ -6,5 +6,7 @@ <xwork> <include file="xwork-test-beans.xml" /> <include file="com/opensymphony/xwork2/config/providers/xwork-test-wildcard-*.xml" /> + <!-- config file defined inside xwork-jar.jar --> + <include file="xwork-jar.xml" /> <package name="default-wildcard" /> </xwork> \ No newline at end of file
