Skip to content

Commit

Permalink
FORGE-1726: Entirely replaced java-parser with Roaster
Browse files Browse the repository at this point in the history
  • Loading branch information
gastaldi committed Apr 3, 2014
1 parent e0d5d92 commit d6358a9
Show file tree
Hide file tree
Showing 85 changed files with 906 additions and 2,064 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@
import org.jboss.forge.addon.projects.dependencies.DependencyInstaller;
import org.jboss.forge.addon.projects.facets.DependencyFacet;
import org.jboss.forge.addon.projects.facets.MetadataFacet;
import org.jboss.forge.parser.JavaParser;
import org.jboss.forge.parser.java.JavaClass;
import org.jboss.forge.roaster.Roaster;
import org.jboss.forge.roaster.model.source.JavaClassSource;

/**
* Configures the project as an Addon Test project
*
*
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*/
@FacetConstraints({
Expand Down Expand Up @@ -72,7 +72,7 @@ public boolean install()
{
Project project = getFaceted();
String topLevelPackage = project.getFacet(MetadataFacet.class).getTopLevelPackage();
JavaClass testClass = JavaParser.create(JavaClass.class).setPackage(topLevelPackage);
JavaClassSource testClass = Roaster.create(JavaClassSource.class).setPackage(topLevelPackage);
testClass.setName("AbstractTestCase").setAbstract(true);
JavaSourceFacet facet = project.getFacet(JavaSourceFacet.class);
try
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@
import org.jboss.forge.furnace.addons.AddonId;
import org.jboss.forge.furnace.util.Streams;
import org.jboss.forge.furnace.versions.Version;
import org.jboss.forge.parser.JavaParser;
import org.jboss.forge.parser.java.JavaPackageInfo;
import org.jboss.forge.roaster.Roaster;
import org.jboss.forge.roaster.model.source.JavaPackageInfoSource;

/**
* Creates Furnace Addon projects
Expand Down Expand Up @@ -88,7 +88,7 @@ public void setupSimpleAddonProject(Project project, Version forgeVersion, Itera
facetFactory.install(project, AddonTestFacet.class);

JavaSourceFacet javaSource = project.getFacet(JavaSourceFacet.class);
javaSource.saveJavaSource(JavaParser.create(JavaPackageInfo.class).setPackage(javaSource.getBasePackage()));
javaSource.saveJavaSource(Roaster.create(JavaPackageInfoSource.class).setPackage(javaSource.getBasePackage()));

installSelectedAddons(project, dependencyAddons, false);
}
Expand Down Expand Up @@ -142,7 +142,7 @@ public void setupComplexAddonProject(Project project, Version forgeVersion, Iter
for (Project p : Arrays.asList(addonProject, apiProject, implProject, spiProject))
{
JavaSourceFacet javaSource = p.getFacet(JavaSourceFacet.class);
javaSource.saveJavaSource(JavaParser.create(JavaPackageInfo.class).setPackage(
javaSource.saveJavaSource(Roaster.create(JavaPackageInfoSource.class).setPackage(
project.getFacet(MetadataFacet.class).getTopLevelPackage()));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
import org.jboss.forge.addon.addons.facets.AddonTestFacet;
import org.jboss.forge.addon.dependencies.Dependency;
import org.jboss.forge.addon.dependencies.builder.DependencyBuilder;
import org.jboss.forge.addon.parser.java.JavaSourceFactory;
import org.jboss.forge.addon.parser.java.facets.JavaSourceFacet;
import org.jboss.forge.addon.parser.java.resources.JavaResource;
import org.jboss.forge.addon.projects.Project;
Expand All @@ -40,20 +39,18 @@
import org.jboss.forge.furnace.addons.AddonId;
import org.jboss.forge.furnace.repositories.AddonRepository;
import org.jboss.forge.furnace.repositories.MutableAddonRepository;
import org.jboss.forge.parser.java.JavaClass;
import org.jboss.forge.parser.java.Method;
import org.jboss.forge.roaster.Roaster;
import org.jboss.forge.roaster.model.source.JavaClassSource;
import org.jboss.forge.roaster.model.source.MethodSource;

/**
* Creates a Furnace Test case
*
*
* @author <a href="ggastald@redhat.com">George Gastaldi</a>
*/
public class NewFurnaceTestCommand extends AbstractProjectCommand
{

@Inject
private JavaSourceFactory javaSourceFactory;

@Inject
private ProjectFactory projectFactory;

Expand Down Expand Up @@ -98,7 +95,7 @@ public void initializeUI(UIBuilder builder) throws Exception

/*
* (non-Javadoc)
*
*
* @see org.jboss.forge.addon.ui.AbstractUICommand#getMetadata(org.jboss.forge.addon.ui.context.UIContext)
*/
@Override
Expand All @@ -114,7 +111,7 @@ public Result execute(UIExecutionContext context) throws Exception
{
UIContext uiContext = context.getUIContext();
Project project = getSelectedProject(uiContext);
JavaClass javaClass = javaSourceFactory.create(JavaClass.class).setName(named.getValue())
JavaClassSource javaClass = Roaster.create(JavaClassSource.class).setName(named.getValue())
.setPackage(packageName.getValue());

// Add imports
Expand Down Expand Up @@ -171,7 +168,8 @@ public Result execute(UIExecutionContext context) throws Exception
}
body.append(";");
body.append("return archive;");
Method<JavaClass> getDeployment = javaClass.addMethod().setName("getDeployment").setPublic().setStatic(true)
MethodSource<JavaClassSource> getDeployment = javaClass.addMethod().setName("getDeployment").setPublic()
.setStatic(true)
.setBody(body.toString()).setReturnType("ForgeArchive");
getDeployment.addAnnotation("Deployment");
String annotationBody = dependenciesAnnotationBody.toString();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import javax.inject.Inject;

import org.jboss.forge.addon.maven.projects.util.Packages;
import org.jboss.forge.addon.parser.java.JavaSourceFactory;
import org.jboss.forge.addon.parser.java.facets.JavaSourceFacet;
import org.jboss.forge.addon.parser.java.resources.JavaResource;
import org.jboss.forge.addon.projects.Project;
Expand All @@ -35,21 +34,19 @@
import org.jboss.forge.addon.ui.result.Results;
import org.jboss.forge.addon.ui.util.Categories;
import org.jboss.forge.addon.ui.util.Metadata;
import org.jboss.forge.parser.java.JavaClass;
import org.jboss.forge.parser.java.Method;
import org.jboss.forge.roaster.Roaster;
import org.jboss.forge.roaster.model.source.JavaClassSource;
import org.jboss.forge.roaster.model.source.MethodSource;

/**
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*
*
*/
public class NewUICommandWizard extends AbstractProjectCommand
{
@Inject
private ProjectFactory projectFactory;

@Inject
private JavaSourceFactory javaSourceFactory;

@Inject
@WithAttributes(label = "Command name", required = true)
private UIInput<String> named;
Expand Down Expand Up @@ -109,24 +106,24 @@ public Result execute(UIExecutionContext context) throws Exception
Project project = getSelectedProject(context);
if (project == null)
{
JavaClass javaClass = createCommand(named.getValue(), targetPackage.getValue(), categories.getValue());
JavaClassSource javaClass = createCommand(named.getValue(), targetPackage.getValue(), categories.getValue());
javaResource = getJavaResource(targetLocation.getValue(), javaClass.getName());
javaResource.setContents(javaClass);
}
else
{
final JavaSourceFacet java = project.getFacet(JavaSourceFacet.class);
JavaClass javaClass = createCommand(named.getValue(), targetPackage.getValue(), categories.getValue());
JavaClassSource javaClass = createCommand(named.getValue(), targetPackage.getValue(), categories.getValue());
javaResource = java.saveJavaSource(javaClass);
}
context.getUIContext().setSelection(javaResource);
return Results.success("Command " + javaResource + " created");
}

private JavaClass createCommand(String commandName, String targetPackage, Iterable<String> categories)
private JavaClassSource createCommand(String commandName, String targetPackage, Iterable<String> categories)
{
// TODO Replace with Templates addon?
JavaClass command = javaSourceFactory.create(JavaClass.class)
JavaClassSource command = Roaster.create(JavaClassSource.class)
.setName(commandName)
.setPublic();

Expand All @@ -143,7 +140,7 @@ private JavaClass createCommand(String commandName, String targetPackage, Iterab
command.addImport(Result.class);
command.addImport(Results.class);

Method<JavaClass> getMetadataMethod = command.addMethod()
MethodSource<JavaClassSource> getMetadataMethod = command.addMethod()
.setPublic()
.setName("getMetadata")
.setReturnType(UICommandMetadata.class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
import org.jboss.forge.furnace.Furnace;
import org.jboss.forge.furnace.addons.AddonId;
import org.jboss.forge.furnace.repositories.AddonDependencyEntry;
import org.jboss.forge.parser.java.JavaClass;
import org.jboss.forge.roaster.model.JavaClass;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.junit.Assert;
import org.junit.Test;
Expand Down Expand Up @@ -106,8 +106,8 @@ public void testCreateTestClass() throws Exception
JavaSourceFacet facet = project.getFacet(JavaSourceFacet.class);
JavaResource javaResource = facet.getTestJavaResource("org.jboss.forge.test.MyTestCase");
Assert.assertNotNull(javaResource);
Assert.assertThat(javaResource.getJavaSource(), is(instanceOf(JavaClass.class)));
Assert.assertFalse(javaResource.getJavaSource().hasSyntaxErrors());
Assert.assertThat(javaResource.getJavaType(), is(instanceOf(JavaClass.class)));
Assert.assertFalse(javaResource.getJavaType().hasSyntaxErrors());

Resource<?> finalArtifact = project.getFacet(PackagingFacet.class).getFinalArtifact();
Assert.assertFalse(finalArtifact.exists());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@
import org.jboss.forge.addon.ui.util.Metadata;
import org.jboss.forge.furnace.Furnace;
import org.jboss.forge.furnace.container.simple.lifecycle.SimpleContainer;
import org.jboss.forge.parser.java.InterfaceCapable;
import org.jboss.forge.parser.java.JavaSource;
import org.jboss.forge.roaster.model.InterfaceCapable;
import org.jboss.forge.roaster.model.source.JavaSource;

/**
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
Expand Down Expand Up @@ -91,10 +91,10 @@ public Iterable<String> getCompletionProposals(UIContext context, InputComponent
{
try
{
JavaSource<?> source = type.getValue().getJavaSource();
JavaSource<?> source = type.getValue().getJavaType();
if (source instanceof InterfaceCapable)
{
List<String> interfaces = ((InterfaceCapable<?>) source).getInterfaces();
List<String> interfaces = ((InterfaceCapable) source).getInterfaces();
for (String type : interfaces)
{
if (type.startsWith(value))
Expand All @@ -117,7 +117,7 @@ public Iterable<String> getCompletionProposals(UIContext context, InputComponent
@Override
public Result execute(UIExecutionContext context) throws Exception
{
String implName = type.getValue().reify(JavaResource.class).getJavaSource().getQualifiedName();
String implName = type.getValue().reify(JavaResource.class).getJavaType().getQualifiedName();
String interfaceName = serviceType.getValue();

FileResource<?> registryFile = getSelectedProject(context).getFacet(ResourcesFacet.class).getResource(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
*/
package org.jboss.forge.addon.javaee.jpa;

import org.jboss.forge.parser.java.util.Strings;
import org.jboss.forge.furnace.util.Strings;

/**
* Represents a complete JPA data-source configuration.
*
*
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*/
public class JPADataSource
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,19 @@
import org.jboss.forge.addon.parser.java.facets.JavaSourceFacet;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.furnace.util.Assert;
import org.jboss.forge.parser.java.JavaClass;
import org.jboss.forge.roaster.model.source.JavaClassSource;

/**
* Configures the Rest facet through the web.xml
*
*
* @author <a href="ggastald@redhat.com">George Gastaldi</a>
*/
public class RestApplicationClassConfigurationStrategy implements RestConfigurationStrategy
{
private final String path;
private final JavaClass applicationClass;
private final JavaClassSource applicationClass;

public RestApplicationClassConfigurationStrategy(JavaClass javaClass)
public RestApplicationClassConfigurationStrategy(JavaClassSource javaClass)
{
Assert.notNull(javaClass, "JavaClass cannot be null");
Assert.isTrue(javaClass.hasAnnotation(ApplicationPath.class),
Expand All @@ -36,7 +36,7 @@ public RestApplicationClassConfigurationStrategy(JavaClass javaClass)
this.path = javaClass.getAnnotation(ApplicationPath.class).getStringValue();
}

public RestApplicationClassConfigurationStrategy(String path, JavaClass javaClass)
public RestApplicationClassConfigurationStrategy(String path, JavaClassSource javaClass)
{
Assert.notNull(path, "Path cannot be null");
Assert.notNull(javaClass, "JavaClass cannot be null");
Expand All @@ -50,7 +50,7 @@ public String getApplicationPath()
return path;
}

public JavaClass getResource()
public JavaClassSource getResource()
{
return applicationClass;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@
import org.jboss.forge.addon.parser.java.resources.JavaResourceVisitor;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.resource.visit.VisitContext;
import org.jboss.forge.parser.java.JavaClass;
import org.jboss.forge.parser.java.JavaSource;
import org.jboss.forge.roaster.model.source.JavaClassSource;
import org.jboss.forge.roaster.model.source.JavaSource;

/**
*
*
* @author <a href="ggastald@redhat.com">George Gastaldi</a>
*/
public class RestConfigurationStrategyFactory
Expand All @@ -39,10 +39,10 @@ public void visit(VisitContext context, JavaResource javaResource)
{
try
{
JavaSource<?> javaSource = javaResource.getJavaSource();
if (javaSource.hasAnnotation(ApplicationPath.class))
JavaSource<?> javaSource = javaResource.getJavaType();
if (javaSource.hasAnnotation(ApplicationPath.class) && javaSource.isClass())
{
configurationStrategy[0] = createUsingJavaClass((JavaClass) javaSource);
configurationStrategy[0] = createUsingJavaClass((JavaClassSource) javaSource);
}
}
catch (FileNotFoundException e)
Expand All @@ -68,12 +68,12 @@ public static RestConfigurationStrategy createUsingWebXml(String path)
return new RestWebXmlConfigurationStrategy(path);
}

public static RestConfigurationStrategy createUsingJavaClass(String path, JavaClass javaClass)
public static RestConfigurationStrategy createUsingJavaClass(String path, JavaClassSource javaClass)
{
return new RestApplicationClassConfigurationStrategy(path, javaClass);
}

public static RestConfigurationStrategy createUsingJavaClass(JavaClass javaClass)
public static RestConfigurationStrategy createUsingJavaClass(JavaClassSource javaClass)
{
return new RestApplicationClassConfigurationStrategy(javaClass);
}
Expand Down

0 comments on commit d6358a9

Please sign in to comment.