Skip to content

Commit

Permalink
Merge pull request #543 from agoncal/FORGE-2265
Browse files Browse the repository at this point in the history
FORGE-2265: Refactoring the CDI Commands
  • Loading branch information
gastaldi committed Mar 3, 2015
2 parents 8ebe516 + f41f313 commit ced82e0
Show file tree
Hide file tree
Showing 19 changed files with 225 additions and 372 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public interface JavaEEFacet extends ProjectFacet
{
public static final String DEFAULT_ENTITY_PACKAGE = "model";
public static final String DEFAULT_CONSTRAINT_PACKAGE = "constraints";
public static final String DEFAULT_CDI_PACKAGE = "beans";

/**
* Return the {@link Version} of the specification for which this facet represents.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package org.jboss.forge.addon.javaee.cdi.ui;

import static org.jboss.forge.addon.javaee.JavaEEFacet.DEFAULT_CDI_PACKAGE;
import static org.jboss.forge.addon.javaee.JavaEEFacet.DEFAULT_CONSTRAINT_PACKAGE;

import org.jboss.forge.addon.javaee.JavaEEFacet;
import org.jboss.forge.addon.javaee.cdi.CDIFacet;
import org.jboss.forge.addon.javaee.validation.ValidationFacet;
import org.jboss.forge.addon.javaee.validation.ui.ValidationProviderSetupCommand;
import org.jboss.forge.addon.parser.java.facets.JavaSourceFacet;
import org.jboss.forge.addon.parser.java.ui.AbstractJavaSourceCommand;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.ui.command.PrerequisiteCommandsProvider;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.result.NavigationResult;
import org.jboss.forge.addon.ui.result.navigation.NavigationResultBuilder;
import org.jboss.forge.addon.ui.util.Categories;
import org.jboss.forge.addon.ui.util.Metadata;
import org.jboss.forge.roaster.model.source.JavaSource;

/**
* @author <a href="antonio.goncalves@gmail.com">Antonio Goncalves</a>
*/
public abstract class AbstractCDICommand<T extends JavaSource<?>> extends AbstractJavaSourceCommand<T>
implements PrerequisiteCommandsProvider
{

@Override
public Metadata getMetadata(UIContext context)
{
return Metadata.from(super.getMetadata(context), getClass())
.category(Categories.create(Categories.create("Java EE"), "CDI"));
}

@Override
protected boolean isProjectRequired()
{
return true;
}

@Override
protected String calculateDefaultPackage(UIContext context)
{
return getSelectedProject(context).getFacet(JavaSourceFacet.class).getBasePackage() + "."
+ DEFAULT_CDI_PACKAGE;
}

@Override
public NavigationResult getPrerequisiteCommands(UIContext context)
{
NavigationResultBuilder builder = NavigationResultBuilder.create();
Project project = getSelectedProject(context);
if (project != null)
{
if (!project.hasFacet(CDIFacet.class))
{
builder.add(CDISetupCommand.class);
}
}
return builder.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
*
* @author <a href="ggastald@redhat.com">George Gastaldi</a>
*/
public class BeansCommand
public class CDIBeansCommand
{

@Inject
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,14 @@
import javax.inject.Inject;
import javax.inject.Named;

import org.jboss.forge.addon.javaee.cdi.CDIFacet;
import org.jboss.forge.addon.parser.java.ui.AbstractJavaSourceCommand;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.ui.command.PrerequisiteCommandsProvider;
import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.context.UIExecutionContext;
import org.jboss.forge.addon.ui.hints.InputType;
import org.jboss.forge.addon.ui.input.UIInput;
import org.jboss.forge.addon.ui.input.UISelectOne;
import org.jboss.forge.addon.ui.metadata.WithAttributes;
import org.jboss.forge.addon.ui.result.NavigationResult;
import org.jboss.forge.addon.ui.result.navigation.NavigationResultBuilder;
import org.jboss.forge.addon.ui.util.Categories;
import org.jboss.forge.addon.ui.util.Metadata;
import org.jboss.forge.roaster.model.source.JavaClassSource;

Expand All @@ -36,8 +30,7 @@
* @author <a href="ggastald@redhat.com">George Gastaldi</a>
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*/
public class NewBeanCommand extends AbstractJavaSourceCommand<JavaClassSource> implements
PrerequisiteCommandsProvider
public class CDINewBeanCommand extends AbstractCDICommand<JavaClassSource>
{
@Inject
@WithAttributes(label = "Scope", defaultValue = "DEPENDENT")
Expand All @@ -64,8 +57,19 @@ public Metadata getMetadata(UIContext context)
{
return Metadata.from(super.getMetadata(context), getClass())
.name("CDI: New Bean")
.description("Creates a new CDI Managed bean")
.category(Categories.create(super.getMetadata(context).getCategory(), "CDI"));
.description("Creates a new CDI Managed bean");
}

@Override
protected String getType()
{
return "CDI Bean";
}

@Override
protected Class<JavaClassSource> getSourceType()
{
return JavaClassSource.class;
}

@Override
Expand Down Expand Up @@ -111,37 +115,4 @@ else if (BeanScope.DEPENDENT != scopedValue)
}
return source;
}

@Override
protected boolean isProjectRequired()
{
return true;
}

@Override
protected String getType()
{
return "CDI Bean";
}

@Override
protected Class<JavaClassSource> getSourceType()
{
return JavaClassSource.class;
}

@Override
public NavigationResult getPrerequisiteCommands(UIContext context)
{
NavigationResultBuilder builder = NavigationResultBuilder.create();
Project project = getSelectedProject(context);
if (project != null)
{
if (!project.hasFacet(CDIFacet.class))
{
builder.add(CDISetupCommand.class);
}
}
return builder.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
*
* @author <a href="ggastald@redhat.com">George Gastaldi</a>
*/
public class NewConversationCommand extends AbstractUICommand
public class CDINewConversationCommand extends AbstractUICommand
{
@Inject
@WithAttributes(label = "Named", defaultValue = "")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,7 @@
*
* @author <a href="antonio.goncalves@gmail.com">Antonio Goncalves</a>
*/
public class NewDecoratorCommand extends AbstractJavaSourceCommand<JavaClassSource> implements
PrerequisiteCommandsProvider
public class CDINewDecoratorCommand extends AbstractCDICommand<JavaClassSource>
{
@Inject
@WithAttributes(label = "Interface to delegate", required = true)
Expand All @@ -46,10 +45,21 @@ public Metadata getMetadata(UIContext context)
{
return Metadata.from(super.getMetadata(context), getClass())
.name("CDI: New Decorator")
.description("Creates a new CDI Decorator")
.category(Categories.create(super.getMetadata(context).getCategory(), "CDI"));
.description("Creates a new CDI Decorator");
}

@Override
protected String getType()
{
return "CDI Decorator";
}

@Override
protected Class<JavaClassSource> getSourceType()
{
return JavaClassSource.class;
}

@Override
public void initializeUI(UIBuilder builder) throws Exception
{
Expand All @@ -69,37 +79,4 @@ public JavaClassSource decorateSource(UIExecutionContext context, Project projec

return decorator;
}

@Override
protected boolean isProjectRequired()
{
return true;
}

@Override
protected String getType()
{
return "CDI Decorator";
}

@Override
protected Class<JavaClassSource> getSourceType()
{
return JavaClassSource.class;
}

@Override
public NavigationResult getPrerequisiteCommands(UIContext context)
{
NavigationResultBuilder builder = NavigationResultBuilder.create();
Project project = getSelectedProject(context);
if (project != null)
{
if (!project.hasFacet(CDIFacet.class))
{
builder.add(CDISetupCommand.class);
}
}
return builder.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,11 @@
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import javax.inject.Inject;
import javax.interceptor.InterceptorBinding;

import org.jboss.forge.addon.javaee.cdi.CDIFacet;
import org.jboss.forge.addon.parser.java.ui.AbstractJavaSourceCommand;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.ui.command.PrerequisiteCommandsProvider;
import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.context.UIExecutionContext;
import org.jboss.forge.addon.ui.hints.InputType;
import org.jboss.forge.addon.ui.input.UIInput;
import org.jboss.forge.addon.ui.metadata.WithAttributes;
import org.jboss.forge.addon.ui.result.NavigationResult;
import org.jboss.forge.addon.ui.result.navigation.NavigationResultBuilder;
import org.jboss.forge.addon.ui.util.Categories;
import org.jboss.forge.addon.ui.util.Metadata;
import org.jboss.forge.roaster.model.source.JavaAnnotationSource;

Expand All @@ -39,39 +28,14 @@
*
* @author <a href="antonio.goncalves@gmail.com">Antonio Goncalves</a>
*/
public class NewInterceptorBindingCommand extends AbstractJavaSourceCommand<JavaAnnotationSource> implements
PrerequisiteCommandsProvider
public class CDINewInterceptorBindingCommand extends AbstractCDICommand<JavaAnnotationSource>
{
@Override
public Metadata getMetadata(UIContext context)
{
return Metadata.from(super.getMetadata(context), getClass())
.name("CDI: New Interceptor Binding")
.description("Creates a new CDI Interceptor Binding annotation")
.category(Categories.create(super.getMetadata(context).getCategory(), "CDI"));
}

@Override
public void initializeUI(UIBuilder builder) throws Exception
{
super.initializeUI(builder);
}

@Override
public JavaAnnotationSource decorateSource(UIExecutionContext context, Project project,
JavaAnnotationSource interceptorBinding) throws Exception
{
interceptorBinding.addAnnotation(InterceptorBinding.class);
interceptorBinding.addAnnotation(Retention.class).setEnumValue(RUNTIME);
interceptorBinding.addAnnotation(Target.class).setEnumValue(METHOD, TYPE);
interceptorBinding.addAnnotation(Documented.class);
return interceptorBinding;
}

@Override
protected boolean isProjectRequired()
{
return true;
.description("Creates a new CDI Interceptor Binding annotation");
}

@Override
Expand All @@ -87,17 +51,13 @@ protected Class<JavaAnnotationSource> getSourceType()
}

@Override
public NavigationResult getPrerequisiteCommands(UIContext context)
public JavaAnnotationSource decorateSource(UIExecutionContext context, Project project,
JavaAnnotationSource interceptorBinding) throws Exception
{
NavigationResultBuilder builder = NavigationResultBuilder.create();
Project project = getSelectedProject(context);
if (project != null)
{
if (!project.hasFacet(CDIFacet.class))
{
builder.add(CDISetupCommand.class);
}
}
return builder.build();
interceptorBinding.addAnnotation(InterceptorBinding.class);
interceptorBinding.addAnnotation(Retention.class).setEnumValue(RUNTIME);
interceptorBinding.addAnnotation(Target.class).setEnumValue(METHOD, TYPE);
interceptorBinding.addAnnotation(Documented.class);
return interceptorBinding;
}
}
Loading

0 comments on commit ced82e0

Please sign in to comment.