Skip to content

Commit

Permalink
Make everything lenient by default except for SisuIndex
Browse files Browse the repository at this point in the history
  • Loading branch information
kwin committed Jan 8, 2024
1 parent 1294fea commit 7bc2ae3
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public final class QualifiedTypeVisitor
// Implementation fields
// ----------------------------------------------------------------------

private final QualifierCache qualifierCache = new QualifierCache();
private final QualifierCache qualifierCache;

private final QualifiedTypeListener listener;

Expand All @@ -48,6 +48,11 @@ public final class QualifiedTypeVisitor

public QualifiedTypeVisitor( final QualifiedTypeListener listener )
{
this( listener, false );
}

public QualifiedTypeVisitor( final QualifiedTypeListener listener, boolean isStrict ) {
qualifierCache = new QualifierCache( isStrict );
this.listener = listener;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,23 @@ final class QualifierCache

private boolean isQualified;

private final boolean isStrict;

// ----------------------------------------------------------------------
// Public methods
// ----------------------------------------------------------------------

public QualifierCache(boolean isStrict) {
super();
this.isStrict = isStrict;
}

public void enterClass( final int modifiers, final String name, final String _extends, final String[] _implements )
{
// no-op
}


public AnnotationVisitor visitAnnotation( final String desc )
{
isQualified |= QUALIFIER_DESC.equals( desc );
Expand Down Expand Up @@ -80,7 +88,7 @@ boolean qualify( final ClassSpace space, final String desc )
isQualified = false;

final String name = desc.substring( 1, desc.length() - 1 );
SpaceScanner.accept( this, space.getResource( name + ".class" ) );
SpaceScanner.accept( this, space.getResource( name + ".class" ), isStrict );
cachedResults.put( desc, Boolean.valueOf( isQualified ) );

return isQualified;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public class SisuIndex
// Implementation fields
// ----------------------------------------------------------------------

private final QualifierCache qualifierCache = new QualifierCache();
private final QualifierCache qualifierCache = new QualifierCache( true );

private final File targetDirectory;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,29 +60,64 @@ private static final class RecordedElements

private final ClassFinder finder;

/**
* If set to {@code true} will throw ISE in case class cannot be scanned
*/
private final boolean isStrict;

private Strategy strategy = Strategy.DEFAULT;

// ----------------------------------------------------------------------
// Constructors
// ----------------------------------------------------------------------

/**
*
* @param space
* @deprecated Use {@link #SpaceModule(ClassSpace, ClassFinder, boolean)} instead.
*/
@Deprecated
public SpaceModule( final ClassSpace space )
{
this( space, BeanScanning.ON );
}

/**
*
* @param space
* @param finder
* @deprecated Use {@link #SpaceModule(ClassSpace, ClassFinder, boolean)} instead.
*/
@Deprecated
public SpaceModule( final ClassSpace space, final ClassFinder finder )
{
this( space, finder, false );
}

public SpaceModule( final ClassSpace space, final ClassFinder finder, boolean isStrict )
{
caching = false;

this.space = space;
this.finder = finder;
this.isStrict = isStrict;
}

/**
*
* @param space
* @param scanning
* @deprecated Use {@link #SpaceModule(ClassSpace, ClassFinder, boolean) instead
*/
@Deprecated
public SpaceModule( final ClassSpace space, final BeanScanning scanning )
{
caching = BeanScanning.CACHE == scanning;
this( space, scanning, false );
}

public SpaceModule( final ClassSpace space, final BeanScanning scanning, boolean isStrict )
{
caching = BeanScanning.CACHE == scanning;
this.space = space;
switch ( scanning )
{
Expand All @@ -99,6 +134,7 @@ public SpaceModule( final ClassSpace space, final BeanScanning scanning )
finder = LOCAL_SCAN;
break;
}
this.isStrict = isStrict;
}

// ----------------------------------------------------------------------
Expand Down Expand Up @@ -158,6 +194,17 @@ public SpaceVisitor visitor( final Binder binder )
return new QualifiedTypeVisitor( new QualifiedTypeBinder( binder ) );
}
};

/**
* Same as {@link #DEFAULT} but throwing {@link IllegalStateException} in case class cannot be scanned.
*/
Strategy DEFAULT_STRICT = new Strategy()
{
public SpaceVisitor visitor( final Binder binder )
{
return new QualifiedTypeVisitor( new QualifiedTypeBinder( binder ), true );
}
};
}

// ----------------------------------------------------------------------
Expand All @@ -166,7 +213,7 @@ public SpaceVisitor visitor( final Binder binder )

void scanForElements( final Binder binder )
{
new SpaceScanner( space, finder, true ).accept( strategy.visitor( binder ) );
new SpaceScanner( space, finder, isStrict ).accept( strategy.visitor( binder ) );
}

private void recordAndReplayElements( final Binder binder )
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ public final class SpaceScanner

private final ClassFinder finder;

/**
* If set to {@code true} will throw ISE in case class cannot be scanned
*/
private final boolean isStrict;

// ----------------------------------------------------------------------
Expand Down

0 comments on commit 7bc2ae3

Please sign in to comment.