Skip to content

Commit

Permalink
FORGE-2382: Add a serializable parameter to the cdi-new-bean command
Browse files Browse the repository at this point in the history
  • Loading branch information
agoncal committed Jul 31, 2015
1 parent 22ffdb1 commit 4207c85
Show file tree
Hide file tree
Showing 3 changed files with 115 additions and 40 deletions.
Expand Up @@ -11,22 +11,28 @@
*/
public enum BeanScope
{
DEPENDENT(""),
APPLICATION("javax.enterprise.context.ApplicationScoped"),
SESSION("javax.enterprise.context.SessionScoped"),
CONVERSATION("javax.enterprise.context.ConversationScoped"),
REQUEST("javax.enterprise.context.RequestScoped"),
CUSTOM(null);
DEPENDENT("", false),
APPLICATION("javax.enterprise.context.ApplicationScoped", true),
SESSION("javax.enterprise.context.SessionScoped", true),
CONVERSATION("javax.enterprise.context.ConversationScoped", true),
REQUEST("javax.enterprise.context.RequestScoped", false),
CUSTOM(null, false);

private String annotation;
private boolean serializable;

private BeanScope(String annotation)
private BeanScope(String annotation, boolean serializable)
{
this.annotation = annotation;
this.serializable = serializable;
}

public String getAnnotation()
{
return annotation;
}

public boolean isSerializable() {
return serializable;
}
}
Expand Up @@ -7,6 +7,7 @@

package org.jboss.forge.addon.javaee.cdi.ui;

import java.io.Serializable;
import java.util.concurrent.Callable;

import javax.enterprise.inject.Alternative;
Expand Down Expand Up @@ -100,6 +101,12 @@ public JavaClassSource decorateSource(UIExecutionContext context, Project projec
else if (BeanScope.DEPENDENT != scopedValue)
{
source.addAnnotation(scopedValue.getAnnotation());
if (scopedValue.isSerializable())
{
source.addInterface(Serializable.class);
source.addField().setPrivate().setStatic(true).setFinal(true).setName("serialVersionUID").setType("long")
.setLiteralInitializer("1L");
}
}
if (withNamed.getValue())
{
Expand Down
Expand Up @@ -7,17 +7,16 @@

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.hamcrest.CoreMatchers.*;
import static org.jboss.forge.addon.javaee.JavaEEPackageConstants.DEFAULT_CDI_PACKAGE;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.*;

import java.io.Serializable;
import java.util.concurrent.TimeUnit;

import javax.enterprise.context.ConversationScoped;
import javax.enterprise.context.NormalScope;
import javax.enterprise.context.RequestScoped;
import javax.enterprise.context.SessionScoped;
import javax.enterprise.inject.Alternative;
import javax.inject.Inject;
Expand All @@ -43,7 +42,6 @@
import org.jboss.forge.roaster.model.JavaClass;
import org.jboss.forge.roaster.model.source.JavaAnnotationSource;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
Expand Down Expand Up @@ -120,8 +118,8 @@ public void checkCommandShell() throws Exception
shellTest.getShell().setCurrentResource(project.getRoot());
Result result = shellTest.execute("cdi-new-bean --named Dummy", 10, TimeUnit.SECONDS);

Assert.assertThat(result, not(instanceOf(Failed.class)));
Assert.assertTrue(project.hasFacet(CDIFacet.class));
assertThat(result, not(instanceOf(Failed.class)));
assertTrue(project.hasFacet(CDIFacet.class));
}

@Test
Expand All @@ -137,16 +135,72 @@ public void testCreateNewBean() throws Exception
assertTrue(controller.isValid());
assertTrue(controller.canExecute());
Result result = controller.execute();
Assert.assertThat(result, is(not(instanceOf(Failed.class))));
assertThat(result, is(not(instanceOf(Failed.class))));
}

