@Override public void assemble( ModuleAssembly module ) { findClasses( Resource.class ).filter( isAssignableFrom( ValueComposite.class ) ) .forEach( resourceType -> module.values( resourceType ) .visibleIn( Visibility.application ) ); } }
private static Stream<File> findFiles( File directory, final Predicate<File> filter ) { File[] listedFiles = directory.listFiles(); if( listedFiles == null ) { return Stream.of(); } return Stream.concat( Stream.of( listedFiles ).filter( filter ), Stream.of( listedFiles ) .filter( File::isDirectory ) .map( dir -> findFiles( dir, filter ) ) .flatMap( Function.identity() ) ); }
@Test public void testClassScannerFiles() throws ActivationException, AssemblyException { SingletonAssembler singleton = new SingletonAssembler( module -> { // Find all classes starting from TestValue, but include only the ones that are named *Value findClasses( TestValue.class ).filter( matches( ".*Value" ) ) .forEach( module::values ); } ); singleton.module().newValueBuilder( TestValue.class ); singleton.module().newValueBuilder( Test2Value.class ); }
@Test public void givenBuilderUseWhenBuildingApplicationExpectSuccess() throws AssemblyException, ActivationException { ApplicationBuilder builder = new ApplicationBuilder( "Build from API test." ); builder.withLayer( "layer1" ).using( "layer2" ).using( "layer3" ); builder.withLayer( "layer2" ); builder.withLayer( "layer3" ) .withModule( "test module" ) .withAssemblers( findClasses( getClass() ).filter( matches( ".*ServiceAssembler" ) ) .collect( toList() ) ); Application application = builder.newApplication(); Module module = application.findModule( "layer3", "test module" ); TestService service = module.findService( TestService.class ).get(); assertThat( service.sayHello(), equalTo( "Hello Polygene!" ) ); }
@Test public void testClassScannerJar() { Assert.assertEquals( 185, findClasses( Test.class ).count() ); } }
private static Stream<File> findFiles( File directory, final Predicate<File> filter ) { File[] listedFiles = directory.listFiles(); if( listedFiles == null ) { return Stream.of(); } return Stream.concat( Stream.of( listedFiles ).filter( filter ), Stream.of( listedFiles ) .filter( File::isDirectory ) .map( dir -> findFiles( dir, filter ) ) .flatMap( Function.identity() ) ); }
@Override public void assemble( ModuleAssembly module ) throws AssemblyException { ClassScanner.findClasses( DomainEntity.class ).forEach( module::entities ); module.values( ContactsValue.class, ContactValue.class ); new EntityTestAssembler().assemble( module ); } };
Stream<File> classFiles = findFiles( path, candidate -> candidate.getName().endsWith( ".class" ) ); return classFiles .map( classFile ->
List<? extends Class<?>> responseWriters = ClassScanner.findClasses( DefaultResponseWriter.class ) .filter( isNotAnAbstract.and( isResponseWriterClass ) ) .collect( toList() );
Stream<File> classFiles = findFiles( path, candidate -> candidate.getName().endsWith( ".class" ) ); return classFiles .map( classFile ->
List<? extends Class<?>> responseWriters = ClassScanner.findClasses( DefaultResponseWriter.class ) .filter( isNotAnAbstract.and( isResponseWriterClass ) ) .collect( toList() );
ClassScanner.findClasses( User.class ) .filter( isAssignableFrom( EntityComposite.class ) ) .filter( hasModifier( Modifier.INTERFACE ) ) List<? extends Class<?>> contextClasses = ClassScanner.findClasses( Context.class ) .filter( hasModifier( Modifier.INTERFACE ).negate() ) .collect( toList() ); ClassScanner.findClasses( Context.class ) .filter( isAssignableFrom( ValueComposite.class ) ) .forEach( valueClass -> contexts.values( valueClass ).visibleIn( Visibility.application ) ); List<? extends Class<?>> resourceClasses = ClassScanner.findClasses( RootResource.class ) .collect( toList() ); for( Class<?> resourceClass : resourceClasses )