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.kitchensinkjsp.rest;
18  
19  import java.util.List;
20  
21  import javax.enterprise.context.RequestScoped;
22  import javax.inject.Inject;
23  import javax.persistence.EntityManager;
24  import javax.ws.rs.GET;
25  import javax.ws.rs.Path;
26  import javax.ws.rs.PathParam;
27  import javax.ws.rs.Produces;
28  
29  import org.jboss.as.quickstarts.kitchensinkjsp.model.Member;
30  
31  /**
32   * JAX-RS Example
33   * 
34   * This class produces a RESTful service to read the contents of the members table.
35   */
36  @Path("/members")
37  @RequestScoped
38  public class MemberResourceRESTService {
39      @Inject
40      private EntityManager em;
41  
42      @GET
43      @Produces("text/xml")
44      public List<Member> listAllMembers() {
45          // Use @SupressWarnings to force IDE to ignore warnings about "genericizing" the results of
46          // this query
47          @SuppressWarnings("unchecked")
48          // We recommend centralizing inline queries such as this one into @NamedQuery annotations on
49          // the @Entity class
50          // as described in the named query blueprint:
51          // https://blueprints.dev.java.net/bpcatalog/ee5/persistence/namedquery.html
52          final List<Member> results = em.createQuery("select m from Member m order by m.name").getResultList();
53          return results;
54      }
55  
56      @GET
57      @Path("/{id:[0-9][0-9]*}")
58      @Produces("text/xml")
59      public Member lookupMemberById(@PathParam("id") long id) {
60          return em.find(Member.class, id);
61      }
62  }