Skip to content

Instantly share code, notes, and snippets.

@gastaldi
Created July 18, 2014 14:46
Show Gist options
  • Select an option

  • Save gastaldi/77ec30e7c591a81532a5 to your computer and use it in GitHub Desktop.

Select an option

Save gastaldi/77ec30e7c591a81532a5 to your computer and use it in GitHub Desktop.
AbstractInstalledDependencyFacet.java
/**
* Copyright 2014 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.jboss.forge.addon.projects.facets;
import javax.inject.Inject;
import org.jboss.forge.addon.dependencies.Dependency;
import org.jboss.forge.addon.facets.AbstractFacet;
import org.jboss.forge.addon.facets.Facet;
import org.jboss.forge.addon.facets.constraints.FacetConstraint;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.projects.ProjectFacet;
import org.jboss.forge.addon.projects.dependencies.DependencyInstaller;
/**
* {@link Facet} base class for facets that require installation of dependencies in a project
*
* @author <a href="ggastald@redhat.com">George Gastaldi</a>
*/
@FacetConstraint({ DependencyFacet.class })
public abstract class AbstractInstalledDependencyFacet extends AbstractFacet<Project> implements ProjectFacet
{
@Inject
private DependencyInstaller dependencyInstaller;
@Override
public boolean install()
{
installDependencies(getDependencies());
return isInstalled();
}
@Override
public boolean uninstall()
{
return false;
}
protected abstract String getVersionPropertyName();
protected abstract Dependency[] getDependencies();
protected void installDependencies(Dependency... dependencies)
{
Project project = getFaceted();
for (Dependency dependency : dependencies)
{
dependencyInstaller.installManaged(project, dependency);
dependencyInstaller.install(project, dependency);
}
}
protected void removeDependencies(Dependency... dependencies)
{
DependencyFacet dependencyFacet = getFaceted().getFacet(DependencyFacet.class);
for (Dependency dependency : dependencies)
{
dependencyFacet.removeManagedDependency(dependency);
dependencyFacet.removeDependency(dependency);
}
}
protected DependencyInstaller getDependencyInstaller()
{
return dependencyInstaller;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment