You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2021/05/02 17:45:48 UTC
[maven] 01/01: [MNG-6294] Convert MavenPluginValidator into a JSR
330 component
This is an automated email from the ASF dual-hosted git repository.
michaelo pushed a commit to branch MNG-6294
in repository https://gitbox.apache.org/repos/asf/maven.git
commit 990fb005ea9b1994bc7b9d78b0d4646e53011044
Author: Michael Simacek <ms...@redhat.com>
AuthorDate: Thu Oct 12 14:55:46 2017 +0300
[MNG-6294] Convert MavenPluginValidator into a JSR 330 component
Modified by: Guillaume Dufour <gu...@gmail.com>
This closes #134 and closes #470
---
...dator.java => DefaultMavenPluginValidator.java} | 44 ++-------
.../apache/maven/plugin/MavenPluginValidator.java | 51 +---------
.../plugin/internal/DefaultMavenPluginManager.java | 12 ++-
.../maven/plugin/MavenPluginValidatorTest.java | 104 +++++++++++++++++++++
4 files changed, 123 insertions(+), 88 deletions(-)
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java b/maven-core/src/main/java/org/apache/maven/plugin/DefaultMavenPluginValidator.java
similarity index 65%
copy from maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java
copy to maven-core/src/main/java/org/apache/maven/plugin/DefaultMavenPluginValidator.java
index ec4c511..311ae44 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/DefaultMavenPluginValidator.java
@@ -19,40 +19,26 @@ package org.apache.maven.plugin;
* under the License.
*/
-import java.util.ArrayList;
import java.util.List;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
/**
- * MavenPluginValidator
+ * DefaultMavenPluginValidator
*/
-public class MavenPluginValidator
+@Named
+@Singleton
+public class DefaultMavenPluginValidator
+ implements MavenPluginValidator
{
- private final Artifact pluginArtifact;
-
- private List<String> errors = new ArrayList<>();
-
- private boolean firstDescriptor = true;
-
- public MavenPluginValidator( Artifact pluginArtifact )
- {
- this.pluginArtifact = pluginArtifact;
- }
- public void validate( PluginDescriptor pluginDescriptor )
+ @Override
+ public void validate( Artifact pluginArtifact, PluginDescriptor pluginDescriptor, List<String> errors )
{
- /*
- * NOTE: For plugins that depend on other plugin artifacts the plugin realm contains more than one plugin
- * descriptor. However, only the first descriptor is of interest.
- */
- if ( !firstDescriptor )
- {
- return;
- }
- firstDescriptor = false;
-
if ( !pluginArtifact.getGroupId().equals( pluginDescriptor.getGroupId() ) )
{
errors.add( "Plugin's descriptor contains the wrong group ID: " + pluginDescriptor.getGroupId() );
@@ -68,14 +54,4 @@ public class MavenPluginValidator
errors.add( "Plugin's descriptor contains the wrong version: " + pluginDescriptor.getVersion() );
}
}
-
- public boolean hasErrors()
- {
- return !errors.isEmpty();
- }
-
- public List<String> getErrors()
- {
- return errors;
- }
}
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java b/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java
index ec4c511..e41b275 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java
@@ -19,63 +19,16 @@ package org.apache.maven.plugin;
* under the License.
*/
-import java.util.ArrayList;
import java.util.List;
-
import org.apache.maven.artifact.Artifact;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
/**
* MavenPluginValidator
*/
-public class MavenPluginValidator
+public interface MavenPluginValidator
{
- private final Artifact pluginArtifact;
-
- private List<String> errors = new ArrayList<>();
-
- private boolean firstDescriptor = true;
-
- public MavenPluginValidator( Artifact pluginArtifact )
- {
- this.pluginArtifact = pluginArtifact;
- }
-
- public void validate( PluginDescriptor pluginDescriptor )
- {
- /*
- * NOTE: For plugins that depend on other plugin artifacts the plugin realm contains more than one plugin
- * descriptor. However, only the first descriptor is of interest.
- */
- if ( !firstDescriptor )
- {
- return;
- }
- firstDescriptor = false;
-
- if ( !pluginArtifact.getGroupId().equals( pluginDescriptor.getGroupId() ) )
- {
- errors.add( "Plugin's descriptor contains the wrong group ID: " + pluginDescriptor.getGroupId() );
- }
-
- if ( !pluginArtifact.getArtifactId().equals( pluginDescriptor.getArtifactId() ) )
- {
- errors.add( "Plugin's descriptor contains the wrong artifact ID: " + pluginDescriptor.getArtifactId() );
- }
-
- if ( !pluginArtifact.getBaseVersion().equals( pluginDescriptor.getVersion() ) )
- {
- errors.add( "Plugin's descriptor contains the wrong version: " + pluginDescriptor.getVersion() );
- }
- }
- public boolean hasErrors()
- {
- return !errors.isEmpty();
- }
+ void validate( Artifact pluginArtfiact, PluginDescriptor pluginDescriptor, List<String> errors );
- public List<String> getErrors()
- {
- return errors;
- }
}
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
index 7c77ee8..4ea810c 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
@@ -166,6 +166,9 @@ public class DefaultMavenPluginManager
@Inject
private PluginArtifactsCache pluginArtifactsCache;
+ @Inject
+ private MavenPluginValidator pluginValidator;
+
private ExtensionDescriptorBuilder extensionDescriptorBuilder = new ExtensionDescriptorBuilder();
private PluginDescriptorBuilder builder = new PluginDescriptorBuilder();
@@ -243,14 +246,13 @@ public class DefaultMavenPluginManager
throw new PluginDescriptorParsingException( plugin, pluginFile.getAbsolutePath(), e );
}
- MavenPluginValidator validator = new MavenPluginValidator( pluginArtifact );
-
- validator.validate( pluginDescriptor );
+ List<String> errors = new ArrayList<>();
+ pluginValidator.validate( pluginArtifact, pluginDescriptor, errors );
- if ( validator.hasErrors() )
+ if ( !errors.isEmpty() )
{
throw new InvalidPluginDescriptorException(
- "Invalid plugin descriptor for " + plugin.getId() + " (" + pluginFile + ")", validator.getErrors() );
+ "Invalid plugin descriptor for " + plugin.getId() + " (" + pluginFile + ")", errors );
}
pluginDescriptor.setPluginArtifact( pluginArtifact );
diff --git a/maven-core/src/test/java/org/apache/maven/plugin/MavenPluginValidatorTest.java b/maven-core/src/test/java/org/apache/maven/plugin/MavenPluginValidatorTest.java
new file mode 100644
index 0000000..bbbb0d8
--- /dev/null
+++ b/maven-core/src/test/java/org/apache/maven/plugin/MavenPluginValidatorTest.java
@@ -0,0 +1,104 @@
+package org.apache.maven.plugin;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.maven.AbstractCoreMavenComponentTestCase;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.DefaultArtifact;
+import org.apache.maven.artifact.handler.DefaultArtifactHandler;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+
+import javax.inject.Inject;
+
+/**
+ * @author Michael Simacek
+ */
+public class MavenPluginValidatorTest extends AbstractCoreMavenComponentTestCase
+{
+ @Inject
+ private MavenPluginValidator mavenPluginValidator;
+
+ protected String getProjectsDirectory()
+ {
+ return "src/test/projects/default-maven";
+ }
+
+ @Test
+ public void testValidate()
+ {
+ Artifact plugin = new DefaultArtifact( "org.apache.maven.its.plugins", "maven-it-plugin", "0.1", "compile",
+ "jar", null, new DefaultArtifactHandler() );
+ PluginDescriptor descriptor = new PluginDescriptor();
+ descriptor.setGroupId( "org.apache.maven.its.plugins" );
+ descriptor.setArtifactId( "maven-it-plugin" );
+ descriptor.setVersion( "0.1" );
+ List<String> errors = new ArrayList<>();
+ mavenPluginValidator.validate( plugin, descriptor, errors );
+ assertTrue( errors.isEmpty() );
+ }
+
+ @Test
+ public void testInvalidGroupId()
+ {
+ Artifact plugin = new DefaultArtifact( "org.apache.maven.its.plugins", "maven-it-plugin", "0.1", "compile",
+ "jar", null, new DefaultArtifactHandler() );
+ PluginDescriptor descriptor = new PluginDescriptor();
+ descriptor.setGroupId( "org.apache.maven.its.plugins.invalid" );
+ descriptor.setArtifactId( "maven-it-plugin" );
+ descriptor.setVersion( "0.1" );
+ List<String> errors = new ArrayList<>();
+ mavenPluginValidator.validate( plugin, descriptor, errors );
+ assertFalse( errors.isEmpty() );
+ }
+
+ @Test
+ public void testInvalidArtifactId()
+ {
+ Artifact plugin = new DefaultArtifact( "org.apache.maven.its.plugins", "maven-it-plugin", "0.1", "compile",
+ "jar", null, new DefaultArtifactHandler() );
+ PluginDescriptor descriptor = new PluginDescriptor();
+ descriptor.setGroupId( "org.apache.maven.its.plugins" );
+ descriptor.setArtifactId( "maven-it-plugin.invalid" );
+ descriptor.setVersion( "0.1" );
+ List<String> errors = new ArrayList<>();
+ mavenPluginValidator.validate( plugin, descriptor, errors );
+ assertFalse( errors.isEmpty() );
+ }
+
+ @Test
+ public void testInvalidVersion()
+ {
+ Artifact plugin = new DefaultArtifact( "org.apache.maven.its.plugins", "maven-it-plugin", "0.1", "compile",
+ "jar", null, new DefaultArtifactHandler() );
+ PluginDescriptor descriptor = new PluginDescriptor();
+ descriptor.setGroupId( "org.apache.maven.its.plugins" );
+ descriptor.setArtifactId( "maven-it-plugin" );
+ List<String> errors = new ArrayList<>();
+ mavenPluginValidator.validate( plugin, descriptor, errors );
+ assertFalse( errors.isEmpty() );
+ }
+}