blob: 684982d85d58dbf9a73612c70320bd7b81a368b6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008-2010 Sonatype, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Sonatype, Inc. - initial API and implementation
*******************************************************************************/
package org.eclipse.m2e.tests.common;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.project.MavenProject;
import org.eclipse.m2e.core.MavenPlugin;
import org.eclipse.m2e.core.internal.MavenPluginActivator;
import org.eclipse.m2e.core.internal.lifecyclemapping.LifecycleMappingFactory;
import org.eclipse.m2e.core.internal.lifecyclemapping.LifecycleMappingResult;
import org.eclipse.m2e.core.internal.lifecyclemapping.model.LifecycleMappingMetadataSource;
import org.eclipse.m2e.core.internal.project.registry.MavenProjectFacade;
import org.eclipse.m2e.core.lifecyclemapping.model.IPluginExecutionMetadata;
import org.eclipse.m2e.core.project.IMavenProjectFacade;
import org.eclipse.m2e.core.project.IMavenProjectRegistry;
import org.eclipse.m2e.core.project.IProjectConfigurationManager;
import org.eclipse.m2e.core.project.ResolverConfiguration;
import org.eclipse.m2e.core.project.configurator.MojoExecutionKey;
@SuppressWarnings("restriction")
@RequireMavenExecutionContext
public abstract class AbstractLifecycleMappingTest extends AbstractMavenProjectTestCase {
protected IMavenProjectRegistry mavenProjectManager;
protected IProjectConfigurationManager projectConfigurationManager;
@Override
protected void setUp() throws Exception {
super.setUp();
mavenProjectManager = MavenPlugin.getMavenProjectRegistry();
projectConfigurationManager = MavenPlugin.getProjectConfigurationManager();
}
@Override
protected void tearDown() throws Exception {
projectConfigurationManager = null;
mavenProjectManager = null;
super.tearDown();
}
protected IMavenProjectFacade importMavenProject(String basedir, String pomName) throws Exception {
ResolverConfiguration configuration = new ResolverConfiguration();
IProject[] project = importProjects(basedir, new String[] {pomName}, configuration);
waitForJobsToComplete();
return mavenProjectManager.create(project[0], monitor);
}
private LifecycleMappingMetadataSource loadLifecycleMappingMetadataSourceInternal(File metadataFile)
throws IOException, XmlPullParserException {
assertTrue("File does not exist:" + metadataFile.getAbsolutePath(), metadataFile.exists());
InputStream in = new FileInputStream(metadataFile);
try {
LifecycleMappingMetadataSource lifecycleMappingMetadataSource = LifecycleMappingFactory
.createLifecycleMappingMetadataSource(in);
return lifecycleMappingMetadataSource;
} finally {
IOUtil.close(in);
}
}
protected LifecycleMappingMetadataSource loadLifecycleMappingMetadataSource(String metadataFilename)
throws IOException, XmlPullParserException {
return loadLifecycleMappingMetadataSourceInternal(new File(metadataFilename));
}
/**
* Creates new partially initialised MavenProjectFacade instance
*/
protected MavenProjectFacade newMavenProjectFacade(IFile pom) throws CoreException {
MavenProject mavenProject = MavenPlugin.getMaven().readProject(pom.getLocation().toFile(), monitor);
MavenProjectFacade facade = new MavenProjectFacade(MavenPluginActivator.getDefault().getMavenProjectManagerImpl(),
pom, mavenProject, new ResolverConfiguration());
return facade;
}
protected List<MojoExecutionKey> getNotCoveredMojoExecutions(IMavenProjectFacade facade) {
List<MojoExecutionKey> result = new ArrayList<MojoExecutionKey>();
Map<MojoExecutionKey, List<IPluginExecutionMetadata>> executionMapping = facade.getMojoExecutionMapping();
for(Map.Entry<MojoExecutionKey, List<IPluginExecutionMetadata>> entry : executionMapping.entrySet()) {
if(entry.getValue() == null || entry.getValue().isEmpty()) {
if(LifecycleMappingFactory.isInterestingPhase(entry.getKey().getLifecyclePhase())) {
result.add(entry.getKey());
}
}
}
return result;
}
/**
* @since 1.4
*/
protected LifecycleMappingResult calculateLifecycleMapping(MavenProjectFacade facade) throws CoreException {
MavenProject mavenProject = facade.getMavenProject(monitor);
List<MojoExecution> mojoExecutions = facade.getMojoExecutions(monitor);
String lifecycleMappingId = facade.getResolverConfiguration().getLifecycleMappingId();
return LifecycleMappingFactory.calculateLifecycleMapping(mavenProject, mojoExecutions, lifecycleMappingId, monitor);
}
}