public RouteChunk registerPath(String method, String path) { if (method == null) { method = ANY_METHOD; } else { method = method.toUpperCase(); } RouteChunk chunk = root.findOrCreateChild(method); if (method.equals(ANY_METHOD)) { // cache common root chunk anyMethodChunk = chunk; } path = StringUtil.cutSurrounding(path, StringPool.SLASH); String[] pathChunks = StringUtil.splitc(path, '/'); for (String pathChunk : pathChunks) { chunk = chunk.findOrCreateChild(pathChunk); } return chunk; }
private ActionRuntime _lookup(String method, final String[] pathChunks) { // 1 - match method if (method != null) { method = method.toUpperCase(); RouteChunk methodChunk = root.findOrCreateChild(method); ActionRuntime actionRuntime = lookupFrom(methodChunk, pathChunks); if (actionRuntime != null) { return actionRuntime; } } // 2 - match all methods if (anyMethodChunk != null) { ActionRuntime actionRuntime = lookupFrom(anyMethodChunk, pathChunks); if (actionRuntime != null) { return actionRuntime; } } // nothing found return null; }