You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by co...@apache.org on 2019/01/10 17:19:56 UTC

[cxf] 01/02: Refactor FileUtils to use a suffix instead of a reg ex

This is an automated email from the ASF dual-hosted git repository.

coheigea pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git

commit 33c46b89a4f6832af102ed66b57623b392ce0007
Author: Colm O hEigeartaigh <co...@apache.org>
AuthorDate: Thu Jan 10 16:39:53 2019 +0000

    Refactor FileUtils to use a suffix instead of a reg ex
---
 .../java/org/apache/cxf/helpers/FileUtils.java     | 47 +++++++++++---------
 .../java/org/apache/cxf/helpers/FileUtilsTest.java | 17 ++++++++
 .../cxf/endpoint/dynamic/DynamicClientFactory.java |  2 +-
 .../org/apache/cxf/tools/common/ClassUtils.java    |  6 +--
 .../cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java | 50 +++++++++++-----------
 .../cxf/tools/wadlto/jaxrs/WADLToJavaTest.java     |  2 +-
 6 files changed, 72 insertions(+), 52 deletions(-)

diff --git a/core/src/main/java/org/apache/cxf/helpers/FileUtils.java b/core/src/main/java/org/apache/cxf/helpers/FileUtils.java
index f8dfd9a..42b59c2 100644
--- a/core/src/main/java/org/apache/cxf/helpers/FileUtils.java
+++ b/core/src/main/java/org/apache/cxf/helpers/FileUtils.java
@@ -363,34 +363,24 @@ public final class FileUtils {
         return rtn;
     }
 
