Skip to content

Commit

Permalink
FORGE-1773: EJB and JMS version is now shown in ejb-new-bean command
Browse files Browse the repository at this point in the history
  • Loading branch information
gastaldi committed Apr 25, 2014
1 parent fd74333 commit 7e88de9
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 11 deletions.
Expand Up @@ -7,13 +7,17 @@
package org.jboss.forge.addon.javaee.ejb.ui;

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

import javax.ejb.MessageDriven;
import javax.ejb.Singleton;
import javax.ejb.Stateful;
import javax.ejb.Stateless;
import javax.inject.Inject;

import org.jboss.forge.addon.facets.FacetFactory;
import org.jboss.forge.addon.javaee.ejb.EJBFacet;
import org.jboss.forge.addon.javaee.ejb.EJBOperations;
import org.jboss.forge.addon.javaee.ejb.EJBType;
import org.jboss.forge.addon.javaee.ui.AbstractJavaEECommand;
Expand Down Expand Up @@ -67,6 +71,13 @@ public class NewEJBCommand extends AbstractJavaEECommand implements UIWizard
@WithAttributes(label = "Target Directory", required = true)
private UIInput<DirectoryResource> targetLocation;

@Inject
private FacetFactory facetFactory;

@Inject
@WithAttributes(required = true, label = "EJB Version", defaultValue = "3.1")
private UISelectOne<EJBFacet> ejbVersion;

@Inject
private EJBOperations ejbOperations;

Expand Down Expand Up @@ -99,14 +110,21 @@ public void initializeUI(UIBuilder builder) throws Exception
}
}
}
else if (project.hasFacet(JavaSourceFacet.class))
else
{
JavaSourceFacet facet = project.getFacet(JavaSourceFacet.class);
targetLocation.setDefaultValue(facet.getSourceDirectory()).setEnabled(false);
targetPackage.setValue(calculateServicePackage(project));
if (project.hasFacet(EJBFacet.class))
{
ejbVersion.setEnabled(false).setValue(project.getFacet(EJBFacet.class));
}
if (project.hasFacet(JavaSourceFacet.class))
{
JavaSourceFacet facet = project.getFacet(JavaSourceFacet.class);
targetLocation.setDefaultValue(facet.getSourceDirectory()).setEnabled(false);
targetPackage.setValue(calculateServicePackage(project));
}
}

builder.add(targetLocation).add(targetPackage).add(named).add(type).add(serializable);
builder.add(ejbVersion).add(targetLocation).add(targetPackage).add(named).add(type).add(serializable);
}

private String calculateServicePackage(Project project)
Expand Down Expand Up @@ -141,6 +159,12 @@ public void visit(VisitContext context, JavaResource javaResource)
@Override
public Result execute(UIExecutionContext context) throws Exception
{
List<Result> results = new ArrayList<>();
if (ejbVersion.isEnabled()
&& facetFactory.install(getSelectedProject(context.getUIContext()), ejbVersion.getValue()))
{
results.add(Results.success("EJB has been installed."));
}
String entityName = named.getValue();
String entityPackage = targetPackage.getValue();
EJBType ejbTypeChosen = type.getValue();
Expand All @@ -162,7 +186,8 @@ public Result execute(UIExecutionContext context) throws Exception
context.getUIContext().getAttributeMap().put(JavaResource.class, javaResource);

context.getUIContext().setSelection(javaResource);
return Results.success("EJB " + javaResource + " created.");
results.add(Results.success("EJB " + javaResource + " created."));
return Results.aggregate(results);
}

@Override
Expand Down
Expand Up @@ -6,11 +6,18 @@
*/
package org.jboss.forge.addon.javaee.ejb.ui;

import java.util.ArrayList;
import java.util.List;

import javax.inject.Inject;

