[CDS API] Return an error code when browsing with an invalid profileId

Issue #662 resolved
Will Lunniss created an issue

If you make a browse request with a profileId that does not exist on the server, you get an empty result tag. It would be helpful if the server returned a defined error code in this case.

<result/>

Comments (5)

  1. Will Lunniss reporter

    It detects it but then returns a 500 server error

    2013-05-21 14:15:47,169 WARN  [CDSBrowseServerResource] Profile with id fake_profile doesn't exist
    2013-05-21 14:15:47,169 WARN  [CDSBrowseServerResource] Browse for object id V_LA failed with exception: null
    org.serviio.restlet.HttpCodeException
            at org.serviio.upnp.service.contentdirectory.rest.resources.server.CDSBrowseServerResource.browse(CDSBrowseServerResource.java:105)
            at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.restlet.resource.ServerResource.doHandle(ServerResource.java:449)
            at org.restlet.resource.ServerResource.get(ServerResource.java:645)
            at org.restlet.resource.ServerResource.doHandle(ServerResource.java:527)
            at org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:587)
            at org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:299)
            at org.serviio.restlet.AbstractProEditionServerResource.doConditionalHandle(AbstractProEditionServerResource.java:35)
            at org.serviio.upnp.service.contentdirectory.rest.resources.server.AbstractCDSServerResource.doConditionalHandle(AbstractCDSServerResource.java:52)
            at org.serviio.upnp.service.contentdirectory.rest.resources.server.AbstractRestrictedCDSServerResource.doConditionalHandle(AbstractRestrictedCDSServerResource.java:53)
            at org.restlet.resource.ServerResource.handle(ServerResource.java:846)
            at org.restlet.resource.Finder.handle(Finder.java:510)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Router.doHandle(Router.java:497)
            at org.restlet.routing.Router.handle(Router.java:737)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:151)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.engine.ChainHelper.handle(ChainHelper.java:111)
            at org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.java:72)
            at org.restlet.Application.handle(Application.java:391)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Router.doHandle(Router.java:497)
            at org.restlet.routing.Router.handle(Router.java:737)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Router.doHandle(Router.java:497)
            at org.restlet.routing.Router.handle(Router.java:737)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:151)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.engine.ChainHelper.handle(ChainHelper.java:111)
            at org.restlet.Component.handle(Component.java:388)
            at org.restlet.Server.handle(Server.java:488)
            at org.restlet.engine.http.connector.BaseServerHelper.handle(BaseServerHelper.java:158)
            at org.restlet.engine.http.connector.BaseServerHelper.handleInbound(BaseServerHelper.java:167)
            at org.restlet.engine.http.connector.BaseHelper.handleNextInbound(BaseHelper.java:418)
            at org.restlet.engine.http.connector.Connection.readMessages(Connection.java:696)
            at org.restlet.engine.http.connector.Controller$2.run(Controller.java:95)
            at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
            at java.lang.Thread.run(Thread.java:662)
    2013-05-21 14:15:47,171 WARN  [ContentDirectoryRestletApplication] Exception or error caught in resource
    java.lang.RuntimeException: org.serviio.restlet.HttpCodeException
            at org.serviio.upnp.service.contentdirectory.rest.resources.server.CDSBrowseServerResource.browse(CDSBrowseServerResource.java:119)
            at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.restlet.resource.ServerResource.doHandle(ServerResource.java:449)
            at org.restlet.resource.ServerResource.get(ServerResource.java:645)
            at org.restlet.resource.ServerResource.doHandle(ServerResource.java:527)
            at org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:587)
            at org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:299)
            at org.serviio.restlet.AbstractProEditionServerResource.doConditionalHandle(AbstractProEditionServerResource.java:35)
            at org.serviio.upnp.service.contentdirectory.rest.resources.server.AbstractCDSServerResource.doConditionalHandle(AbstractCDSServerResource.java:52)
            at org.serviio.upnp.service.contentdirectory.rest.resources.server.AbstractRestrictedCDSServerResource.doConditionalHandle(AbstractRestrictedCDSServerResource.java:53)
            at org.restlet.resource.ServerResource.handle(ServerResource.java:846)
            at org.restlet.resource.Finder.handle(Finder.java:510)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Router.doHandle(Router.java:497)
            at org.restlet.routing.Router.handle(Router.java:737)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:151)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.engine.ChainHelper.handle(ChainHelper.java:111)
            at org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.java:72)
            at org.restlet.Application.handle(Application.java:391)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Router.doHandle(Router.java:497)
            at org.restlet.routing.Router.handle(Router.java:737)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Router.doHandle(Router.java:497)
            at org.restlet.routing.Router.handle(Router.java:737)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:151)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.engine.ChainHelper.handle(ChainHelper.java:111)
            at org.restlet.Component.handle(Component.java:388)
            at org.restlet.Server.handle(Server.java:488)
            at org.restlet.engine.http.connector.BaseServerHelper.handle(BaseServerHelper.java:158)
            at org.restlet.engine.http.connector.BaseServerHelper.handleInbound(BaseServerHelper.java:167)
            at org.restlet.engine.http.connector.BaseHelper.handleNextInbound(BaseHelper.java:418)
            at org.restlet.engine.http.connector.Connection.readMessages(Connection.java:696)
            at org.restlet.engine.http.connector.Controller$2.run(Controller.java:95)
            at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
            at java.lang.Thread.run(Thread.java:662)
    Caused by: org.serviio.restlet.HttpCodeException
            at org.serviio.upnp.service.contentdirectory.rest.resources.server.CDSBrowseServerResource.browse(CDSBrowseServerResource.java:105)
            ... 51 more
    2013-05-21 14:15:47,172 WARN  [ServiioStatusService] RuntimeException occured. Returning error code 500 to the REST layer. Message: org.serviio.restlet.HttpCodeException
    2013-05-21 14:15:47,173 INFO  [LogService] 2013-05-21   14:15:47        192.168.15.201  -       -       23424   GET     /cds/browse/fake_profile/V_LA/BrowseDirectChildren/items/0/15  authToken=XXX      500     -       0       5       http://192.168.15.100:23424    Mozilla/5.0 (Windows NT 6.1; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0        -
    
  2. Log in to comment