From seam-commits at lists.jboss.org Mon Mar 29 16:36:48 2010 Content-Type: multipart/mixed; boundary="===============6792700179964988584==" MIME-Version: 1.0 From: seam-commits at lists.jboss.org To: seam-commits at lists.jboss.org Subject: [seam-commits] Seam SVN: r12312 - in modules/faces/trunk/src: main/java/org/jboss/seam/faces/context/conversation and 6 other directories. Date: Mon, 29 Mar 2010 16:36:48 -0400 Message-ID: <201003292036.o2TKamqA029719@svn01.web.mwc.hst.phx2.redhat.com> --===============6792700179964988584== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Author: lincolnthree Date: 2010-03-29 16:36:45 -0400 (Mon, 29 Mar 2010) New Revision: 12312 Added: modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/conversat= ion/ConversationBoundary.java modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/conversat= ion/ConversationBoundaryInterceptor.java modules/faces/trunk/src/main/java/org/jboss/seam/faces/util/ modules/faces/trunk/src/main/java/org/jboss/seam/faces/util/Annotations.= java modules/faces/trunk/src/test/java/org/jboss/seam/faces/context/conversat= ion/ConversationBoundaryInterceptorTest.java modules/faces/trunk/src/test/java/org/jboss/seam/faces/context/conversat= ion/ConversationalBean.java modules/faces/trunk/src/test/java/org/jboss/seam/faces/util/ modules/faces/trunk/src/test/java/org/jboss/seam/faces/util/AnnotationTe= stObject.java modules/faces/trunk/src/test/java/org/jboss/seam/faces/util/AnnotationsT= est.java modules/faces/trunk/src/test/resources/org/jboss/seam/faces/context/conv= ersation/ConversationBoundaryInterceptorTest-beans.xml Removed: modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/conversat= ion/BeginConversationInterceptor.java modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/conversat= ion/ConversationAnnotationExtension.java modules/faces/trunk/src/test/java/org/jboss/seam/faces/context/conversat= ion/BeginConversationBean.java modules/faces/trunk/src/test/java/org/jboss/seam/faces/context/conversat= ion/BeginConversationInterceptorTest.java modules/faces/trunk/src/test/resources/org/jboss/seam/faces/context/conv= ersation/BeginConversationInterceptorTest-beans.xml Modified: modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/conversat= ion/Begin.java modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/conversat= ion/End.java modules/faces/trunk/src/main/resources/META-INF/services/javax.enterpris= e.inject.spi.Extension Log: @Begin and @End annotations are both functional - ConversationBoundary supp= ort alpha. Modified: modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/co= nversation/Begin.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/conversa= tion/Begin.java 2010-03-29 16:26:07 UTC (rev 12311) +++ modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/conversa= tion/Begin.java 2010-03-29 20:36:45 UTC (rev 12312) @@ -20,6 +20,7 @@ * = * @author Lincoln Baxter, II= I */ +(a)ConversationBoundary @InterceptorBinding @Target( { METHOD, TYPE }) @Retention(RUNTIME) Deleted: modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/con= versation/BeginConversationInterceptor.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/conversa= tion/BeginConversationInterceptor.java 2010-03-29 16:26:07 UTC (rev 12311) +++ modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/conversa= tion/BeginConversationInterceptor.java 2010-03-29 20:36:45 UTC (rev 12312) @@ -1,87 +0,0 @@ -/** - * = - */ -package org.jboss.seam.faces.context.conversation; - -import java.io.Serializable; -import java.lang.annotation.Annotation; -import java.lang.reflect.Method; - -import javax.enterprise.context.Conversation; -import javax.inject.Inject; -import javax.interceptor.AroundInvoke; -import javax.interceptor.Interceptor; -import javax.interceptor.InvocationContext; - -import org.slf4j.Logger; - -/** - * Intercepts methods annotated as Conversational entry points. - * = - * @author Lincoln Baxter, II= I - * = - */ -(a)Begin -(a)Interceptor -// TODO try having @Begin and @End extend @ConversationAnno.. to converge = into a -// single interceptor -public class BeginConversationInterceptor implements Serializable -{ - @Inject - Logger log; - - @Inject - Conversation conversation; - - @AroundInvoke - public Object before(final InvocationContext ctx) throws Exception - { - String cid =3D getConversationId(ctx.getMethod()); - if (cid !=3D null) - { - conversation.begin(cid); - } - else - { - conversation.begin(); - } - - log.debug("Began conversation: (#0) on method: (#1.#2(...))", new Ob= ject[] { conversation.getId(), ctx.getMethod().getDeclaringClass().getName(= ), ctx.getMethod().getName() }); - - try - { - Object result =3D ctx.proceed(); - return result; - } - catch (Exception e) - { - conversation.end(); - throw e; - } - - } - - private String getConversationId(final Method m) - { - String result =3D null; - for (Annotation a : m.getAnnotations()) - { - if (a.annotationType().isAnnotationPresent(Begin.class)) - { - result =3D a.annotationType().getAnnotation(Begin.class).id(); - } - } - - if (result =3D=3D null) - { - for (Annotation a : m.getDeclaringClass().getAnnotations()) - { - if (a.annotationType().isAnnotationPresent(Begin.class)) - { - result =3D a.annotationType().getAnnotation(Begin.class).id= (); - } - } - } - return result; - } -} Deleted: modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/con= versation/ConversationAnnotationExtension.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/conversa= tion/ConversationAnnotationExtension.java 2010-03-29 16:26:07 UTC (rev 1231= 1) +++ modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/conversa= tion/ConversationAnnotationExtension.java 2010-03-29 20:36:45 UTC (rev 1231= 2) @@ -1,34 +0,0 @@ -/** - * = - */ -package org.jboss.seam.faces.context.conversation; - -import java.util.ArrayList; -import java.util.List; - -import javax.enterprise.event.Observes; -import javax.enterprise.inject.spi.BeanManager; -import javax.enterprise.inject.spi.BeforeBeanDiscovery; -import javax.enterprise.inject.spi.Extension; - -import org.jboss.weld.manager.BeanManagerImpl; - -/** - * @author Lincoln Baxter, II= I - * = - */ -public class ConversationAnnotationExtension implements Extension -{ - public void beforeBeanDiscovery(@Observes final BeforeBeanDiscovery eve= nt, final BeanManager manager) - { - if (manager instanceof BeanManagerImpl) - { - BeanManagerImpl impl =3D (BeanManagerImpl) manager; - - List> list =3D new ArrayList>(); - list.addAll(impl.getEnabledInterceptorClasses()); - list.add(BeginConversationInterceptor.class); - impl.setEnabledInterceptorClasses(list); - } - } -} Added: modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/conve= rsation/ConversationBoundary.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/conversa= tion/ConversationBoundary.java (rev 0) +++ modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/conversa= tion/ConversationBoundary.java 2010-03-29 20:36:45 UTC (rev 12312) @@ -0,0 +1,24 @@ +package org.jboss.seam.faces.context.conversation; + +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import javax.interceptor.InterceptorBinding; + +/** + * Parent annotation for @{@link Begin} and @{@link End} + * = + * @author Lincoln Baxter, II= I + */ +(a)InterceptorBinding +(a)Inherited +(a)Target( { METHOD, TYPE }) +(a)Retention(RUNTIME) +(a)interface ConversationBoundary +{ +} \ No newline at end of file Copied: modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/conv= ersation/ConversationBoundaryInterceptor.java (from rev 12311, modules/face= s/trunk/src/main/java/org/jboss/seam/faces/context/conversation/BeginConver= sationInterceptor.java) =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/conversa= tion/ConversationBoundaryInterceptor.java (rev 0) +++ modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/conversa= tion/ConversationBoundaryInterceptor.java 2010-03-29 20:36:45 UTC (rev 1231= 2) @@ -0,0 +1,108 @@ +/** + * = + */ +package org.jboss.seam.faces.context.conversation; + +import java.io.Serializable; +import java.lang.annotation.Annotation; +import java.lang.reflect.Method; + +import javax.enterprise.context.Conversation; +import javax.inject.Inject; +import javax.interceptor.AroundInvoke; +import javax.interceptor.Interceptor; +import javax.interceptor.InvocationContext; + +import org.jboss.seam.faces.util.Annotations; +import org.slf4j.Logger; + +/** + * Intercepts methods annotated as Conversational entry points. + * = + * @author Lincoln Baxter, II= I + * = + */ +(a)ConversationBoundary +(a)Interceptor +public class ConversationBoundaryInterceptor implements Serializable +{ + private static final long serialVersionUID =3D -2729227895205287477L; + + @Inject + Logger log; + + @Inject + Conversation conversation; + + @AroundInvoke + public Object before(final InvocationContext ctx) throws Exception + { + Object result =3D null; + if (Annotations.hasAnnotation(ctx.getMethod(), Begin.class)) + { + result =3D beginConversation(ctx); + } + + if (Annotations.hasAnnotation(ctx.getMethod(), End.class)) + { + endConversation(ctx); + } + + return result; + } + + private Object beginConversation(final InvocationContext ctx) throws Ex= ception + { + String cid =3D getConversationId(ctx.getMethod()); + if (cid !=3D null) + { + conversation.begin(cid); + } + else + { + conversation.begin(); + } + + log.debug("Began conversation: (#0) on method: (#1.#2(...))", new Ob= ject[] { conversation.getId(), ctx.getMethod().getDeclaringClass().getName(= ), ctx.getMethod().getName() }); + + try + { + Object result =3D ctx.proceed(); + return result; + } + catch (Exception e) + { + conversation.end(); + throw e; + } + } + + private void endConversation(final InvocationContext ctx) + { + conversation.end(); + } + + private String getConversationId(final Method m) + { + String result =3D null; + for (Annotation a : m.getAnnotations()) + { + if (a.annotationType().isAnnotationPresent(Begin.class)) + { + result =3D a.annotationType().getAnnotation(Begin.class).id(); + } + } + + if (result =3D=3D null) + { + for (Annotation a : m.getDeclaringClass().getAnnotations()) + { + if (a.annotationType().isAnnotationPresent(Begin.class)) + { + result =3D a.annotationType().getAnnotation(Begin.class).id= (); + } + } + } + return result; + } +} Modified: modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/co= nversation/End.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/conversa= tion/End.java 2010-03-29 16:26:07 UTC (rev 12311) +++ modules/faces/trunk/src/main/java/org/jboss/seam/faces/context/conversa= tion/End.java 2010-03-29 20:36:45 UTC (rev 12312) @@ -20,6 +20,7 @@ * = * @author Lincoln Baxter, II= I */ +(a)ConversationBoundary @InterceptorBinding @Target( { METHOD, TYPE }) @Retention(RUNTIME) Added: modules/faces/trunk/src/main/java/org/jboss/seam/faces/util/Annotati= ons.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- modules/faces/trunk/src/main/java/org/jboss/seam/faces/util/Annotations= .java (rev 0) +++ modules/faces/trunk/src/main/java/org/jboss/seam/faces/util/Annotations= .java 2010-03-29 20:36:45 UTC (rev 12312) @@ -0,0 +1,78 @@ +package org.jboss.seam.faces.util; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Method; + +import javax.enterprise.inject.Stereotype; + +/** + * Utility class for common @{@link Annotation} operations. + *

