[seam-commits] Seam SVN: r12692 - in modules/jms/branches/simple-forwarding/impl/src: test/java/org/jboss/seam/jms/test/bridge/simple and 1 other directory.

seam-commits at lists.jboss.org seam-commits at lists.jboss.org
Thu May 6 22:25:15 EDT 2010


Author: jganoff
Date: 2010-05-06 22:25:15 -0400 (Thu, 06 May 2010)
New Revision: 12692

Modified:
   modules/jms/branches/simple-forwarding/impl/src/main/java/org/jboss/seam/jms/BridgedObserver.java
   modules/jms/branches/simple-forwarding/impl/src/test/java/org/jboss/seam/jms/test/bridge/simple/MyForwarding.java
Log:
Minor clean up of BridgedObserver.  Fixed MyForwarding test to not try to inject topic immediately (before the topic has been deployed via Arquillian).

Modified: modules/jms/branches/simple-forwarding/impl/src/main/java/org/jboss/seam/jms/BridgedObserver.java
===================================================================
--- modules/jms/branches/simple-forwarding/impl/src/main/java/org/jboss/seam/jms/BridgedObserver.java	2010-05-07 02:11:48 UTC (rev 12691)
+++ modules/jms/branches/simple-forwarding/impl/src/main/java/org/jboss/seam/jms/BridgedObserver.java	2010-05-07 02:25:15 UTC (rev 12692)
@@ -74,37 +74,37 @@
 
    private void forwardEvent(Object event, Set<Annotation> qualifiers)
    {
-      log.info("Forwarding event: {}", event);
-      // p.forwardEvent(event, qualifiers);
-
-      // for (EventPropagator p : ServiceLoader.load(EventPropagator.class))
-      // {
-      // p.forwardEvent(event, null);
-      // }
-
+      Set<Bean<?>> beans = bm.getBeans(Session.class);
+      Bean<?> bean = bm.resolve(beans);
+      Session s = (Session) bm.getReference(bean, Session.class, bm.createCreationalContext(bean));
       try
       {
-         Set<Bean<?>> beans = bm.getBeans(Session.class);// , new
-         // AnnotationLiteral<org.jboss.seam.jms.annotations.Session>()
-         // {});
-         Bean<?> bean = bm.resolve(beans);
-         Session s = (Session) bm.getReference(bean, Session.class, bm.createCreationalContext(bean));
-         log.info("Forwarding with session {}", s);
-         log.info("To destinations {}", config.getDestinations());
-         // FIXME Cache producers
-         for(Destination d : config.getDestinations())
+         for (Destination d : config.getDestinations())
          {
-            log.info("Forwarding to destination {}", d);
-            Message m = s.createObjectMessage((Serializable) event);
-            s.createProducer(d).send(m);
+            try
+            {
+               Message m = s.createObjectMessage((Serializable) event);
+               // Safe to create producers here always? In an app server these
+               // should be cached via JCA managed connection factory but what
+               // about other environments?
+               s.createProducer(d).send(m);
+            }
+            catch (JMSException ex)
+            {
+               log.error("Unable to forward event", ex);
+            }
          }
-//         s.close();
-         
-         
       }
-      catch (JMSException ex)
+      finally
       {
-         log.error("Unable to forward event", ex);
+         try
+         {
+            s.close();
+         }
+         catch (JMSException ex)
+         {
+            log.error("Unable to close session", ex);
+         }
       }
    }
 }

Modified: modules/jms/branches/simple-forwarding/impl/src/test/java/org/jboss/seam/jms/test/bridge/simple/MyForwarding.java
===================================================================
--- modules/jms/branches/simple-forwarding/impl/src/test/java/org/jboss/seam/jms/test/bridge/simple/MyForwarding.java	2010-05-07 02:11:48 UTC (rev 12691)
+++ modules/jms/branches/simple-forwarding/impl/src/test/java/org/jboss/seam/jms/test/bridge/simple/MyForwarding.java	2010-05-07 02:25:15 UTC (rev 12692)
@@ -6,6 +6,7 @@
 import java.util.Set;
 
 import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.inject.Instance;
 import javax.enterprise.util.AnnotationLiteral;
 import javax.inject.Inject;
 import javax.inject.Named;
@@ -24,13 +25,15 @@
       private static final long serialVersionUID = 1L;
    });
 
+   // Use Instance<?> here to get around problem of topic not being deployed before Weld processes 
+   // deployment and tries to inject topics
    @Inject
    @JmsDestination(jndiName="jms/T")
-   private Topic t;
+   private Instance<Topic> t;
    
    public Set<? extends Destination> getDestinations()
    {
-      return Collections.singleton(t);
+      return Collections.singleton(t.get());
    }
 
    public Type getEventType()



More information about the seam-commits mailing list