-    public static List<File> getFiles(File dir, final String pattern) {
-        return getFiles(dir, pattern, null);
-    }
-    public static List<File> getFilesRecurse(File dir, final String pattern) {
-        return getFilesRecurse(dir, pattern, null);
+    public static List<File> getFilesUsingSuffix(File dir, final String suffix) {
+        return getFilesRecurseUsingSuffix(dir, suffix, false, new ArrayList<>());
     }
 
-    public static List<File> getFiles(File dir, final String pattern, File exclude) {
-        return getFilesRecurse(dir, Pattern.compile(pattern), exclude, false, new ArrayList<>());
+    public static List<File> getFilesRecurseUsingSuffix(File dir, final String suffix) {
+        return getFilesRecurseUsingSuffix(dir, suffix, true, new ArrayList<>());
     }
-    public static List<File> getFilesRecurse(File dir, final String pattern, File exclude) {
-        return getFilesRecurse(dir, Pattern.compile(pattern), exclude, true, new ArrayList<>());
-    }
-    private static List<File> getFilesRecurse(File dir,
-                                              Pattern pattern,
-                                              File exclude, boolean rec,
-                                              List<File> fileList) {
+
+    private static List<File> getFilesRecurseUsingSuffix(File dir, final String suffix,
+                                                        boolean rec, List<File> fileList) {
         File[] files = dir.listFiles();
         if (files != null) {
-            for (File file : dir.listFiles()) {
-                if (file.equals(exclude)) {
-                    continue;
-                }
+            int suffixLength = suffix.length();
+            for (File file : files) {
                 if (file.isDirectory() && rec) {
-                    getFilesRecurse(file, pattern, exclude, rec, fileList);
+                    getFilesRecurseUsingSuffix(file, suffix, rec, fileList);
                 } else {
-                    Matcher m = pattern.matcher(file.getName());
-                    if (m.matches()) {
+                    if (file.getName().endsWith(suffix) && file.getName().length() > suffixLength) {
                         fileList.add(file);
                     }
                 }
@@ -399,6 +389,21 @@ public final class FileUtils {
         return fileList;
     }
 
+    public static List<File> getFiles(File dir, final String pattern) {
+        List<File> fileList = new ArrayList<>();
+        File[] files = dir.listFiles();
+        if (files != null) {
+            Pattern p = Pattern.compile(pattern);
+            for (File file : files) {
+                Matcher m = p.matcher(file.getName());
+                if (m.matches()) {
+                    fileList.add(file);
+                }
+            }
+        }
+        return fileList;
+    }
+
     public static List<String> readLines(File file) throws Exception {
         if (!file.exists()) {
             return Collections.emptyList();
diff --git a/core/src/test/java/org/apache/cxf/helpers/FileUtilsTest.java b/core/src/test/java/org/apache/cxf/helpers/FileUtilsTest.java
index a4a1751..db6bfd6 100644
--- a/core/src/test/java/org/apache/cxf/helpers/FileUtilsTest.java
+++ b/core/src/test/java/org/apache/cxf/helpers/FileUtilsTest.java
@@ -19,6 +19,8 @@
 package org.apache.cxf.helpers;
 
 import java.io.File;
+import java.net.URISyntaxException;
+import java.net.URL;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -27,6 +29,7 @@ import java.util.Optional;
 
 import org.junit.Test;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 public class FileUtilsTest {
@@ -61,4 +64,18 @@ public class FileUtilsTest {
         List<String> lines = FileUtils.readLines(p.get().toFile());
         assertTrue(!lines.isEmpty());
     }
+
+    @Test
+    public void testGetFiles() throws URISyntaxException {
+        URL resource = FileUtilsTest.class.getResource("FileUtilsTest.class");
+        File directory = Paths.get(resource.toURI()).getParent().toFile();
+        assertTrue(directory.exists());
+
+        List<File> foundFiles = FileUtils.getFilesUsingSuffix(directory, ".class");
+        assertTrue(foundFiles.size() > 0);
+
+        List<File> foundFiles2 = FileUtils.getFiles(directory, ".*\\.class$");
+
+        assertEquals(foundFiles, foundFiles2);
+    }
 }
\ No newline at end of file
diff --git a/rt/frontend/simple/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java b/rt/frontend/simple/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java
index 8648c32..ba5356c 100644
--- a/rt/frontend/simple/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java
+++ b/rt/frontend/simple/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java
@@ -385,7 +385,7 @@ public class DynamicClientFactory {
             throw new RuntimeException(ex);
         }
 
-        List<File> srcFiles = FileUtils.getFilesRecurse(src, ".+\\.java$");
+        List<File> srcFiles = FileUtils.getFilesRecurseUsingSuffix(src, ".java");
         if (!srcFiles.isEmpty() && !compileJavaSrc(classPath.toString(), srcFiles, classes.toString())) {
             LOG.log(Level.SEVERE, new Message("COULD_NOT_COMPILE_SRC", LOG, wsdlUrl).toString());
         }
diff --git a/tools/common/src/main/java/org/apache/cxf/tools/common/ClassUtils.java b/tools/common/src/main/java/org/apache/cxf/tools/common/ClassUtils.java
index 4ea2c6f..4810615 100644
--- a/tools/common/src/main/java/org/apache/cxf/tools/common/ClassUtils.java
+++ b/tools/common/src/main/java/org/apache/cxf/tools/common/ClassUtils.java
@@ -110,10 +110,8 @@ public class ClassUtils {
                     // Those files can not be allocated into the ClassCollector
                     File jaxbRuntime = new File(path, "runtime");
                     if (jaxbRuntime.isDirectory() && jaxbRuntime.exists()) {
-                        List<File> files = FileUtils.getFiles(jaxbRuntime, ".+\\.java$");
-                        for (File f : files) {
-                            fileList.add(f.toString());
-                        }
+                        List<File> files = FileUtils.getFilesUsingSuffix(jaxbRuntime, ".java");
+                        files.forEach(f -> fileList.add(f.toString()));
                     }
                 }
             }
diff --git a/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java b/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java
index 592b856..f948a48 100644
--- a/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java
+++ b/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java
@@ -71,7 +71,7 @@ public class JAXRSContainerTest extends ProcessorTestBase {
         container.execute();
 
         assertNotNull(output.list());
-        List<File> files = FileUtils.getFilesRecurse(output, ".+\\.class" + "$");
+        List<File> files = FileUtils.getFilesRecurseUsingSuffix(output, ".class");
         assertEquals(3, files.size());
         assertTrue(checkContains(files, "application" + ".Resource.class"));
         assertTrue(checkContains(files, "custom" + ".TestCompositeObject.class"));
@@ -121,7 +121,7 @@ public class JAXRSContainerTest extends ProcessorTestBase {
 
         assertNotNull(output.list());
 
-        List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+        List<File> files = FileUtils.getFilesRecurseUsingSuffix(output, ".class");
         assertEquals(1, files.size());
     }
 
@@ -165,7 +165,7 @@ public class JAXRSContainerTest extends ProcessorTestBase {
 
         assertNotNull(output.list());
 
-        List<File> javaFiles = FileUtils.getFilesRecurse(output, ".+\\." + "java" + "$");
+        List<File> javaFiles = FileUtils.getFilesRecurseUsingSuffix(output, ".java");
         assertEquals(2, javaFiles.size());
         for (File f : javaFiles) {
             if (!f.getName().endsWith("Impl.java")) {
@@ -187,7 +187,7 @@ public class JAXRSContainerTest extends ProcessorTestBase {
             for (String className : cc.getServiceClassNames().values()) {
                 final Class<?> generatedClass = loader.loadClass(className);
                 for (Map.Entry<String, Class<?>[]> entry : methods.entrySet()) {
-                    Method m; 
+                    Method m;
                     try {
                         m = generatedClass.getMethod(entry.getKey(), String.class);
                     } catch (NoSuchMethodException e) {
@@ -252,11 +252,11 @@ public class JAXRSContainerTest extends ProcessorTestBase {
         container.execute();
 
         assertNotNull(output.list());
-        List<File> schemafiles = FileUtils.getFilesRecurse(output, ".+\\." + "java" + "$");
+        List<File> schemafiles = FileUtils.getFilesRecurseUsingSuffix(output, ".java");
         assertEquals(10, schemafiles.size());
         doVerifyTypesWithSuffix(schemafiles, "superbooks", "java");
-        
-        List<File> classfiles = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+
+        List<File> classfiles = FileUtils.getFilesRecurseUsingSuffix(output, ".class");
         assertEquals(10, classfiles.size());
         doVerifyTypesWithSuffix(classfiles, "superbooks", "class");
     }
@@ -320,7 +320,7 @@ public class JAXRSContainerTest extends ProcessorTestBase {
 
         assertNotNull(output.list());
 
-        List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+        List<File> files = FileUtils.getFilesRecurseUsingSuffix(output, ".class");
         assertEquals(8, files.size());
         assertTrue(checkContains(files, "org.apache.cxf.jaxrs.model.wadl" + ".BookStore.class"));
         assertTrue(checkContains(files, "org.apache.cxf.jaxrs.model.wadl" + ".PATCH.class"));
@@ -348,7 +348,7 @@ public class JAXRSContainerTest extends ProcessorTestBase {
 
         assertNotNull(output.list());
 
-        List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+        List<File> files = FileUtils.getFilesRecurseUsingSuffix(output, ".class");
         assertEquals(4, files.size());
         assertTrue(checkContains(files, "application" + ".BookstoreResource.class"));
         assertTrue(checkContains(files, "superbooks" + ".Book.class"));
@@ -376,7 +376,7 @@ public class JAXRSContainerTest extends ProcessorTestBase {
 
         assertNotNull(output.list());
 
-        List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+        List<File> files = FileUtils.getFilesRecurseUsingSuffix(output, ".class");
         assertEquals(1, files.size());
         assertTrue(checkContains(files, "application" + ".BookstoreResource.class"));
     }
@@ -395,7 +395,7 @@ public class JAXRSContainerTest extends ProcessorTestBase {
 
         assertNotNull(output.list());
 
-        List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+        List<File> files = FileUtils.getFilesRecurseUsingSuffix(output, ".class");
         assertEquals(2, files.size());
         assertTrue(checkContains(files, "application.Test1.class"));
         assertTrue(checkContains(files, "application.Test2.class"));
@@ -470,7 +470,7 @@ public class JAXRSContainerTest extends ProcessorTestBase {
 
         assertNotNull(output.list());
 
-        List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+        List<File> files = FileUtils.getFilesRecurseUsingSuffix(output, ".class");
         assertEquals(1, files.size());
         assertTrue(checkContains(files, "application.Resource.class"));
         @SuppressWarnings("resource")
@@ -519,7 +519,7 @@ public class JAXRSContainerTest extends ProcessorTestBase {
 
         assertNotNull(output.list());
 
-        List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+        List<File> files = FileUtils.getFilesRecurseUsingSuffix(output, ".class");
         assertEquals(4, files.size());
         assertTrue(checkContains(files, "application.Resource.class"));
         @SuppressWarnings("resource")
@@ -620,12 +620,12 @@ public class JAXRSContainerTest extends ProcessorTestBase {
 
         assertNotNull(output.list());
 
-        List<File> javaFiles = FileUtils.getFilesRecurse(output, ".+\\." + "java" + "$");
+        List<File> javaFiles = FileUtils.getFilesRecurseUsingSuffix(output, ".java");
         assertEquals(2, javaFiles.size());
         assertTrue(checkContains(javaFiles, "application.CustomResource.java"));
         assertTrue(checkContains(javaFiles, "application.Theid.java"));
 
-        List<File> classFiles = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+        List<File> classFiles = FileUtils.getFilesRecurseUsingSuffix(output, ".class");
         assertEquals(2, classFiles.size());
         assertTrue(checkContains(classFiles, "application.CustomResource.class"));
         assertTrue(checkContains(classFiles, "application.Theid.class"));
@@ -645,11 +645,11 @@ public class JAXRSContainerTest extends ProcessorTestBase {
 
         assertNotNull(output.list());
 
-        List<File> javaFiles = FileUtils.getFilesRecurse(output, ".+\\." + "java" + "$");
+        List<File> javaFiles = FileUtils.getFilesRecurseUsingSuffix(output, ".java");
         assertEquals(2, javaFiles.size());
         assertTrue(checkContains(javaFiles, "application.BookstoreResource.java"));
         assertTrue(checkContains(javaFiles, "application.BooksResource.java"));
-        List<File> classFiles = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+        List<File> classFiles = FileUtils.getFilesRecurseUsingSuffix(output, ".class");
         assertEquals(2, classFiles.size());
         assertTrue(checkContains(classFiles, "application.BookstoreResource.class"));
         assertTrue(checkContains(classFiles, "application.BooksResource.class"));
@@ -670,10 +670,10 @@ public class JAXRSContainerTest extends ProcessorTestBase {
 
         assertNotNull(output.list());
 
-        List<File> javaFiles = FileUtils.getFilesRecurse(output, ".+\\." + "java" + "$");
+        List<File> javaFiles = FileUtils.getFilesRecurseUsingSuffix(output, ".java");
         assertEquals(1, javaFiles.size());
         assertTrue(checkContains(javaFiles, "application.TestRsResource.java"));
-        List<File> classFiles = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+        List<File> classFiles = FileUtils.getFilesRecurseUsingSuffix(output, ".class");
         assertEquals(1, classFiles.size());
         assertTrue(checkContains(classFiles, "application.TestRsResource.class"));
     }
@@ -690,13 +690,13 @@ public class JAXRSContainerTest extends ProcessorTestBase {
         container.setContext(context);
         container.execute();
 
-        List<File> javaFiles = FileUtils.getFilesRecurse(output, ".+\\." + "java" + "$");
+        List<File> javaFiles = FileUtils.getFilesRecurseUsingSuffix(output, ".java");
         assertEquals(4, javaFiles.size());
         assertTrue(checkContains(javaFiles, "application.Resource.java"));
         assertTrue(checkContains(javaFiles, "com.example.test.ObjectFactory.java"));
         assertTrue(checkContains(javaFiles, "com.example.test.package-info.java"));
         assertTrue(checkContains(javaFiles, "com.example.test.TestCompositeObject.java"));
-        List<File> classFiles = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+        List<File> classFiles = FileUtils.getFilesRecurseUsingSuffix(output, ".class");
         assertEquals(4, classFiles.size());
         assertTrue(checkContains(classFiles, "application.Resource.class"));
         assertTrue(checkContains(classFiles, "com.example.test.ObjectFactory.class"));
@@ -722,11 +722,11 @@ public class JAXRSContainerTest extends ProcessorTestBase {
 
         assertNotNull(output.list());
 
-        List<File> javaFiles = FileUtils.getFilesRecurse(output, ".+\\." + "java" + "$");
+        List<File> javaFiles = FileUtils.getFilesRecurseUsingSuffix(output, ".java");
         assertEquals(1, javaFiles.size());
         assertTrue(checkContains(javaFiles, "application.CustomResource.java"));
 
-        List<File> classFiles = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+        List<File> classFiles = FileUtils.getFilesRecurseUsingSuffix(output, ".class");
         assertEquals(1, classFiles.size());
         assertTrue(checkContains(classFiles, "application.CustomResource.class"));
     }
@@ -835,7 +835,7 @@ public class JAXRSContainerTest extends ProcessorTestBase {
     private void verifyFiles(String ext, boolean subresourceExpected, boolean interfacesAndImpl,
                              String schemaPackage, String resourcePackage, int expectedCount,
                              boolean enumTypeExpected) {
-        List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + ext + "$");
+        List<File> files = FileUtils.getFilesRecurseUsingSuffix(output, "." + ext);
         int offset = enumTypeExpected ? 1 : 2;
         int size = interfacesAndImpl ? expectedCount : expectedCount - offset;
         if (!subresourceExpected) {
@@ -858,7 +858,7 @@ public class JAXRSContainerTest extends ProcessorTestBase {
     }
 
     private void verifyTypes(String schemaPackage, String ext, boolean enumTypeExpected) {
-        List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + ext + "$");
+        List<File> files = FileUtils.getFilesRecurseUsingSuffix(output, "." + ext);
         assertEquals(enumTypeExpected ? 6 : 5, files.size());
         doVerifyTypes(files, schemaPackage, ext);
     }
diff --git a/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/WADLToJavaTest.java b/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/WADLToJavaTest.java
index 25ab820..566ff01 100644
--- a/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/WADLToJavaTest.java
+++ b/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/WADLToJavaTest.java
@@ -135,7 +135,7 @@ public class WADLToJavaTest extends ProcessorTestBase {
 
     private void verifyFiles(String ext, boolean subresourceExpected, boolean interfacesAndImpl,
                              String schemaPackage, String resourcePackage) {
-        List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + ext + "$");
+        List<File> files = FileUtils.getFilesRecurseUsingSuffix(output, "." + ext);
         int size = interfacesAndImpl ? 11 : 10;
         if (!subresourceExpected) {
             size--;