1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.jboss.as.quickstart.hibernate3.controller;
18
19 import java.util.logging.Logger;
20
21 import javax.annotation.PostConstruct;
22 import javax.ejb.Stateful;
23 import javax.enterprise.event.Event;
24 import javax.enterprise.inject.Model;
25 import javax.enterprise.inject.Produces;
26 import javax.faces.application.FacesMessage;
27 import javax.faces.context.FacesContext;
28 import javax.inject.Inject;
29 import javax.inject.Named;
30 import javax.persistence.EntityManager;
31 import org.hibernate.Session;
32
33 import org.jboss.as.quickstart.hibernate3.model.Member;
34
35
36
37
38
39 @Stateful
40
41
42
43
44 @Model
45 public class MemberRegistration {
46
47 @Inject
48 private Logger log;
49
50 @Inject
51 private FacesContext facesContext;
52
53 @Inject
54 private EntityManager em;
55
56 @Inject
57 private Event<Member> memberEventSrc;
58
59 private Member newMember;
60
61 @Produces
62 @Named
63 public Member getNewMember() {
64 return newMember;
65 }
66
67 @Produces
68 public void register() throws Exception {
69 log.info("Registering " + newMember.getName());
70
71
72 Session session = (Session) em.getDelegate();
73 session.persist(newMember);
74
75 try {
76 memberEventSrc.fire(newMember);
77 initNewMember();
78 } catch (Exception e) {
79
80 String errorMessage = getRootErrorMessage(e);
81 FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_ERROR, errorMessage, "Registration unsuccessful");
82 facesContext.addMessage(null, facesMessage);
83 }
84 }
85
86 @PostConstruct
87 public void initNewMember() {
88 newMember = new Member();
89 }
90
91 private String getRootErrorMessage(Exception e) {
92
93 String errorMessage = "Registration failed. See server log for more information";
94 if (e == null) {
95
96 return errorMessage;
97 }
98
99
100 Throwable t = e;
101 while (t != null) {
102
103 errorMessage = t.getLocalizedMessage();
104 t = t.getCause();
105 }
106
107 return errorMessage;
108 }
109
110 }