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() ); + } +}