From 7e88de974e007d424e49c07bddcb30f787805856 Mon Sep 17 00:00:00 2001 From: George Gastaldi Date: Fri, 25 Apr 2014 15:36:08 -0300 Subject: [PATCH] FORGE-1773: EJB and JMS version is now shown in ejb-new-bean command --- .../addon/javaee/ejb/ui/NewEJBCommand.java | 37 +++++++++++++++--- .../addon/javaee/ejb/ui/NewMDBSetupStep.java | 38 +++++++++++++++++-- .../forge/addon/javaee/ProjectHelper.java | 5 +++ .../addon/javaee/ejb/NewEJBCommandTest.java | 10 ++++- 4 files changed, 79 insertions(+), 11 deletions(-) diff --git a/javaee/impl/src/main/java/org/jboss/forge/addon/javaee/ejb/ui/NewEJBCommand.java b/javaee/impl/src/main/java/org/jboss/forge/addon/javaee/ejb/ui/NewEJBCommand.java index 0450bb48fc..1d73706df5 100644 --- a/javaee/impl/src/main/java/org/jboss/forge/addon/javaee/ejb/ui/NewEJBCommand.java +++ b/javaee/impl/src/main/java/org/jboss/forge/addon/javaee/ejb/ui/NewEJBCommand.java @@ -7,6 +7,8 @@ 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; @@ -14,6 +16,8 @@ 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; @@ -67,6 +71,13 @@ public class NewEJBCommand extends AbstractJavaEECommand implements UIWizard @WithAttributes(label = "Target Directory", required = true) private UIInput targetLocation; + @Inject + private FacetFactory facetFactory; + + @Inject + @WithAttributes(required = true, label = "EJB Version", defaultValue = "3.1") + private UISelectOne ejbVersion; + @Inject private EJBOperations ejbOperations; @@ -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) @@ -141,6 +159,12 @@ public void visit(VisitContext context, JavaResource javaResource) @Override public Result execute(UIExecutionContext context) throws Exception { + List 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(); @@ -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 diff --git a/javaee/impl/src/main/java/org/jboss/forge/addon/javaee/ejb/ui/NewMDBSetupStep.java b/javaee/impl/src/main/java/org/jboss/forge/addon/javaee/ejb/ui/NewMDBSetupStep.java index 0809f5cf37..4e1b694a49 100644 --- a/javaee/impl/src/main/java/org/jboss/forge/addon/javaee/ejb/ui/NewMDBSetupStep.java +++ b/javaee/impl/src/main/java/org/jboss/forge/addon/javaee/ejb/ui/NewMDBSetupStep.java @@ -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; @@ -32,7 +39,7 @@ * @author Lincoln Baxter, III * */ -public class NewMDBSetupStep implements UIWizardStep +public class NewMDBSetupStep extends AbstractJavaEECommand implements UIWizardStep { @Override @@ -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 jmsVersion; + @Inject @WithAttributes(label = "JMS Destination Type", required = true) private UISelectOne destType; @@ -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 @@ -70,12 +88,18 @@ public void validate(UIValidationContext context) @Override public Result execute(UIExecutionContext context) throws Exception { + List 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 @@ -89,4 +113,10 @@ public NavigationResult next(UINavigationContext context) throws Exception { return null; } + + @Override + protected boolean isProjectRequired() + { + return true; + } } diff --git a/javaee/tests/src/main/java/org/jboss/forge/addon/javaee/ProjectHelper.java b/javaee/tests/src/main/java/org/jboss/forge/addon/javaee/ProjectHelper.java index 1a69296bc2..e8943cec2d 100644 --- a/javaee/tests/src/main/java/org/jboss/forge/addon/javaee/ProjectHelper.java +++ b/javaee/tests/src/main/java/org/jboss/forge/addon/javaee/ProjectHelper.java @@ -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()); + } } \ No newline at end of file diff --git a/javaee/tests/src/test/java/org/jboss/forge/addon/javaee/ejb/NewEJBCommandTest.java b/javaee/tests/src/test/java/org/jboss/forge/addon/javaee/ejb/NewEJBCommandTest.java index b41ec95f05..71985643ff 100644 --- a/javaee/tests/src/test/java/org/jboss/forge/addon/javaee/ejb/NewEJBCommandTest.java +++ b/javaee/tests/src/test/java/org/jboss/forge/addon/javaee/ejb/NewEJBCommandTest.java @@ -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; @@ -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); @@ -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); @@ -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));