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 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)