help with email & EL in @Asynchronous method
dpruitt.dpruitt.bitwiseengineering.com Aug 10, 2010 10:54 PMHi,
I have an asynchronous handler that searches a db table and sends email. That part is working great, however I want to pass some of that info into the rendered email via seam EL. The db query works, the player.firstName info is correct I just can't get it transferred into the rendered text of the email. I know that the info has to be in the seam context so I tried to outject it without any joy. I would greatly appreciate any suggestions.
thanks
dp
timer handler (NewHandHandler.java)
package org.bitwise.blackbox.session.admin;
import java.util.*;
import javax.ejb.Stateless;
import javax.persistence.*;
import org.jboss.seam.annotations.async.*;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Out;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.log.Log;
//import javax.ejb.Timer;
import org.jboss.seam.faces.Renderer;
import org.bitwise.blackbox.entity.Hand;
import org.bitwise.blackbox.entity.Player;
@Stateless
@Name("newHandHandler")
@AutoCreate
public class NewHandHandler implements TimerHandLocal {
//@In(create = true) Timer timer;
@Logger private Log log;
@In(create = true)
private Renderer renderer;
@In(value="#{entityManager}")
EntityManager em;
@Out
private Player player;
private List<Hand> hands;
@Asynchronous
public void processNewHands(@IntervalDuration Long interval)
{
// implement your business logic here
log.info("processNewHand()");
List<Hand> results = em.createQuery("select h from Hand as h where h.status = 'new'")
.setMaxResults(25)
.getResultList();
hands = results;
Iterator it = hands.iterator();
while (it.hasNext() )
{
Hand hand = (Hand)it.next();
//check for player #1
player = hand.getPlyr0Id();
if (player != null)
{
renderer.render("/NewVideoMail.xhtml");
log.info("player1:" + player.getEmail());
}
}
//return timer; //note that return value is completely ignored
}
}email template (NewVideoMail.xhtml)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<m:message xmlns="http://www.w3.org/1999/xhtml"
xmlns:m="http://jboss.com/products/seam/mail"
xmlns:h="http://java.sun.com/jsf/html"
importance="normal">
<m:header name="X-Component-By" value="blackbox"/>
<m:from name="Don Pruitt" address="dpruitt@bitwiseengineering.com"/>
<m:to name="Don Pruitt">
dpruitt@windstream.net
</m:to>
<m:subject>new blackbox video</m:subject>
<m:body>
<p>Dear #{player.firstName},</p>
<p>Please note that you have new game play video at
<a href="http://www.blackbox.com/">
http://www.blackbox.com/
</a>.</p>
<p>Regards,</p>
<p>Fred</p>
</m:body>
</m:message>