From d3bdbdc533fcc5555c47b6c075700752b0bdbfac Mon Sep 17 00:00:00 2001 From: Geert Bevin Date: Thu, 16 Mar 2023 18:32:04 -0400 Subject: [PATCH] Added precompile operation tests and javadocs. Refactoring to all operations. --- .../main/java/rife/bld/DependencyScopes.java | 21 ++- lib/src/main/java/rife/bld/Project.java | 28 +--- .../rife/bld/operations/CleanOperation.java | 4 +- .../rife/bld/operations/CompileOperation.java | 20 +-- .../bld/operations/DownloadOperation.java | 8 +- .../rife/bld/operations/JarOperation.java | 20 +-- .../bld/operations/PrecompileOperation.java | 115 +++++++++++++--- .../rife/bld/operations/RunOperation.java | 8 +- .../rife/bld/operations/TestOperation.java | 12 +- .../rife/bld/operations/UberJarOperation.java | 8 +- .../rife/bld/operations/WarOperation.java | 12 +- lib/src/main/java/rife/tools/FileUtils.java | 22 ++- .../bld/operations/TestCleanOperation.java | 14 +- .../bld/operations/TestCompileOperation.java | 4 - .../operations/TestCreateBlankOperation.java | 25 +--- .../operations/TestCreateRife2Operation.java | 23 +--- .../bld/operations/TestDownloadOperation.java | 17 +-- .../rife/bld/operations/TestJarOperation.java | 7 +- .../operations/TestPrecompileOperation.java | 126 ++++++++++++++++++ 19 files changed, 328 insertions(+), 166 deletions(-) create mode 100644 lib/src/test/java/rife/bld/operations/TestPrecompileOperation.java diff --git a/lib/src/main/java/rife/bld/DependencyScopes.java b/lib/src/main/java/rife/bld/DependencyScopes.java index 91cabc01..f3b38cec 100644 --- a/lib/src/main/java/rife/bld/DependencyScopes.java +++ b/lib/src/main/java/rife/bld/DependencyScopes.java @@ -30,8 +30,25 @@ public class DependencyScopes extends LinkedHashMap { * @since 1.5 */ public DependencyScopes(DependencyScopes other) { - for (var dep : other.entrySet()) { - put(dep.getKey(), new DependencySet(dep.getValue())); + for (var entry : other.entrySet()) { + put(entry.getKey(), new DependencySet(entry.getValue())); + } + } + + /** + * Includes all the dependencies from another dependency scope map. + * + * @param other the other map to include dependencies from + * @since 1.5 + */ + public void include(DependencyScopes other) { + for (var entry : other.entrySet()) { + var dependencies = get(entry.getKey()); + if (dependencies == null) { + dependencies = new DependencySet(); + put(entry.getKey(), dependencies); + } + dependencies.addAll(entry.getValue()); } } diff --git a/lib/src/main/java/rife/bld/Project.java b/lib/src/main/java/rife/bld/Project.java index ee4bccb2..d5fc89be 100644 --- a/lib/src/main/java/rife/bld/Project.java +++ b/lib/src/main/java/rife/bld/Project.java @@ -160,26 +160,6 @@ public class Project extends BuildExecutor { return StringUtils.join(paths, File.pathSeparator); } - @SafeVarargs - public static List combineToAbsolutePaths(List... files) { - var result = new ArrayList(); - for (var list : files) { - for (var file : list) { - result.add(file.getAbsolutePath()); - } - } - return result; - } - - @SafeVarargs - public static List combineLists(List... lists) { - var result = new ArrayList(); - for (var list : lists) { - result.addAll(list); - } - return result; - } - /* * Project directories */ @@ -454,24 +434,24 @@ public class Project extends BuildExecutor { } public List compileMainClasspath() { - return Project.combineToAbsolutePaths(compileClasspathJars()); + return FileUtils.combineToAbsolutePaths(compileClasspathJars()); } public List compileTestClasspath() { - var paths = Project.combineToAbsolutePaths(compileClasspathJars(), testClasspathJars()); + var paths = FileUtils.combineToAbsolutePaths(compileClasspathJars(), testClasspathJars()); paths.add(buildMainDirectory().getAbsolutePath()); return paths; } public List runClasspath() { - var paths = Project.combineToAbsolutePaths(compileClasspathJars(), runtimeClasspathJars(), standaloneClasspathJars()); + var paths = FileUtils.combineToAbsolutePaths(compileClasspathJars(), runtimeClasspathJars(), standaloneClasspathJars()); paths.add(srcMainResourcesDirectory().getAbsolutePath()); paths.add(buildMainDirectory().getAbsolutePath()); return paths; } public List testClasspath() { - var paths = Project.combineToAbsolutePaths(compileClasspathJars(), runtimeClasspathJars(), standaloneClasspathJars(), testClasspathJars()); + var paths = FileUtils.combineToAbsolutePaths(compileClasspathJars(), runtimeClasspathJars(), standaloneClasspathJars(), testClasspathJars()); paths.add(srcMainResourcesDirectory().getAbsolutePath()); paths.add(buildMainDirectory().getAbsolutePath()); paths.add(buildTestDirectory().getAbsolutePath()); diff --git a/lib/src/main/java/rife/bld/operations/CleanOperation.java b/lib/src/main/java/rife/bld/operations/CleanOperation.java index 4be46b14..7fd5f168 100644 --- a/lib/src/main/java/rife/bld/operations/CleanOperation.java +++ b/lib/src/main/java/rife/bld/operations/CleanOperation.java @@ -18,7 +18,7 @@ import java.util.*; * @since 1.5 */ public class CleanOperation { - private List directories_ = new ArrayList<>(); + private final List directories_ = new ArrayList<>(); /** * Performs the clean operation. @@ -69,7 +69,7 @@ public class CleanOperation { * @since 1.5 */ public CleanOperation directories(List directories) { - directories_ = new ArrayList<>(directories); + directories_.addAll(directories); return this; } diff --git a/lib/src/main/java/rife/bld/operations/CompileOperation.java b/lib/src/main/java/rife/bld/operations/CompileOperation.java index e0f11d3c..738d19ca 100644 --- a/lib/src/main/java/rife/bld/operations/CompileOperation.java +++ b/lib/src/main/java/rife/bld/operations/CompileOperation.java @@ -20,11 +20,11 @@ import java.util.*; public class CompileOperation { private File buildMainDirectory_; private File buildTestDirectory_; - private List compileMainClasspath_ = new ArrayList<>(); - private List compileTestClasspath_ = new ArrayList<>(); - private List mainSourceFiles_ = new ArrayList<>(); - private List testSourceFiles_ = new ArrayList<>(); - private List compileOptions_ = new ArrayList<>(); + private final List compileMainClasspath_ = new ArrayList<>(); + private final List compileTestClasspath_ = new ArrayList<>(); + private final List mainSourceFiles_ = new ArrayList<>(); + private final List testSourceFiles_ = new ArrayList<>(); + private final List compileOptions_ = new ArrayList<>(); private final List> diagnostics_ = new ArrayList<>(); /** @@ -176,7 +176,7 @@ public class CompileOperation { * @since 1.5 */ public CompileOperation compileMainClasspath(List classpath) { - compileMainClasspath_ = new ArrayList<>(classpath); + compileMainClasspath_.addAll(classpath); return this; } @@ -190,7 +190,7 @@ public class CompileOperation { * @since 1.5 */ public CompileOperation compileTestClasspath(List classpath) { - compileTestClasspath_ = new ArrayList<>(classpath); + compileTestClasspath_.addAll(classpath); return this; } @@ -204,7 +204,7 @@ public class CompileOperation { * @since 1.5 */ public CompileOperation mainSourceFiles(List files) { - mainSourceFiles_ = new ArrayList<>(files); + mainSourceFiles_.addAll(files); return this; } @@ -218,7 +218,7 @@ public class CompileOperation { * @since 1.5 */ public CompileOperation testSourceFiles(List files) { - testSourceFiles_ = new ArrayList<>(files); + testSourceFiles_.addAll(files); return this; } @@ -232,7 +232,7 @@ public class CompileOperation { * @since 1.5 */ public CompileOperation compileOptions(List options) { - compileOptions_ = new ArrayList<>(options); + compileOptions_.addAll(options); return this; } diff --git a/lib/src/main/java/rife/bld/operations/DownloadOperation.java b/lib/src/main/java/rife/bld/operations/DownloadOperation.java index 3948750d..2075cfc5 100644 --- a/lib/src/main/java/rife/bld/operations/DownloadOperation.java +++ b/lib/src/main/java/rife/bld/operations/DownloadOperation.java @@ -22,8 +22,8 @@ import java.util.List; * @since 1.5 */ public class DownloadOperation { - private List repositories_ = new ArrayList<>(); - private DependencyScopes dependencies_ = new DependencyScopes(); + private final List repositories_ = new ArrayList<>(); + private final DependencyScopes dependencies_ = new DependencyScopes(); private File libCompileDirectory_; private File libRuntimeDirectory_; private File libStandaloneDirectory_; @@ -140,7 +140,7 @@ public class DownloadOperation { * @since 1.5 */ public DownloadOperation repositories(List repositories) { - repositories_ = new ArrayList<>(repositories); + repositories_.addAll(repositories); return this; } @@ -152,7 +152,7 @@ public class DownloadOperation { * @since 1.5 */ public DownloadOperation dependencies(DependencyScopes dependencies) { - dependencies_ = new DependencyScopes(dependencies); + dependencies_.include(dependencies); return this; } diff --git a/lib/src/main/java/rife/bld/operations/JarOperation.java b/lib/src/main/java/rife/bld/operations/JarOperation.java index 8d185d45..fba5a089 100644 --- a/lib/src/main/java/rife/bld/operations/JarOperation.java +++ b/lib/src/main/java/rife/bld/operations/JarOperation.java @@ -20,13 +20,13 @@ import java.util.regex.Pattern; * @since 1.5 */ public class JarOperation { - private Map manifestAttributes_ = new HashMap<>(); - private List sourceDirectories_ = new ArrayList<>(); - private List sourceFiles_ = new ArrayList<>(); + private final Map manifestAttributes_ = new HashMap<>(); + private final List sourceDirectories_ = new ArrayList<>(); + private final List sourceFiles_ = new ArrayList<>(); private File destinationDirectory_; private String destinationFileName_; - private List included_ = new ArrayList<>(); - private List excluded_ = new ArrayList<>(); + private final List included_ = new ArrayList<>(); + private final List excluded_ = new ArrayList<>(); private final byte[] buffer_ = new byte[1024]; @@ -135,7 +135,7 @@ public class JarOperation { * @since 1.5 */ public JarOperation manifestAttributes(Map attributes) { - manifestAttributes_ = new HashMap<>(attributes); + manifestAttributes_.putAll(attributes); return this; } @@ -147,7 +147,7 @@ public class JarOperation { * @since 1.5 */ public JarOperation sourceDirectories(List sources) { - sourceDirectories_ = new ArrayList<>(sources); + sourceDirectories_.addAll(sources); return this; } @@ -159,7 +159,7 @@ public class JarOperation { * @since 1.5 */ public JarOperation sourceFiles(List sources) { - sourceFiles_ = new ArrayList<>(sources); + sourceFiles_.addAll(sources); return this; } @@ -196,7 +196,7 @@ public class JarOperation { * @since 1.5 */ public JarOperation included(List included) { - included_ = new ArrayList<>(included); + included_.addAll(included); return this; } @@ -209,7 +209,7 @@ public class JarOperation { * @since 1.5 */ public JarOperation excluded(List excluded) { - excluded_ = new ArrayList<>(excluded); + excluded_.addAll(excluded); return this; } diff --git a/lib/src/main/java/rife/bld/operations/PrecompileOperation.java b/lib/src/main/java/rife/bld/operations/PrecompileOperation.java index 68aa5be1..87c8b3bf 100644 --- a/lib/src/main/java/rife/bld/operations/PrecompileOperation.java +++ b/lib/src/main/java/rife/bld/operations/PrecompileOperation.java @@ -7,23 +7,41 @@ package rife.bld.operations; import rife.bld.Project; import rife.template.TemplateDeployer; import rife.template.TemplateFactory; +import rife.tools.FileUtils; import java.io.File; import java.util.ArrayList; import java.util.List; +/** + * Pre-compiles RIFE2 templates. + * + * @author Geert Bevin (gbevin[remove] at uwyn dot com) + * @since 1.5 + */ public class PrecompileOperation { - private List precompiledTemplateTypes_ = new ArrayList<>(); - private File srcMainResourcesTemplatesDirectory_; - private File buildTemplatesDirectory_; + private final List templateTypes_ = new ArrayList<>(); + private final List sourceDirectories_ = new ArrayList<>(); + private File destinationDirectory_; + /** + * Performs the precompile operation. + * + * @since 1.5 + */ public void execute() { executeCreateTemplateDeployer().execute(); } + /** + * Part of the {@link #execute} operation, gets the template factories for + * the registered template types. + * + * @since 1.5 + */ public List executeGetTemplateFactories() { var template_factories = new ArrayList(); - for (var type : precompiledTemplateTypes()) { + for (var type : templateTypes()) { var factory = TemplateFactory.getFactory(type.identifier()); if (factory == null) { System.err.println("ERROR: unknown template type '" + type.identifier() + "'/"); @@ -35,44 +53,99 @@ public class PrecompileOperation { return template_factories; } + /** + * Part of the {@link #execute} operation, creates the {@code TemplateDeployer} + * that will precompile the templates. + * + * @since 1.5 + */ public TemplateDeployer executeCreateTemplateDeployer() { return new TemplateDeployer() .verbose(true) - .directoryPaths(List.of(srcMainResourcesTemplatesDirectory().getAbsolutePath())) - .generationPath(buildTemplatesDirectory().getAbsolutePath()) + .directoryPaths(FileUtils.combineToAbsolutePaths(sourceDirectories())) + .generationPath(destinationDirectory().getAbsolutePath()) .templateFactories(executeGetTemplateFactories()); } + /** + * Configures a precompile operation from a {@link Project}. + * + * @param project the project to configure the precompile operation from + * @since 1.5 + */ public PrecompileOperation fromProject(Project project) { - return precompiledTemplateTypes(project.precompiledTemplateTypes()) - .srcMainResourcesTemplatesDirectory(project.srcMainResourcesTemplatesDirectory()) - .buildTemplatesDirectory(project.buildTemplatesDirectory()); + return templateTypes(project.precompiledTemplateTypes()) + .sourceDirectories(List.of(project.srcMainResourcesTemplatesDirectory())) + .destinationDirectory(project.buildTemplatesDirectory()); } - public PrecompileOperation precompiledTemplateTypes(List types) { - precompiledTemplateTypes_ = new ArrayList<>(types); + /** + * Provides the template types that will be pre-compiled. + * + * @param types the pre-compiled template types + * @return this operation instance + * @since 1.5 + */ + public PrecompileOperation templateTypes(List types) { + templateTypes_.addAll(types); return this; } - public PrecompileOperation srcMainResourcesTemplatesDirectory(File directory) { - srcMainResourcesTemplatesDirectory_ = directory; + /** + * Provides the source directories that will be used for the template pre-compilation. + * + * @param sources the source directories + * @return this operation instance + * @since 1.5 + */ + public PrecompileOperation sourceDirectories(List sources) { + sourceDirectories_.addAll(sources); return this; } - public PrecompileOperation buildTemplatesDirectory(File directory) { - buildTemplatesDirectory_ = directory; + /** + * Provides the destination directory in which the pre-compiled templates will be stored. + * + * @param directory the pre-compilation destination directory + * @return this operation instance + * @since 1.5 + */ + public PrecompileOperation destinationDirectory(File directory) { + destinationDirectory_ = directory; return this; } - public List precompiledTemplateTypes() { - return precompiledTemplateTypes_; + /** + * Retrieves the template types that will be pre-compiled. + *

+ * This is a modifiable list that can be retrieved and changed. + * + * @return the pre-compiled template types + * @since 1.5 + */ + public List templateTypes() { + return templateTypes_; } - public File srcMainResourcesTemplatesDirectory() { - return srcMainResourcesTemplatesDirectory_; + /** + * Retrieves the source directories that will be used for the template pre-compilation. + *

+ * This is a modifiable list that can be retrieved and changed. + * + * @return the source directories + * @since 1.5 + */ + public List sourceDirectories() { + return sourceDirectories_; } - public File buildTemplatesDirectory() { - return buildTemplatesDirectory_; + /** + * Provides the destination directory in which the pre-compiled templates will be stored. + * + * @return the pre-compilation destination directory + * @since 1.5 + */ + public File destinationDirectory() { + return destinationDirectory_; } } diff --git a/lib/src/main/java/rife/bld/operations/RunOperation.java b/lib/src/main/java/rife/bld/operations/RunOperation.java index 2515bf01..09fcb9f7 100644 --- a/lib/src/main/java/rife/bld/operations/RunOperation.java +++ b/lib/src/main/java/rife/bld/operations/RunOperation.java @@ -16,8 +16,8 @@ import java.util.function.Consumer; public class RunOperation { private File workDirectory_ = new File(System.getProperty("user.dir")); private String javaTool_; - private List runJavaOptions_ = new ArrayList<>(); - private List runClasspath_ = new ArrayList<>(); + private final List runJavaOptions_ = new ArrayList<>(); + private final List runClasspath_ = new ArrayList<>(); private String mainClass_; private Consumer runOutputConsumer_; private Consumer runErrorConsumer_; @@ -97,12 +97,12 @@ public class RunOperation { } public RunOperation runJavaOptions(List options) { - runJavaOptions_ = new ArrayList<>(options); + runJavaOptions_.addAll(options); return this; } public RunOperation runClasspath(List classpath) { - runClasspath_ = new ArrayList<>(classpath); + runClasspath_.addAll(classpath); return this; } diff --git a/lib/src/main/java/rife/bld/operations/TestOperation.java b/lib/src/main/java/rife/bld/operations/TestOperation.java index c00433ad..5632ed30 100644 --- a/lib/src/main/java/rife/bld/operations/TestOperation.java +++ b/lib/src/main/java/rife/bld/operations/TestOperation.java @@ -13,10 +13,10 @@ import java.util.function.Consumer; public class TestOperation { private String javaTool_; - private List testJavaOptions_ = new ArrayList<>(); - private List testClasspath_ = new ArrayList<>(); + private final List testJavaOptions_ = new ArrayList<>(); + private final List testClasspath_ = new ArrayList<>(); private String testToolMainClass_; - private List testToolOptions_ = new ArrayList<>(); + private final List testToolOptions_ = new ArrayList<>(); private Consumer testOutputConsumer_; private Consumer testErrorConsumer_; private Process process_; @@ -82,12 +82,12 @@ public class TestOperation { } public TestOperation testJavaOptions(List options) { - testJavaOptions_ = new ArrayList<>(options); + testJavaOptions_.addAll(options); return this; } public TestOperation testClasspath(List classpath) { - testClasspath_ = new ArrayList<>(classpath); + testClasspath_.addAll(classpath); return this; } @@ -97,7 +97,7 @@ public class TestOperation { } public TestOperation testToolOptions(List options) { - testToolOptions_ = new ArrayList<>(options); + testToolOptions_.addAll(options); return this; } diff --git a/lib/src/main/java/rife/bld/operations/UberJarOperation.java b/lib/src/main/java/rife/bld/operations/UberJarOperation.java index 02153f5c..ff882215 100644 --- a/lib/src/main/java/rife/bld/operations/UberJarOperation.java +++ b/lib/src/main/java/rife/bld/operations/UberJarOperation.java @@ -14,8 +14,8 @@ import java.util.*; import java.util.jar.Attributes; public class UberJarOperation { - private List jarSourceFiles_ = new ArrayList<>(); - private List resourceSourceDirectories_ = new ArrayList<>(); + private final List jarSourceFiles_ = new ArrayList<>(); + private final List resourceSourceDirectories_ = new ArrayList<>(); private File destinationDirectory_; private String destinationFileName_; private String mainClass_; @@ -77,7 +77,7 @@ public class UberJarOperation { } public UberJarOperation jarSourceFiles(List files) { - jarSourceFiles_ = new ArrayList<>(files); + jarSourceFiles_.addAll(files); return this; } @@ -86,7 +86,7 @@ public class UberJarOperation { } public UberJarOperation resourceSourceDirectories(List directories) { - resourceSourceDirectories_ = new ArrayList<>(directories); + resourceSourceDirectories_.addAll(directories); return this; } diff --git a/lib/src/main/java/rife/bld/operations/WarOperation.java b/lib/src/main/java/rife/bld/operations/WarOperation.java index 95050c24..392568f3 100644 --- a/lib/src/main/java/rife/bld/operations/WarOperation.java +++ b/lib/src/main/java/rife/bld/operations/WarOperation.java @@ -13,9 +13,9 @@ import java.nio.file.*; import java.util.*; public class WarOperation { - private List libSourceDirectories_ = new ArrayList<>(); - private List classesSourceDirectories_ = new ArrayList<>(); - private List jarSourceFiles_ = new ArrayList<>(); + private final List libSourceDirectories_ = new ArrayList<>(); + private final List classesSourceDirectories_ = new ArrayList<>(); + private final List jarSourceFiles_ = new ArrayList<>(); private File webappDirectory_; private File webXmlFile_; private File destinationDirectory_; @@ -105,7 +105,7 @@ public class WarOperation { } public WarOperation libSourceDirectories(List sources) { - libSourceDirectories_ = new ArrayList<>(sources); + libSourceDirectories_.addAll(sources); return this; } @@ -114,7 +114,7 @@ public class WarOperation { } public WarOperation classesSourceDirectories(List sources) { - classesSourceDirectories_ = new ArrayList<>(sources); + classesSourceDirectories_.addAll(sources); return this; } @@ -123,7 +123,7 @@ public class WarOperation { } public WarOperation jarSourceFiles(List files) { - jarSourceFiles_ = new ArrayList<>(files); + jarSourceFiles_.addAll(files); return this; } diff --git a/lib/src/main/java/rife/tools/FileUtils.java b/lib/src/main/java/rife/tools/FileUtils.java index bc0504ec..b2270dec 100644 --- a/lib/src/main/java/rife/tools/FileUtils.java +++ b/lib/src/main/java/rife/tools/FileUtils.java @@ -8,13 +8,13 @@ import rife.tools.exceptions.FileUtilsErrorException; import java.io.*; import java.net.URL; -import java.net.URLConnection; import java.nio.file.*; import java.util.ArrayList; import java.util.Date; import java.util.Enumeration; import java.util.List; import java.util.regex.Pattern; +import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; @@ -593,4 +593,24 @@ public final class FileUtils { return ext; } + + @SafeVarargs + public static List combineToAbsolutePaths(List... files) { + var result = new ArrayList(); + for (var list : files) { + for (var file : list) { + result.add(file.getAbsolutePath()); + } + } + return result; + } + + public static String generateDirectoryListing(File directory) + throws IOException { + return Files.walk(Path.of(directory.getAbsolutePath())) + .map(path -> path.toAbsolutePath().toString().substring(directory.getAbsolutePath().length())) + .filter(s -> !s.isEmpty()) + .sorted() + .collect(Collectors.joining(System.lineSeparator())); + } } diff --git a/lib/src/test/java/rife/bld/operations/TestCleanOperation.java b/lib/src/test/java/rife/bld/operations/TestCleanOperation.java index b39d7a00..1f105707 100644 --- a/lib/src/test/java/rife/bld/operations/TestCleanOperation.java +++ b/lib/src/test/java/rife/bld/operations/TestCleanOperation.java @@ -10,9 +10,7 @@ import rife.tools.FileUtils; import java.io.File; import java.nio.file.Files; -import java.nio.file.Path; import java.util.List; -import java.util.stream.Collectors; import static org.junit.jupiter.api.Assertions.*; @@ -117,11 +115,7 @@ public class TestCleanOperation { /src/main/resources/templates /src/test /src/test/java""", - Files.walk(Path.of(tmp.getAbsolutePath())) - .map(path -> path.toAbsolutePath().toString().substring(tmp.getAbsolutePath().length())) - .filter(s -> !s.isEmpty()) - .sorted() - .collect(Collectors.joining("\n"))); + FileUtils.generateDirectoryListing(tmp)); new CleanOperation().fromProject(project).execute(); assertEquals(""" @@ -141,11 +135,7 @@ public class TestCleanOperation { /src/main/resources/templates /src/test /src/test/java""", - Files.walk(Path.of(tmp.getAbsolutePath())) - .map(path -> path.toAbsolutePath().toString().substring(tmp.getAbsolutePath().length())) - .filter(s -> !s.isEmpty()) - .sorted() - .collect(Collectors.joining("\n"))); + FileUtils.generateDirectoryListing(tmp)); } finally { FileUtils.deleteDirectory(tmp); } diff --git a/lib/src/test/java/rife/bld/operations/TestCompileOperation.java b/lib/src/test/java/rife/bld/operations/TestCompileOperation.java index 8c74921b..6749d299 100644 --- a/lib/src/test/java/rife/bld/operations/TestCompileOperation.java +++ b/lib/src/test/java/rife/bld/operations/TestCompileOperation.java @@ -5,17 +5,13 @@ package rife.bld.operations; import org.junit.jupiter.api.Test; -import rife.bld.Project; -import rife.bld.WebProject; import rife.tools.FileUtils; import javax.tools.DiagnosticCollector; import javax.tools.JavaFileObject; import java.io.File; import java.nio.file.Files; -import java.nio.file.Path; import java.util.List; -import java.util.stream.Collectors; import static org.junit.jupiter.api.Assertions.*; diff --git a/lib/src/test/java/rife/bld/operations/TestCreateBlankOperation.java b/lib/src/test/java/rife/bld/operations/TestCreateBlankOperation.java index 40b93aa8..30db6de5 100644 --- a/lib/src/test/java/rife/bld/operations/TestCreateBlankOperation.java +++ b/lib/src/test/java/rife/bld/operations/TestCreateBlankOperation.java @@ -6,17 +6,10 @@ package rife.bld.operations; import org.junit.jupiter.api.Test; import rife.tools.FileUtils; -import rife.tools.exceptions.FileUtilsErrorException; import javax.tools.DiagnosticCollector; import javax.tools.JavaFileObject; -import java.io.File; -import java.net.URL; import java.nio.file.Files; -import java.nio.file.Path; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; import static org.junit.jupiter.api.Assertions.*; @@ -120,11 +113,7 @@ public class TestCreateBlankOperation { /myapp/src/test/java/com /myapp/src/test/java/com/example /myapp/src/test/java/com/example/MyappTest.java""", - Files.walk(Path.of(tmp.getAbsolutePath())) - .map(path -> path.toAbsolutePath().toString().substring(tmp.getAbsolutePath().length())) - .filter(s -> !s.isEmpty()) - .sorted() - .collect(Collectors.joining("\n"))); + FileUtils.generateDirectoryListing(tmp)); var compile_operation = new CompileOperation().fromProject(create_operation.project()); compile_operation.execute(); @@ -188,11 +177,7 @@ public class TestCreateBlankOperation { /myapp/src/test/java/com /myapp/src/test/java/com/example /myapp/src/test/java/com/example/MyappTest.java""", - Files.walk(Path.of(tmp.getAbsolutePath())) - .map(path -> path.toAbsolutePath().toString().substring(tmp.getAbsolutePath().length())) - .filter(s -> !s.isEmpty()) - .sorted() - .collect(Collectors.joining("\n"))); + FileUtils.generateDirectoryListing(tmp)); final var run_operation = new RunOperation().fromProject(create_operation.project()); final String[] check_result = new String[1]; @@ -257,11 +242,7 @@ public class TestCreateBlankOperation { /yourthing/src/test/java/org /yourthing/src/test/java/org/stuff /yourthing/src/test/java/org/stuff/YourthingTest.java""", - Files.walk(Path.of(tmp.getAbsolutePath())) - .map(path -> path.toAbsolutePath().toString().substring(tmp.getAbsolutePath().length())) - .filter(s -> !s.isEmpty()) - .sorted() - .collect(Collectors.joining("\n"))); + FileUtils.generateDirectoryListing(tmp)); var compile_operation = new CompileOperation() { public void executeProcessDiagnostics(DiagnosticCollector diagnostics) { diff --git a/lib/src/test/java/rife/bld/operations/TestCreateRife2Operation.java b/lib/src/test/java/rife/bld/operations/TestCreateRife2Operation.java index ce7fa4cd..e658ac31 100644 --- a/lib/src/test/java/rife/bld/operations/TestCreateRife2Operation.java +++ b/lib/src/test/java/rife/bld/operations/TestCreateRife2Operation.java @@ -12,9 +12,8 @@ import javax.tools.DiagnosticCollector; import javax.tools.JavaFileObject; import java.net.URL; import java.nio.file.Files; -import java.nio.file.Path; -import java.util.concurrent.*; -import java.util.stream.Collectors; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; import static org.junit.jupiter.api.Assertions.*; @@ -137,11 +136,7 @@ public class TestCreateRife2Operation { /myapp/src/test/java/com /myapp/src/test/java/com/example /myapp/src/test/java/com/example/MyappTest.java""", - Files.walk(Path.of(tmp.getAbsolutePath())) - .map(path -> path.toAbsolutePath().toString().substring(tmp.getAbsolutePath().length())) - .filter(s -> !s.isEmpty()) - .sorted() - .collect(Collectors.joining("\n"))); + FileUtils.generateDirectoryListing(tmp)); var compile_operation = new CompileOperation().fromProject(create_operation.project()); compile_operation.execute(); @@ -225,11 +220,7 @@ public class TestCreateRife2Operation { /myapp/src/test/java/com /myapp/src/test/java/com/example /myapp/src/test/java/com/example/MyappTest.java""", - Files.walk(Path.of(tmp.getAbsolutePath())) - .map(path -> path.toAbsolutePath().toString().substring(tmp.getAbsolutePath().length())) - .filter(s -> !s.isEmpty()) - .sorted() - .collect(Collectors.joining("\n"))); + FileUtils.generateDirectoryListing(tmp)); final var run_operation = new RunOperation().fromProject(create_operation.project()); final var executor = Executors.newSingleThreadScheduledExecutor(); @@ -311,11 +302,7 @@ public class TestCreateRife2Operation { /yourthing/src/test/java/org /yourthing/src/test/java/org/stuff /yourthing/src/test/java/org/stuff/YourthingTest.java""", - Files.walk(Path.of(tmp.getAbsolutePath())) - .map(path -> path.toAbsolutePath().toString().substring(tmp.getAbsolutePath().length())) - .filter(s -> !s.isEmpty()) - .sorted() - .collect(Collectors.joining("\n"))); + FileUtils.generateDirectoryListing(tmp)); var compile_operation = new CompileOperation() { public void executeProcessDiagnostics(DiagnosticCollector diagnostics) { diff --git a/lib/src/test/java/rife/bld/operations/TestDownloadOperation.java b/lib/src/test/java/rife/bld/operations/TestDownloadOperation.java index ad985078..d6dbdb57 100644 --- a/lib/src/test/java/rife/bld/operations/TestDownloadOperation.java +++ b/lib/src/test/java/rife/bld/operations/TestDownloadOperation.java @@ -5,15 +5,14 @@ package rife.bld.operations; import org.junit.jupiter.api.Test; -import rife.bld.*; +import rife.bld.DependencyScopes; +import rife.bld.WebProject; import rife.bld.dependencies.*; import rife.tools.FileUtils; import java.io.File; import java.nio.file.Files; -import java.nio.file.Path; import java.util.List; -import java.util.stream.Collectors; import static org.junit.jupiter.api.Assertions.*; @@ -121,11 +120,7 @@ public class TestDownloadOperation { /dir4/httpcore5-5.2.jar /dir4/httpcore5-h2-5.2.jar /dir4/slf4j-api-1.7.36.jar""", - Files.walk(Path.of(tmp.getAbsolutePath())) - .map(path -> path.toAbsolutePath().toString().substring(tmp.getAbsolutePath().length())) - .filter(s -> !s.isEmpty()) - .sorted() - .collect(Collectors.joining("\n"))); + FileUtils.generateDirectoryListing(tmp)); } finally { FileUtils.deleteDirectory(tmp); } @@ -179,11 +174,7 @@ public class TestDownloadOperation { /src/main/resources/templates /src/test /src/test/java""", - Files.walk(Path.of(tmp.getAbsolutePath())) - .map(path -> path.toAbsolutePath().toString().substring(tmp.getAbsolutePath().length())) - .filter(s -> !s.isEmpty()) - .sorted() - .collect(Collectors.joining("\n"))); + FileUtils.generateDirectoryListing(tmp)); } finally { FileUtils.deleteDirectory(tmp); } diff --git a/lib/src/test/java/rife/bld/operations/TestJarOperation.java b/lib/src/test/java/rife/bld/operations/TestJarOperation.java index 07f2eed4..a5cb0b7a 100644 --- a/lib/src/test/java/rife/bld/operations/TestJarOperation.java +++ b/lib/src/test/java/rife/bld/operations/TestJarOperation.java @@ -10,8 +10,10 @@ import rife.tools.FileUtils; import java.io.File; import java.nio.file.Files; -import java.util.*; -import java.util.jar.*; +import java.util.List; +import java.util.Map; +import java.util.jar.Attributes; +import java.util.jar.JarFile; import java.util.regex.Pattern; import static org.junit.jupiter.api.Assertions.*; @@ -151,7 +153,6 @@ public class TestJarOperation { } } - @Test void testFromProject() throws Exception { diff --git a/lib/src/test/java/rife/bld/operations/TestPrecompileOperation.java b/lib/src/test/java/rife/bld/operations/TestPrecompileOperation.java new file mode 100644 index 00000000..7583f609 --- /dev/null +++ b/lib/src/test/java/rife/bld/operations/TestPrecompileOperation.java @@ -0,0 +1,126 @@ +/* + * Copyright 2001-2023 Geert Bevin (gbevin[remove] at uwyn dot com) + * Licensed under the Apache License, Version 2.0 (the "License") + */ +package rife.bld.operations; + +import org.junit.jupiter.api.Test; +import rife.tools.FileUtils; + +import java.io.File; +import java.nio.file.Files; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +public class TestPrecompileOperation { + @Test + void testInstantiation() { + var operation = new PrecompileOperation(); + assertTrue(operation.templateTypes().isEmpty()); + assertTrue(operation.sourceDirectories().isEmpty()); + assertNull(operation.destinationDirectory()); + } + + @Test + void testPopulation() { + var source_directory1 = new File("sourceDirectory1"); + var source_directory2 = new File("sourceDirectory2"); + var destination_directory = new File("destinationDirectory"); + + var operation1 = new PrecompileOperation() + .templateTypes(List.of(TemplateType.HTML, TemplateType.JSON)) + .sourceDirectories(List.of(source_directory1, source_directory2)) + .destinationDirectory(destination_directory); + + assertTrue(operation1.templateTypes().contains(TemplateType.HTML)); + assertTrue(operation1.templateTypes().contains(TemplateType.JSON)); + assertTrue(operation1.sourceDirectories().contains(source_directory1)); + assertTrue(operation1.sourceDirectories().contains(source_directory2)); + assertEquals(destination_directory, operation1.destinationDirectory()); + + var operation2 = new PrecompileOperation() + .destinationDirectory(destination_directory); + operation2.templateTypes().add(TemplateType.HTML); + operation2.templateTypes().add(TemplateType.JSON); + operation2.sourceDirectories().add(source_directory1); + operation2.sourceDirectories().add(source_directory2); + + assertTrue(operation2.templateTypes().contains(TemplateType.HTML)); + assertTrue(operation2.templateTypes().contains(TemplateType.JSON)); + assertTrue(operation2.sourceDirectories().contains(source_directory1)); + assertTrue(operation2.sourceDirectories().contains(source_directory2)); + assertEquals(destination_directory, operation2.destinationDirectory()); + } + + @Test + void testExecute() + throws Exception { + var tmp = Files.createTempDirectory("test").toFile(); + try { + var source1 = new File(tmp, "source1"); + var source2 = new File(tmp, "source2"); + var destination = new File(tmp, "destination"); + source1.mkdirs(); + source2.mkdirs(); + + FileUtils.writeString(""" +

+ """, new File(source1, "source1a.html")); + FileUtils.writeString(""" + { + "test1b": "{{v test1b/}}" + } + """, new File(source1, "source1b.json")); + FileUtils.writeString(""" +
+ """, new File(source2, "source2.html")); + + var precompile_operation = new PrecompileOperation() + .templateTypes(List.of(TemplateType.HTML, TemplateType.JSON)) + .sourceDirectories(List.of(source1, source2)) + .destinationDirectory(destination); + precompile_operation.execute(); + + assertEquals(""" + /rife + /rife/template + /rife/template/html + /rife/template/html/source1a.class + /rife/template/html/source2.class + /rife/template/json + /rife/template/json/source1b.class""", + FileUtils.generateDirectoryListing(destination)); + } finally { + FileUtils.deleteDirectory(tmp); + } + } + + @Test + void testFromProject() + throws Exception { + var tmp = Files.createTempDirectory("test").toFile(); + try { + var create_operation = new CreateRife2Operation() + .workDirectory(tmp) + .packageName("tst") + .projectName("app") + .downloadDependencies(true); + create_operation.execute(); + + var precompile_operation = new PrecompileOperation() + .templateTypes(List.of(TemplateType.HTML)) + .fromProject(create_operation.project()); + precompile_operation.execute(); + + assertEquals(""" + /rife + /rife/template + /rife/template/html + /rife/template/html/hello.class""", + FileUtils.generateDirectoryListing(precompile_operation.destinationDirectory())); + } finally { + FileUtils.deleteDirectory(tmp); + } + } +}