public static String calcBestMatcher()

in appactive-java-client/client-bridge/client-bridge-rpc-springcloud/client-bridge-rpc-springcloud-common/src/main/java/io/appactive/rpc/springcloud/common/consumer/SpringCloudAddressFilterByUnitServiceImpl.java [52:73]


    public static String calcBestMatcher(AntPathMatcher antPathMatcher, Set<String> candidates, String nameOfTarget){
        //  org.springframework.web.servlet.handler.AbstractUrlHandlerMapping#lookupHandler(java.lang.String, javax.servlet.http.HttpServletRequest)
        String bestMatcher = EMPTY_MATCHER;
        List<String> matchingPatterns = new ArrayList<>();
        String targetUri = getUriFromPrimaryName(nameOfTarget);
        Set<String> candidateUris = candidates.stream().map(Util::getUriFromPrimaryName).collect(Collectors.toSet());
        for (String candidateUri : candidateUris) {
            if (antPathMatcher.match(candidateUri, targetUri)) {
                matchingPatterns.add(candidateUri);
            }
        }
        Comparator<String> patternComparator = antPathMatcher.getPatternComparator(targetUri);
        if (!matchingPatterns.isEmpty()) {
            matchingPatterns.sort(patternComparator);
            if (logger.isDebugEnabled()) {
                logger.debug("Matching patterns for request [" + targetUri + "] are " + matchingPatterns);
            }
            bestMatcher = matchingPatterns.get(0);
        }
        bestMatcher = buildServicePrimaryName(getAppNameFromPrimaryName(nameOfTarget),bestMatcher);
        return bestMatcher;
    }