package org.subethamail.core.util; import javax.annotation.PostConstruct; import javax.ejb.Startup; import javax.enterprise.inject.Produces; import javax.inject.Inject; import javax.inject.Named; import javax.inject.Singleton; import javax.mail.Session; import javax.sql.DataSource; import org.subethamail.core.post.OutboundMTA; /** * Producers used for creating things with context. Yeah! * * @author Scott Hernandez * @author Jeff Schnitzer */ @Singleton @Startup public class Producers { /** * We need this so that objects which are not CDI-friendly (ie MessageContentBridge) * can get access to injected things. */ public static Producers instance() { return instance; } private static Producers instance; /** Our application's data source */ @Inject @Named("jdbc/subetha") private DataSource ds; @Produces @SubEtha public DataSource getSubethaDS() { return this.ds; } /** The JavaMail session that connects to the outbound mta */ @Inject @Named("outbound") private Session mailSession; @Produces @OutboundMTA public Session getMailSession() { return this.mailSession; } /** Set up the static instance */ @PostConstruct public void setup() { instance = this; } }