@Override public void assemble( ModuleAssembly module ) throws AssemblyException { for( Assembler assembler : assemblers ) { assembler.assemble( module ); } } }
void initialize() { for( Assembler assembler : assemblers ) { assembler.assemble( module ); } }
void initialize() { for( Assembler assembler : assemblers ) { assembler.assemble( module ); } }
@Override public void assemble( ModuleAssembly module ) throws AssemblyException { for( Assembler assembler : assemblers ) { assembler.assemble( module ); } } }
@Override public void assemble( ModuleAssembly module ) { if( assemble != null ) { assemble.assemble( module ); } } }
@Override public void assemble( ModuleAssembly module ) { if( assemble != null ) { assemble.assemble( module ); } } }
private void addRequiredAssemblers() { REQUIRED_ASSEMBLERS .entrySet() .stream() .filter( entry -> serviceAssemblies.stream().noneMatch( serviceAssembly -> serviceAssembly.hasType( entry.getKey() ) ) ) .forEach( entry -> entry.getValue().assemble( this ) ); }
@Override public ServiceDeclaration defaultServices() { Class[] assembledServicesTypes = DEFAULT_ASSEMBLERS .entrySet() .stream() .filter( entry -> serviceAssemblies.stream().noneMatch( serviceAssembly -> serviceAssembly.hasType( entry.getKey() ) ) ) .peek( entry -> entry.getValue().assemble( this ) ) .map( Map.Entry::getKey ) .toArray( Class[]::new ); return services( assembledServicesTypes ); }
private ModuleAssembly addModule( LayerAssembly layerAssembly, String name, Assembler assembler ) { ModuleAssembly moduleAssembly = layerAssembly.module( name ); assembler.assemble( moduleAssembly ); return moduleAssembly; }
@Override public ApplicationAssembly newApplicationAssembly( Assembler[][][] assemblers ) { ApplicationAssembly applicationAssembly = newApplicationAssembly(); // Build all layers bottom-up LayerAssembly below = null; for( int layer = assemblers.length - 1; layer >= 0; layer-- ) { // Create Layer LayerAssembly layerAssembly = applicationAssembly.layer( "Layer " + ( layer + 1 ) ); for( int module = 0; module < assemblers[ layer ].length; module++ ) { // Create Module ModuleAssembly moduleAssembly = layerAssembly.module( "Module " + ( module + 1 ) ); for( Assembler assembler : assemblers[ layer ][ module ] ) { // Register Assembler assembler.assemble( moduleAssembly ); } } if( below != null ) { layerAssembly.uses( below ); // Link layers } below = layerAssembly; } return applicationAssembly; }
@Override protected final void defineApplication( ApplicationAssembly app ) { app.setName( "app" ); LayerAssembly domain = app.layer( "domain" ); ModuleAssembly model = domain.module( "model" ); model.entities( Person.class, PersonList.class ) .visibleIn( Visibility.layer ); ModuleAssembly services = domain.module( "services" ); services.services( Commands.class, Queries.class ) .instantiateOnStartup() .visibleIn( Visibility.application ); LayerAssembly config = app.layer( "config" ); ModuleAssembly configModule = config.module( "config" ); new EntityTestAssembler() .visibleIn( Visibility.module ) .assemble( configModule ); LayerAssembly infra = app.layer( "infra" ); ModuleAssembly storage = infra.module( "storage" ); entityStoreAssembler( configModule, Visibility.application ) .visibleIn( Visibility.application ) .assemble( storage ); metricsAssembler() .visibleIn( Visibility.application ) .assemble( infra.module( "metrics" ) ); domain.uses( infra ); infra.uses( config ); }
@Override protected final void defineApplication( ApplicationAssembly app ) { app.setName( "app" ); LayerAssembly domain = app.layer( "domain" ); ModuleAssembly model = domain.module( "model" ); model.entities( Person.class, PersonList.class ) .visibleIn( Visibility.layer ); ModuleAssembly services = domain.module( "services" ); services.services( Commands.class, Queries.class ) .instantiateOnStartup() .visibleIn( Visibility.application ); LayerAssembly config = app.layer( "config" ); ModuleAssembly configModule = config.module( "config" ); new EntityTestAssembler() .visibleIn( Visibility.module ) .assemble( configModule ); LayerAssembly infra = app.layer( "infra" ); ModuleAssembly storage = infra.module( "storage" ); entityStoreAssembler( configModule, Visibility.application ) .visibleIn( Visibility.application ) .assemble( storage ); metricsAssembler() .visibleIn( Visibility.application ) .assemble( infra.module( "metrics" ) ); domain.uses( infra ); infra.uses( config ); }
@Override public void assemble( ModuleAssembly module ) throws AssemblyException { new FileConfigurationAssembler() .withOverride( new FileConfigurationOverride().withConventionalRoot( tmpDir.getRoot() ) ) .assemble( module ); ModuleAssembly prefModule = module.layer().module( "PrefModule" ); prefModule.entities( NativeConfiguration.class ).visibleIn( Visibility.application ); prefModule.forMixin( NativeConfiguration.class ).declareDefaults() .tripleIndexes().set( "spoc,cspo" ); prefModule.forMixin( NativeConfiguration.class ).declareDefaults() .dataDirectory().set( new File( tmpDir.getRoot(), "rdf-data" ).getAbsolutePath() ); new EntityTestAssembler().assemble( prefModule ); module.entities( ExampleEntity.class ); EntityTestAssembler testAss = new EntityTestAssembler(); testAss.assemble( module ); Assembler rdfAssembler = new RdfNativeSesameStoreAssembler(); rdfAssembler.assemble( module ); }