diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/plugin/DefaultMavenPluginManager.java b/daemon/src/main/java/org/mvndaemon/mvnd/plugin/DefaultMavenPluginManager.java
index 2e63aa72..cb248e77 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/plugin/DefaultMavenPluginManager.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/plugin/DefaultMavenPluginManager.java
@@ -1,24 +1,38 @@
+/*
+ * Copyright 2019 the original author or authors.
+ *
+ * Licensed 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.
+ */
package org.mvndaemon.mvnd.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.
+/*
+ * 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.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -37,7 +51,6 @@ import java.util.Map;
import java.util.Objects;
import java.util.jar.JarFile;
import java.util.zip.ZipEntry;
-
import org.apache.maven.RepositoryUtils;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.classrealm.ClassRealmManager;
@@ -114,12 +127,11 @@ import org.eclipse.aether.util.graph.visitor.PreorderNodeListGenerator;
* plugins as well as special purpose plugins like reports.
*
* @author Benjamin Bentmann
- * @since 3.0
+ * @since 3.0
*/
-@Component( role = MavenPluginManager.class )
+@Component(role = MavenPluginManager.class)
public class DefaultMavenPluginManager
- implements MavenPluginManager
-{
+ implements MavenPluginManager {
/**
*
@@ -169,228 +181,184 @@ public class DefaultMavenPluginManager
private PluginDescriptorBuilder builder = new PluginDescriptorBuilder();
- public synchronized PluginDescriptor getPluginDescriptor( Plugin plugin, List repositories,
- RepositorySystemSession session )
- throws PluginResolutionException, PluginDescriptorParsingException, InvalidPluginDescriptorException
- {
- PluginDescriptorCache.Key cacheKey = pluginDescriptorCache.createKey( plugin, repositories, session );
+ public synchronized PluginDescriptor getPluginDescriptor(Plugin plugin, List repositories,
+ RepositorySystemSession session)
+ throws PluginResolutionException, PluginDescriptorParsingException, InvalidPluginDescriptorException {
+ PluginDescriptorCache.Key cacheKey = pluginDescriptorCache.createKey(plugin, repositories, session);
- PluginDescriptor pluginDescriptor = pluginDescriptorCache.get( cacheKey );
+ PluginDescriptor pluginDescriptor = pluginDescriptorCache.get(cacheKey);
- if ( pluginDescriptor == null )
- {
- org.eclipse.aether.artifact.Artifact artifact =
- pluginDependenciesResolver.resolve( plugin, repositories, session );
+ if (pluginDescriptor == null) {
+ org.eclipse.aether.artifact.Artifact artifact = pluginDependenciesResolver.resolve(plugin, repositories, session);
- Artifact pluginArtifact = RepositoryUtils.toArtifact( artifact );
+ Artifact pluginArtifact = RepositoryUtils.toArtifact(artifact);
- pluginDescriptor = extractPluginDescriptor( pluginArtifact, plugin );
+ pluginDescriptor = extractPluginDescriptor(pluginArtifact, plugin);
- pluginDescriptor.setRequiredMavenVersion( artifact.getProperty( "requiredMavenVersion", null ) );
+ pluginDescriptor.setRequiredMavenVersion(artifact.getProperty("requiredMavenVersion", null));
- pluginDescriptorCache.put( cacheKey, pluginDescriptor );
+ pluginDescriptorCache.put(cacheKey, pluginDescriptor);
}
- pluginDescriptor.setPlugin( plugin );
+ pluginDescriptor.setPlugin(plugin);
return pluginDescriptor;
}
- private PluginDescriptor extractPluginDescriptor( Artifact pluginArtifact, Plugin plugin )
- throws PluginDescriptorParsingException, InvalidPluginDescriptorException
- {
+ private PluginDescriptor extractPluginDescriptor(Artifact pluginArtifact, Plugin plugin)
+ throws PluginDescriptorParsingException, InvalidPluginDescriptorException {
PluginDescriptor pluginDescriptor = null;
File pluginFile = pluginArtifact.getFile();
- try
- {
- if ( pluginFile.isFile() )
- {
- try ( JarFile pluginJar = new JarFile( pluginFile, false ) )
- {
- ZipEntry pluginDescriptorEntry = pluginJar.getEntry( getPluginDescriptorLocation() );
+ try {
+ if (pluginFile.isFile()) {
+ try (JarFile pluginJar = new JarFile(pluginFile, false)) {
+ ZipEntry pluginDescriptorEntry = pluginJar.getEntry(getPluginDescriptorLocation());
- if ( pluginDescriptorEntry != null )
- {
- InputStream is = pluginJar.getInputStream( pluginDescriptorEntry );
+ if (pluginDescriptorEntry != null) {
+ InputStream is = pluginJar.getInputStream(pluginDescriptorEntry);
- pluginDescriptor = parsePluginDescriptor( is, plugin, pluginFile.getAbsolutePath() );
+ pluginDescriptor = parsePluginDescriptor(is, plugin, pluginFile.getAbsolutePath());
}
}
- }
- else
- {
- File pluginXml = new File( pluginFile, getPluginDescriptorLocation() );
+ } else {
+ File pluginXml = new File(pluginFile, getPluginDescriptorLocation());
- if ( pluginXml.isFile() )
- {
- try ( InputStream is = new BufferedInputStream( new FileInputStream( pluginXml ) ) )
- {
- pluginDescriptor = parsePluginDescriptor( is, plugin, pluginXml.getAbsolutePath() );
+ if (pluginXml.isFile()) {
+ try (InputStream is = new BufferedInputStream(new FileInputStream(pluginXml))) {
+ pluginDescriptor = parsePluginDescriptor(is, plugin, pluginXml.getAbsolutePath());
}
}
}
- if ( pluginDescriptor == null )
- {
- throw new IOException( "No plugin descriptor found at " + getPluginDescriptorLocation() );
+ if (pluginDescriptor == null) {
+ throw new IOException("No plugin descriptor found at " + getPluginDescriptorLocation());
}
- }
- catch ( IOException e )
- {
- throw new PluginDescriptorParsingException( plugin, pluginFile.getAbsolutePath(), e );
+ } catch (IOException e) {
+ throw new PluginDescriptorParsingException(plugin, pluginFile.getAbsolutePath(), e);
}
- MavenPluginValidator validator = new MavenPluginValidator( pluginArtifact );
+ MavenPluginValidator validator = new MavenPluginValidator(pluginArtifact);
- validator.validate( pluginDescriptor );
+ validator.validate(pluginDescriptor);
- if ( validator.hasErrors() )
- {
+ if (validator.hasErrors()) {
throw new InvalidPluginDescriptorException(
- "Invalid plugin descriptor for " + plugin.getId() + " (" + pluginFile + ")", validator.getErrors() );
+ "Invalid plugin descriptor for " + plugin.getId() + " (" + pluginFile + ")", validator.getErrors());
}
- pluginDescriptor.setPluginArtifact( pluginArtifact );
+ pluginDescriptor.setPluginArtifact(pluginArtifact);
return pluginDescriptor;
}
- private String getPluginDescriptorLocation()
- {
+ private String getPluginDescriptorLocation() {
return "META-INF/maven/plugin.xml";
}
- private PluginDescriptor parsePluginDescriptor( InputStream is, Plugin plugin, String descriptorLocation )
- throws PluginDescriptorParsingException
- {
- try
- {
- Reader reader = ReaderFactory.newXmlReader( is );
+ private PluginDescriptor parsePluginDescriptor(InputStream is, Plugin plugin, String descriptorLocation)
+ throws PluginDescriptorParsingException {
+ try {
+ Reader reader = ReaderFactory.newXmlReader(is);
- PluginDescriptor pluginDescriptor = builder.build( reader, descriptorLocation );
+ PluginDescriptor pluginDescriptor = builder.build(reader, descriptorLocation);
return pluginDescriptor;
- }
- catch ( IOException | PlexusConfigurationException e )
- {
- throw new PluginDescriptorParsingException( plugin, descriptorLocation, e );
+ } catch (IOException | PlexusConfigurationException e) {
+ throw new PluginDescriptorParsingException(plugin, descriptorLocation, e);
}
}
- public MojoDescriptor getMojoDescriptor( Plugin plugin, String goal, List repositories,
- RepositorySystemSession session )
- throws MojoNotFoundException, PluginResolutionException, PluginDescriptorParsingException,
- InvalidPluginDescriptorException
- {
- PluginDescriptor pluginDescriptor = getPluginDescriptor( plugin, repositories, session );
+ public MojoDescriptor getMojoDescriptor(Plugin plugin, String goal, List repositories,
+ RepositorySystemSession session)
+ throws MojoNotFoundException, PluginResolutionException, PluginDescriptorParsingException,
+ InvalidPluginDescriptorException {
+ PluginDescriptor pluginDescriptor = getPluginDescriptor(plugin, repositories, session);
- MojoDescriptor mojoDescriptor = pluginDescriptor.getMojo( goal );
+ MojoDescriptor mojoDescriptor = pluginDescriptor.getMojo(goal);
- if ( mojoDescriptor == null )
- {
- throw new MojoNotFoundException( goal, pluginDescriptor );
+ if (mojoDescriptor == null) {
+ throw new MojoNotFoundException(goal, pluginDescriptor);
}
return mojoDescriptor;
}
- public void checkRequiredMavenVersion( PluginDescriptor pluginDescriptor )
- throws PluginIncompatibleException
- {
+ public void checkRequiredMavenVersion(PluginDescriptor pluginDescriptor)
+ throws PluginIncompatibleException {
String requiredMavenVersion = pluginDescriptor.getRequiredMavenVersion();
- if ( StringUtils.isNotBlank( requiredMavenVersion ) )
- {
- try
- {
- if ( !runtimeInformation.isMavenVersion( requiredMavenVersion ) )
- {
- throw new PluginIncompatibleException( pluginDescriptor.getPlugin(),
- "The plugin " + pluginDescriptor.getId()
- + " requires Maven version " + requiredMavenVersion );
+ if (StringUtils.isNotBlank(requiredMavenVersion)) {
+ try {
+ if (!runtimeInformation.isMavenVersion(requiredMavenVersion)) {
+ throw new PluginIncompatibleException(pluginDescriptor.getPlugin(),
+ "The plugin " + pluginDescriptor.getId()
+ + " requires Maven version " + requiredMavenVersion);
}
- }
- catch ( RuntimeException e )
- {
- logger.warn( "Could not verify plugin's Maven prerequisite: " + e.getMessage() );
+ } catch (RuntimeException e) {
+ logger.warn("Could not verify plugin's Maven prerequisite: " + e.getMessage());
}
}
}
- public synchronized void setupPluginRealm( PluginDescriptor pluginDescriptor, MavenSession session,
- ClassLoader parent, List imports, DependencyFilter filter )
- throws PluginResolutionException, PluginContainerException
- {
+ public synchronized void setupPluginRealm(PluginDescriptor pluginDescriptor, MavenSession session,
+ ClassLoader parent, List imports, DependencyFilter filter)
+ throws PluginResolutionException, PluginContainerException {
Plugin plugin = pluginDescriptor.getPlugin();
MavenProject project = session.getCurrentProject();
- if ( plugin.isExtensions() )
- {
+ if (plugin.isExtensions()) {
ExtensionRealmCache.CacheRecord extensionRecord;
- try
- {
+ try {
RepositorySystemSession repositorySession = session.getRepositorySession();
- extensionRecord = setupExtensionsRealm( project, plugin, repositorySession );
- }
- catch ( PluginManagerException e )
- {
+ extensionRecord = setupExtensionsRealm(project, plugin, repositorySession);
+ } catch (PluginManagerException e) {
// extensions realm is expected to be fully setup at this point
// any exception means a problem in maven code, not a user error
- throw new IllegalStateException( e );
+ throw new IllegalStateException(e);
}
ClassRealm pluginRealm = extensionRecord.getRealm();
List pluginArtifacts = extensionRecord.getArtifacts();
- for ( ComponentDescriptor> componentDescriptor : pluginDescriptor.getComponents() )
- {
- componentDescriptor.setRealm( pluginRealm );
+ for (ComponentDescriptor> componentDescriptor : pluginDescriptor.getComponents()) {
+ componentDescriptor.setRealm(pluginRealm);
}
- pluginDescriptor.setClassRealm( pluginRealm );
- pluginDescriptor.setArtifacts( pluginArtifacts );
- }
- else
- {
- Map foreignImports = calcImports( project, parent, imports );
+ pluginDescriptor.setClassRealm(pluginRealm);
+ pluginDescriptor.setArtifacts(pluginArtifacts);
+ } else {
+ Map foreignImports = calcImports(project, parent, imports);
- PluginRealmCache.Key cacheKey = pluginRealmCache.createKey( plugin, parent, foreignImports, filter,
- project.getRemotePluginRepositories(),
- session.getRepositorySession() );
+ PluginRealmCache.Key cacheKey = pluginRealmCache.createKey(plugin, parent, foreignImports, filter,
+ project.getRemotePluginRepositories(),
+ session.getRepositorySession());
- PluginRealmCache.CacheRecord cacheRecord = pluginRealmCache.get( cacheKey );
+ PluginRealmCache.CacheRecord cacheRecord = pluginRealmCache.get(cacheKey);
- if ( cacheRecord != null )
- {
- pluginDescriptor.setClassRealm( cacheRecord.getRealm() );
- pluginDescriptor.setArtifacts( new ArrayList<>( cacheRecord.getArtifacts() ) );
- for ( ComponentDescriptor> componentDescriptor : pluginDescriptor.getComponents() )
- {
- componentDescriptor.setRealm( cacheRecord.getRealm() );
+ if (cacheRecord != null) {
+ pluginDescriptor.setClassRealm(cacheRecord.getRealm());
+ pluginDescriptor.setArtifacts(new ArrayList<>(cacheRecord.getArtifacts()));
+ for (ComponentDescriptor> componentDescriptor : pluginDescriptor.getComponents()) {
+ componentDescriptor.setRealm(cacheRecord.getRealm());
}
- }
- else
- {
- createPluginRealm( pluginDescriptor, session, parent, foreignImports, filter );
+ } else {
+ createPluginRealm(pluginDescriptor, session, parent, foreignImports, filter);
- cacheRecord =
- pluginRealmCache.put( cacheKey, pluginDescriptor.getClassRealm(), pluginDescriptor.getArtifacts() );
+ cacheRecord = pluginRealmCache.put(cacheKey, pluginDescriptor.getClassRealm(), pluginDescriptor.getArtifacts());
}
- pluginRealmCache.register( project, cacheKey, cacheRecord );
+ pluginRealmCache.register(project, cacheKey, cacheRecord);
}
}
- private void createPluginRealm( PluginDescriptor pluginDescriptor, MavenSession session, ClassLoader parent,
- Map foreignImports, DependencyFilter filter )
- throws PluginResolutionException, PluginContainerException
- {
- Plugin plugin =
- Objects.requireNonNull( pluginDescriptor.getPlugin(), "pluginDescriptor.plugin cannot be null" );
+ private void createPluginRealm(PluginDescriptor pluginDescriptor, MavenSession session, ClassLoader parent,
+ Map foreignImports, DependencyFilter filter)
+ throws PluginResolutionException, PluginContainerException {
+ Plugin plugin = Objects.requireNonNull(pluginDescriptor.getPlugin(), "pluginDescriptor.plugin cannot be null");
- Artifact pluginArtifact = Objects.requireNonNull( pluginDescriptor.getPluginArtifact(),
- "pluginDescriptor.pluginArtifact cannot be null" );
+ Artifact pluginArtifact = Objects.requireNonNull(pluginDescriptor.getPluginArtifact(),
+ "pluginDescriptor.pluginArtifact cannot be null");
MavenProject project = session.getCurrentProject();
@@ -399,520 +367,421 @@ public class DefaultMavenPluginManager
RepositorySystemSession repositorySession = session.getRepositorySession();
DependencyFilter dependencyFilter = project.getExtensionDependencyFilter();
- dependencyFilter = AndDependencyFilter.newInstance( dependencyFilter, filter );
+ dependencyFilter = AndDependencyFilter.newInstance(dependencyFilter, filter);
- DependencyNode root =
- pluginDependenciesResolver.resolve( plugin, RepositoryUtils.toArtifact( pluginArtifact ), dependencyFilter,
- project.getRemotePluginRepositories(), repositorySession );
+ DependencyNode root = pluginDependenciesResolver.resolve(plugin, RepositoryUtils.toArtifact(pluginArtifact),
+ dependencyFilter,
+ project.getRemotePluginRepositories(), repositorySession);
PreorderNodeListGenerator nlg = new PreorderNodeListGenerator();
- root.accept( nlg );
+ root.accept(nlg);
- pluginArtifacts = toMavenArtifacts( root, nlg );
+ pluginArtifacts = toMavenArtifacts(root, nlg);
- pluginRealm = classRealmManager.createPluginRealm( plugin, parent, null, foreignImports,
- toAetherArtifacts( pluginArtifacts ) );
+ pluginRealm = classRealmManager.createPluginRealm(plugin, parent, null, foreignImports,
+ toAetherArtifacts(pluginArtifacts));
- discoverPluginComponents( pluginRealm, plugin, pluginDescriptor );
+ discoverPluginComponents(pluginRealm, plugin, pluginDescriptor);
- pluginDescriptor.setClassRealm( pluginRealm );
- pluginDescriptor.setArtifacts( pluginArtifacts );
+ pluginDescriptor.setClassRealm(pluginRealm);
+ pluginDescriptor.setArtifacts(pluginArtifacts);
}
- private void discoverPluginComponents( final ClassRealm pluginRealm, Plugin plugin,
- PluginDescriptor pluginDescriptor )
- throws PluginContainerException
- {
- try
- {
- if ( pluginDescriptor != null )
- {
- for ( ComponentDescriptor> componentDescriptor : pluginDescriptor.getComponents() )
- {
- componentDescriptor.setRealm( pluginRealm );
- container.addComponentDescriptor( componentDescriptor );
+ private void discoverPluginComponents(final ClassRealm pluginRealm, Plugin plugin,
+ PluginDescriptor pluginDescriptor)
+ throws PluginContainerException {
+ try {
+ if (pluginDescriptor != null) {
+ for (ComponentDescriptor> componentDescriptor : pluginDescriptor.getComponents()) {
+ componentDescriptor.setRealm(pluginRealm);
+ container.addComponentDescriptor(componentDescriptor);
}
}
- ( (DefaultPlexusContainer) container ).discoverComponents( pluginRealm, new SessionScopeModule( container ),
- new MojoExecutionScopeModule( container ) );
- }
- catch ( ComponentLookupException | CycleDetectedInComponentGraphException e )
- {
- throw new PluginContainerException( plugin, pluginRealm,
- "Error in component graph of plugin " + plugin.getId() + ": "
- + e.getMessage(), e );
+ ((DefaultPlexusContainer) container).discoverComponents(pluginRealm, new SessionScopeModule(container),
+ new MojoExecutionScopeModule(container));
+ } catch (ComponentLookupException | CycleDetectedInComponentGraphException e) {
+ throw new PluginContainerException(plugin, pluginRealm,
+ "Error in component graph of plugin " + plugin.getId() + ": "
+ + e.getMessage(),
+ e);
}
}
- private List toAetherArtifacts( final List pluginArtifacts )
- {
- return new ArrayList<>( RepositoryUtils.toArtifacts( pluginArtifacts ) );
+ private List toAetherArtifacts(final List pluginArtifacts) {
+ return new ArrayList<>(RepositoryUtils.toArtifacts(pluginArtifacts));
}
- private List toMavenArtifacts( DependencyNode root, PreorderNodeListGenerator nlg )
- {
- List artifacts = new ArrayList<>( nlg.getNodes().size() );
- RepositoryUtils.toArtifacts( artifacts, Collections.singleton( root ), Collections.emptyList(), null );
- for ( Iterator it = artifacts.iterator(); it.hasNext(); )
- {
+ private List toMavenArtifacts(DependencyNode root, PreorderNodeListGenerator nlg) {
+ List artifacts = new ArrayList<>(nlg.getNodes().size());
+ RepositoryUtils.toArtifacts(artifacts, Collections.singleton(root), Collections. emptyList(), null);
+ for (Iterator it = artifacts.iterator(); it.hasNext();) {
Artifact artifact = it.next();
- if ( artifact.getFile() == null )
- {
+ if (artifact.getFile() == null) {
it.remove();
}
}
- return Collections.unmodifiableList( artifacts );
+ return Collections.unmodifiableList(artifacts);
}
- private Map calcImports( MavenProject project, ClassLoader parent, List imports )
- {
+ private Map calcImports(MavenProject project, ClassLoader parent, List imports) {
Map foreignImports = new HashMap<>();
ClassLoader projectRealm = project.getClassRealm();
- if ( projectRealm != null )
- {
- foreignImports.put( "", projectRealm );
- }
- else
- {
- foreignImports.put( "", classRealmManager.getMavenApiRealm() );
+ if (projectRealm != null) {
+ foreignImports.put("", projectRealm);
+ } else {
+ foreignImports.put("", classRealmManager.getMavenApiRealm());
}
- if ( parent != null && imports != null )
- {
- for ( String parentImport : imports )
- {
- foreignImports.put( parentImport, parent );
+ if (parent != null && imports != null) {
+ for (String parentImport : imports) {
+ foreignImports.put(parentImport, parent);
}
}
return foreignImports;
}
- public T getConfiguredMojo( Class mojoInterface, MavenSession session, MojoExecution mojoExecution )
- throws PluginConfigurationException, PluginContainerException
- {
+ public T getConfiguredMojo(Class mojoInterface, MavenSession session, MojoExecution mojoExecution)
+ throws PluginConfigurationException, PluginContainerException {
MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
PluginDescriptor pluginDescriptor = mojoDescriptor.getPluginDescriptor();
ClassRealm pluginRealm = pluginDescriptor.getClassRealm();
- if ( logger.isDebugEnabled() )
- {
- logger.debug( "Configuring mojo " + mojoDescriptor.getId() + " from plugin realm " + pluginRealm );
+ if (logger.isDebugEnabled()) {
+ logger.debug("Configuring mojo " + mojoDescriptor.getId() + " from plugin realm " + pluginRealm);
}
// We are forcing the use of the plugin realm for all lookups that might occur during
// the lifecycle that is part of the lookup. Here we are specifically trying to keep
// lookups that occur in contextualize calls in line with the right realm.
- ClassRealm oldLookupRealm = container.setLookupRealm( pluginRealm );
+ ClassRealm oldLookupRealm = container.setLookupRealm(pluginRealm);
ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader( pluginRealm );
+ Thread.currentThread().setContextClassLoader(pluginRealm);
- try
- {
+ try {
T mojo;
- try
- {
- mojo = container.lookup( mojoInterface, mojoDescriptor.getRoleHint() );
- }
- catch ( ComponentLookupException e )
- {
+ try {
+ mojo = container.lookup(mojoInterface, mojoDescriptor.getRoleHint());
+ } catch (ComponentLookupException e) {
Throwable cause = e.getCause();
- while ( cause != null && !( cause instanceof LinkageError )
- && !( cause instanceof ClassNotFoundException ) )
- {
+ while (cause != null && !(cause instanceof LinkageError)
+ && !(cause instanceof ClassNotFoundException)) {
cause = cause.getCause();
}
- if ( ( cause instanceof NoClassDefFoundError ) || ( cause instanceof ClassNotFoundException ) )
- {
- ByteArrayOutputStream os = new ByteArrayOutputStream( 1024 );
- PrintStream ps = new PrintStream( os );
- ps.println( "Unable to load the mojo '" + mojoDescriptor.getGoal() + "' in the plugin '"
- + pluginDescriptor.getId() + "'. A required class is missing: "
- + cause.getMessage() );
- pluginRealm.display( ps );
+ if ((cause instanceof NoClassDefFoundError) || (cause instanceof ClassNotFoundException)) {
+ ByteArrayOutputStream os = new ByteArrayOutputStream(1024);
+ PrintStream ps = new PrintStream(os);
+ ps.println("Unable to load the mojo '" + mojoDescriptor.getGoal() + "' in the plugin '"
+ + pluginDescriptor.getId() + "'. A required class is missing: "
+ + cause.getMessage());
+ pluginRealm.display(ps);
- throw new PluginContainerException( mojoDescriptor, pluginRealm, os.toString(), cause );
- }
- else if ( cause instanceof LinkageError )
- {
- ByteArrayOutputStream os = new ByteArrayOutputStream( 1024 );
- PrintStream ps = new PrintStream( os );
- ps.println( "Unable to load the mojo '" + mojoDescriptor.getGoal() + "' in the plugin '"
- + pluginDescriptor.getId() + "' due to an API incompatibility: "
- + e.getClass().getName() + ": " + cause.getMessage() );
- pluginRealm.display( ps );
+ throw new PluginContainerException(mojoDescriptor, pluginRealm, os.toString(), cause);
+ } else if (cause instanceof LinkageError) {
+ ByteArrayOutputStream os = new ByteArrayOutputStream(1024);
+ PrintStream ps = new PrintStream(os);
+ ps.println("Unable to load the mojo '" + mojoDescriptor.getGoal() + "' in the plugin '"
+ + pluginDescriptor.getId() + "' due to an API incompatibility: "
+ + e.getClass().getName() + ": " + cause.getMessage());
+ pluginRealm.display(ps);
- throw new PluginContainerException( mojoDescriptor, pluginRealm, os.toString(), cause );
+ throw new PluginContainerException(mojoDescriptor, pluginRealm, os.toString(), cause);
}
- throw new PluginContainerException( mojoDescriptor, pluginRealm,
- "Unable to load the mojo '" + mojoDescriptor.getGoal()
- + "' (or one of its required components) from the plugin '"
- + pluginDescriptor.getId() + "'", e );
+ throw new PluginContainerException(mojoDescriptor, pluginRealm,
+ "Unable to load the mojo '" + mojoDescriptor.getGoal()
+ + "' (or one of its required components) from the plugin '"
+ + pluginDescriptor.getId() + "'",
+ e);
}
- if ( mojo instanceof ContextEnabled )
- {
+ if (mojo instanceof ContextEnabled) {
MavenProject project = session.getCurrentProject();
- Map pluginContext = session.getPluginContext( pluginDescriptor, project );
+ Map pluginContext = session.getPluginContext(pluginDescriptor, project);
- if ( pluginContext != null )
- {
- pluginContext.put( "project", project );
+ if (pluginContext != null) {
+ pluginContext.put("project", project);
- pluginContext.put( "pluginDescriptor", pluginDescriptor );
+ pluginContext.put("pluginDescriptor", pluginDescriptor);
- ( (ContextEnabled) mojo ).setPluginContext( pluginContext );
+ ((ContextEnabled) mojo).setPluginContext(pluginContext);
}
}
- if ( mojo instanceof Mojo )
- {
- Logger mojoLogger = loggerManager.getLoggerForComponent( mojoDescriptor.getImplementation() );
- ( (Mojo) mojo ).setLog( new DefaultLog( mojoLogger ) );
+ if (mojo instanceof Mojo) {
+ Logger mojoLogger = loggerManager.getLoggerForComponent(mojoDescriptor.getImplementation());
+ ((Mojo) mojo).setLog(new DefaultLog(mojoLogger));
}
Xpp3Dom dom = mojoExecution.getConfiguration();
PlexusConfiguration pomConfiguration;
- if ( dom == null )
- {
- pomConfiguration = new XmlPlexusConfiguration( "configuration" );
- }
- else
- {
- pomConfiguration = new XmlPlexusConfiguration( dom );
+ if (dom == null) {
+ pomConfiguration = new XmlPlexusConfiguration("configuration");
+ } else {
+ pomConfiguration = new XmlPlexusConfiguration(dom);
}
- ExpressionEvaluator expressionEvaluator = new PluginParameterExpressionEvaluator( session, mojoExecution );
+ ExpressionEvaluator expressionEvaluator = new PluginParameterExpressionEvaluator(session, mojoExecution);
- populatePluginFields( mojo, mojoDescriptor, pluginRealm, pomConfiguration, expressionEvaluator );
+ populatePluginFields(mojo, mojoDescriptor, pluginRealm, pomConfiguration, expressionEvaluator);
return mojo;
- }
- finally
- {
- Thread.currentThread().setContextClassLoader( oldClassLoader );
- container.setLookupRealm( oldLookupRealm );
+ } finally {
+ Thread.currentThread().setContextClassLoader(oldClassLoader);
+ container.setLookupRealm(oldLookupRealm);
}
}
- private void populatePluginFields( Object mojo, MojoDescriptor mojoDescriptor, ClassRealm pluginRealm,
- PlexusConfiguration configuration, ExpressionEvaluator expressionEvaluator )
- throws PluginConfigurationException
- {
+ private void populatePluginFields(Object mojo, MojoDescriptor mojoDescriptor, ClassRealm pluginRealm,
+ PlexusConfiguration configuration, ExpressionEvaluator expressionEvaluator)
+ throws PluginConfigurationException {
ComponentConfigurator configurator = null;
String configuratorId = mojoDescriptor.getComponentConfigurator();
- if ( StringUtils.isEmpty( configuratorId ) )
- {
+ if (StringUtils.isEmpty(configuratorId)) {
configuratorId = "basic";
}
- try
- {
+ try {
// TODO could the configuration be passed to lookup and the configurator known to plexus via the descriptor
// so that this method could entirely be handled by a plexus lookup?
- configurator = container.lookup( ComponentConfigurator.class, configuratorId );
+ configurator = container.lookup(ComponentConfigurator.class, configuratorId);
- ConfigurationListener listener = new DebugConfigurationListener( logger );
+ ConfigurationListener listener = new DebugConfigurationListener(logger);
- ValidatingConfigurationListener validator =
- new ValidatingConfigurationListener( mojo, mojoDescriptor, listener );
+ ValidatingConfigurationListener validator = new ValidatingConfigurationListener(mojo, mojoDescriptor, listener);
logger.debug(
- "Configuring mojo '" + mojoDescriptor.getId() + "' with " + configuratorId + " configurator -->" );
+ "Configuring mojo '" + mojoDescriptor.getId() + "' with " + configuratorId + " configurator -->");
- configurator.configureComponent( mojo, configuration, expressionEvaluator, pluginRealm, validator );
+ configurator.configureComponent(mojo, configuration, expressionEvaluator, pluginRealm, validator);
- logger.debug( "-- end configuration --" );
+ logger.debug("-- end configuration --");
Collection missingParameters = validator.getMissingParameters();
- if ( !missingParameters.isEmpty() )
- {
- if ( "basic".equals( configuratorId ) )
- {
- throw new PluginParameterException( mojoDescriptor, new ArrayList<>( missingParameters ) );
- }
- else
- {
+ if (!missingParameters.isEmpty()) {
+ if ("basic".equals(configuratorId)) {
+ throw new PluginParameterException(mojoDescriptor, new ArrayList<>(missingParameters));
+ } else {
/*
* NOTE: Other configurators like the map-oriented one don't call into the listener, so do it the
* hard way.
*/
- validateParameters( mojoDescriptor, configuration, expressionEvaluator );
+ validateParameters(mojoDescriptor, configuration, expressionEvaluator);
}
}
- }
- catch ( ComponentConfigurationException e )
- {
+ } catch (ComponentConfigurationException e) {
String message = "Unable to parse configuration of mojo " + mojoDescriptor.getId();
- if ( e.getFailedConfiguration() != null )
- {
+ if (e.getFailedConfiguration() != null) {
message += " for parameter " + e.getFailedConfiguration().getName();
}
message += ": " + e.getMessage();
- throw new PluginConfigurationException( mojoDescriptor.getPluginDescriptor(), message, e );
- }
- catch ( ComponentLookupException e )
- {
- throw new PluginConfigurationException( mojoDescriptor.getPluginDescriptor(),
- "Unable to retrieve component configurator " + configuratorId
- + " for configuration of mojo " + mojoDescriptor.getId(), e );
- }
- catch ( NoClassDefFoundError e )
- {
- ByteArrayOutputStream os = new ByteArrayOutputStream( 1024 );
- PrintStream ps = new PrintStream( os );
- ps.println( "A required class was missing during configuration of mojo " + mojoDescriptor.getId() + ": "
- + e.getMessage() );
- pluginRealm.display( ps );
+ throw new PluginConfigurationException(mojoDescriptor.getPluginDescriptor(), message, e);
+ } catch (ComponentLookupException e) {
+ throw new PluginConfigurationException(mojoDescriptor.getPluginDescriptor(),
+ "Unable to retrieve component configurator " + configuratorId
+ + " for configuration of mojo " + mojoDescriptor.getId(),
+ e);
+ } catch (NoClassDefFoundError e) {
+ ByteArrayOutputStream os = new ByteArrayOutputStream(1024);
+ PrintStream ps = new PrintStream(os);
+ ps.println("A required class was missing during configuration of mojo " + mojoDescriptor.getId() + ": "
+ + e.getMessage());
+ pluginRealm.display(ps);
- throw new PluginConfigurationException( mojoDescriptor.getPluginDescriptor(), os.toString(), e );
- }
- catch ( LinkageError e )
- {
- ByteArrayOutputStream os = new ByteArrayOutputStream( 1024 );
- PrintStream ps = new PrintStream( os );
+ throw new PluginConfigurationException(mojoDescriptor.getPluginDescriptor(), os.toString(), e);
+ } catch (LinkageError e) {
+ ByteArrayOutputStream os = new ByteArrayOutputStream(1024);
+ PrintStream ps = new PrintStream(os);
ps.println(
- "An API incompatibility was encountered during configuration of mojo " + mojoDescriptor.getId() + ": "
- + e.getClass().getName() + ": " + e.getMessage() );
- pluginRealm.display( ps );
+ "An API incompatibility was encountered during configuration of mojo " + mojoDescriptor.getId() + ": "
+ + e.getClass().getName() + ": " + e.getMessage());
+ pluginRealm.display(ps);
- throw new PluginConfigurationException( mojoDescriptor.getPluginDescriptor(), os.toString(), e );
- }
- finally
- {
- if ( configurator != null )
- {
- try
- {
- container.release( configurator );
- }
- catch ( ComponentLifecycleException e )
- {
- logger.debug( "Failed to release mojo configurator - ignoring." );
+ throw new PluginConfigurationException(mojoDescriptor.getPluginDescriptor(), os.toString(), e);
+ } finally {
+ if (configurator != null) {
+ try {
+ container.release(configurator);
+ } catch (ComponentLifecycleException e) {
+ logger.debug("Failed to release mojo configurator - ignoring.");
}
}
}
}
- private void validateParameters( MojoDescriptor mojoDescriptor, PlexusConfiguration configuration,
- ExpressionEvaluator expressionEvaluator )
- throws ComponentConfigurationException, PluginParameterException
- {
- if ( mojoDescriptor.getParameters() == null )
- {
+ private void validateParameters(MojoDescriptor mojoDescriptor, PlexusConfiguration configuration,
+ ExpressionEvaluator expressionEvaluator)
+ throws ComponentConfigurationException, PluginParameterException {
+ if (mojoDescriptor.getParameters() == null) {
return;
}
List invalidParameters = new ArrayList<>();
- for ( Parameter parameter : mojoDescriptor.getParameters() )
- {
- if ( !parameter.isRequired() )
- {
+ for (Parameter parameter : mojoDescriptor.getParameters()) {
+ if (!parameter.isRequired()) {
continue;
}
Object value = null;
- PlexusConfiguration config = configuration.getChild( parameter.getName(), false );
- if ( config != null )
- {
- String expression = config.getValue( null );
+ PlexusConfiguration config = configuration.getChild(parameter.getName(), false);
+ if (config != null) {
+ String expression = config.getValue(null);
- try
- {
- value = expressionEvaluator.evaluate( expression );
+ try {
+ value = expressionEvaluator.evaluate(expression);
- if ( value == null )
- {
- value = config.getAttribute( "default-value", null );
+ if (value == null) {
+ value = config.getAttribute("default-value", null);
}
- }
- catch ( ExpressionEvaluationException e )
- {
+ } catch (ExpressionEvaluationException e) {
String msg = "Error evaluating the expression '" + expression + "' for configuration value '"
- + configuration.getName() + "'";
- throw new ComponentConfigurationException( configuration, msg, e );
+ + configuration.getName() + "'";
+ throw new ComponentConfigurationException(configuration, msg, e);
}
}
- if ( value == null && ( config == null || config.getChildCount() <= 0 ) )
- {
- invalidParameters.add( parameter );
+ if (value == null && (config == null || config.getChildCount() <= 0)) {
+ invalidParameters.add(parameter);
}
}
- if ( !invalidParameters.isEmpty() )
- {
- throw new PluginParameterException( mojoDescriptor, invalidParameters );
+ if (!invalidParameters.isEmpty()) {
+ throw new PluginParameterException(mojoDescriptor, invalidParameters);
}
}
- public void releaseMojo( Object mojo, MojoExecution mojoExecution )
- {
- if ( mojo != null )
- {
- try
- {
- container.release( mojo );
- }
- catch ( ComponentLifecycleException e )
- {
+ public void releaseMojo(Object mojo, MojoExecution mojoExecution) {
+ if (mojo != null) {
+ try {
+ container.release(mojo);
+ } catch (ComponentLifecycleException e) {
String goalExecId = mojoExecution.getGoal();
- if ( mojoExecution.getExecutionId() != null )
- {
+ if (mojoExecution.getExecutionId() != null) {
goalExecId += " {execution: " + mojoExecution.getExecutionId() + "}";
}
- logger.debug( "Error releasing mojo for " + goalExecId, e );
+ logger.debug("Error releasing mojo for " + goalExecId, e);
}
}
}
- public ExtensionRealmCache.CacheRecord setupExtensionsRealm( MavenProject project, Plugin plugin,
- RepositorySystemSession session )
- throws PluginManagerException
- {
- @SuppressWarnings( "unchecked" ) Map pluginRealms =
- (Map) project.getContextValue( KEY_EXTENSIONS_REALMS );
- if ( pluginRealms == null )
- {
+ public ExtensionRealmCache.CacheRecord setupExtensionsRealm(MavenProject project, Plugin plugin,
+ RepositorySystemSession session)
+ throws PluginManagerException {
+ @SuppressWarnings("unchecked")
+ Map pluginRealms = (Map) project
+ .getContextValue(KEY_EXTENSIONS_REALMS);
+ if (pluginRealms == null) {
pluginRealms = new HashMap<>();
- project.setContextValue( KEY_EXTENSIONS_REALMS, pluginRealms );
+ project.setContextValue(KEY_EXTENSIONS_REALMS, pluginRealms);
}
final String pluginKey = plugin.getId();
- ExtensionRealmCache.CacheRecord extensionRecord = pluginRealms.get( pluginKey );
- if ( extensionRecord != null )
- {
+ ExtensionRealmCache.CacheRecord extensionRecord = pluginRealms.get(pluginKey);
+ if (extensionRecord != null) {
return extensionRecord;
}
final List repositories = project.getRemotePluginRepositories();
// resolve plugin version as necessary
- if ( plugin.getVersion() == null )
- {
- PluginVersionRequest versionRequest = new DefaultPluginVersionRequest( plugin, session, repositories );
- try
- {
- plugin.setVersion( pluginVersionResolver.resolve( versionRequest ).getVersion() );
- }
- catch ( PluginVersionResolutionException e )
- {
- throw new PluginManagerException( plugin, e.getMessage(), e );
+ if (plugin.getVersion() == null) {
+ PluginVersionRequest versionRequest = new DefaultPluginVersionRequest(plugin, session, repositories);
+ try {
+ plugin.setVersion(pluginVersionResolver.resolve(versionRequest).getVersion());
+ } catch (PluginVersionResolutionException e) {
+ throw new PluginManagerException(plugin, e.getMessage(), e);
}
}
// resolve plugin artifacts
List artifacts;
- PluginArtifactsCache.Key cacheKey = pluginArtifactsCache.createKey( plugin, null, repositories, session );
+ PluginArtifactsCache.Key cacheKey = pluginArtifactsCache.createKey(plugin, null, repositories, session);
PluginArtifactsCache.CacheRecord recordArtifacts;
- try
- {
- recordArtifacts = pluginArtifactsCache.get( cacheKey );
+ try {
+ recordArtifacts = pluginArtifactsCache.get(cacheKey);
+ } catch (PluginResolutionException e) {
+ throw new PluginManagerException(plugin, e.getMessage(), e);
}
- catch ( PluginResolutionException e )
- {
- throw new PluginManagerException( plugin, e.getMessage(), e );
- }
- if ( recordArtifacts != null )
- {
+ if (recordArtifacts != null) {
artifacts = recordArtifacts.getArtifacts();
- }
- else
- {
- try
- {
- artifacts = resolveExtensionArtifacts( plugin, repositories, session );
- recordArtifacts = pluginArtifactsCache.put( cacheKey, artifacts );
- }
- catch ( PluginResolutionException e )
- {
- pluginArtifactsCache.put( cacheKey, e );
- pluginArtifactsCache.register( project, cacheKey, recordArtifacts );
- throw new PluginManagerException( plugin, e.getMessage(), e );
+ } else {
+ try {
+ artifacts = resolveExtensionArtifacts(plugin, repositories, session);
+ recordArtifacts = pluginArtifactsCache.put(cacheKey, artifacts);
+ } catch (PluginResolutionException e) {
+ pluginArtifactsCache.put(cacheKey, e);
+ pluginArtifactsCache.register(project, cacheKey, recordArtifacts);
+ throw new PluginManagerException(plugin, e.getMessage(), e);
}
}
- pluginArtifactsCache.register( project, cacheKey, recordArtifacts );
+ pluginArtifactsCache.register(project, cacheKey, recordArtifacts);
// create and cache extensions realms
- final ExtensionRealmCache.Key extensionKey = extensionRealmCache.createKey( artifacts );
- extensionRecord = extensionRealmCache.get( extensionKey );
- if ( extensionRecord == null )
- {
- ClassRealm extensionRealm =
- classRealmManager.createExtensionRealm( plugin, toAetherArtifacts( artifacts ) );
+ final ExtensionRealmCache.Key extensionKey = extensionRealmCache.createKey(artifacts);
+ extensionRecord = extensionRealmCache.get(extensionKey);
+ if (extensionRecord == null) {
+ ClassRealm extensionRealm = classRealmManager.createExtensionRealm(plugin, toAetherArtifacts(artifacts));
// TODO figure out how to use the same PluginDescriptor when running mojos
PluginDescriptor pluginDescriptor = null;
- if ( plugin.isExtensions() && !artifacts.isEmpty() )
- {
+ if (plugin.isExtensions() && !artifacts.isEmpty()) {
// ignore plugin descriptor parsing errors at this point
// these errors will reported during calculation of project build execution plan
- try
- {
- pluginDescriptor = extractPluginDescriptor( artifacts.get( 0 ), plugin );
- }
- catch ( PluginDescriptorParsingException | InvalidPluginDescriptorException e )
- {
+ try {
+ pluginDescriptor = extractPluginDescriptor(artifacts.get(0), plugin);
+ } catch (PluginDescriptorParsingException | InvalidPluginDescriptorException e) {
// ignore, see above
}
}
- discoverPluginComponents( extensionRealm, plugin, pluginDescriptor );
+ discoverPluginComponents(extensionRealm, plugin, pluginDescriptor);
ExtensionDescriptor extensionDescriptor = null;
- Artifact extensionArtifact = artifacts.get( 0 );
- try
- {
- extensionDescriptor = extensionDescriptorBuilder.build( extensionArtifact.getFile() );
- }
- catch ( IOException e )
- {
+ Artifact extensionArtifact = artifacts.get(0);
+ try {
+ extensionDescriptor = extensionDescriptorBuilder.build(extensionArtifact.getFile());
+ } catch (IOException e) {
String message = "Invalid extension descriptor for " + plugin.getId() + ": " + e.getMessage();
- if ( logger.isDebugEnabled() )
- {
- logger.error( message, e );
- }
- else
- {
- logger.error( message );
+ if (logger.isDebugEnabled()) {
+ logger.error(message, e);
+ } else {
+ logger.error(message);
}
}
- extensionRecord = extensionRealmCache.put( extensionKey, extensionRealm, extensionDescriptor, artifacts );
+ extensionRecord = extensionRealmCache.put(extensionKey, extensionRealm, extensionDescriptor, artifacts);
}
- extensionRealmCache.register( project, extensionKey, extensionRecord );
- pluginRealms.put( pluginKey, extensionRecord );
+ extensionRealmCache.register(project, extensionKey, extensionRecord);
+ pluginRealms.put(pluginKey, extensionRecord);
return extensionRecord;
}
- private List resolveExtensionArtifacts( Plugin extensionPlugin, List repositories,
- RepositorySystemSession session )
- throws PluginResolutionException
- {
- DependencyNode root = pluginDependenciesResolver.resolve( extensionPlugin, null, null, repositories, session );
+ private List resolveExtensionArtifacts(Plugin extensionPlugin, List repositories,
+ RepositorySystemSession session)
+ throws PluginResolutionException {
+ DependencyNode root = pluginDependenciesResolver.resolve(extensionPlugin, null, null, repositories, session);
PreorderNodeListGenerator nlg = new PreorderNodeListGenerator();
- root.accept( nlg );
- return toMavenArtifacts( root, nlg );
+ root.accept(nlg);
+ return toMavenArtifacts(root, nlg);
}
}
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/plugin/ValidatingConfigurationListener.java b/daemon/src/main/java/org/mvndaemon/mvnd/plugin/ValidatingConfigurationListener.java
index bc386da9..4aa7d5b0 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/plugin/ValidatingConfigurationListener.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/plugin/ValidatingConfigurationListener.java
@@ -1,28 +1,41 @@
+/*
+ * Copyright 2021 the original author or authors.
+ *
+ * Licensed 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.
+ */
package org.mvndaemon.mvnd.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.
+/*
+ * 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.Collection;
import java.util.HashMap;
import java.util.Map;
-
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.Parameter;
import org.codehaus.plexus.component.configurator.ConfigurationListener;
@@ -34,8 +47,7 @@ import org.codehaus.plexus.component.configurator.ConfigurationListener;
* @author Benjamin Bentmann
*/
class ValidatingConfigurationListener
- implements ConfigurationListener
-{
+ implements ConfigurationListener {
private final Object mojo;
@@ -43,54 +55,43 @@ class ValidatingConfigurationListener
private final Map missingParameters;
- ValidatingConfigurationListener(Object mojo, MojoDescriptor mojoDescriptor, ConfigurationListener delegate )
- {
+ ValidatingConfigurationListener(Object mojo, MojoDescriptor mojoDescriptor, ConfigurationListener delegate) {
this.mojo = mojo;
this.delegate = delegate;
this.missingParameters = new HashMap<>();
- if ( mojoDescriptor.getParameters() != null )
- {
- for ( Parameter param : mojoDescriptor.getParameters() )
- {
- if ( param.isRequired() )
- {
- missingParameters.put( param.getName(), param );
+ if (mojoDescriptor.getParameters() != null) {
+ for (Parameter param : mojoDescriptor.getParameters()) {
+ if (param.isRequired()) {
+ missingParameters.put(param.getName(), param);
}
}
}
}
- public Collection getMissingParameters()
- {
+ public Collection getMissingParameters() {
return missingParameters.values();
}
- public void notifyFieldChangeUsingSetter( String fieldName, Object value, Object target )
- {
- delegate.notifyFieldChangeUsingSetter( fieldName, value, target );
+ public void notifyFieldChangeUsingSetter(String fieldName, Object value, Object target) {
+ delegate.notifyFieldChangeUsingSetter(fieldName, value, target);
- if ( mojo == target )
- {
- notify( fieldName, value );
+ if (mojo == target) {
+ notify(fieldName, value);
}
}
- public void notifyFieldChangeUsingReflection( String fieldName, Object value, Object target )
- {
- delegate.notifyFieldChangeUsingReflection( fieldName, value, target );
+ public void notifyFieldChangeUsingReflection(String fieldName, Object value, Object target) {
+ delegate.notifyFieldChangeUsingReflection(fieldName, value, target);
- if ( mojo == target )
- {
- notify( fieldName, value );
+ if (mojo == target) {
+ notify(fieldName, value);
}
}
- private void notify( String fieldName, Object value )
- {
- if ( value != null )
- {
- missingParameters.remove( fieldName );
+ private void notify(String fieldName, Object value) {
+ if (value != null) {
+ missingParameters.remove(fieldName);
}
}