Java tutorial
/******************************************************************************* * Copyright (c) 2008, 2011 Sonatype Inc. 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: * Sonatype Inc. - initial API and implementation *******************************************************************************/ package org.eclipse.tycho.core.resolver; import java.io.File; import java.io.IOException; import java.util.Properties; import org.apache.maven.project.MavenProject; import org.codehaus.plexus.PlexusContainer; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.component.repository.exception.ComponentLookupException; import org.codehaus.plexus.logging.Logger; import org.eclipse.tycho.core.DependencyResolver; import org.eclipse.tycho.core.TargetPlatformConfiguration; import org.eclipse.tycho.core.TychoConstants; import org.eclipse.tycho.core.osgitools.targetplatform.LocalDependencyResolver; import org.eclipse.tycho.core.utils.TychoProjectUtils; @Component(role = DefaultDependencyResolverFactory.class) public class DefaultDependencyResolverFactory { private static final String DEFAULT_RESOLVER_HINT = "p2"; @Requirement private Logger logger; @Requirement private PlexusContainer container; public DependencyResolver lookupDependencyResolver(MavenProject project) { Properties properties = (Properties) project.getContextValue(TychoConstants.CTX_MERGED_PROPERTIES); TargetPlatformConfiguration configuration = TychoProjectUtils.getTargetPlatformConfiguration(project); String property = properties.getProperty("tycho.targetPlatform"); DependencyResolver resolver; if (property != null) { logger.warn("-Dtycho.targetPlatform is deprecated and WILL be removed in the next Tycho version."); File location = new File(property); if (!location.exists() || !location.isDirectory()) { throw new RuntimeException("Invalid target platform location: " + property); } try { resolver = container.lookup(DependencyResolver.class, LocalDependencyResolver.ROLE_HINT); } catch (ComponentLookupException e) { throw new RuntimeException("Could not instantiate required component", e); } try { ((LocalDependencyResolver) resolver).setLocation(new File(property)); } catch (IOException e) { throw new RuntimeException("Could not create target platform", e); } return resolver; } String resolverRole = configuration.getTargetPlatformResolver(); if (resolverRole == null) { resolverRole = DEFAULT_RESOLVER_HINT; } try { resolver = container.lookup(DependencyResolver.class, resolverRole); } catch (ComponentLookupException e) { throw new RuntimeException("Could not instantiate required component", e); } return resolver; } }