import org.jboss.forge.addon.facets.FacetFactory;
import org.jboss.forge.addon.javaee.ejb.EJBOperations;
import org.jboss.forge.addon.javaee.ejb.JMSDestinationType;
import org.jboss.forge.addon.javaee.facets.JMSFacet;
import org.jboss.forge.addon.javaee.ui.AbstractJavaEECommand;
import org.jboss.forge.addon.parser.java.resources.JavaResource;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.context.UIExecutionContext;
Expand All @@ -32,7 +39,7 @@
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*
*/
public class NewMDBSetupStep implements UIWizardStep
public class NewMDBSetupStep extends AbstractJavaEECommand implements UIWizardStep
{

@Override
Expand All @@ -46,6 +53,13 @@ public UICommandMetadata getMetadata(UIContext context)
@Inject
EJBOperations operations;

@Inject
private FacetFactory facetFactory;

@Inject
@WithAttributes(required = true, label = "JMS Version", defaultValue = "1.1")
private UISelectOne<JMSFacet> jmsVersion;

@Inject
@WithAttributes(label = "JMS Destination Type", required = true)
private UISelectOne<JMSDestinationType> destType;
Expand All @@ -58,8 +72,12 @@ public UICommandMetadata getMetadata(UIContext context)
public void initializeUI(UIBuilder builder) throws Exception
{
destType.setDefaultValue(JMSDestinationType.QUEUE);

builder.add(destName).add(destType);
Project project = getSelectedProject(builder);
if (project.hasFacet(JMSFacet.class))
{
jmsVersion.setEnabled(false).setValue(project.getFacet(JMSFacet.class));
}
builder.add(jmsVersion).add(destName).add(destType);
}

@Override
Expand All @@ -70,12 +88,18 @@ public void validate(UIValidationContext context)
@Override
public Result execute(UIExecutionContext context) throws Exception
{
List<Result> results = new ArrayList<>();
if (jmsVersion.isEnabled() && facetFactory.install(getSelectedProject(context), jmsVersion.getValue()))
{
results.add(Results.success("JMS has been installed."));
}
JavaResource ejbResource = (JavaResource) context.getUIContext().getAttributeMap().get(JavaResource.class);
JavaClassSource ejb = operations.setupMessageDrivenBean((JavaClassSource) ejbResource.getJavaType(),
destType.getValue(),
destName.getValue());
ejbResource.setContents(ejb);
return Results.success("Configured Message Driven EJB.");
results.add(Results.success("Configured Message Driven EJB."));
return Results.aggregate(results);
}

@Override
Expand All @@ -89,4 +113,10 @@ public NavigationResult next(UINavigationContext context) throws Exception
{
return null;
}

@Override
protected boolean isProjectRequired()
{
return true;
}
}
Expand Up @@ -140,4 +140,9 @@ public JavaResource createEmptyEnum(Project project, String enumName) throws IOE
enumSource.setPackage(packageName);
return javaSourceFacet.saveJavaSource(enumSource);
}

public Project refreshProject(Project project)
{
return projectFactory.findProject(project.getRoot());
}
}
Expand Up @@ -25,6 +25,7 @@
import org.jboss.forge.addon.javaee.ejb.ui.EJBSetClassTransactionAttributeCommand;
import org.jboss.forge.addon.javaee.ejb.ui.EJBSetMethodTransactionAttributeCommand;
import org.jboss.forge.addon.javaee.ejb.ui.NewEJBCommand;
import org.jboss.forge.addon.javaee.facets.JMSFacet;
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 Down Expand Up @@ -96,7 +97,8 @@ public void testCreateEJB() throws Exception
Assert.assertTrue(controller.canExecute());
Result result = controller.execute();
Assert.assertThat(result, is(not(instanceOf(Failed.class))));

Assert.assertTrue(project.hasFacet(EJBFacet.class));
Assert.assertFalse(project.hasFacet(JMSFacet.class));
JavaSourceFacet facet = project.getFacet(JavaSourceFacet.class);
JavaResource javaResource = facet.getJavaResource("org.jboss.forge.test.TestEJB");
Assert.assertNotNull(javaResource);
Expand Down Expand Up @@ -132,6 +134,9 @@ public void testCreateMDB() throws Exception
Result result = controller.execute();
Assert.assertThat(result, is(not(instanceOf(Failed.class))));

project = projectHelper.refreshProject(project);
Assert.assertTrue(project.hasFacet(EJBFacet.class));
Assert.assertTrue(project.hasFacet(JMSFacet.class));
JavaSourceFacet facet = project.getFacet(JavaSourceFacet.class);
JavaResource javaResource = facet.getJavaResource("org.jboss.forge.test.TestEJB");
Assert.assertNotNull(javaResource);
Expand Down Expand Up @@ -205,6 +210,9 @@ public void testSetTransactionAttributeOnEJB() throws Exception
Assert.assertFalse(((JavaClass<?>) javaResource.getJavaType()).getMethod("onMessage", Message.class)
.hasAnnotation(TransactionAttribute.class));
controller3.execute();
project = projectHelper.refreshProject(project);
Assert.assertTrue(project.hasFacet(EJBFacet.class));
Assert.assertTrue(project.hasFacet(JMSFacet.class));
Assert.assertTrue(((JavaClass<?>) javaResource.getJavaType()).getMethod("onMessage", Message.class)
.hasAnnotation(
TransactionAttribute.class));
Expand Down

0 comments on commit 7e88de9

Please sign in to comment.