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

slachiewicz pushed a commit to branch MNG-6294
in repository https://gitbox.apache.org/repos/asf/maven.git

commit 5869f91e65fb1c24e36c7792b60b26ee003e885e
Author: Michael Simacek <msima...@redhat.com>
AuthorDate: Thu Oct 12 14:55:46 2017 +0300

    [MNG-6294] Convert MavenPluginValidator into a plexus component
---
 ...dator.java => DefaultMavenPluginValidator.java} | 41 +++----------
 .../apache/maven/plugin/MavenPluginValidator.java  | 51 +---------------
 .../plugin/internal/DefaultMavenPluginManager.java | 12 ++--
 .../maven/plugin/MavenPluginValidatorTest.java     | 70 ++++++++++++++++++++++
 4 files changed, 86 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..968d897 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,23 @@ 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 org.codehaus.plexus.component.annotations.Component;
 
 /**
- * MavenPluginValidator
+ * Default MavenPluginValidator implemntation
  */
-public class MavenPluginValidator
+@Component( role = MavenPluginValidator.class )
+public class DefaultMavenPluginValidator
+        implements MavenPluginValidator
 {
-    private final Artifact pluginArtifact;
 
-    private List<String> errors = new ArrayList<>();
-
-    private boolean firstDescriptor = true;
-
-    public MavenPluginValidator( Artifact pluginArtifact )
+    @Override
+    public void validate( Artifact pluginArtifact, PluginDescriptor 
pluginDescriptor, List<String> errors )
     {
-        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() );
@@ -68,14 +51,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 8630471..2188ca8 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
@@ -164,6 +164,9 @@ public class DefaultMavenPluginManager
     @Requirement
     private PluginArtifactsCache pluginArtifactsCache;
 
+    @Requirement
+    private MavenPluginValidator pluginValidator;
+
     private ExtensionDescriptorBuilder extensionDescriptorBuilder = new 
ExtensionDescriptorBuilder();
 
     private PluginDescriptorBuilder builder = new PluginDescriptorBuilder();
@@ -241,14 +244,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..72162aa
--- /dev/null
+++ 
b/maven-core/src/test/java/org/apache/maven/plugin/MavenPluginValidatorTest.java
@@ -0,0 +1,70 @@
+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.artifact.Artifact;
+import org.apache.maven.artifact.DefaultArtifact;
+import org.apache.maven.artifact.handler.DefaultArtifactHandler;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.codehaus.plexus.PlexusTestCase;
+
+/**
+ * @author Michael Simacek
+ */
+public class MavenPluginValidatorTest
+        extends PlexusTestCase
+{
+    private MavenPluginValidator mavenPluginValidator;
+
+    @Override
+    protected void setUp()
+            throws Exception
+    {
+        super.setUp();
+        mavenPluginValidator = lookup( MavenPluginValidator.class );
+    }
+
+    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() );
+    }
+
+    public void testInvalid()
+    {
+        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() );
+    }
+}

Reply via email to