+ * TODO: This should probably go into weld-extensions so other portable + * extensions can leverage it. + * = + * @author Lincoln Baxter, III= + * = + */ +public class Annotations +{ + /** + * Discover if a Method m has been annotated with type. T= his + * also discovers annotations defined through a @{@link Stereotype}. + * = + * @return True if annotation is present either on the method itself, o= r on + * the declaring class of the method. Returns false if the anno= tation + * is not present. + */ + public static boolean hasAnnotation(final Method m, final Class type) + { + boolean result =3D false; + if (m.isAnnotationPresent(type)) + { + result =3D true; + } + else + { + for (Annotation a : m.getAnnotations()) + { + if (a.annotationType().isAnnotationPresent(type)) + { + result =3D true; + } + } + } + + if (result =3D=3D false) + { + result =3D hasAnnotation(m.getDeclaringClass(), type); + } + return result; + } + + /** + * Discover if a Class c has been annotated with type. Th= is + * also discovers annotations defined through a @{@link Stereotype}. + * = + * @return True if annotation is present either on class, false if the + * annotation is not present. + */ + public static boolean hasAnnotation(final Class c, final Class type) + { + boolean result =3D false; + if (c.isAnnotationPresent(type)) + { + result =3D true; + } + else + { + for (Annotation a : c.getAnnotations()) + { + if (a.annotationType().isAnnotationPresent(type)) + { + result =3D true; + } + } + } + return result; + } +} Modified: modules/faces/trunk/src/main/resources/META-INF/services/javax.en= terprise.inject.spi.Extension =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- modules/faces/trunk/src/main/resources/META-INF/services/javax.enterpri= se.inject.spi.Extension 2010-03-29 16:26:07 UTC (rev 12311) +++ modules/faces/trunk/src/main/resources/META-INF/services/javax.enterpri= se.inject.spi.Extension 2010-03-29 20:36:45 UTC (rev 12312) @@ -1,3 +1,2 @@ org.jboss.seam.faces.context.ViewScopedExtension -org.jboss.seam.faces.context.FlashScopedExtension -org.jboss.seam.faces.context.conversation.ConversationAnnotationExtension \ No newline at end of file +org.jboss.seam.faces.context.FlashScopedExtension \ No newline at end of file Deleted: modules/faces/trunk/src/test/java/org/jboss/seam/faces/context/con= versation/BeginConversationBean.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- modules/faces/trunk/src/test/java/org/jboss/seam/faces/context/conversa= tion/BeginConversationBean.java 2010-03-29 16:26:07 UTC (rev 12311) +++ modules/faces/trunk/src/test/java/org/jboss/seam/faces/context/conversa= tion/BeginConversationBean.java 2010-03-29 20:36:45 UTC (rev 12312) @@ -1,34 +0,0 @@ -/** - * = - */ -package org.jboss.seam.faces.context.conversation; - -import javax.enterprise.context.Conversation; -import javax.enterprise.context.RequestScoped; -import javax.inject.Inject; - -/** - * @author Lincoln Baxter, II= I - * = - */ -(a)RequestScoped -public class BeginConversationBean -{ - @Inject Conversation conversation; - - private boolean conversationLongRunningDuringInvocation =3D false; - - @Begin - public void beginConversation() - { - if (!conversation.isTransient()) - { - conversationLongRunningDuringInvocation =3D true; - } - } - - public boolean isConversationLongRunningInsideMethodCall() { - return conversationLongRunningDuringInvocation; - } - -} Deleted: modules/faces/trunk/src/test/java/org/jboss/seam/faces/context/con= versation/BeginConversationInterceptorTest.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- modules/faces/trunk/src/test/java/org/jboss/seam/faces/context/conversa= tion/BeginConversationInterceptorTest.java 2010-03-29 16:26:07 UTC (rev 123= 11) +++ modules/faces/trunk/src/test/java/org/jboss/seam/faces/context/conversa= tion/BeginConversationInterceptorTest.java 2010-03-29 20:36:45 UTC (rev 123= 12) @@ -1,54 +0,0 @@ -/** - * = - */ -package org.jboss.seam.faces.context.conversation; - -import javax.enterprise.context.Conversation; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.assertFalse; - -import javax.inject.Inject; - -import org.jboss.arquillian.api.Deployment; -import org.jboss.arquillian.junit.Arquillian; -import org.jboss.seam.faces.MockConversation; -import org.jboss.seam.faces.MockLogger; -import org.jboss.shrinkwrap.api.ArchivePaths; -import org.jboss.shrinkwrap.api.Archives; -import org.jboss.shrinkwrap.api.spec.JavaArchive; -import org.junit.Test; -import org.junit.experimental.categories.Category; -import org.junit.internal.runners.statements.Fail; -import org.junit.runner.RunWith; - -/** - * @author Lincoln Baxter, II= I - * = - */ -(a)RunWith(Arquillian.class) -public class BeginConversationInterceptorTest -{ - @Deployment - public static JavaArchive createTestArchive() - { - return Archives.create("test.jar", JavaArchive.class).addClasses(Beg= inConversationInterceptor.class, BeginConversationBean.class, MockLogger.cl= ass, MockConversation.class).addManifestResource(BeginConversationIntercept= orTest.class.getPackage().getName().replaceAll("\\.", "/") + "/BeginConvers= ationInterceptorTest-beans.xml", ArchivePaths.create("beans.xml")); - } - - @Inject Conversation conversation; - - @Inject private BeginConversationBean interceptedBean; - - @Test - //@Category(Fail.class) - public void testConversationStarted() - { - // assert fixtures - assertTrue(conversation.isTransient()); - assertFalse(interceptedBean.isConversationLongRunningInsideMethodCal= l()); - - interceptedBean.beginConversation(); - - assertFalse(conversation.isTransient()); - assertTrue(interceptedBean.isConversationLongRunningInsideMethodCall= ()); - } -} Copied: modules/faces/trunk/src/test/java/org/jboss/seam/faces/context/conv= ersation/ConversationBoundaryInterceptorTest.java (from rev 12311, modules/= faces/trunk/src/test/java/org/jboss/seam/faces/context/conversation/BeginCo= nversationInterceptorTest.java) =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- modules/faces/trunk/src/test/java/org/jboss/seam/faces/context/conversa= tion/ConversationBoundaryInterceptorTest.java (rev = 0) +++ modules/faces/trunk/src/test/java/org/jboss/seam/faces/context/conversa= tion/ConversationBoundaryInterceptorTest.java 2010-03-29 20:36:45 UTC (rev = 12312) @@ -0,0 +1,64 @@ +/** + * = + */ +package org.jboss.seam.faces.context.conversation; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import javax.enterprise.context.Conversation; +import javax.inject.Inject; + +import org.jboss.arquillian.api.Deployment; +import org.jboss.arquillian.junit.Arquillian; +import org.jboss.seam.faces.MockConversation; +import org.jboss.seam.faces.MockLogger; +import org.jboss.shrinkwrap.api.ArchivePaths; +import org.jboss.shrinkwrap.api.Archives; +import org.jboss.shrinkwrap.api.spec.JavaArchive; +import org.junit.Test; +import org.junit.runner.RunWith; + +/** + * @author Lincoln Baxter, II= I + * = + */ +(a)RunWith(Arquillian.class) +public class ConversationBoundaryInterceptorTest +{ + @Deployment + public static JavaArchive createTestArchive() + { + return Archives.create("test.jar", JavaArchive.class).addClasses(Con= versationBoundaryInterceptor.class, ConversationalBean.class, MockLogger.cl= ass, MockConversation.class).addManifestResource(ConversationBoundaryInterc= eptorTest.class.getPackage().getName().replaceAll("\\.", "/") + "/Conversat= ionBoundaryInterceptorTest-beans.xml", ArchivePaths.create("beans.xml")); + } + + @Inject + Conversation conversation; + + @Inject + private ConversationalBean interceptedBean; + + @Test + public void testConversationStarted() + { + assertTrue(conversation.isTransient()); + assertFalse(interceptedBean.isConversationLongRunningInsideMethodCal= l()); + + interceptedBean.beginConversation(); + + assertFalse(conversation.isTransient()); + assertTrue(interceptedBean.isConversationLongRunningInsideMethodCall= ()); + } + + @Test + public void testConversationBeginsAndEnds() + { + assertTrue(conversation.isTransient()); + assertFalse(interceptedBean.isConversationLongRunningDuringInvocatio= n2()); + + interceptedBean.beginAndEndConversation(); + + assertTrue(conversation.isTransient()); + assertTrue(interceptedBean.isConversationLongRunningDuringInvocation= 2()); + } +} Copied: modules/faces/trunk/src/test/java/org/jboss/seam/faces/context/conv= ersation/ConversationalBean.java (from rev 12311, modules/faces/trunk/src/t= est/java/org/jboss/seam/faces/context/conversation/BeginConversationBean.ja= va) =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- modules/faces/trunk/src/test/java/org/jboss/seam/faces/context/conversa= tion/ConversationalBean.java (rev 0) +++ modules/faces/trunk/src/test/java/org/jboss/seam/faces/context/conversa= tion/ConversationalBean.java 2010-03-29 20:36:45 UTC (rev 12312) @@ -0,0 +1,55 @@ +/** + * = + */ +package org.jboss.seam.faces.context.conversation; + +import javax.enterprise.context.Conversation; +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; + +/** + * @author Lincoln Baxter, II= I + * = + */ +(a)RequestScoped +public class ConversationalBean +{ + @Inject + Conversation conversation; + + private boolean conversationLongRunningDuringInvocation =3D false; + + private boolean conversationLongRunningDuringInvocation2; + + @Begin + public void beginConversation() + { + if (!conversation.isTransient()) + { + conversationLongRunningDuringInvocation =3D true; + } + } + + @Begin + @End + public void beginAndEndConversation() + { + conversationLongRunningDuringInvocation2 =3D true; + } + + public boolean isConversationLongRunningDuringInvocation2() + { + return conversationLongRunningDuringInvocation2; + } + + public void setConversationLongRunningDuringInvocation2(final boolean c= onversationLongRunningDuringInvocation2) + { + this.conversationLongRunningDuringInvocation2 =3D conversationLongRu= nningDuringInvocation2; + } + + public boolean isConversationLongRunningInsideMethodCall() + { + return conversationLongRunningDuringInvocation; + } + +} Added: modules/faces/trunk/src/test/java/org/jboss/seam/faces/util/Annotati= onTestObject.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- modules/faces/trunk/src/test/java/org/jboss/seam/faces/util/AnnotationT= estObject.java (rev 0) +++ modules/faces/trunk/src/test/java/org/jboss/seam/faces/util/AnnotationT= estObject.java 2010-03-29 20:36:45 UTC (rev 12312) @@ -0,0 +1,19 @@ +package org.jboss.seam.faces.util; + +import org.jboss.seam.faces.context.conversation.Begin; +import org.jboss.seam.faces.context.conversation.End; + +(a)Begin +public class AnnotationTestObject +{ + + public void begin() + { + } + + @End + public void end() + { + } + +} Added: modules/faces/trunk/src/test/java/org/jboss/seam/faces/util/Annotati= onsTest.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- modules/faces/trunk/src/test/java/org/jboss/seam/faces/util/Annotations= Test.java (rev 0) +++ modules/faces/trunk/src/test/java/org/jboss/seam/faces/util/Annotations= Test.java 2010-03-29 20:36:45 UTC (rev 12312) @@ -0,0 +1,46 @@ +package org.jboss.seam.faces.util; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.lang.reflect.Method; + +import org.jboss.seam.faces.context.conversation.Begin; +import org.jboss.seam.faces.context.conversation.End; +import org.junit.Test; + +/** + * = + * @author Lincoln Baxter, III= + * = + */ +public class AnnotationsTest +{ + @Test + public void testHasAnnotationOnClassDirectly() throws Exception + { + Method begin =3D AnnotationTestObject.class.getMethod("begin", new C= lass[] {}); + + assertTrue(Annotations.hasAnnotation(begin, Begin.class)); + assertFalse(Annotations.hasAnnotation(begin, End.class)); + } + + @Test + public void testHasAnnotationOnMethodDirectly() throws Exception + { + Method end =3D AnnotationTestObject.class.getMethod("end", new Class= [] {}); + + assertTrue(Annotations.hasAnnotation(end, End.class)); + } + + @Test + public void testHasAnnotationOnMethodIndirectlyFromClass() throws Excep= tion + { + Method begin =3D AnnotationTestObject.class.getMethod("begin", new C= lass[] {}); + Method end =3D AnnotationTestObject.class.getMethod("end", new Class= [] {}); + + assertTrue(Annotations.hasAnnotation(begin, Begin.class)); + assertTrue(Annotations.hasAnnotation(end, Begin.class)); + } + +} Deleted: modules/faces/trunk/src/test/resources/org/jboss/seam/faces/contex= t/conversation/BeginConversationInterceptorTest-beans.xml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- modules/faces/trunk/src/test/resources/org/jboss/seam/faces/context/con= versation/BeginConversationInterceptorTest-beans.xml 2010-03-29 16:26:07 UT= C (rev 12311) +++ modules/faces/trunk/src/test/resources/org/jboss/seam/faces/context/con= versation/BeginConversationInterceptorTest-beans.xml 2010-03-29 20:36:45 UT= C (rev 12312) @@ -1,12 +0,0 @@ - - - - - \ No newline at end of file Copied: modules/faces/trunk/src/test/resources/org/jboss/seam/faces/context= /conversation/ConversationBoundaryInterceptorTest-beans.xml (from rev 12311= , modules/faces/trunk/src/test/resources/org/jboss/seam/faces/context/conve= rsation/BeginConversationInterceptorTest-beans.xml) =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- modules/faces/trunk/src/test/resources/org/jboss/seam/faces/context/con= versation/ConversationBoundaryInterceptorTest-beans.xml = (rev 0) +++ modules/faces/trunk/src/test/resources/org/jboss/seam/faces/context/con= versation/ConversationBoundaryInterceptorTest-beans.xml 2010-03-29 20:36:45= UTC (rev 12312) @@ -0,0 +1,10 @@ + + + + org.jboss.seam.faces.context.conversation.ConversationBoundaryInt= erceptor + + + \ No newline at end of file --===============6792700179964988584==--