]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
24e45547a44492050459b86f944c822397e065e1
[tmp/jakarta-migration.git] /
1 package org.collectionspace.services.systeminfo;
2
3 import java.nio.charset.Charset;
4 import java.util.Locale;
5 import java.util.TimeZone;
6
7 import javax.ws.rs.Consumes;
8 import javax.ws.rs.GET;
9 import javax.ws.rs.Path;
10 import javax.ws.rs.Produces;
11 import javax.ws.rs.core.Context;
12 import javax.ws.rs.core.Response;
13 import javax.ws.rs.core.UriInfo;
14 import javax.ws.rs.HttpMethod;
15
16 import org.collectionspace.services.authorization.AuthZ;
17 import org.collectionspace.services.authorization.CSpaceAction;
18 import org.collectionspace.services.authorization.CSpaceResource;
19 import org.collectionspace.services.authorization.URIResourceImpl;
20 import org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl;
21 import org.collectionspace.services.common.CSWebApplicationException;
22 import org.collectionspace.services.common.ServiceMain;
23 import org.collectionspace.services.common.UriInfoWrapper;
24 import org.collectionspace.services.common.context.RemoteServiceContextFactory;
25 import org.collectionspace.services.common.context.ServiceContext;
26 import org.collectionspace.services.common.context.ServiceContextFactory;
27 import org.collectionspace.services.common.security.UnauthorizedException;
28
29 @Path(SystemInfoClient.SERVICE_PATH)
30 @Produces({"application/xml"})
31 @Consumes({"application/xml"})
32 public class SystemInfoResource extends AbstractCollectionSpaceResourceImpl<SystemInfoCommon, SystemInfoCommon> {
33
34         @Override
35         public Class<?> getCommonPartClass() {
36                 // TODO Auto-generated method stub
37                 return null;
38         }
39
40         @Override
41         public String getServiceName() {
42                 return SystemInfoClient.SERVICE_NAME;
43         }
44
45         @Override
46         protected String getVersionString() {
47                 // TODO Auto-generated method stub
48                 return null;
49         }
50
51         //
52         // API Endpoints
53         //
54
55     @GET
56     public SystemInfoCommon get(@Context UriInfo ui) {
57         SystemInfoCommon result = null;
58
59         try {
60                 result = new SystemInfoCommon();
61                 result.setInstanceId(ServiceMain.getInstance().getCspaceInstanceId());
62                 result.setDisplayName(ServiceMain.VER_DISPLAY_NAME);
63                 Version ver = new Version();
64                 ver.setMajor(ServiceMain.VER_MAJOR);
65                 ver.setMinor(ServiceMain.VER_MINOR);
66                 ver.setPatch(ServiceMain.VER_PATCH);
67                 ver.setBuild(ServiceMain.VER_BUILD);
68                 result.setVersion(ver);
69
70                 result.setHostTimezone(TimeZone.getDefault().getID());
71                 result.setHostLocale(Locale.getDefault().toLanguageTag());
72                 result.setHostCharset(Charset.defaultCharset().name());
73                 //
74                 // To get the full set of the system information, we required the user be authenticated *and* have "DELETE" privs on the "systeminfo" resource
75                 //
76                 try {
77                         ServiceContext<SystemInfoCommon, SystemInfoCommon> ctx = createServiceContext(getServiceName(), ui);
78                         CSpaceResource res = new URIResourceImpl(ctx.getTenantId(), SystemInfoClient.SERVICE_NAME, HttpMethod.DELETE);
79                         if (AuthZ.get().isAccessAllowed(res)) {
80                                                         // TODO: Stop hardcoding this!
81                                                         // result.setNuxeoVersionString("7.10-HF17");
82                                                         result.setHost(String.format("Architecture:%s Name:%s Version:%s",
83                                                                         System.getProperty("os.arch"), System.getProperty("os.name"), System.getProperty("os.version")));
84                                                         result.setJavaVersionString(System.getProperty("java.version"));
85                                                         // TODO: Stop hardcoding this!
86                                                         // result.setPostgresVersionString("9.5.7");
87                                         }
88                                 } catch (UnauthorizedException e) {
89                                 logger.trace(e.getMessage(), e);
90                 }
91
92         } catch(Exception e) {
93                 Response response = Response.status(Response.Status.BAD_REQUEST).entity(e.getMessage()).type("text/plain").build();
94             throw new CSWebApplicationException(response);
95         }
96
97         return result;
98     }
99
100         @Override
101         public ServiceContextFactory<SystemInfoCommon, SystemInfoCommon> getServiceContextFactory() {
102         return (ServiceContextFactory<SystemInfoCommon, SystemInfoCommon>) RemoteServiceContextFactory.get();
103         }
104 }