From 87de2c69a25a3ef6f748f2aafdaabcd8ecf85b60 Mon Sep 17 00:00:00 2001 From: Patrick Dowler <patrick.dowler@nrc-cnrc.gc.ca> Date: Thu, 11 Dec 2014 14:19:09 -0800 Subject: [PATCH] catch GroupNotFoundException and return empty list, fix error content-type (text/plain), set logged success=true for handled exceptions --- .../cadc/ac/server/web/ACSearchRunner.java | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/ACSearchRunner.java b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/ACSearchRunner.java index d608fb82..dd85e15a 100755 --- a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/ACSearchRunner.java +++ b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/ACSearchRunner.java @@ -100,6 +100,7 @@ import ca.nrc.cadc.uws.server.JobRunner; import ca.nrc.cadc.uws.server.JobUpdater; import ca.nrc.cadc.uws.server.SyncOutput; import ca.nrc.cadc.uws.util.JobLogInfo; +import java.util.ArrayList; public class ACSearchRunner implements JobRunner { @@ -225,8 +226,15 @@ public class ACSearchRunner implements JobRunner PluginFactory factory = new PluginFactory(); GroupPersistence dao = factory.getGroupPersistence(); - Collection<Group> groups = - dao.getGroups(rv.getPrincipal(), rv.getRole(), rv.getGroupID()); + Collection<Group> groups; + try + { + groups = dao.getGroups(rv.getPrincipal(), rv.getRole(), rv.getGroupID()); + } + catch(GroupNotFoundException ignore) + { + groups = new ArrayList<Group>(); + } syncOut.setResponseCode(HttpServletResponse.SC_OK); GroupsWriter.write(groups, syncOut.getOutputStream()); @@ -241,7 +249,7 @@ public class ACSearchRunner implements JobRunner log.error("FAIL", t); syncOut.setResponseCode(503); - syncOut.setHeader("Content-Type", "text/plan"); + syncOut.setHeader("Content-Type", "text/plain"); try { syncOut.getOutputStream().write(t.getMessage().getBytes()); @@ -266,12 +274,12 @@ public class ACSearchRunner implements JobRunner } catch (UserNotFoundException t) { - logInfo.setSuccess(false); + logInfo.setSuccess(true); logInfo.setMessage(t.getMessage()); log.debug("FAIL", t); syncOut.setResponseCode(404); - syncOut.setHeader("Content-Type", "text/plan"); + syncOut.setHeader("Content-Type", "text/plain"); try { syncOut.getOutputStream().write(t.getMessage().getBytes()); @@ -294,14 +302,15 @@ public class ACSearchRunner implements JobRunner // log.debug("failed to set final error status after " + t, oops); // } } + /* catch (GroupNotFoundException t) { - logInfo.setSuccess(false); + logInfo.setSuccess(true); logInfo.setMessage(t.getMessage()); log.debug("FAIL", t); syncOut.setResponseCode(404); - syncOut.setHeader("Content-Type", "text/plan"); + syncOut.setHeader("Content-Type", "text/plain"); try { syncOut.getOutputStream().write(t.getMessage().getBytes()); @@ -324,14 +333,15 @@ public class ACSearchRunner implements JobRunner // log.debug("failed to set final error status after " + t, oops); // } } + */ catch (AccessControlException t) { - logInfo.setSuccess(false); + logInfo.setSuccess(true); logInfo.setMessage(t.getMessage()); log.debug("FAIL", t); syncOut.setResponseCode(403); - syncOut.setHeader("Content-Type", "text/plan"); + syncOut.setHeader("Content-Type", "text/plain"); try { syncOut.getOutputStream().write(t.getMessage().getBytes()); @@ -361,7 +371,7 @@ public class ACSearchRunner implements JobRunner log.error("FAIL", t); syncOut.setResponseCode(500); - syncOut.setHeader("Content-Type", "text/plan"); + syncOut.setHeader("Content-Type", "text/plain"); try { syncOut.getOutputStream().write(t.getMessage().getBytes()); -- GitLab