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

Reply via email to