1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.jboss.as.quickstarts.cmt.ejb;
18
19 import java.rmi.RemoteException;
20 import java.util.List;
21
22 import javax.ejb.EJBException;
23 import javax.ejb.Stateless;
24 import javax.ejb.TransactionAttribute;
25 import javax.ejb.TransactionAttributeType;
26 import javax.inject.Inject;
27 import javax.jms.JMSException;
28 import javax.naming.NamingException;
29 import javax.persistence.EntityManager;
30 import javax.persistence.PersistenceContext;
31 import javax.transaction.HeuristicMixedException;
32 import javax.transaction.HeuristicRollbackException;
33 import javax.transaction.NotSupportedException;
34 import javax.transaction.RollbackException;
35 import javax.transaction.SystemException;
36
37 import org.jboss.as.quickstarts.cmt.model.Customer;
38
39 @Stateless
40 public class CustomerManagerEJB {
41
42 @PersistenceContext
43 private EntityManager entityManager;
44
45 @Inject
46 private LogMessageManagerEJB logMessageManager;
47
48 @Inject
49 private InvoiceManagerEJB invoiceManager;
50
51 @TransactionAttribute(TransactionAttributeType.REQUIRED)
52 public void createCustomer(String name) throws RemoteException, JMSException {
53 logMessageManager.logCreateCustomer(name);
54
55 Customer c1 = new Customer();
56 c1.setName(name);
57 entityManager.persist(c1);
58
59 invoiceManager.createInvoice(name);
60
61
62
63
64 if (!nameIsValid(name)) {
65 throw new EJBException("Invalid name: customer names should only contain letters & '-'");
66 }
67 }
68
69 static boolean nameIsValid(String name) {
70 return name.matches("[\\p{L}-]+");
71 }
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86 @TransactionAttribute(TransactionAttributeType.NEVER)
87 @SuppressWarnings("unchecked")
88 public List<Customer> listCustomers() {
89 return entityManager.createQuery("select c from Customer c").getResultList();
90 }
91 }