Skip to content

Commit

Permalink
Add EE facets
Browse files Browse the repository at this point in the history
  • Loading branch information
adam-wyluda committed Feb 21, 2014
1 parent 4ebecc9 commit 5b27568
Show file tree
Hide file tree
Showing 2 changed files with 168 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/**
* 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.gradle.projects.facets;

import org.jboss.forge.addon.facets.AbstractFacet;
import org.jboss.forge.addon.facets.constraints.FacetConstraint;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.projects.facets.EnterpriseResourcesFacet;
import org.jboss.forge.addon.projects.facets.PackagingFacet;

/**
* @author Adam Wyłuda
*/
@FacetConstraint({ PackagingFacet.class })
public class GradleEnterpriseResourcesFacet extends AbstractFacet<Project> implements EnterpriseResourcesFacet
{
@Override
public boolean install()
{
if (!isInstalled())
{
Project project = getFaceted();
project.getFacet(PackagingFacet.class).setPackagingType("ear");
}
return isInstalled();
}

@Override
public boolean isInstalled()
{
Project project = getFaceted();
String packagingType = project.getFacet(PackagingFacet.class).getPackagingType();

return packagingType.equals("ear");
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
/*
* Copyright 2013 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.gradle.projects.facets;

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

import javax.enterprise.context.Dependent;

import org.jboss.forge.addon.facets.AbstractFacet;
import org.jboss.forge.addon.facets.constraints.FacetConstraint;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.projects.facets.PackagingFacet;
import org.jboss.forge.addon.projects.facets.WebResourcesFacet;
import org.jboss.forge.addon.resource.DirectoryResource;
import org.jboss.forge.addon.resource.FileResource;
import org.jboss.forge.addon.resource.Resource;
import org.jboss.forge.addon.resource.ResourceFilter;
import org.jboss.forge.addon.resource.visit.ResourceVisit;
import org.jboss.forge.addon.resource.visit.ResourceVisitor;

/**
* @author Adam Wyłuda
*/
@Dependent
@FacetConstraint({ PackagingFacet.class })
public class GradleWebResourcesFacet extends AbstractFacet<Project> implements WebResourcesFacet
{

@Override
public DirectoryResource getWebRootDirectory()
{
Project project = getFaceted();
// According to Gradle documentation this is default webapp location, although it's probably possible to change
// by setting plugin properties
// TODO Read (string) properties of Gradle plugins
String webappFolderName = "src" + File.separator + "main" + File.separator + "webapp";
DirectoryResource projectRoot = project.getRootDirectory();
return projectRoot.getChildDirectory(webappFolderName);
}

@Override
public List<DirectoryResource> getWebRootDirectories()
{
List<DirectoryResource> result = new ArrayList<>();
result.add(getWebRootDirectory());
return result;
}

@Override
public boolean isInstalled()
{
Project project = getFaceted();
String packagingType = project.getFacet(PackagingFacet.class).getPackagingType();

return packagingType.equals("war");
}

@Override
public boolean install()
{
if (!this.isInstalled())
{
getFaceted().getFacet(PackagingFacet.class).setPackagingType("war");
for (DirectoryResource folder : this.getWebRootDirectories())
{
folder.mkdirs();
}
}
return true;
}

@Override
public FileResource<?> getWebResource(final String relativePath)
{
return (FileResource<?>) getWebRootDirectory().getChild(relativePath);
}

@Override
public FileResource<?> createWebResource(final char[] data, final String relativePath)
{
FileResource<?> file = (FileResource<?>) getWebRootDirectory().getChild(relativePath);
file.setContents(data);
return file;
}

@Override
public FileResource<?> createWebResource(final String data, final String relativePath)
{
return createWebResource(data.toCharArray(), relativePath);
}

@Override
public void visitWebResources(ResourceVisitor visitor)
{
for (DirectoryResource root : getWebRootDirectories())
{
ResourceVisit visit = new ResourceVisit(root);
visit.perform(visitor, new ResourceFilter()
{
@Override
public boolean accept(Resource<?> resource)
{
return resource instanceof DirectoryResource;
}
}, new ResourceFilter()
{
@Override
public boolean accept(Resource<?> type)
{
return true;
}
});

if (visit.isTerminated())
break;
}
}

}

0 comments on commit 5b27568

Please sign in to comment.