UnsatisfiedResolutionException on create instance of CDIVelocityContext
pepelara Feb 7, 2012 9:04 AMHi,
Here is my code,
@Stateful
@ConversationScoped
@Named
public class SendMail {
    @Inject
    private Instance<MailMessage> mailMessage;
    @Inject
    private Instance<Session> session;
    
    @Inject
    private Instance<CDIVelocityContext> cDIVelocityContext;
    
    @Inject
    private ResourceProvider resourceProvider;
    
    @Inject
    private Messages messages;
    
    @Inject
    @Confirmed
    private Event<Person> sendMailConfirmedEventSrc;
    
    @Inject
    @Confirmed
    private Event<Exception> sendFailedExceptionEventSrc;
    
    private Person person;
    
    private String name;
    private String email;
    private boolean personValid;
    
    @Begin
    public void setPerson() {
        person = new Person(name, email);
        personValid = true;
    }
    
    @End
    public void cancel() {
        person = null;
    }
     
    @End
    public void sendHTMLVelocity() {
        try {
            mailMessage.get()
                    .from("seam@test.test", "Seam Framework")
                    .to(person)
                    .subject("HTML Message from Seam Mail - " + java.util.UUID.randomUUID().toString())
                    .bodyHtml(new VelocityTemplate(resourceProvider.loadResourceStream("/META-INF/template.html.velocity"), cDIVelocityContext.get()))
                    .put("version", "Seam 3")
                    .importance(MessagePriority.HIGH)
                    .addAttachment(new URLAttachment("http://www.seamframework.org/themes/sfwkorg/img/seam_icon_large.png", "seamLogo.png", ContentDisposition.INLINE))
                    .send(session.get());
            
            sendMailConfirmedEventSrc.fire(person);
            
        } catch(SendFailedException e){
            //sendFailedExceptionEventSrc.fire(e);
            e.printStackTrace();
        } catch(WeldException e){
            //sendFailedExceptionEventSrc.fire(e);
            e.printStackTrace();
        } catch(UnsatisfiedResolutionException e){
            //sendFailedExceptionEventSrc.fire(e);
            e.printStackTrace();
        } catch(RuntimeException e){
            //sendFailedExceptionEventSrc.fire(e);
            e.printStackTrace();
        }
    }
    @End
    public void sendHTMLwithAlternativeVelocity() {
        try {
            mailMessage.get()
                    .from("seam@test.test", "Seam Framework")
                    .to(person.getEmail(), person.getName())
                    .subject("HTML+Text Message from Seam Mail - " + java.util.UUID.randomUUID().toString())
                    .put("version", "Seam 3")
                    .bodyHtmlTextAlt(
                            new VelocityTemplate(resourceProvider.loadResourceStream("/META-INF/template.html.velocity"), cDIVelocityContext.get()),
                            new VelocityTemplate(resourceProvider.loadResourceStream("/META-INF/template.text.velocity"), cDIVelocityContext.get()))
                    .importance(MessagePriority.LOW)
                    .deliveryReceipt("seam@jboss.org")
                    .readReceipt("seam@jboss.org")
                    .addAttachment("template.html.velocity", "text/html", ContentDisposition.ATTACHMENT, resourceProvider.loadResourceStream("/META-INF/template.html.velocity"))
                    .addAttachment(new URLAttachment("http://www.seamframework.org/themes/sfwkorg/img/seam_icon_large.png", "seamLogo.png", ContentDisposition.INLINE))
                    .send(session.get());
            
            sendMailConfirmedEventSrc.fire(person);
            
        } catch(SendFailedException e){
            //sendFailedExceptionEventSrc.fire(e);
            e.printStackTrace();
        } catch(WeldException e){
            //sendFailedExceptionEventSrc.fire(e);
            e.printStackTrace();
        } catch(UnsatisfiedResolutionException e){
            //sendFailedExceptionEventSrc.fire(e);
            e.printStackTrace();
        } catch(RuntimeException e){
            //sendFailedExceptionEventSrc.fire(e);
            e.printStackTrace();
        }
    }
    
    public void onMailMessageComplete(@Observes(during = TransactionPhase.AFTER_SUCCESS) @Confirmed final Person person) {
        messages.info(new DefaultBundleKey("send_email_confirmed")).defaults("You have sent an email to {0}")
                .params(person.getName());
    }
    
    public void onSendFailedException(@Observes(during = TransactionPhase.AFTER_SUCCESS) @Confirmed final Exception e) {
        messages.info(new DefaultBundleKey("send_email_exception")).defaults("Thrown exception {0}")
                .params(e);
    }
    
    @Produces
    @Dependent
    public Person getPerson() {
        return person;
    }
    public boolean isPersonValid() {
        return personValid;
    }
    public void setPersonValid(boolean personValid) {
        this.personValid = personValid;
    }
    public String getName() {
        return name;
    }
    public void setName(final String name) {
        this.name = name;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(final String email) {
        this.email = email;
    }
}
When I run the webapp on JBoss AS 7.0.2.Final I get the following exception,
ERROR [stderr] (http--127.0.0.1-8180-2) org.jboss.weld.exceptions.UnsatisfiedResolutionException: WELD-001308 Unable to resolve any beans for Types: [class org.jboss.seam.mail.templating.velocity.CDIVelocityContext]; Bindings: [@javax.enterprise.inject.Default()]
I am not sure if it is a bug, but I have been googling and tried many things and I can't get it work.
Regards,
Jose
 
     
    