diff options
author | Endi Sukma Dewata <edewata@redhat.com> | 2012-05-19 11:05:20 -0500 |
---|---|---|
committer | Endi Sukma Dewata <edewata@redhat.com> | 2012-05-31 12:01:36 -0500 |
commit | ae03c6bdf570cb36a1b139aeb0e467081665459e (patch) | |
tree | f586fe5e5c3e4e1c4c1eb73f184d7bc4438296a5 /base/common/src/com/netscape/cms/servlet/base | |
parent | 83bca19f80ea0deef4034e80a559ffa88da44a1a (diff) | |
download | pki-ae03c6bdf570cb36a1b139aeb0e467081665459e.tar.gz pki-ae03c6bdf570cb36a1b139aeb0e467081665459e.tar.xz pki-ae03c6bdf570cb36a1b139aeb0e467081665459e.zip |
Added user REST service.
The user REST service is based on UsrGrpAdminServlet. It provides an interface
to manage users and user certificates.
Ticket #160
Diffstat (limited to 'base/common/src/com/netscape/cms/servlet/base')
-rw-r--r-- | base/common/src/com/netscape/cms/servlet/base/CMSResourceService.java | 84 |
1 files changed, 83 insertions, 1 deletions
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; /** @@ -48,8 +57,14 @@ public class CMSResourceService { 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<Locale> 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<String, String> 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<String, String> getParams(Object object) { + + Map<String, String> map = new HashMap<String, String>(); + + // 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; + } } |