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;
}