in archiva-jarinfo/archiva-jarinfo-lib/src/main/java/org/apache/archiva/jarinfo/analysis/visitors/BCELImportVisitor.java [101:167]
public void visitConstantUtf8( ConstantUtf8 constantUtf8 )
{
String ret = constantUtf8.getBytes().trim();
// empty strings are not class names.
if ( ret.length() <= 0 )
{
return;
}
// Only valid characters please.
if ( !VALID_UTF8_PATTERN.matcher( ret ).matches() )
{
return;
}
// only strings with '/' character are to be considered.
if ( ret.indexOf( '/' ) == -1 )
{
return;
}
// Strings that start with '/' are bad too
// Seen when Pool has regex patterns.
if ( ret.charAt( 0 ) == '/' )
{
return;
}
// Make string more class-like.
ret = ret.replace( '/', '.' );
// Double ".." indicates a bad class fail-fast.
// Seen when ConstantUTF8 Pool has regex patterns.
if ( ret.indexOf( ".." ) != -1 )
{
return;
}
Matcher mat = QUALIFIED_IMPORT_PATTERN.matcher( ret );
char prefix = ret.charAt( 0 );
if ( prefix == '(' )
{
// A Method Declaration.
// Loop for each Qualified Class found.
while ( mat.find() )
{
this.imports.add( mat.group( 1 ) );
}
}
else
{
// A Variable Declaration.
if ( mat.find() )
{
// Add a UTF8 Qualified Class reference.
this.imports.add( mat.group( 1 ) );
}
else
{
// Add a simple Class reference.
this.imports.add( ret );
}
}
}