private Boolean analyzeImplementation()

in org.eclipse.sisu.inject/src/org/eclipse/sisu/wire/DependencyAnalyzer.java [212:249]


    private Boolean analyzeImplementation( final TypeLiteral<?> type, final boolean reportErrors )
    {
        Boolean applyBinding = analyzedTypes.get( type );
        if ( null == applyBinding )
        {
            applyBinding = Boolean.TRUE;
            if ( TypeArguments.isConcrete( type ) && !type.toString().startsWith( "java" ) )
            {
                try
                {
                    // check methods+fields first and avoid short-circuiting to maximize dependency analysis results
                    final boolean rhs = analyzeInjectionPoints( InjectionPoint.forInstanceMethodsAndFields( type ) );
                    if ( !analyzeDependencies( InjectionPoint.forConstructorOf( type ).getDependencies() ) || !rhs )
                    {
                        applyBinding = Boolean.FALSE;
                    }
                }
                catch ( final RuntimeException e )
                {
                    if ( reportErrors )
                    {
                        Logs.trace( "Potential problem: {}", type, e );
                    }
                    applyBinding = Boolean.FALSE;
                }
                catch ( final LinkageError e )
                {
                    if ( reportErrors )
                    {
                        Logs.trace( "Potential problem: {}", type, e );
                    }
                    applyBinding = Boolean.FALSE;
                }
            }
            analyzedTypes.put( type, applyBinding );
        }
        return applyBinding;
    }