package org.jboss.weld.examples.login; import javax.enterprise.context.RequestScoped; import javax.enterprise.inject.Produces; import javax.inject.Inject; import javax.inject.Named; import javax.persistence.EntityManager; import javax.transaction.UserTransaction; import java.util.List; import java.util.logging.Logger; @Named("userManager") @RequestScoped public class ManagedBeanUserManager implements UserManager { @Inject private transient Logger logger; @Inject private EntityManager userDatabase; @Inject private UserTransaction utx; private User newUser = new User(); @Override @SuppressWarnings("unchecked") @Produces @Named @RequestScoped public List<User> getUsers() throws Exception { try { try { utx.begin(); return userDatabase.createQuery("select u from User u").getResultList(); } finally { utx.commit(); } } catch (Exception e) { utx.rollback(); throw e; } } @Override public String addUser() throws Exception { try { try { utx.begin(); userDatabase.persist(newUser); logger.info("Added " + newUser); return "/users.xhtml?faces-redirect=true"; } finally { utx.commit(); } } catch (Exception e) { utx.rollback(); throw e; } } @Override public User getNewUser() { return newUser; } @Override public void setNewUser(User newUser) { this.newUser = newUser; } }