private String decodeUri()

in archiva-jarinfo/archiva-jarinfo-cli/src/main/java/org/apache/archiva/jarinfo/scanner/LibLocator.java [86:117]


    private String decodeUri( String uri )
    {
        if ( uri.indexOf( '%' ) == -1 )
        {
            return uri;
        }
        StringBuffer sb = new StringBuffer();
        CharacterIterator iter = new StringCharacterIterator( uri );
        for ( char c = iter.first(); c != CharacterIterator.DONE; c = iter.next() )
        {
            if ( c == '%' )
            {
                char c1 = iter.next();
                if ( c1 != CharacterIterator.DONE )
                {
                    int i1 = Character.digit( c1, 16 );
                    char c2 = iter.next();
                    if ( c2 != CharacterIterator.DONE )
                    {
                        int i2 = Character.digit( c2, 16 );
                        sb.append( (char) ( ( i1 << 4 ) + i2 ) );
                    }
                }
            }
            else
            {
                sb.append( c );
            }
        }
        String path = sb.toString();
        return path;
    }