blob: da3ff3bb7916d96f749617451fca805514cc6593 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2014 SAP SE and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* SAP SE - initial API and implementation
*******************************************************************************/
package org.eclipse.tycho.core.utils;
import java.util.ArrayList;
import java.util.List;
import org.apache.maven.project.MavenProject;
import org.eclipse.tycho.artifacts.DependencyArtifacts;
import org.eclipse.tycho.artifacts.TargetPlatform;
import org.eclipse.tycho.core.TargetPlatformConfiguration;
import org.eclipse.tycho.core.TychoConstants;
import org.eclipse.tycho.core.ee.shared.ExecutionEnvironmentConfiguration;
import org.eclipse.tycho.core.resolver.shared.DependencySeed;
public class TychoProjectUtils {
private static final String TYCHO_NOT_CONFIGURED = "Tycho build extension not configured for ";
/**
* Returns the {@link DependencyArtifacts} instance associated with the given project.
*
* @param project
* a Tycho project
* @return the resolved dependencies of the given project; never <code>null</code>
* @throws IllegalStateException
* if the given project does not have the resolved project dependencies stored
*/
public static DependencyArtifacts getDependencyArtifacts(MavenProject project) throws IllegalStateException {
DependencyArtifacts resolvedDependencies = (DependencyArtifacts) project
.getContextValue(TychoConstants.CTX_DEPENDENCY_ARTIFACTS);
if (resolvedDependencies == null) {
throw new IllegalStateException(TYCHO_NOT_CONFIGURED + project.toString());
}
return resolvedDependencies;
}
/**
* Returns the {@link TargetPlatformConfiguration} instance associated with the given project.
*
* @param project
* a Tycho project
* @return the target platform configuration for the given project; never <code>null</code>
* @throws IllegalStateException
* if the given project does not have an associated target platform configuration
*/
public static TargetPlatformConfiguration getTargetPlatformConfiguration(MavenProject project)
throws IllegalStateException {
TargetPlatformConfiguration targetPlatformConfiguration = (TargetPlatformConfiguration) project
.getContextValue(TychoConstants.CTX_TARGET_PLATFORM_CONFIGURATION);
if (targetPlatformConfiguration == null) {
throw new IllegalStateException(TYCHO_NOT_CONFIGURED + project.toString());
}
return targetPlatformConfiguration;
}
/**
* Returns the final target platform of the given project.
*/
public static TargetPlatform getTargetPlatform(MavenProject project) {
TargetPlatform targetPlatform = getTargetPlatformIfAvailable(project);
if (targetPlatform == null) {
throw new IllegalStateException(TYCHO_NOT_CONFIGURED + project.toString());
}
return targetPlatform;
}
/**
* Returns the final target platform of the given project, or <code>null</code> if the target
* platform is not available.
*
* Projects with -Dtycho.targetPlatform use the legacy LocalDependencyResolver, which doesn't
* provide the {@link TargetPlatform} interface.
*/
public static TargetPlatform getTargetPlatformIfAvailable(MavenProject project) {
return (TargetPlatform) project.getContextValue(TargetPlatform.FINAL_TARGET_PLATFORM_KEY);
}
public static ExecutionEnvironmentConfiguration getExecutionEnvironmentConfiguration(MavenProject project) {
ExecutionEnvironmentConfiguration storedConfig = (ExecutionEnvironmentConfiguration) project
.getContextValue(TychoConstants.CTX_EXECUTION_ENVIRONMENT_CONFIGURATION);
if (storedConfig == null) {
throw new IllegalStateException(TYCHO_NOT_CONFIGURED + project.toString());
}
return storedConfig;
}
/**
* Returns the (editable) list of {@link DependencySeed}s for the given project.
*/
@SuppressWarnings("unchecked")
public static List<DependencySeed> getDependencySeeds(MavenProject project) {
List<DependencySeed> dependencySeeds = (List<DependencySeed>) project
.getContextValue(TychoConstants.CTX_DEPENDENCY_SEEDS);
if (dependencySeeds == null) {
dependencySeeds = new ArrayList<>();
project.setContextValue(TychoConstants.CTX_DEPENDENCY_SEEDS, dependencySeeds);
}
return dependencySeeds;
}
}