Skip to content

Commit

Permalink
FORGE-2762 CDINewBeanCommand - declare dependent scope for CDI 1.1 (#614
Browse files Browse the repository at this point in the history
)

- dependent beans declare scope annotation if CDI 1.1 project facet is
used
  • Loading branch information
mkouba authored and gastaldi committed Oct 5, 2017
1 parent 3be5400 commit df247a8
Show file tree
Hide file tree
Showing 4 changed files with 115 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
*/
public enum BeanScope
{
DEPENDENT("", false),
DEPENDENT("javax.enterprise.context.Dependent", false),
APPLICATION("javax.enterprise.context.ApplicationScoped", true),
SESSION("javax.enterprise.context.SessionScoped", true),
CONVERSATION("javax.enterprise.context.ConversationScoped", true),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,4 +74,5 @@ protected ProjectFactory getProjectFactory()
{
return projectFactory;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import javax.inject.Inject;
import javax.inject.Named;

import org.jboss.forge.addon.javaee.cdi.CDIFacet_1_1;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
Expand Down Expand Up @@ -107,6 +108,10 @@ else if (BeanScope.DEPENDENT != scopedValue)
.setLiteralInitializer("1L");
}
}
else if (BeanScope.DEPENDENT == scopedValue && project.hasFacet(CDIFacet_1_1.class))
{
source.addAnnotation(scopedValue.getAnnotation());
}
if (withNamed.getValue())
{
source.addAnnotation(Named.class);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
/**
* Copyright 2017 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.jboss.forge.addon.javaee.cdi.ui;

import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;

import javax.enterprise.context.Dependent;
import javax.inject.Inject;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.forge.addon.javaee.ProjectHelper;
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;
import org.jboss.forge.addon.shell.test.ShellTest;
import org.jboss.forge.addon.ui.controller.CommandController;
import org.jboss.forge.addon.ui.result.Failed;
import org.jboss.forge.addon.ui.result.Result;
import org.jboss.forge.addon.ui.test.UITestHarness;
import org.jboss.forge.arquillian.AddonDependencies;
import org.jboss.forge.arquillian.AddonDependency;
import org.jboss.forge.arquillian.archive.AddonArchive;
import org.jboss.forge.roaster.model.JavaClass;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

/**
*
* @author <a href="ggastald@redhat.com">George Gastaldi</a>
* @author Martin Kouba
*/
@RunWith(Arquillian.class)
public class CDINewBeanCommand_CDI11_Test
{
@Deployment
@AddonDependencies({
@AddonDependency(name = "org.jboss.forge.addon:ui-test-harness"),
@AddonDependency(name = "org.jboss.forge.addon:shell-test-harness"),
@AddonDependency(name = "org.jboss.forge.addon:javaee"),
@AddonDependency(name = "org.jboss.forge.addon:maven"),
@AddonDependency(name = "org.jboss.forge.furnace.container:cdi")
})
public static AddonArchive getDeployment()
{
return ShrinkWrap.create(AddonArchive.class).addBeansXML().addClass(ProjectHelper.class);
}

@Inject
private UITestHarness uiTestHarness;

@Inject
private ShellTest shellTest;

@Inject
private ProjectHelper projectHelper;

private Project project;

@Before
public void setUp()
{
project = projectHelper.createJavaLibraryProject();
projectHelper.installCDI_1_1(project);
}

@After
public void tearDown() throws Exception
{
shellTest.close();
}

@Test
public void testCreateNewBean() throws Exception
{
try (CommandController controller = uiTestHarness.createCommandController(CDINewBeanCommand.class,
project.getRoot()))
{
controller.initialize();
controller.setValueFor("named", "MyServiceBean");
controller.setValueFor("targetPackage", "org.jboss.forge.test");
controller.setValueFor("scoped", BeanScope.DEPENDENT.name());
assertTrue(controller.isValid());
assertTrue(controller.canExecute());
Result result = controller.execute();
assertThat(result, is(not(instanceOf(Failed.class))));
}

JavaSourceFacet facet = project.getFacet(JavaSourceFacet.class);
JavaResource javaResource = facet.getJavaResource("org.jboss.forge.test.MyServiceBean");
assertNotNull(javaResource);
assertThat(javaResource.getJavaType(), is(instanceOf(JavaClass.class)));
assertTrue(javaResource.getJavaType().hasAnnotation(Dependent.class));
}

}

0 comments on commit df247a8

Please sign in to comment.