Skip to content

Commit

Permalink
FORGE-934 - Added resource visit API
Browse files Browse the repository at this point in the history
  • Loading branch information
lincolnthree committed Nov 20, 2013
1 parent 5928c73 commit aa10843
Show file tree
Hide file tree
Showing 19 changed files with 456 additions and 43 deletions.
Expand Up @@ -15,6 +15,7 @@
import org.jboss.forge.addon.parser.java.resources.JavaResource;
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;

Expand All @@ -34,7 +35,7 @@ public static RestConfigurationStrategy from(Project project)
javaSourceFacet.visitJavaSources(new JavaResourceVisitor()
{
@Override
public void visit(JavaResource javaResource)
public void visit(VisitContext context, JavaResource javaResource)
{
try
{
Expand Down
Expand Up @@ -20,6 +20,7 @@
import org.jboss.forge.addon.projects.facets.MetadataFacet;
import org.jboss.forge.addon.resource.DirectoryResource;
import org.jboss.forge.addon.resource.FileResource;
import org.jboss.forge.addon.resource.visit.VisitContext;
import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.context.UISelection;
Expand Down Expand Up @@ -97,12 +98,12 @@ private String calculateConverterPackage(Project project)
project.getFacet(JavaSourceFacet.class).visitJavaSources(new JavaResourceVisitor()
{
@Override
public void visit(JavaResource javaResource)
public void visit(VisitContext context, JavaResource javaResource)
{
try
{
JavaSource<?> javaSource = javaResource.getJavaSource();
if (javaSource.hasAnnotation(Entity.class))
if (javaSource.hasAnnotation(Entity.class)) // FIXME should not use entity here
{
value[0] = javaSource.getPackage();
}
Expand Down
Expand Up @@ -20,6 +20,7 @@
import org.jboss.forge.addon.projects.facets.MetadataFacet;
import org.jboss.forge.addon.resource.DirectoryResource;
import org.jboss.forge.addon.resource.FileResource;
import org.jboss.forge.addon.resource.visit.VisitContext;
import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.context.UISelection;
Expand Down Expand Up @@ -97,12 +98,12 @@ private String calculateValidatorPackage(Project project)
project.getFacet(JavaSourceFacet.class).visitJavaSources(new JavaResourceVisitor()
{
@Override
public void visit(JavaResource javaResource)
public void visit(VisitContext context, JavaResource javaResource)
{
try
{
JavaSource<?> javaSource = javaResource.getJavaSource();
if (javaSource.hasAnnotation(Entity.class))
if (javaSource.hasAnnotation(Entity.class)) // FIXME should not use entity here
{
value[0] = javaSource.getPackage();
}
Expand Down
Expand Up @@ -22,6 +22,7 @@
import org.jboss.forge.addon.projects.facets.ResourcesFacet;
import org.jboss.forge.addon.resource.DirectoryResource;
import org.jboss.forge.addon.resource.FileResource;
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.shrinkwrap.descriptor.api.persistence.PersistenceCommonDescriptor;
Expand Down Expand Up @@ -91,7 +92,8 @@ public DirectoryResource getEntityPackageDir()
public FileResource<?> getConfigFile()
{
ResourcesFacet resources = getFaceted().getFacet(ResourcesFacet.class);
return (FileResource<?>) resources.getResourceDirectory().getChild("META-INF" + File.separator + "persistence.xml");
return (FileResource<?>) resources.getResourceDirectory().getChild(
"META-INF" + File.separator + "persistence.xml");
}

@Override
Expand All @@ -102,7 +104,7 @@ public List<JavaClass> getAllEntities()
javaSourceFacet.visitJavaSources(new JavaResourceVisitor()
{
@Override
public void visit(JavaResource resource)
public void visit(VisitContext context, JavaResource resource)
{
try
{
Expand Down
Expand Up @@ -21,6 +21,7 @@
import org.jboss.forge.addon.projects.facets.MetadataFacet;
import org.jboss.forge.addon.resource.DirectoryResource;
import org.jboss.forge.addon.resource.FileResource;
import org.jboss.forge.addon.resource.visit.VisitContext;
import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.context.UISelection;
Expand Down Expand Up @@ -107,7 +108,7 @@ private String calculateModelPackage(Project project)
project.getFacet(JavaSourceFacet.class).visitJavaSources(new JavaResourceVisitor()
{
@Override
public void visit(JavaResource javaResource)
public void visit(VisitContext context, JavaResource javaResource)
{
try
{
Expand Down
Expand Up @@ -29,6 +29,7 @@
import org.jboss.forge.addon.parser.java.resources.JavaResourceVisitor;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.resource.FileResource;
import org.jboss.forge.addon.resource.visit.VisitContext;
import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.context.UISelection;
Expand Down Expand Up @@ -153,7 +154,7 @@ private void setupEntities(UIContext context)
{

@Override
public void visit(JavaResource resource)
public void visit(VisitContext context, JavaResource resource)
{
try
{
Expand Down
Expand Up @@ -10,9 +10,10 @@

import org.jboss.forge.addon.parser.java.resources.JavaResource;
import org.jboss.forge.addon.parser.java.resources.JavaResourceVisitor;
import org.jboss.forge.addon.resource.visit.VisitContext;
import org.jboss.forge.parser.java.JavaSource;

class RestResourceTypeVisitor implements JavaResourceVisitor
class RestResourceTypeVisitor extends JavaResourceVisitor
{
private String proposedPath;
private boolean found;
Expand All @@ -25,7 +26,7 @@ public void setProposedPath(String proposedPath)

public String getQualifiedClassNameForMatch()
{
if(javaSource != null)
if (javaSource != null)
{
return javaSource.getQualifiedName();
}
Expand All @@ -43,7 +44,7 @@ public void setFound(boolean found)
}

@Override
public void visit(JavaResource javaResource)
public void visit(VisitContext context, JavaResource javaResource)
{
if (!found)
{
Expand All @@ -53,7 +54,7 @@ public void visit(JavaResource javaResource)
{
String path = javaResource.getJavaSource().getAnnotation("javax.ws.rs.Path")
.getStringValue();
String absolutePath = path.endsWith("/") ? path.substring(0,path.lastIndexOf('/')) : path;
String absolutePath = path.endsWith("/") ? path.substring(0, path.lastIndexOf('/')) : path;
if (absolutePath.equals(proposedPath))
{
javaSource = javaResource.getJavaSource();
Expand Down
Expand Up @@ -19,6 +19,7 @@
import org.jboss.forge.addon.parser.java.resources.JavaResourceVisitor;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.resource.FileResource;
import org.jboss.forge.addon.resource.visit.VisitContext;
import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.context.UISelection;
Expand Down Expand Up @@ -65,7 +66,7 @@ private void configureClassPicker(UIContext context)
{

@Override
public void visit(JavaResource resource)
public void visit(VisitContext context, JavaResource resource)
{
try
{
Expand Down Expand Up @@ -110,7 +111,7 @@ public NavigationResult next(UIContext context) throws Exception
context.setAttribute(JavaResource.class, selectedClass);
return Results.navigateTo(SelectFieldWizardStep.class);
}

@Override
public boolean isEnabled(UIContext context)
{
Expand Down
Expand Up @@ -25,6 +25,7 @@
import org.jboss.forge.addon.resource.DirectoryResource;
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.furnace.util.Strings;
import org.jboss.forge.parser.java.JavaSource;

Expand Down Expand Up @@ -192,37 +193,43 @@ public JavaResource saveTestJavaSource(final JavaSource<?> source) throws FileNo
@Override
public void visitJavaSources(final JavaResourceVisitor visitor)
{
visitSources(getSourceDirectory(), visitor);
new ResourceVisit(getSourceDirectory()).perform(visitor, new ResourceFilter()
{
@Override
public boolean accept(Resource<?> resource)
{
return resource instanceof DirectoryResource;
}
}, new ResourceFilter()
{

@Override
public boolean accept(Resource<?> type)
{
return type instanceof JavaResource;
}
});
}

@Override
public void visitJavaTestSources(final JavaResourceVisitor visitor)
{
visitSources(getTestSourceDirectory(), visitor);
}

private void visitSources(final Resource<?> searchFolder, final JavaResourceVisitor visitor)
{
if (searchFolder instanceof DirectoryResource)
new ResourceVisit(getTestSourceDirectory()).perform(visitor, new ResourceFilter()
{
@Override
public boolean accept(Resource<?> resource)
{
return resource instanceof DirectoryResource;
}
}, new ResourceFilter()
{

searchFolder.listResources(new ResourceFilter()
@Override
public boolean accept(Resource<?> type)
{
@Override
public boolean accept(Resource<?> resource)
{
if (resource instanceof DirectoryResource)
{
visitSources(resource, visitor);
}
else if (resource instanceof JavaResource)
{
visitor.visit((JavaResource) resource);
}

return false;
}
});
}
return type instanceof JavaResource;
}
});
}

}
Expand Up @@ -20,6 +20,10 @@
import org.jboss.forge.addon.projects.facets.ResourcesFacet;
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;

/**
* Handles Maven Resource folders
Expand Down Expand Up @@ -129,4 +133,44 @@ public FileResource<?> createTestResource(final char[] bytes, final String relat
file.setContents(bytes);
return file;
}

@Override
public void visitResources(ResourceVisitor visitor)
{
new ResourceVisit(getResourceDirectory()).perform(visitor, new ResourceFilter()
{
@Override
public boolean accept(Resource<?> resource)
{
return resource instanceof DirectoryResource;
}
}, new ResourceFilter()
{
@Override
public boolean accept(Resource<?> type)
{
return true;
}
});
}

@Override
public void visitTestResources(ResourceVisitor visitor)
{
new ResourceVisit(getTestResourceDirectory()).perform(visitor, new ResourceFilter()
{
@Override
public boolean accept(Resource<?> resource)
{
return resource instanceof DirectoryResource;
}
}, new ResourceFilter()
{
@Override
public boolean accept(Resource<?> type)
{
return true;
}
});
}
}
Expand Up @@ -28,6 +28,10 @@
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;

@Dependent
@FacetConstraint({ MavenFacet.class, PackagingFacet.class })
Expand Down Expand Up @@ -145,4 +149,31 @@ public FileResource<?> createWebResource(final String data, final String relativ
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;
}
}

}
Expand Up @@ -7,15 +7,26 @@

package org.jboss.forge.addon.parser.java.resources;

import org.jboss.forge.addon.resource.Resource;
import org.jboss.forge.addon.resource.visit.VisitContext;
import org.jboss.forge.addon.resource.visit.ResourceVisitor;

/**
* @author Rudy De Busscher Called for each Java file which is found in the project.
*/
public interface JavaResourceVisitor
public abstract class JavaResourceVisitor implements ResourceVisitor
{
/**
* Called when a Java File is found.
*
* @param javaResource The JavaResource for the found file.
*/
void visit(final JavaResource javaResource);
public abstract void visit(VisitContext context, final JavaResource javaResource);

@Override
public void visit(VisitContext context, Resource<?> resource)
{
if (resource instanceof JavaResource)
visit(context, (JavaResource) resource);
}
}

0 comments on commit aa10843

Please sign in to comment.