Skip to content

Commit

Permalink
FORGE-2537: Implemented ProjectProvider changes
Browse files Browse the repository at this point in the history
  • Loading branch information
gastaldi committed Nov 30, 2015
1 parent 07b0f7b commit c6ce716
Show file tree
Hide file tree
Showing 3 changed files with 93 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,39 +6,62 @@
*/
package org.jboss.forge.addon.gradle.projects;

import java.util.Collections;
import java.util.HashSet;
import java.util.IdentityHashMap;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.inject.Inject;

import org.jboss.forge.addon.facets.FacetFactory;
import org.jboss.forge.addon.gradle.projects.facets.GradleDependencyFacet;
import org.jboss.forge.addon.gradle.projects.facets.GradleEnterpriseResourcesFacet;
import org.jboss.forge.addon.gradle.projects.facets.GradleJavaCompilerFacet;
import org.jboss.forge.addon.gradle.projects.facets.GradleJavaSourceFacet;
import org.jboss.forge.addon.gradle.projects.facets.GradleMetadataFacet;
import org.jboss.forge.addon.gradle.projects.facets.GradlePackagingFacet;
import org.jboss.forge.addon.gradle.projects.facets.GradleResourcesFacet;
import org.jboss.forge.addon.gradle.projects.facets.GradleWebResourcesFacet;
import org.jboss.forge.addon.parser.java.facets.JavaCompilerFacet;
import org.jboss.forge.addon.parser.java.facets.JavaSourceFacet;
import org.jboss.forge.addon.projects.AbstractProjectProvider;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.projects.ProjectFacet;
import org.jboss.forge.addon.projects.ProvidedProjectFacet;
import org.jboss.forge.addon.projects.facets.DependencyFacet;
import org.jboss.forge.addon.projects.facets.EnterpriseResourcesFacet;
import org.jboss.forge.addon.projects.facets.MetadataFacet;
import org.jboss.forge.addon.projects.facets.PackagingFacet;
import org.jboss.forge.addon.projects.facets.ResourcesFacet;
import org.jboss.forge.addon.projects.facets.WebResourcesFacet;
import org.jboss.forge.addon.resource.Resource;

import javax.inject.Inject;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.Callable;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* @author Adam Wyłuda
*/
public class GradleProjectProviderImpl implements GradleProjectProvider
public class GradleProjectProviderImpl extends AbstractProjectProvider implements GradleProjectProvider
{
private static final Logger LOG = Logger.getLogger(GradleProjectProviderImpl.class.getName());
private Map<Class<? extends ProjectFacet>, Class<? extends ProjectFacet>> facets = new IdentityHashMap<>();

@Inject
private FacetFactory facetFactory;

public GradleProjectProviderImpl()
{
facets.put(DependencyFacet.class, GradleDependencyFacet.class);
facets.put(JavaCompilerFacet.class, GradleJavaCompilerFacet.class);
facets.put(JavaSourceFacet.class, GradleJavaSourceFacet.class);
facets.put(MetadataFacet.class, GradleMetadataFacet.class);
facets.put(PackagingFacet.class, GradlePackagingFacet.class);
facets.put(ResourcesFacet.class, GradleResourcesFacet.class);
facets.put(WebResourcesFacet.class, GradleWebResourcesFacet.class);
facets.put(EnterpriseResourcesFacet.class, GradleEnterpriseResourcesFacet.class);
}

@Override
public String getType()
{
Expand Down Expand Up @@ -90,37 +113,15 @@ public Set<Class<? extends ProvidedProjectFacet>> getProvidedFacetTypes()
return Collections.unmodifiableSet(result);
}

@SuppressWarnings("unused")
private void addSafe(Set<Class<? extends ProvidedProjectFacet>> result,
Callable<Class<? extends ProvidedProjectFacet>> callable)
@Override
public int priority()
{
try
{
Class<? extends ProvidedProjectFacet> facetType = callable.call();
if (facetType != null)
{
result.add(facetType);
}
}
catch (NoClassDefFoundError e)
{
}
catch (ClassNotFoundException e)
{
}
catch (RuntimeException e)
{
throw e;
}
catch (Exception e)
{
throw new RuntimeException(e);
}
return 100;
}

@Override
public int priority()
public Class<? extends ProjectFacet> resolveProjectFacet(Class<? extends ProjectFacet> facet)
{
return 100;
return facets.getOrDefault(facet, facet);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
*/
package org.jboss.forge.addon.gradle.projects.facets;

import java.io.File;
import java.util.List;

import org.gradle.jarjar.com.google.common.collect.Lists;
import org.jboss.forge.addon.facets.AbstractFacet;
import org.jboss.forge.addon.facets.constraints.FacetConstraint;
Expand All @@ -25,10 +28,10 @@
import org.jboss.forge.addon.resource.ResourceFilter;
import org.jboss.forge.addon.resource.visit.ResourceVisit;
import org.jboss.forge.furnace.util.Strings;
import org.jboss.forge.roaster.Roaster;
import org.jboss.forge.roaster.model.source.JavaPackageInfoSource;
import org.jboss.forge.roaster.model.source.JavaSource;

import java.util.List;

/**
* @author Adam Wyłuda
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
Expand Down Expand Up @@ -255,4 +258,50 @@ private DirectoryResource directoryResourceFromRelativePath(String path)
return getFaceted().getFacet(GradleFacet.class).getBuildScriptResource().getParent()
.getChildDirectory(path);
}

@Override
public DirectoryResource savePackage(String packageName, boolean createPackageInfo)
{
DirectoryResource child = getPackage(packageName);
if (!child.exists())
{
child.mkdirs();
}
if (createPackageInfo)
{
JavaPackageInfoSource packageInfo = Roaster.create(JavaPackageInfoSource.class).setPackage(packageName);
JavaResource resource = child.getChild("package-info.java").reify(JavaResource.class);
resource.setContents(packageInfo);
}
return child;
}

@Override
public DirectoryResource saveTestPackage(String packageName, boolean createPackageInfo)
{
DirectoryResource child = getTestPackage(packageName);
if (!child.exists())
{
child.mkdirs();
}
if (createPackageInfo)
{
JavaPackageInfoSource packageInfo = Roaster.create(JavaPackageInfoSource.class).setPackage(packageName);
JavaResource resource = child.getChild("package-info.java").reify(JavaResource.class);
resource.setContents(packageInfo);
}
return child;
}

@Override
public DirectoryResource getPackage(String packageName)
{
return getSourceDirectory().getChildDirectory(packageName.replace('.', File.separatorChar));
}

@Override
public DirectoryResource getTestPackage(String packageName)
{
return getTestSourceDirectory().getChildDirectory(packageName.replace('.', File.separatorChar));
}
}
8 changes: 5 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<parent>
<groupId>org.jboss</groupId>
<artifactId>jboss-parent</artifactId>
<version>14</version>
<version>19</version>
</parent>

<groupId>org.jboss.forge.addon</groupId>
Expand All @@ -28,8 +28,10 @@
</repositories>

<properties>
<version.forge>2.15.2.Final</version.forge>
<version.furnace>2.12.3.Final</version.furnace>
<version.forge>3.0.0-SNAPSHOT</version.forge>
<version.furnace>2.22.7.Final</version.furnace>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.javadoc.failOnError>false</maven.javadoc.failOnError>
<maven.test.redirectTestOutputToFile>true</maven.test.redirectTestOutputToFile>
</properties>
Expand Down

0 comments on commit c6ce716

Please sign in to comment.