From ae03c6bdf570cb36a1b139aeb0e467081665459e Mon Sep 17 00:00:00 2001 From: Endi Sukma Dewata Date: Sat, 19 May 2012 11:05:20 -0500 Subject: Added user REST service. The user REST service is based on UsrGrpAdminServlet. It provides an interface to manage users and user certificates. Ticket #160 --- .../cms/servlet/base/CMSResourceService.java | 84 +++++++++++++++++++++- 1 file changed, 83 insertions(+), 1 deletion(-) (limited to 'base/common/src/com/netscape/cms/servlet/base') diff --git a/base/common/src/com/netscape/cms/servlet/base/CMSResourceService.java b/base/common/src/com/netscape/cms/servlet/base/CMSResourceService.java index 36f33b6f8..85ccbf9f7 100644 --- a/base/common/src/com/netscape/cms/servlet/base/CMSResourceService.java +++ b/base/common/src/com/netscape/cms/servlet/base/CMSResourceService.java @@ -17,17 +17,26 @@ // --- END COPYRIGHT BLOCK --- package com.netscape.cms.servlet.base; +import java.lang.reflect.Method; import java.security.cert.CertificateEncodingException; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import javax.ws.rs.FormParam; import javax.ws.rs.core.CacheControl; import javax.ws.rs.core.Context; import javax.ws.rs.core.EntityTag; +import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.Request; import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriInfo; import javax.ws.rs.core.Response.ResponseBuilder; +import javax.ws.rs.core.UriInfo; import com.netscape.certsrv.apps.CMS; +import com.netscape.certsrv.logging.IAuditor; +import com.netscape.certsrv.logging.ILogger; import com.netscape.cms.servlet.cert.model.CertificateData; /** @@ -47,9 +56,15 @@ public class CMSResourceService { @Context protected UriInfo uriInfo; + @Context + protected HttpHeaders headers; + @Context protected Request request; + public ILogger logger = CMS.getLogger(); + public IAuditor auditor = CMS.getAuditor(); + public Response createOKResponse(Object object) { return Response.ok(object).build(); } @@ -79,4 +94,71 @@ public class CMSResourceService { return data; } + public Locale getLocale() { + + if (headers == null) return Locale.getDefault(); + + List locales = headers.getAcceptableLanguages(); + if (locales == null || locales.isEmpty()) return Locale.getDefault(); + + return locales.get(0); + } + + public String getUserMessage(String messageId, String... params) { + return CMS.getUserMessage(getLocale(), messageId, params); + } + + public void log(int source, int level, String message) { + + if (logger == null) return; + + logger.log(ILogger.EV_SYSTEM, + null, + source, + level, + getClass().getSimpleName()+": " + message); + } + + public void audit(String message, String scope, String type, String id, Map params, String status) { + + if (auditor == null) return; + + String auditMessage = CMS.getLogMessage( + message, + auditor.getSubjectID(), + status, + auditor.getParamString(scope, type, id, params)); + + auditor.log(auditMessage); + } + + /** + * Get the values of the fields annotated with @FormParam. + */ + public Map getParams(Object object) { + + Map map = new HashMap(); + + // for each fields in the object + for (Method method : object.getClass().getMethods()) { + FormParam element = method.getAnnotation(FormParam.class); + if (element == null) continue; + + String name = element.value(); + + try { + // get the value from the object + Object value = method.invoke(object); + + // put the value in the map + map.put(name, value == null ? null : value.toString()); + + } catch (Exception e) { + // ignore inaccessible fields + e.printStackTrace(); + } + } + + return map; + } } -- cgit