View Javadoc
1   /*
2    * JBoss, Home of Professional Open Source
3    * Copyright 2014, Red Hat, Inc. and/or its affiliates, and individual
4    * contributors by the @authors tag. See the copyright.txt in the
5    * distribution for a full listing of individual contributors.
6    *
7    * Licensed under the Apache License, Version 2.0 (the "License");
8    * you may not use this file except in compliance with the License.
9    * You may obtain a copy of the License at
10   * http://www.apache.org/licenses/LICENSE-2.0
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.jboss.as.quickstarts.greeter.domain;
18  
19  import javax.inject.Inject;
20  import javax.persistence.EntityManager;
21  import javax.persistence.NoResultException;
22  import javax.persistence.Query;
23  import javax.transaction.SystemException;
24  import javax.transaction.UserTransaction;
25  
26  public class ManagedBeanUserDao implements UserDao {
27  
28      @Inject
29      private EntityManager entityManager;
30  
31      @Inject
32      private UserTransaction utx;
33  
34      public User getForUsername(String username) {
35          try {
36              User user;
37              try {
38                  utx.begin();
39                  Query query = entityManager.createQuery("select u from User u where u.username = :username");
40                  query.setParameter("username", username);
41                  user = (User) query.getSingleResult();
42              } catch (NoResultException e) {
43                  user = null;
44              }
45              utx.commit();
46              return user;
47          } catch (Exception e) {
48              try {
49                  utx.rollback();
50              } catch (SystemException se) {
51                  throw new RuntimeException(se);
52              }
53              throw new RuntimeException(e);
54          }
55      }
56  
57      public void createUser(User user) {
58          try {
59              try {
60                  utx.begin();
61                  entityManager.persist(user);
62              } finally {
63                  utx.commit();
64              }
65          } catch (Exception e) {
66              try {
67                  utx.rollback();
68              } catch (SystemException se) {
69                  throw new RuntimeException(se);
70              }
71              throw new RuntimeException(e);
72          }
73      }
74  }