From 5f142c9a0dded279ff4171314521a3365900c1db Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Wed, 3 Jan 2018 20:25:21 +0000 Subject: [PATCH] Remove plugin module - replaced by a tile from kemitix-maven-tiles --- plugin/pom.xml | 74 ------- .../ruleset/plugin/CheckConfiguration.java | 53 ----- .../checkstyle/ruleset/plugin/CheckMojo.java | 99 ---------- .../ruleset/plugin/CheckstyleExecutor.java | 51 ----- .../plugin/DefaultCheckstyleExecutor.java | 186 ------------------ .../ruleset/plugin/DefaultPluginExecutor.java | 79 -------- .../ruleset/plugin/PluginExecutor.java | 114 ----------- .../ruleset/plugin/package-info.java | 22 --- .../plugin/CheckConfigurationTest.java | 26 --- .../ruleset/plugin/CheckMojoTest.java | 80 -------- .../plugin/DefaultCheckstyleExecutorTest.java | 161 --------------- .../plugin/DefaultPluginExecutorTest.java | 177 ----------------- pom.xml | 1 - 13 files changed, 1123 deletions(-) delete mode 100644 plugin/pom.xml delete mode 100644 plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfiguration.java delete mode 100644 plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojo.java delete mode 100644 plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckstyleExecutor.java delete mode 100644 plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutor.java delete mode 100644 plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutor.java delete mode 100644 plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/PluginExecutor.java delete mode 100644 plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/package-info.java delete mode 100644 plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfigurationTest.java delete mode 100644 plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojoTest.java delete mode 100644 plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutorTest.java delete mode 100644 plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutorTest.java diff --git a/plugin/pom.xml b/plugin/pom.xml deleted file mode 100644 index 78fc434..0000000 --- a/plugin/pom.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - 4.0.0 - - - net.kemitix - kemitix-checkstyle-ruleset-parent - 3.4.0-SNAPSHOT - - - kemitix-checkstyle-ruleset-maven-plugin - maven-plugin - Kemitix Checkstyle :: Ruleset :: Plugin - Checkstyle configuration using the Kemitix Checkstyle Ruleset - - - 3.5.0 - 3.5 - 3.5 - 2.3.0 - 1.0.0 - - - - - org.apache.maven - maven-plugin-api - ${maven.version} - - - org.apache.maven - maven-core - ${maven.version} - - - org.apache.maven.plugin-tools - maven-plugin-annotations - ${maven-plugin-annotations.version} - provided - - - org.twdata.maven - mojo-executor - ${mojo-executor.version} - - - me.andrz - map-builder - ${map-builder.version} - - - org.assertj - assertj-core - test - - - org.mockito - mockito-core - test - - - - - - - org.apache.maven.plugins - maven-plugin-plugin - ${maven-plugin-plugin.version} - - - - diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfiguration.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfiguration.java deleted file mode 100644 index 32572db..0000000 --- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfiguration.java +++ /dev/null @@ -1,53 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2017 Paul Campbell - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software - * and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies - * or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE - * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -package net.kemitix.checkstyle.ruleset.plugin; - -import lombok.Builder; -import lombok.Getter; -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.execution.MavenSession; -import org.apache.maven.plugin.BuildPluginManager; -import org.apache.maven.project.MavenProject; - -/** - * Configuration for performing a Checkstyle Check. - * - * @author Paul Campbell (pcampbell@kemitix.net) - */ -@Getter -@Builder -class CheckConfiguration { - - private MavenProject mavenProject; - - private MavenSession mavenSession; - - private ArtifactRepository artifactRepository; - - private BuildPluginManager pluginManager; - - private String rulesetVersion; - - private String sourceDirectory; - - private String level; -} diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojo.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojo.java deleted file mode 100644 index 07f2d0c..0000000 --- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojo.java +++ /dev/null @@ -1,99 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2017 Paul Campbell - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software - * and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies - * or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE - * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -package net.kemitix.checkstyle.ruleset.plugin; - -import lombok.Setter; -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.execution.MavenSession; -import org.apache.maven.model.Build; -import org.apache.maven.model.Plugin; -import org.apache.maven.model.io.xpp3.MavenXpp3Reader; -import org.apache.maven.plugin.AbstractMojo; -import org.apache.maven.plugin.BuildPluginManager; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.plugins.annotations.Component; -import org.apache.maven.plugins.annotations.LifecyclePhase; -import org.apache.maven.plugins.annotations.Mojo; -import org.apache.maven.plugins.annotations.Parameter; -import org.apache.maven.project.MavenProject; - -/** - * Runs the Checkstyle Maven Plugin with the Kemitix Checkstyle Ruleset. - * - * @author Paul Campbell (pcampbell@kemitix.net) - */ -@Mojo(name = "check", defaultPhase = LifecyclePhase.VALIDATE) -public class CheckMojo extends AbstractMojo { - - private static final String KEMITIX_GROUPID = "net.kemitix"; - - private static final String KEMITIX_ARTIFACTID = "kemitix-checkstyle-ruleset"; - - @Setter - private CheckstyleExecutor checkstyleExecutor = - new DefaultCheckstyleExecutor(new DefaultPluginExecutor(), new MavenXpp3Reader()); - - @Setter - @Parameter(defaultValue = "${project}", readonly = true) - private MavenProject mavenProject; - - @Setter - @Parameter(defaultValue = "${session}", readonly = true) - private MavenSession mavenSession; - - @Setter - @Parameter(defaultValue = "${localRepository}", readonly = true, required = true) - private ArtifactRepository artifactRepository; - - @Parameter(name = "level", defaultValue = "5-complexity", readonly = true) - private String level = "5-complexity"; - - @Setter - @Component - private BuildPluginManager pluginManager; - - @Override - public final void execute() throws MojoExecutionException, MojoFailureException { - checkstyleExecutor.setLog(getLog()); - CheckConfiguration config = getCheckConfiguration(); - checkstyleExecutor.performCheck(config); - } - - private CheckConfiguration getCheckConfiguration() { - final Plugin rulesetPlugin = getRulesetPlugin(); - final Build build = mavenProject.getBuild(); - return CheckConfiguration.builder() - .mavenProject(mavenProject) - .mavenSession(mavenSession) - .artifactRepository(artifactRepository) - .pluginManager(pluginManager) - .rulesetVersion(rulesetPlugin.getVersion()) - .sourceDirectory(build.getSourceDirectory()) - .level(level) - .build(); - } - - private Plugin getRulesetPlugin() { - return mavenProject.getPlugin(KEMITIX_GROUPID + ":" + KEMITIX_ARTIFACTID + "-maven-plugin"); - } -} diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckstyleExecutor.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckstyleExecutor.java deleted file mode 100644 index d40db6a..0000000 --- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckstyleExecutor.java +++ /dev/null @@ -1,51 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2017 Paul Campbell - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software - * and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies - * or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE - * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -package net.kemitix.checkstyle.ruleset.plugin; - -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.plugin.logging.Log; - -/** - * Executes the Checkstyle plugin. - * - * @author Paul Campbell (pcampbell@kemitix.net) - */ -interface CheckstyleExecutor { - - /** - * Execute Checkstyle Check. - * - * @param configuration The Configuration - * - * @throws MojoExecutionException on execution error - * @throws MojoFailureException on execution failure - */ - void performCheck(CheckConfiguration configuration) throws MojoExecutionException, MojoFailureException; - - /** - * Set the logger to use. - * - * @param log the logger. - */ - void setLog(Log log); -} diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutor.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutor.java deleted file mode 100644 index f3f066c..0000000 --- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutor.java +++ /dev/null @@ -1,186 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2017 Paul Campbell - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software - * and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies - * or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE - * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -package net.kemitix.checkstyle.ruleset.plugin; - -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import lombok.Setter; -import lombok.val; -import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.DefaultArtifact; -import org.apache.maven.artifact.handler.ArtifactHandler; -import org.apache.maven.artifact.handler.DefaultArtifactHandler; -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.model.Dependency; -import org.apache.maven.model.Model; -import org.apache.maven.model.Plugin; -import org.apache.maven.model.io.xpp3.MavenXpp3Reader; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.plugin.logging.Log; -import org.codehaus.plexus.util.xml.Xpp3Dom; -import org.codehaus.plexus.util.xml.pull.XmlPullParserException; -import org.twdata.maven.mojoexecutor.MojoExecutor; - -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.io.Reader; -import java.util.List; -import java.util.Properties; - -/** - * Default implementation of {@link CheckstyleExecutor}. - * - * @author Paul Campbell (pcampbell@kemitix.net) - */ -@SuppressWarnings("classfanoutcomplexity") -@RequiredArgsConstructor -public class DefaultCheckstyleExecutor implements CheckstyleExecutor { - - private static final String CHECKSTYLE_GROUPID = "com.puppycrawl.tools"; - - private static final String CHECKSTYLE_ARTIFACTID = "checkstyle"; - - private static final String SEVNTU_GROUPID = "com.github.sevntu-checkstyle"; - - private static final String SEVNTU_ARTIFACTID = "sevntu-checkstyle-maven-plugin"; - - private static final String KEMITIX_GROUPID = "net.kemitix"; - - private static final String KEMITIX_ARTIFACTID = "kemitix-checkstyle-ruleset"; - - private static final String APACHE_PLUGIN_GROUPID = "org.apache.maven.plugins"; - - private static final String APACHE_PLUGIN_ARTIFACTID = "maven-checkstyle-plugin"; - - private static final String CONFIG_LOCATION = "configLocation"; - - private static final String SOURCE_DIR = "sourceDirectory"; - - private static final ArtifactHandler POM_ARTIFACT_HANDLER = new DefaultArtifactHandler("pom"); - - private static final String PLUGIN_ARTIFACT_ID = KEMITIX_ARTIFACTID + "-parent"; - - private final PluginExecutor pluginExecutor; - - private final MavenXpp3Reader mavenXpp3Reader; - - @Setter - @Getter - private Log log; - - private String rulesetVersion; - - @Override - public final void performCheck(final CheckConfiguration config) - throws MojoExecutionException, MojoFailureException { - rulesetVersion = config.getRulesetVersion(); - val properties = getProperties(config.getArtifactRepository()); - - // configure - val checkstylePlugin = getPlugin(properties); - final String sourceDirectory = config.getSourceDirectory(); - final String level = config.getLevel(); - info("Ruleset: %s", level); - final String configFile = String.format("net/kemitix/checkstyle-%s.xml", level); - final Xpp3Dom configuration = pluginExecutor.configuration(pluginExecutor.element(CONFIG_LOCATION, configFile), - pluginExecutor.element(SOURCE_DIR, sourceDirectory) - ); - final MojoExecutor.ExecutionEnvironment environment = pluginExecutor.executionEnvironment(config); - - // run - pluginExecutor.executeMojo(checkstylePlugin, "check", configuration, environment); - info("Checkstyle complete"); - } - - private String getProperty(final Properties properties, final String key) { - val property = properties.getProperty(key); - debug("%s: %s", key, property); - return property; - } - - private Plugin getPlugin(final Properties properties) { - // get versions from pom.xml properties - val pluginVersion = getProperty(properties, "maven-checkstyle-plugin.version"); - val checkstyleVersion = getProperty(properties, "checkstyle.version"); - val sevntuVersion = getProperty(properties, "sevntu.version"); - info("Checkstyle %s (plugin: %s, sevntu: %s, ruleset: %s)", checkstyleVersion, - pluginVersion, sevntuVersion, rulesetVersion - ); - - // create checkstyle dependencies - val checkstyle = getCheckstyleDependency(checkstyleVersion); - val sevntu = getSevntuDependency(sevntuVersion); - val ruleset = getRulesetDependency(); - final List dependencies = pluginExecutor.dependencies(checkstyle, sevntu, ruleset); - - return pluginExecutor.plugin(APACHE_PLUGIN_GROUPID, APACHE_PLUGIN_ARTIFACTID, pluginVersion, dependencies); - } - - private Dependency getRulesetDependency() { - return pluginExecutor.dependency(KEMITIX_GROUPID, KEMITIX_ARTIFACTID, rulesetVersion); - } - - private Dependency getSevntuDependency(final String sevntuVersion) { - return pluginExecutor.dependency(SEVNTU_GROUPID, SEVNTU_ARTIFACTID, sevntuVersion); - } - - private Dependency getCheckstyleDependency(final String checkstyleVersion) { - return pluginExecutor.dependency(CHECKSTYLE_GROUPID, CHECKSTYLE_ARTIFACTID, checkstyleVersion); - } - - private Properties getProperties(final ArtifactRepository artifactRepository) throws MojoFailureException { - // load properties from the plugin pom.xml - final Artifact pluginArtifact = getPluginArtifact(artifactRepository); - try { - final File pomFile = pluginArtifact.getFile(); - return parsePomFile(pomFile).getProperties(); - } catch (XmlPullParserException | IOException e) { - throw new MojoFailureException("Can't load properties from plugin's pom.xml", e); - } - } - - private Model parsePomFile(final File pomFile) throws IOException, XmlPullParserException { - final Reader pomReader = new FileReader(pomFile); - return mavenXpp3Reader.read(pomReader); - } - - private Artifact getPluginArtifact(final ArtifactRepository artifactRepository) { - final Artifact templateArtifact = getRulesetArtifactTemplate(); - return artifactRepository.find(templateArtifact); - } - - private DefaultArtifact getRulesetArtifactTemplate() { - return new DefaultArtifact(KEMITIX_GROUPID, PLUGIN_ARTIFACT_ID, rulesetVersion, null, "", null, - POM_ARTIFACT_HANDLER - ); - } - - private void info(final String format, final Object... args) { - getLog().info(String.format(format, args)); - } - - private void debug(final String format, final Object... args) { - getLog().debug(String.format(format, args)); - } -} diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutor.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutor.java deleted file mode 100644 index b176c2d..0000000 --- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutor.java +++ /dev/null @@ -1,79 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2017 Paul Campbell - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software - * and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies - * or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE - * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -package net.kemitix.checkstyle.ruleset.plugin; - -import org.apache.maven.model.Dependency; -import org.apache.maven.model.Plugin; -import org.apache.maven.plugin.MojoExecutionException; -import org.codehaus.plexus.util.xml.Xpp3Dom; -import org.twdata.maven.mojoexecutor.MojoExecutor; - -import java.util.List; - -/** - * Wrapper for {@link org.twdata.maven.mojoexecutor.MojoExecutor}. - * - * @author Paul Campbell (pcampbell@kemitix.net). - */ -public final class DefaultPluginExecutor implements PluginExecutor { - - @Override - public MojoExecutor.Element element(final String key, final String value) { - return MojoExecutor.element(key, value); - } - - @Override - public Xpp3Dom configuration(final MojoExecutor.Element... elements) { - return MojoExecutor.configuration(elements); - } - - @Override - public MojoExecutor.ExecutionEnvironment executionEnvironment(final CheckConfiguration config) { - return MojoExecutor.executionEnvironment( - config.getMavenProject(), config.getMavenSession(), config.getPluginManager()); - } - - @Override - public void executeMojo( - final Plugin plugin, final String goal, final Xpp3Dom configuration, - final MojoExecutor.ExecutionEnvironment env - ) throws MojoExecutionException { - MojoExecutor.executeMojo(plugin, goal, configuration, env); - } - - @Override - public Dependency dependency(final String groupid, final String artifactid, final String version) { - return MojoExecutor.dependency(groupid, artifactid, version); - } - - @Override - public List dependencies(final Dependency... dependencies) { - return MojoExecutor.dependencies(dependencies); - } - - @Override - public Plugin plugin( - final String groupid, final String artifactid, final String version, final List dependencies - ) { - return MojoExecutor.plugin(groupid, artifactid, version, dependencies); - } -} diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/PluginExecutor.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/PluginExecutor.java deleted file mode 100644 index 91caeaf..0000000 --- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/PluginExecutor.java +++ /dev/null @@ -1,114 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2017 Paul Campbell - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software - * and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies - * or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE - * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -package net.kemitix.checkstyle.ruleset.plugin; - -import org.apache.maven.model.Dependency; -import org.apache.maven.model.Plugin; -import org.apache.maven.plugin.MojoExecutionException; -import org.codehaus.plexus.util.xml.Xpp3Dom; -import org.twdata.maven.mojoexecutor.MojoExecutor; - -import java.util.List; - -/** - * Interface for wrapping calls to static methods on {@link org.twdata.maven.mojoexecutor.MojoExecutor}. - * - * @author Paul Campbell (pcampbell@kemitix.net). - */ -public interface PluginExecutor { - - /** - * Constructs the element with a textual body. - * - * @param name The element name - * @param value The element text value - * - * @return The element object - */ - MojoExecutor.Element element(String name, String value); - - /** - * Builds the configuration for the goal using Elements. - * - * @param elements A list of elements for the configuration section - * - * @return The elements transformed into the Maven-native XML format - */ - Xpp3Dom configuration(MojoExecutor.Element... elements); - - /** - * Constructs the {@link MojoExecutor.ExecutionEnvironment} instance fluently. - * - * @param configuration The Configuration - * - * @return The execution environment - */ - MojoExecutor.ExecutionEnvironment executionEnvironment(CheckConfiguration configuration); - - /** - * Entry point for executing a mojo. - * - * @param plugin The plugin to execute - * @param goal The goal to execute - * @param configuration The execution configuration - * @param env The execution environment - * - * @throws MojoExecutionException If there are any exceptions locating or executing the mojo - */ - void executeMojo( - Plugin plugin, String goal, Xpp3Dom configuration, MojoExecutor.ExecutionEnvironment env - ) throws MojoExecutionException; - - /** - * Defines a dependency. - * - * @param groupId The group id - * @param artifactId The artifact id - * @param version The plugin version - * - * @return the dependency instance - */ - Dependency dependency(String groupId, String artifactId, String version); - - /** - * Creates a list of dependencies. - * - * @param dependencies the dependencies - * - * @return A list of dependencies - */ - List dependencies(Dependency... dependencies); - - /** - * Defines a plugin. - * - * @param groupId The group id - * @param artifactId The artifact id - * @param version The plugin version - * @param dependencies The plugin dependencies - * - * @return The plugin instance - */ - Plugin plugin( - String groupId, String artifactId, String version, List dependencies - ); -} diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/package-info.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/package-info.java deleted file mode 100644 index a2bf527..0000000 --- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/package-info.java +++ /dev/null @@ -1,22 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2017 Paul Campbell - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software - * and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies - * or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE - * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -package net.kemitix.checkstyle.ruleset.plugin; diff --git a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfigurationTest.java b/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfigurationTest.java deleted file mode 100644 index 15c63ac..0000000 --- a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfigurationTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.kemitix.checkstyle.ruleset.plugin; - -import org.junit.Test; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * @author Paul Campbell (pcampbell@kemitix.net). - */ -public class CheckConfigurationTest { - - @Test - public void toStringCoverage() { - //given - final String rulesetVersion = "ruleset version"; - final String sourceDirectory = "source directory"; - //when - final String result = CheckConfiguration.builder() - .rulesetVersion(rulesetVersion) - .sourceDirectory(sourceDirectory) - .toString(); - //then - assertThat(result).contains("rulesetVersion=ruleset version") - .contains("sourceDirectory=source directory"); - } -} diff --git a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojoTest.java b/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojoTest.java deleted file mode 100644 index 86e540f..0000000 --- a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojoTest.java +++ /dev/null @@ -1,80 +0,0 @@ -package net.kemitix.checkstyle.ruleset.plugin; - -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.execution.MavenSession; -import org.apache.maven.model.Build; -import org.apache.maven.model.Plugin; -import org.apache.maven.plugin.BuildPluginManager; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.project.MavenProject; -import org.junit.Before; -import org.junit.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.BDDMockito.given; -import static org.mockito.BDDMockito.then; - -/** - * Tests for {@link CheckMojo}. - * - * @author Paul Campbell (pcampbell@kemitix.net) - */ -public class CheckMojoTest { - - @Mock - private CheckstyleExecutor checkstyleExecutor; - - @Mock - private MavenProject mavenProject; - - @Mock - private MavenSession mavenSession; - - @Mock - private ArtifactRepository artifactRepository; - - @Mock - private BuildPluginManager pluginManager; - - @Captor - private ArgumentCaptor configuration; - - @Mock - private Plugin rulesetPlugin; - - @Mock - private Build build; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - } - - @Test - public void canExecute() throws MojoFailureException, MojoExecutionException { - //given - final CheckMojo mojo = new CheckMojo(); - mojo.setCheckstyleExecutor(checkstyleExecutor); - mojo.setMavenProject(mavenProject); - mojo.setMavenSession(mavenSession); - mojo.setArtifactRepository(artifactRepository); - mojo.setPluginManager(pluginManager); - given(mavenProject.getPlugin(any())).willReturn(rulesetPlugin); - given(mavenProject.getBuild()).willReturn(build); - //when - mojo.execute(); - //then - then(checkstyleExecutor).should() - .performCheck(configuration.capture()); - assertThat(configuration.getValue()).returns(mavenProject, CheckConfiguration::getMavenProject) - .returns(mavenSession, CheckConfiguration::getMavenSession) - .returns(artifactRepository, CheckConfiguration::getArtifactRepository) - .returns(pluginManager, CheckConfiguration::getPluginManager); - } -} diff --git a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutorTest.java b/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutorTest.java deleted file mode 100644 index b7de3cb..0000000 --- a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutorTest.java +++ /dev/null @@ -1,161 +0,0 @@ -package net.kemitix.checkstyle.ruleset.plugin; - -import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.execution.MavenSession; -import org.apache.maven.model.Dependency; -import org.apache.maven.model.Model; -import org.apache.maven.model.Plugin; -import org.apache.maven.model.io.xpp3.MavenXpp3Reader; -import org.apache.maven.plugin.BuildPluginManager; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.plugin.logging.Log; -import org.apache.maven.project.MavenProject; -import org.codehaus.plexus.util.xml.Xpp3Dom; -import org.codehaus.plexus.util.xml.pull.XmlPullParserException; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TemporaryFolder; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.twdata.maven.mojoexecutor.MojoExecutor; - -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Properties; - -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.BDDMockito.given; -import static org.mockito.BDDMockito.then; - -/** - * Tests for {@link DefaultCheckstyleExecutor}. - * - * @author Paul Campbell (pcampbell@kemitix.net) - */ -public class DefaultCheckstyleExecutorTest { - - @Rule - public TemporaryFolder folder = new TemporaryFolder(); - - @Mock - private PluginExecutor pluginExecutor; - - @Mock - private MavenProject mavenProject; - - @Mock - private MavenSession mavenSession; - - @Mock - private ArtifactRepository artifactRepository; - - @Mock - private BuildPluginManager pluginManager; - - @Mock - private Plugin rulesetPlugin; - - @Mock - private Log log; - - private DefaultCheckstyleExecutor checkstyleExecutor; - - private String level; - - @Mock - private Artifact artifact; - - @Mock - private MavenXpp3Reader mavenXpp3Reader; - - @Mock - private Model pomModel; - - @Mock - private MojoExecutor.Element configElement; - - @Mock - private MojoExecutor.Element sourceElement; - - @Mock - private Xpp3Dom pluginConfig; - - @Mock - private MojoExecutor.ExecutionEnvironment env; - - @Mock - private Dependency checkstyle; - - @Mock - private Dependency sevntu; - - @Mock - private Dependency ruleset; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - level = "test level"; - checkstyleExecutor = new DefaultCheckstyleExecutor(pluginExecutor, mavenXpp3Reader); - checkstyleExecutor.setLog(log); - } - - @Test - public void canPerformCheck() - throws MojoFailureException, MojoExecutionException, IOException, XmlPullParserException { - //given - final CheckConfiguration configuration = CheckConfiguration.builder() - .mavenProject(mavenProject) - .mavenSession(mavenSession) - .artifactRepository(artifactRepository) - .pluginManager(pluginManager) - .rulesetVersion("ruleset version") - .level(level) - .build(); - - given(artifactRepository.find(any())).willReturn(artifact); - final File artifactFile = folder.newFile("pom.xml"); - given(artifact.getFile()).willReturn(artifactFile); - given(mavenXpp3Reader.read(any(FileReader.class))).willReturn(pomModel); - final Properties properties = new Properties(); - given(pomModel.getProperties()).willReturn(properties); - given(pluginExecutor.element(eq("configLocation"), any())).willReturn(configElement); - given(pluginExecutor.element(eq("sourceDirectory"), any())).willReturn(sourceElement); - given(pluginExecutor.configuration(configElement, sourceElement)).willReturn(pluginConfig); - given(pluginExecutor.executionEnvironment(configuration)).willReturn(env); - final List dependencies = new ArrayList<>(); - dependencies.add(checkstyle); - dependencies.add(sevntu); - dependencies.add(ruleset); - final String pluginVersion = "plugin version"; - final String checkstyleVersion = "checkstyle version"; - final String sevntuVersion = "sevntu version"; - final String rulesetVersion = "ruleset version"; - given(pluginExecutor.dependencies(checkstyle, sevntu, ruleset)).willReturn(dependencies); - given(pluginExecutor.dependency("com.puppycrawl.tools", "checkstyle", checkstyleVersion)).willReturn( - checkstyle); - given(pluginExecutor.dependency( - "com.github.sevntu.checkstyle", "sevntu-checkstyle-maven-plugin", sevntuVersion)).willReturn(sevntu); - given(pluginExecutor.dependency("net.kemitix", "kemtiix-checkstyle-ruleset", rulesetVersion)).willReturn( - ruleset); - properties.setProperty("maven-checkstyle-plugin.version", pluginVersion); - properties.setProperty("checkstyle.version", checkstyleVersion); - properties.setProperty("sevntu.version", sevntuVersion); - given(pluginExecutor.plugin( - eq("org.apache.maven.plugins"), eq("maven-checkstyle-plugin"), eq(pluginVersion), any())).willReturn( - rulesetPlugin); - //when - checkstyleExecutor.performCheck(configuration); - //then - - then(pluginExecutor).should() - .executeMojo(rulesetPlugin, "check", pluginConfig, env); - } -} diff --git a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutorTest.java b/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutorTest.java deleted file mode 100644 index ba5f6b2..0000000 --- a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutorTest.java +++ /dev/null @@ -1,177 +0,0 @@ -package net.kemitix.checkstyle.ruleset.plugin; - -import org.apache.maven.execution.MavenSession; -import org.apache.maven.model.Dependency; -import org.apache.maven.model.Plugin; -import org.apache.maven.plugin.BuildPluginManager; -import org.apache.maven.plugin.InvalidPluginDescriptorException; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.plugin.PluginConfigurationException; -import org.apache.maven.plugin.PluginDescriptorParsingException; -import org.apache.maven.plugin.PluginManagerException; -import org.apache.maven.plugin.PluginNotFoundException; -import org.apache.maven.plugin.PluginResolutionException; -import org.apache.maven.plugin.descriptor.MojoDescriptor; -import org.apache.maven.plugin.descriptor.PluginDescriptor; -import org.apache.maven.project.MavenProject; -import org.codehaus.plexus.configuration.PlexusConfiguration; -import org.codehaus.plexus.util.xml.Xpp3Dom; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.twdata.maven.mojoexecutor.MojoExecutor; - -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.BDDMockito.given; -import static org.mockito.BDDMockito.then; - -/** - * Tests for {@link DefaultPluginExecutor}. - * - * @author Paul Campbell (pcampbell@kemitix.net) - */ -public class DefaultPluginExecutorTest { - - private PluginExecutor pluginExecutor; - - @Mock - private MavenProject mavenProject; - - @Mock - private MavenSession mavenSession; - - @Mock - private BuildPluginManager pluginManager; - - @Mock - private Plugin plugin; - - @Mock - private Xpp3Dom configuration; - - @Mock - private PluginDescriptor pluginDescriptor; - - @Mock - private MojoDescriptor mojoDescriptor; - - @Mock - private PlexusConfiguration mojoConfiguration; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - pluginExecutor = new DefaultPluginExecutor(); - } - - @Test - public void canElement() { - //when - final MojoExecutor.Element element = pluginExecutor.element("name", "value"); - //then - assertThat(element.toDom()).returns("name", Xpp3Dom::getName) - .returns("value", Xpp3Dom::getValue); - } - - @Test - public void canConfiguration() { - //given - final MojoExecutor.Element alpha = pluginExecutor.element("alpha", "first"); - final MojoExecutor.Element beta = pluginExecutor.element("beta", "second"); - //when - final Xpp3Dom configuration = pluginExecutor.configuration(alpha, beta); - //then - assertThat(configuration.getChild("alpha")).returns("alpha", Xpp3Dom::getName) - .returns("first", Xpp3Dom::getValue); - assertThat(configuration.getChild("beta")).returns("beta", Xpp3Dom::getName) - .returns("second", Xpp3Dom::getValue); - } - - @Test - public void canExecutionEnvironment() { - //given - final CheckConfiguration configuration = createCheckConfiguration(); - //when - final MojoExecutor.ExecutionEnvironment environment = pluginExecutor.executionEnvironment(configuration); - //then - assertThat(environment).returns(mavenProject, MojoExecutor.ExecutionEnvironment::getMavenProject) - .returns(mavenSession, MojoExecutor.ExecutionEnvironment::getMavenSession) - .returns(pluginManager, MojoExecutor.ExecutionEnvironment::getPluginManager); - } - - private CheckConfiguration createCheckConfiguration() { - return CheckConfiguration.builder() - .mavenProject(mavenProject) - .mavenSession(mavenSession) - .pluginManager(pluginManager) - .build(); - } - - @Test - public void canExecuteMojo() - throws MojoExecutionException, InvalidPluginDescriptorException, PluginResolutionException, - PluginDescriptorParsingException, PluginNotFoundException, PluginManagerException, - PluginConfigurationException, MojoFailureException { - //given - final String goal = "check"; - final MojoExecutor.ExecutionEnvironment environment = - pluginExecutor.executionEnvironment(createCheckConfiguration()); - given(mavenSession.getCurrentProject()).willReturn(mavenProject); - given(pluginManager.loadPlugin(eq(plugin), any(), any())).willReturn(pluginDescriptor); - given(pluginDescriptor.getMojo(goal)).willReturn(mojoDescriptor); - given(mojoDescriptor.getMojoConfiguration()).willReturn(mojoConfiguration); - given(mojoConfiguration.getAttributeNames()).willReturn(new String[]{}); - given(mojoConfiguration.getChildren()).willReturn(new PlexusConfiguration[]{}); - //when - pluginExecutor.executeMojo(plugin, goal, configuration, environment); - //then - then(pluginManager).should() - .executeMojo(eq(mavenSession), any()); - } - - @Test - public void canDependency() { - //given - final String groupId = "groupId"; - final String artifactId = "artifactId"; - final String version = "version"; - //when - final Dependency dependency = pluginExecutor.dependency(groupId, artifactId, version); - //then - assertThat(dependency).returns(groupId, Dependency::getGroupId) - .returns(artifactId, Dependency::getArtifactId) - .returns(version, Dependency::getVersion); - } - - @Test - public void canDependencies() { - //given - final Dependency dependency = pluginExecutor.dependency("groupId", "artifactId", "version"); - //when - final List dependencies = pluginExecutor.dependencies(dependency); - //then - assertThat(dependencies).containsExactly(dependency); - } - - @Test - public void canPlugin() { - //given - final String groupId = "groupId"; - final String artifactId = "artifactId"; - final String version = "version"; - final List dependencies = pluginExecutor.dependencies(pluginExecutor.dependency("pg", "pa", "pv")); - //when - final Plugin plugin = pluginExecutor.plugin(groupId, artifactId, version, dependencies); - //then - assertThat(plugin).returns(groupId, Plugin::getGroupId) - .returns(artifactId, Plugin::getArtifactId) - .returns(version, Plugin::getVersion) - .returns(dependencies, Plugin::getDependencies); - } -} diff --git a/pom.xml b/pom.xml index 0510099..a244e9f 100644 --- a/pom.xml +++ b/pom.xml @@ -36,7 +36,6 @@ builder ruleset - plugin regressions