annotate src/main/java/de/intevation/lada/rest/InfoService.java @ 293:7c268f742553

Added config to pom to write metadata in the manifest file and send metadata via info service.
author Raimund Renkert <rrenkert@intevation.de>
date Wed, 14 Aug 2013 16:12:09 +0200
parents 0ddcc6240d47
children aee36709a8e8
rev   line source
271
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
1 package de.intevation.lada.rest;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
2
293
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
3 import java.util.List;
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
4
271
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
5 import javax.enterprise.context.RequestScoped;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
6 import javax.inject.Inject;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
7 import javax.inject.Named;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
8 import javax.ws.rs.GET;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
9 import javax.ws.rs.Path;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
10 import javax.ws.rs.Produces;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
11 import javax.ws.rs.core.Context;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
12 import javax.ws.rs.core.HttpHeaders;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
13 import javax.ws.rs.core.UriInfo;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
14
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
15 import de.intevation.lada.auth.Authentication;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
16 import de.intevation.lada.auth.AuthenticationException;
293
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
17 import de.intevation.lada.auth.AuthenticationResponse;
271
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
18
272
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
19 class Info {
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
20 String user;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
21 String groups;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
22 String version;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
23 public Info(String user, String groups, String version) {
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
24 this.user = user;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
25 this.groups = groups;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
26 this.version = version;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
27 }
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
28 public String getUser() {
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
29 return user;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
30 }
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
31 public void setUser(String user) {
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
32 this.user = user;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
33 }
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
34 public String getGroups() {
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
35 return groups;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
36 }
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
37 public void setGroups(String groups) {
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
38 this.groups = groups;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
39 }
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
40 public String getVersion() {
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
41 return version;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
42 }
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
43 public void setVersion(String version) {
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
44 this.version = version;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
45 }
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
46 }
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
47
271
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
48 /**
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
49 * This class produces a RESTful service to read, write and update
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
50 * LOrt objects.
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
51 *
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
52 * @author <a href="mailto:torsten.irlaender@intevation.de">Torsten Irländer</a>
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
53 */
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
54 @Path("/info")
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
55 @RequestScoped
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
56 public class InfoService
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
57 {
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
58 /**
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
59 * The authorization module.
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
60 */
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
61 @Inject
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
62 @Named("ldapauth")
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
63 private Authentication authentication;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
64
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
65 /**
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
66 * Request SQL-Queries
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
67 *
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
68 * Query parameters are used for the filter in form of key-value pairs.
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
69 *
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
70 * @param info The URL query parameters.
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
71 * @param headers The HTTP header containing authorization information.
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
72 * @return Response object.
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
73 */
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
74 @GET
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
75 @Produces("text/json")
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
76 public Response filter(
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
77 @Context UriInfo info,
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
78 @Context HttpHeaders headers
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
79 ) {
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
80 try {
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
81 if (!authentication.isAuthorizedUser(headers)) {
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
82 return new Response(false, 699, null);
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
83 }
293
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
84 String user = authentication.getUserName(headers);
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
85 AuthenticationResponse ar = authentication.authorizedGroups(headers);
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
86 List<String> groups = ar.getNetzbetreiber();
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
87 String gString = "";
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
88 boolean first = true;
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
89 for(String g : groups) {
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
90 if (first) {
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
91 gString += g;
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
92 }
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
93 else {
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
94 gString += ", " + g;
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
95 }
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
96 }
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
97 //TODO: This is the best way to get the version.
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
98 // Should read the version from MANIFEST.MF but does not work (returns null).
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
99 //String version = getClass().getPackage().getImplementationVersion();
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
100 String version = System.getProperty("de.intevation.lada.server.version");
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
101
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
102 Response response = new Response(true, 200, new Info(user, gString, version));
271
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
103 return response;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
104 }
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
105 catch(AuthenticationException ae) {
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
106 return new Response(false, 699, null);
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
107 }
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
108 }
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
109 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)