I'm trying to figure out how to test a Component and I've encountered this
piece of code in HostRoute that will most likely always throw an NPE:


...
            int resourcePortValue = request.getResourceRef().getHostPort();
            if (resourcePortValue == -1) {
                resourcePortValue = request.getResourceRef()
                        .getSchemeProtocol().getDefaultPort();
            }


All of the checks before and afterwards test for null but the
getSchemePort() might be null as well, so getDefaultPort() will throw the
NPE.

Just create a request in a unit test:


        Request req = new Request(Method.GET, "/foo");
        component.handle(req, res);


with a relative URL and you'll get:


java.lang.NullPointerException
        at org.restlet.engine.component.HostRoute.score(HostRoute.java:159)
        at org.restlet.util.RouteList.getFirst(RouteList.java:121)
        at org.restlet.routing.Router.getNext(Router.java:639)
        at org.restlet.routing.Router.handle(Router.java:733)
        at org.restlet.routing.Filter.doHandle(Filter.java:156)
        at
org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:154)
        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:390)


So it seems this has to be an absolute URL, which seems wrong to me. If my
Component only has a default host, I'm not using name-based virtual hosts at
all. Don't make me supply a value that has no function. In fact, the rest of
the code in HostRoute.score() looks like it should work well with a relative
URI and (default) host matching.



-- 
View this message in context: 
http://restlet-discuss.1400322.n2.nabble.com/NPE-in-HostRoute-tp5342978p5342978.html
Sent from the Restlet Discuss mailing list archive at Nabble.com.

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2638885

Reply via email to