/** * Copyright 2017 Red Hat, Inc, and individual contributors. * <p> * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * <p> * http://www.apache.org/licenses/LICENSE-2.0 * <p> * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.wildfly.swarm.servlet.jpa.jta.test; import java.io.IOException; import java.util.List; import javax.annotation.Resource; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.PersistenceUnit; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.transaction.UserTransaction; /** * It is a bad idea to mix persistence logic into a servlet, but it is a good test. */ @WebServlet("/") public class BooksServlet extends HttpServlet { @PersistenceUnit(unitName = "MyPU") private EntityManagerFactory emf; @Resource private UserTransaction tx; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { EntityManager em = emf.createEntityManager(); try { List<Book> books = em.createNamedQuery("Book.getAll", Book.class).getResultList(); for (Book book : books) { resp.getWriter().println(book.getId() + " " + book.getAuthor() + ": " + book.getTitle()); } } finally { em.close(); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String title = req.getParameter("title"); String author = req.getParameter("author"); EntityManager em = emf.createEntityManager(); try { tx.begin(); Book book = new Book(); book.setTitle(title); book.setAuthor(author); em.persist(book); tx.commit(); resp.getWriter().println(book.getId()); } catch (Exception e) { throw new ServletException(e); } finally { em.close(); } } @Override protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { int id = Integer.parseInt(req.getParameter("id")); EntityManager em = emf.createEntityManager(); try { tx.begin(); Book book = em.find(Book.class, id); em.remove(book); tx.commit(); resp.getWriter().println(id + " deleted"); } catch (Exception e) { throw new ServletException(e); } finally { em.close(); } } }