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.UriInfoWrapper;
23 import org.collectionspace.services.common.context.RemoteServiceContextFactory;
24 import org.collectionspace.services.common.context.ServiceContext;
25 import org.collectionspace.services.common.context.ServiceContextFactory;
26 import org.collectionspace.services.common.security.UnauthorizedException;
28 @Path(SystemInfoClient.SERVICE_PATH)
29 @Produces({"application/xml"})
30 @Consumes({"application/xml"})
31 public class SystemInfoResource extends AbstractCollectionSpaceResourceImpl<SystemInfoCommon, SystemInfoCommon> {
34 public Class<?> getCommonPartClass() {
35 // TODO Auto-generated method stub
40 public String getServiceName() {
41 return SystemInfoClient.SERVICE_NAME;
45 protected String getVersionString() {
46 // TODO Auto-generated method stub
55 public SystemInfoCommon get(@Context UriInfo ui) {
56 SystemInfoCommon result = null;
59 result = new SystemInfoCommon();
60 result.setInstanceId("_default");
61 result.setDisplayName("CollectionSpace Services v5.1");
62 Version ver = new Version();
67 result.setVersion(ver);
69 result.setHostTimezone(TimeZone.getDefault().getID());
70 result.setHostLocale(Locale.getDefault().toLanguageTag());
71 result.setHostCharset(Charset.defaultCharset().name());
73 // To get the full set of the system information, we required the user be authenticated *and* have "DELETE" privs on the "systeminfo" resource
76 ServiceContext<SystemInfoCommon, SystemInfoCommon> ctx = createServiceContext(getServiceName(), ui);
77 CSpaceResource res = new URIResourceImpl(ctx.getTenantId(), SystemInfoClient.SERVICE_NAME, HttpMethod.DELETE);
78 if (AuthZ.get().isAccessAllowed(res)) {
79 result.setNuxeoVersionString("7.10-HF17");
80 result.setHost(String.format("Architecture:%s Name:%s Version:%s",
81 System.getProperty("os.arch"), System.getProperty("os.name"), System.getProperty("os.version")));
82 result.setJavaVersionString(System.getProperty("java.version"));
83 result.setPostgresVersionString("9.5.7");
85 } catch (UnauthorizedException e) {
89 } catch(Exception e) {
90 Response response = Response.status(Response.Status.BAD_REQUEST).entity(e.getMessage()).type("text/plain").build();
91 throw new CSWebApplicationException(response);
98 public ServiceContextFactory<SystemInfoCommon, SystemInfoCommon> getServiceContextFactory() {
99 return (ServiceContextFactory<SystemInfoCommon, SystemInfoCommon>) RemoteServiceContextFactory.get();