JavaSourceFacet facet = project.getFacet(JavaSourceFacet.class);
JavaResource javaResource = facet.getJavaResource("org.jboss.forge.test.MyServiceBean");
Assert.assertNotNull(javaResource);
Assert.assertThat(javaResource.getJavaType(), is(instanceOf(JavaClass.class)));
assertNotNull(javaResource);
assertThat(javaResource.getJavaType(), is(instanceOf(JavaClass.class)));
assertTrue(javaResource.getJavaType().hasAnnotation(SessionScoped.class));
Assert.assertFalse(javaResource.getJavaType().hasAnnotation(Named.class));
Assert.assertFalse(javaResource.getJavaType().hasAnnotation(Alternative.class));
assertFalse(javaResource.getJavaType().hasAnnotation(Named.class));
assertFalse(javaResource.getJavaType().hasAnnotation(Alternative.class));
assertTrue(((JavaClass<?>) javaResource.getJavaType()).hasInterface(Serializable.class));
assertTrue(((JavaClass<?>) javaResource.getJavaType()).hasField("serialVersionUID"));
}

@Test
public void testCreateNewRequestScopedBean() throws Exception
{
try (CommandController controller = uiTestHarness.createCommandController(CDINewBeanCommand.class,
project.getRoot()))
{
controller.initialize();
controller.setValueFor("named", "MyRequestScopedBean");
controller.setValueFor("targetPackage", "org.jboss.forge.test");
controller.setValueFor("scoped", BeanScope.REQUEST.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.MyRequestScopedBean");
assertNotNull(javaResource);
assertThat(javaResource.getJavaType(), is(instanceOf(JavaClass.class)));
assertTrue(javaResource.getJavaType().hasAnnotation(RequestScoped.class));
assertFalse(javaResource.getJavaType().hasAnnotation(Named.class));
assertFalse(javaResource.getJavaType().hasAnnotation(Alternative.class));
assertFalse(((JavaClass<?>) javaResource.getJavaType()).hasInterface(Serializable.class));
assertFalse(((JavaClass<?>) javaResource.getJavaType()).hasField("serialVersionUID"));
}

@Test
public void testCreateNewConversationScopedBean() throws Exception
{
try (CommandController controller = uiTestHarness.createCommandController(CDINewBeanCommand.class,
project.getRoot()))
{
controller.initialize();
controller.setValueFor("named", "MyConversationScopedBean");
controller.setValueFor("targetPackage", "org.jboss.forge.test");
controller.setValueFor("scoped", BeanScope.CONVERSATION.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.MyConversationScopedBean");
assertNotNull(javaResource);
assertThat(javaResource.getJavaType(), is(instanceOf(JavaClass.class)));
assertTrue(javaResource.getJavaType().hasAnnotation(ConversationScoped.class));
assertFalse(javaResource.getJavaType().hasAnnotation(Named.class));
assertFalse(javaResource.getJavaType().hasAnnotation(Alternative.class));
assertTrue(((JavaClass<?>) javaResource.getJavaType()).hasInterface(Serializable.class));
assertTrue(((JavaClass<?>) javaResource.getJavaType()).hasField("serialVersionUID"));
}

@Test
Expand All @@ -164,16 +218,18 @@ public void testCreateNewBeanWithAlternativeAndNamed() throws Exception
assertTrue(controller.isValid());
assertTrue(controller.canExecute());
Result result = controller.execute();
Assert.assertThat(result, is(not(instanceOf(Failed.class))));
assertThat(result, is(not(instanceOf(Failed.class))));
}

JavaSourceFacet facet = project.getFacet(JavaSourceFacet.class);
JavaResource javaResource = facet.getJavaResource("org.jboss.forge.test.MyServiceBean");
Assert.assertNotNull(javaResource);
Assert.assertThat(javaResource.getJavaType(), is(instanceOf(JavaClass.class)));
assertNotNull(javaResource);
assertThat(javaResource.getJavaType(), is(instanceOf(JavaClass.class)));
assertTrue(javaResource.getJavaType().hasAnnotation(SessionScoped.class));
assertTrue(javaResource.getJavaType().hasAnnotation(Named.class));
assertTrue(javaResource.getJavaType().hasAnnotation(Alternative.class));
assertTrue(((JavaClass<?>) javaResource.getJavaType()).hasInterface(Serializable.class));
assertTrue(((JavaClass<?>) javaResource.getJavaType()).hasField("serialVersionUID"));
}

@Test
Expand All @@ -190,15 +246,17 @@ public void testCreateNewBeanWithNoAlternativeAndNamed() throws Exception
assertTrue(controller.isValid());
assertTrue(controller.canExecute());
Result result = controller.execute();
Assert.assertThat(result, is(not(instanceOf(Failed.class))));
assertThat(result, is(not(instanceOf(Failed.class))));
}

JavaSourceFacet facet = project.getFacet(JavaSourceFacet.class);
JavaResource javaResource = facet.getJavaResource("org.jboss.forge.test.MyServiceBean");
Assert.assertNotNull(javaResource);
Assert.assertThat(javaResource.getJavaType(), is(instanceOf(JavaClass.class)));
Assert.assertFalse(javaResource.getJavaType().hasAnnotation(Named.class));
Assert.assertFalse(javaResource.getJavaType().hasAnnotation(Alternative.class));
assertNotNull(javaResource);
assertThat(javaResource.getJavaType(), is(instanceOf(JavaClass.class)));
assertFalse(javaResource.getJavaType().hasAnnotation(Named.class));
assertFalse(javaResource.getJavaType().hasAnnotation(Alternative.class));
assertFalse(((JavaClass<?>) javaResource.getJavaType()).hasInterface(Serializable.class));
assertFalse(((JavaClass<?>) javaResource.getJavaType()).hasField("serialVersionUID"));
}

