From 3f6966d1b7cd812e8d6c797ff0c8287a81f17e41 Mon Sep 17 00:00:00 2001 From: Patrick Dowler <patrick.dowler@nrc-cnrc.gc.ca> Date: Tue, 16 Dec 2014 15:57:35 -0800 Subject: [PATCH] fixed NPE during error reporting --- .../cadc/ac/server/web/ACSearchRunner.java | 32 +++++++++++++------ 1 file changed, 22 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 dd85e15a..1e064e62 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,8 @@ 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.io.OutputStream; +import java.io.OutputStreamWriter; import java.util.ArrayList; public class ACSearchRunner implements JobRunner @@ -370,16 +372,7 @@ public class ACSearchRunner implements JobRunner logInfo.setMessage(t.getMessage()); log.error("FAIL", t); - syncOut.setResponseCode(500); - syncOut.setHeader("Content-Type", "text/plain"); - try - { - syncOut.getOutputStream().write(t.getMessage().getBytes()); - } - catch (IOException e) - { - log.warn("Could not write response to output stream", e); - } + writeError(syncOut, 500, t); // ErrorSummary errorSummary = // new ErrorSummary(t.getMessage(), ErrorType.FATAL); @@ -396,4 +389,23 @@ public class ACSearchRunner implements JobRunner } } + private void writeError(SyncOutput syncOutput, int code, Throwable t) + { + try + { + syncOutput.setResponseCode(code); + syncOut.setHeader("Content-Type", "text/plain"); + OutputStream ostream = syncOut.getOutputStream(); + if (ostream != null) + { + OutputStreamWriter w = new OutputStreamWriter(ostream); + w.write(t.toString()); + w.flush(); + } + } + catch (IOException e) + { + log.warn("Could not write response to output stream", e); + } + } } -- GitLab