[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