@Test
Expand All @@ -214,16 +272,18 @@ public void testCreateNewBeanWithQualifier() throws Exception
assertTrue(controller.isValid());
assertTrue(controller.canExecute());
Result result = controller.execute();
Assert.assertThat(result, is(not(instanceOf(Failed.class))));
assertThat(result, is(not(instanceOf(Failed.class))));
}

JavaSourceFacet facet = project.getFacet(JavaSourceFacet.class);
JavaResource javaResource = facet.getJavaResource("org.jboss.forge.test.MyServiceBean");
Assert.assertNotNull(javaResource);
Assert.assertThat(javaResource.getJavaType(), is(instanceOf(JavaClass.class)));
Assert.assertFalse(javaResource.getJavaType().hasAnnotation(SessionScoped.class));
assertNotNull(javaResource);
assertThat(javaResource.getJavaType(), is(instanceOf(JavaClass.class)));
assertFalse(javaResource.getJavaType().hasAnnotation(SessionScoped.class));
assertTrue(javaResource.getJavaType().hasAnnotation(Named.class));
Assert.assertFalse(javaResource.getJavaType().hasAnnotation(Alternative.class));
assertFalse(javaResource.getJavaType().hasAnnotation(Alternative.class));
assertFalse(((JavaClass<?>) javaResource.getJavaType()).hasInterface(Serializable.class));
assertFalse(((JavaClass<?>) javaResource.getJavaType()).hasField("serialVersionUID"));
}

@Test
Expand All @@ -240,19 +300,21 @@ public void testCreateNewBeanCustomScope() throws Exception
controller.setValueFor("named", "MyCustomServiceBean");
controller.setValueFor("targetPackage", "org.jboss.forge.test");
controller.setValueFor("scoped", BeanScope.CUSTOM.name());
Assert.assertFalse(controller.isValid());
assertFalse(controller.isValid());
controller.setValueFor("customScopeAnnotation", ann.getQualifiedName());
assertTrue(controller.isValid());
assertTrue(controller.canExecute());
Result result = controller.execute();
Assert.assertThat(result, is(not(instanceOf(Failed.class))));
assertThat(result, is(not(instanceOf(Failed.class))));
}

JavaSourceFacet facet = project.getFacet(JavaSourceFacet.class);
JavaResource javaResource = facet.getJavaResource("org.jboss.forge.test.MyCustomServiceBean");
Assert.assertNotNull(javaResource);
Assert.assertThat(javaResource.getJavaType(), is(instanceOf(JavaClass.class)));
Assert.assertFalse(javaResource.getJavaType().hasAnnotation(Named.class));
Assert.assertFalse(javaResource.getJavaType().hasAnnotation(Alternative.class));
assertNotNull(javaResource);
assertThat(javaResource.getJavaType(), is(instanceOf(JavaClass.class)));
assertFalse(javaResource.getJavaType().hasAnnotation(Named.class));
assertFalse(javaResource.getJavaType().hasAnnotation(Alternative.class));
assertFalse(((JavaClass<?>) javaResource.getJavaType()).hasInterface(Serializable.class));
assertFalse(((JavaClass<?>) javaResource.getJavaType()).hasField("serialVersionUID"));
}
}

0 comments on commit 4207c85

Please sign in to comment.