Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/rest/SDatenbasisService.java @ 366:567ce7697fc7 0.5
Code documentation.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Tue, 10 Sep 2013 15:55:54 +0200 |
parents | d8a3d188046f |
children | 183f8116d9a6 |
rev | line source |
---|---|
47
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.lada.rest; |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
2 |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
3 import java.util.ArrayList; |
47
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
4 import java.util.logging.Logger; |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
5 |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
6 import javax.faces.bean.RequestScoped; |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
7 import javax.inject.Inject; |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
8 import javax.inject.Named; |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
9 import javax.ws.rs.GET; |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
10 import javax.ws.rs.Path; |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
11 import javax.ws.rs.PathParam; |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
12 import javax.ws.rs.Produces; |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
13 import javax.ws.rs.core.Context; |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
14 import javax.ws.rs.core.HttpHeaders; |
47
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
15 |
232
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
16 import de.intevation.lada.auth.Authentication; |
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
17 import de.intevation.lada.auth.AuthenticationException; |
47
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
18 import de.intevation.lada.data.Repository; |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
19 import de.intevation.lada.model.SDatenbasis; |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
20 |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
21 /** |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
22 * This class produces a RESTful service to read SDatenbasis objects. |
47
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
23 * |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
24 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a> |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
25 */ |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
26 @Path("/datenbasis") |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
27 @RequestScoped |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
28 public class SDatenbasisService |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
29 { |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
30 /** |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
31 * The Repository for SDatenbasis. |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
32 */ |
133
750585244083
Use named injection points in stammdaten repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
107
diff
changeset
|
33 @Inject |
157
42e0085692df
Fixed typo in named injection point.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
34 @Named("readonlyrepository") |
47
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
35 private Repository repository; |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
36 |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
37 /** |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
38 * The authorization module. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
39 */ |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
40 @Inject |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
41 @Named("ldapauth") |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
42 private Authentication authentication; |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
43 |
47
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
44 /** |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
45 * The logger for this class |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
46 */ |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
47 @Inject |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
48 private Logger logger; |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
49 |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
50 /** |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
51 * Request all SDatenbasis objects. |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
52 * |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
53 * @param headers The HTTP header containing authorization information. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
54 * @return Response object. |
47
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
55 */ |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
56 @GET |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
57 @Produces("text/json") |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
58 public Response findAll(@Context HttpHeaders headers) { |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
59 try { |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
60 if (authentication.isAuthorizedUser(headers)) { |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
61 return repository.findAll(SDatenbasis.class); |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
62 } |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
63 return new Response(false, 699, new ArrayList<SDatenbasis>()); |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
64 } |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
65 catch(AuthenticationException ae) { |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
66 return new Response(false, 699, new ArrayList<SDatenbasis>()); |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
67 } |
47
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
68 } |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
69 |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
70 /** |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
71 * Request a single SDatenbasis via its id. |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
72 * |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
73 * @param id The object id. |
366
567ce7697fc7
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
232
diff
changeset
|
74 * @param headers The HTTP header containing authorization information. |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
75 * @return Response object. |
47
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
76 */ |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
77 @GET |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
78 @Path("/{id}") |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
79 @Produces("text/json") |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
80 public Response findById( |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
81 @PathParam("id") String id, |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
82 @Context HttpHeaders headers |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
83 ) { |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
84 try { |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
85 if (authentication.isAuthorizedUser(headers)) { |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
86 return repository.findById(SDatenbasis.class, id); |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
87 } |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
88 return new Response(false, 699, new ArrayList<SDatenbasis>()); |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
89 } |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
90 catch(AuthenticationException ae) { |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
91 return new Response(false, 699, new ArrayList<SDatenbasis>()); |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
92 } |
47
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
93 } |
c9cfb34983f0
New REST service for 'Datenbasis Stammdaten'.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
94 } |