[seam-commits] Seam SVN: r13551 - in modules/jms/trunk: impl/src/main/java/org/jboss/seam/jms/impl/inject and 1 other directories.

seam-commits at lists.jboss.org seam-commits at lists.jboss.org
Tue Aug 3 22:36:58 EDT 2010


Author: jganoff
Date: 2010-08-03 22:36:57 -0400 (Tue, 03 Aug 2010)
New Revision: 13551

Modified:
   modules/jms/trunk/api/src/main/java/org/jboss/seam/jms/annotations/JmsSessionSelector.java
   modules/jms/trunk/impl/src/main/java/org/jboss/seam/jms/impl/inject/SessionProducer.java
   modules/jms/trunk/impl/src/test/java/org/jboss/seam/jms/test/inject/session/InjectSessionTest.java
   modules/jms/trunk/impl/src/test/java/org/jboss/seam/jms/test/inject/session/SessionSelectorBean.java
Log:
SEAMJMS-1: Fixed implementation for JmsSessionSelector.

Modified: modules/jms/trunk/api/src/main/java/org/jboss/seam/jms/annotations/JmsSessionSelector.java
===================================================================
--- modules/jms/trunk/api/src/main/java/org/jboss/seam/jms/annotations/JmsSessionSelector.java	2010-08-03 11:21:26 UTC (rev 13550)
+++ modules/jms/trunk/api/src/main/java/org/jboss/seam/jms/annotations/JmsSessionSelector.java	2010-08-04 02:36:57 UTC (rev 13551)
@@ -8,6 +8,8 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
+import javax.enterprise.util.AnnotationLiteral;
+import javax.enterprise.util.Nonbinding;
 import javax.inject.Qualifier;
 
 @Qualifier
@@ -18,10 +20,36 @@
    /**
     * @see javax.jms.Session#getTransacted()
     */
+   @Nonbinding
    boolean transacted() default false;
 
    /**
     * @see javax.jms.Session#getAcknowledgeMode()
     */
+   @Nonbinding
    int acknowledgementMode() default javax.jms.Session.AUTO_ACKNOWLEDGE;
+   
+   
+   public class JmsSessionSelectorLiteral extends AnnotationLiteral<JmsSessionSelector> implements JmsSessionSelector
+   {
+      private static final long serialVersionUID = 7495801629674469699L;
+      private int acknowledgementMode;
+      private boolean transacted;
+      
+      public JmsSessionSelectorLiteral(boolean transacted, int acknowledgementMode)
+      {
+         this.transacted = transacted;
+         this.acknowledgementMode = acknowledgementMode;
+      }
+      
+      public boolean transacted()
+      {
+         return transacted;
+      }
+      
+      public int acknowledgementMode()
+      {
+         return acknowledgementMode;
+      }
+   }
 }

Modified: modules/jms/trunk/impl/src/main/java/org/jboss/seam/jms/impl/inject/SessionProducer.java
===================================================================
--- modules/jms/trunk/impl/src/main/java/org/jboss/seam/jms/impl/inject/SessionProducer.java	2010-08-03 11:21:26 UTC (rev 13550)
+++ modules/jms/trunk/impl/src/main/java/org/jboss/seam/jms/impl/inject/SessionProducer.java	2010-08-04 02:36:57 UTC (rev 13551)
@@ -22,6 +22,7 @@
 package org.jboss.seam.jms.impl.inject;
 
 import java.lang.annotation.Annotation;
+import java.util.Iterator;
 
 import javax.enterprise.context.RequestScoped;
 import javax.enterprise.inject.Disposes;
@@ -78,7 +79,21 @@
    @JmsSessionSelector
    public Session getSelectedSession(InjectionPoint ip, Connection c) throws JMSException
    {
-      JmsSessionSelector s = ip.getAnnotated().getAnnotation(JmsSessionSelector.class);
+      JmsSessionSelector s = null;
+      Iterator<Annotation> qualifiers = ip.getQualifiers().iterator();
+      while(qualifiers.hasNext())
+      {
+         Annotation qualifier = qualifiers.next();
+         if(JmsSessionSelector.class.isAssignableFrom(qualifier.getClass()))
+         {
+            s = (JmsSessionSelector) qualifier;
+            break;
+         }
+      }
+      if(s == null)
+      {
+         throw new IllegalArgumentException("Injection point " + ip + " does not have @" + JmsSessionSelector.class.getSimpleName() + " qualifier");
+      }
       return c.createSession(s.transacted(), s.acknowledgementMode());
    }
    

Modified: modules/jms/trunk/impl/src/test/java/org/jboss/seam/jms/test/inject/session/InjectSessionTest.java
===================================================================
--- modules/jms/trunk/impl/src/test/java/org/jboss/seam/jms/test/inject/session/InjectSessionTest.java	2010-08-03 11:21:26 UTC (rev 13550)
+++ modules/jms/trunk/impl/src/test/java/org/jboss/seam/jms/test/inject/session/InjectSessionTest.java	2010-08-04 02:36:57 UTC (rev 13551)
@@ -98,8 +98,6 @@
       Assert.assertEquals(Session.AUTO_ACKNOWLEDGE, s.getAcknowledgeMode());
    }
 
-   // TODO Fix this so session selectors work
-   @Ignore
    @Test
    public void injectSessionWithLiteral() throws JMSException
    {

Modified: modules/jms/trunk/impl/src/test/java/org/jboss/seam/jms/test/inject/session/SessionSelectorBean.java
===================================================================
--- modules/jms/trunk/impl/src/test/java/org/jboss/seam/jms/test/inject/session/SessionSelectorBean.java	2010-08-03 11:21:26 UTC (rev 13550)
+++ modules/jms/trunk/impl/src/test/java/org/jboss/seam/jms/test/inject/session/SessionSelectorBean.java	2010-08-04 02:36:57 UTC (rev 13551)
@@ -1,33 +1,20 @@
 package org.jboss.seam.jms.test.inject.session;
 
+import javax.enterprise.inject.Any;
 import javax.enterprise.inject.Instance;
-import javax.enterprise.util.AnnotationLiteral;
 import javax.inject.Inject;
 import javax.jms.Session;
 
-import org.jboss.seam.jms.annotations.JmsSessionSelector;
+import org.jboss.seam.jms.annotations.JmsSessionSelector.JmsSessionSelectorLiteral;
 
 public class SessionSelectorBean
 {
-
-   class SessionQualifier extends AnnotationLiteral<JmsSessionSelector> implements JmsSessionSelector
-   {
-      public int acknowledgementMode()
-      {
-         return Session.DUPS_OK_ACKNOWLEDGE;
-      }
-      
-      public boolean transacted()
-      {
-         return false;
-      }
-   }
-   
    @Inject
+   @Any
    Instance<Session> s;
-   
+
    public Session get()
    {
-      return s.select(new SessionQualifier()).get();
+       return s.select(new JmsSessionSelectorLiteral(false, Session.DUPS_OK_ACKNOWLEDGE)).get();
    }
 }



More information about the seam-commits mailing list