/** * Returns the first route match for a given call. * * @param request * The request to score. * @param response * The response to score. * @param requiredScore * The minimum score required to have a match. * @return The first route match or null. */ public Route getFirst(Request request, Response response, float requiredScore) { for (final Route current : this) { if (current.score(request, response) >= requiredScore) { return current; } } // No match found return null; }
/** * Returns the best route match for a given call. * * @param request * The request to score. * @param response * The response to score. * @param requiredScore * The minimum score required to have a match. * @return The best route match or null. */ public Route getBest(Request request, Response response, float requiredScore) { Route result = null; float bestScore = 0F; float score; for (final Route current : this) { score = current.score(request, response); if ((score > bestScore) && (score >= requiredScore)) { bestScore = score; result = current; } } return result; }
/** * Returns the last route match for a given call. * * @param request * The request to score. * @param response * The response to score. * @param requiredScore * The minimum score required to have a match. * @return The last route match or null. */ public synchronized Route getLast(Request request, Response response, float requiredScore) { for (int j = size() - 1; (j >= 0); j--) { final Route route = get(j); if (route.score(request, response) >= requiredScore) { return route; } } // No match found return null; }
/** * Returns a next route match in a round robin mode for a given call. * * @param request * The request to score. * @param response * The response to score. * @param requiredScore * The minimum score required to have a match. * @return A next route or null. */ public synchronized Route getNext(Request request, Response response, float requiredScore) { if (!isEmpty()) { for (final int initialIndex = this.lastIndex++; initialIndex != this.lastIndex; this.lastIndex++) { if (this.lastIndex >= size()) { this.lastIndex = 0; } final Route route = get(this.lastIndex); if (route.score(request, response) >= requiredScore) { return route; } } } // No match found return null; }
&& (getDefaultRoute().score(request, response) >= getRequiredScore())) { result = getDefaultRoute(); } else {