daisy / pipeline-framework

Core projects for the DAISY Pipeline 2 runtime framework
9 stars 2 forks source link

Web server: don't return stack trace in error document #158

Open bertfrees opened 3 years ago

bertfrees commented 3 years ago

For example, when a specific job that does not exist is queried with /jobs/unexisting-job, you get a 404 (this is correct) and a error document that looks something like this:

<error xmlns="http://www.daisy.org/ns/pipeline/data"
       query="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">
    <description>Job not found</description>
    <trace>java.lang.Throwable: Job not found
        at org.daisy.pipeline.webservice.impl.GenericResource.getErrorRepresentation(GenericResource.java:36)
        at org.daisy.pipeline.webservice.impl.JobResource.getResource(JobResource.java:78)
        at sun.reflect.GeneratedMethodAccessor30.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.restlet.resource.ServerResource.doHandle(ServerResource.java:506)
        at org.restlet.resource.ServerResource.get(ServerResource.java:707)
        at org.restlet.resource.ServerResource.doHandle(ServerResource.java:589)
        at org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:649)
        at org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:348)
        at org.restlet.resource.ServerResource.handle(ServerResource.java:951)
        at org.restlet.resource.Finder.handle(Finder.java:246)
        at org.restlet.routing.Filter.doHandle(Filter.java:159)
        at org.restlet.routing.Filter.handle(Filter.java:206)
        at org.restlet.routing.Router.doHandle(Router.java:431)
        at org.restlet.routing.Router.handle(Router.java:648)
        ...
    </trace>
</error>

The "Job not found" message is helpful, but the stack trace is just implementation detail.