protected static boolean matchPattern()

in src/main/java/org/apache/maven/doxia/linkcheck/validation/LinkValidatorManager.java [323:365]


    protected static boolean matchPattern( String link, String pattern )
    {
        if ( pattern == null || pattern.isEmpty() )
        {
            return link == null || link.isEmpty();
        }

        if ( pattern.indexOf( '*' ) == -1 )
        {
            if ( pattern.endsWith( "/" ) )
            {
                return link.indexOf( pattern.substring( 0, pattern.lastIndexOf( '/' ) ) ) != -1;
            }

            return link.indexOf( pattern ) != -1;
        }

        try
        {
            URI uri = new URI( link );

            if ( uri.getScheme() != null && !pattern.startsWith( uri.getScheme() ) )
            {
                return false;
            }
        }
        catch ( URISyntaxException ex )
        {
            LOG.debug( "Trying to check link to illegal URI: " + link, ex );
        }

        if ( pattern.matches( "\\*+/?.*" ) && !link.startsWith( "/" ) && !link.startsWith( "./" ) )
        {
            link = "./" + link;
        }
        String diff = StringUtils.difference( link, pattern );
        if ( diff.startsWith( "/" ) )
        {
            return SelectorUtils.match( pattern, link + "/" );
        }

        return SelectorUtils.match( pattern, link );
    }