Samples JDK
TicketsResource.java
1 package com.freemindcafe.apache.cxf.jaxrs.sample8;
2 
3 import java.io.IOException;
4 import java.util.ArrayList;
5 import java.util.HashMap;
6 import java.util.List;
7 import java.util.Map;
8 import java.util.concurrent.ConcurrentHashMap;
9 import java.util.stream.Collectors;
10 
11 import javax.ws.rs.Consumes;
12 import javax.ws.rs.DELETE;
13 import javax.ws.rs.GET;
14 import javax.ws.rs.POST;
15 import javax.ws.rs.PUT;
16 import javax.ws.rs.Path;
17 import javax.ws.rs.PathParam;
18 import javax.ws.rs.Produces;
19 import javax.ws.rs.core.MediaType;
20 import javax.ws.rs.core.Response;
21 import javax.ws.rs.core.Response.ResponseBuilder;
22 
23 import org.apache.commons.io.IOUtils;
24 
25 
26 public class TicketsResource {
27 
28  private Map<Long, Ticket> tickets = new ConcurrentHashMap<Long, Ticket>();
29 
30  public TicketsResource() throws Exception{
31  Ticket ticket1 = new Ticket();
32  Ticket ticket2 = new Ticket();
33 
34  ticket1.setId(1L);
35  ticket1.setAssignee("nikhil");
36  ticket1.setDescription("desc");
37  ticket1.setFileName("ticket1.xml");
38 
39  ticket2.setId(2L);
40  ticket2.setAssignee("subhash");
41  ticket2.setDescription("desc");
42  ticket2.setFileName("ticket2.xml");
43 
44  tickets.put(1L, ticket1);
45  tickets.put(2L, ticket2);
46 
47  }
48 
49 
50 
51  @GET
52  @Path("/")
53  @Produces(MediaType.APPLICATION_JSON)
54  public List<Ticket> getTickets(){
55  System.out.println(tickets);
56  return tickets.values().stream().collect(Collectors.toList());
57  }
58 
59  @GET
60  @Path("/assignees")
61  @Produces(MediaType.APPLICATION_JSON)
62  public List<String> getAssignees(){
63  return tickets.values().stream().map(t->t.getAssignee()).collect(Collectors.toList());
64  }
65 
66  @GET
67  @Path("/{ticketId}")
68  public Ticket getTicket(@PathParam("ticketId") Long ticketId){
69  return tickets.get(ticketId);
70  }
71 
72  @PUT
73  @Path("/{ticketId}")
74  @Consumes(MediaType.APPLICATION_JSON)
75  @Produces(MediaType.APPLICATION_JSON)
76  public Ticket putTicket(@PathParam("ticketId") Long ticketId, Ticket ticket){
77  tickets.get(ticketId).setAssignee(ticket.getAssignee());
78  tickets.get(ticketId).setDescription(ticket.getDescription());
79  return tickets.get(ticketId);
80  }
81 
82  @POST
83  @Path("/")
84  @Consumes(MediaType.APPLICATION_JSON)
85  @Produces(MediaType.APPLICATION_JSON)
86  public Ticket postTicket(Ticket ticket){
87  ticket.setId(tickets.size()+1L);
88  tickets.put(ticket.getId(), ticket);
89  return ticket;
90  }
91 
92  @DELETE
93  @Path("/{ticketId}")
94  public Ticket deleteTicket(@PathParam("ticketId") Long ticketId){
95  Ticket ticket = tickets.get(ticketId);
96  tickets.remove(ticketId);
97  return ticket;
98  }
99 
100  @GET
101  @Path("/{ticketId}/download")
102  public Response downloadContent(@PathParam("ticketId")final Long ticketId) throws IOException{
103  Ticket ticket = tickets.get(ticketId);
104  ResponseBuilder responseBuilder = Response.ok(this.getClass().getResourceAsStream(ticket.getFileName()));
105  responseBuilder.type(MediaType.APPLICATION_XML);
106  responseBuilder.header("Content-Disposition", "attachment; filename=\""+ticket.getFileName()+"\"");
107  return responseBuilder.build();
108  }
109 
110 // @PUT
111 // @Path("/{ticketId}/abc")
112 // @Consumes(MediaType.APPLICATION_JSON)
113 // @Produces(MediaType.APPLICATION_JSON)
114 // public Ticket oneMorePutTicket(@PathParam("ticketId") Long ticketId, String assignee){
115 // tickets.get(ticketId).setAssignee(assignee);
116 // return tickets.get(ticketId);
117 // }
118 //
119 // @POST
120 // @Path("/xyz")
121 // @Consumes(MediaType.APPLICATION_JSON)
122 // @Produces(MediaType.APPLICATION_JSON)
123 // public Ticket oneMorePostTicket(Ticket ticket){
124 // ticket.setId(tickets.size()+1L);
125 // tickets.put(ticket.getId(), ticket);
126 // return ticket;
127 // }
128 
129 
130 
131 }