1 package org.collectionspace.services.systeminfo;
3 import java.nio.charset.Charset;
4 import java.util.Locale;
5 import java.util.TimeZone;
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;
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;
29 @Path(SystemInfoClient.SERVICE_PATH)
30 @Produces({"application/xml"})
31 @Consumes({"application/xml"})
32 public class SystemInfoResource extends AbstractCollectionSpaceResourceImpl<SystemInfoCommon, SystemInfoCommon> {
35 public Class<?> getCommonPartClass() {
36 // TODO Auto-generated method stub
41 public String getServiceName() {
42 return SystemInfoClient.SERVICE_NAME;
46 protected String getVersionString() {
47 // TODO Auto-generated method stub
56 public SystemInfoCommon get(@Context UriInfo ui) {
57 SystemInfoCommon result = null;
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);
70 result.setHostTimezone(TimeZone.getDefault().getID());
71 result.setHostLocale(Locale.getDefault().toLanguageTag());
72 result.setHostCharset(Charset.defaultCharset().name());
74 // To get the full set of the system information, we required the user be authenticated *and* have "DELETE" privs on the "systeminfo" resource
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");
88 } catch (UnauthorizedException e) {
89 logger.trace(e.getMessage(), e);
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);
101 public ServiceContextFactory<SystemInfoCommon, SystemInfoCommon> getServiceContextFactory() {
102 return (ServiceContextFactory<SystemInfoCommon, SystemInfoCommon>) RemoteServiceContextFactory.get();