@Override public TransientDeclaration visibleIn( Visibility visibility ) { for( TransientDeclaration declaration : declarations ) { declaration.visibleIn( visibility ); } return this; }
@Override public void assemble( ModuleAssembly module ) throws AssemblyException { module.setName( "Beside" ); module.transients( BesideApplicationVisible.class ).visibleIn( Visibility.application ); module.transients( BesideLayerVisible.class ).visibleIn( Visibility.layer ); module.transients( BesideModuleVisible.class ).visibleIn( Visibility.module ); } }
public void assemble( ModuleAssembly module ) throws AssemblyException { module.setName( "Module B" ); module.transients( CompositeB.class ).visibleIn( Visibility.module ); } }
@Override public void assemble( ModuleAssembly module ) { module.setName( "Module B" ); module.transients( B1Composite.class ).visibleIn( Visibility.module ); } }
protected void defineMonetaryModule( ModuleAssembly module ) { module.defaultServices(); module.values( Currency.class ).visibleIn( Visibility.layer ); module.transients( CheckBookSlip.class ); module.transients( Currency.Builder.class ).visibleIn( Visibility.application ); }
protected void defineMonetaryModule( ModuleAssembly module ) { module.defaultServices(); module.values( Currency.class ).visibleIn( Visibility.layer ); module.transients( CheckBookSlip.class ); module.transients( Currency.Builder.class ).visibleIn( Visibility.application ); }
@Override public void assemble( ModuleAssembly module ) throws AssemblyException { module.layer().setName( "Above Layer" ); module.setName( "Above" ); module.transients( AboveApplicationVisible.class ).visibleIn( Visibility.application ); module.transients( AboveLayerVisible.class ).visibleIn( Visibility.layer ); module.transients( AboveModuleVisible.class ).visibleIn( Visibility.module ); } }
@Override public void assemble( ModuleAssembly module ) throws AssemblyException { module.layer().setName( "Below Layer" ); module.setName( "Below" ); module.transients( BelowApplicationVisible.class ).visibleIn( Visibility.application ); module.transients( BelowLayerVisible.class ).visibleIn( Visibility.layer ); module.transients( BelowModuleVisible.class ).visibleIn( Visibility.module ); new EntityTestAssembler().visibleIn( Visibility.application ).assemble( module ); } }
@Override public void assemble( ModuleAssembly module ) throws AssemblyException { module.layer().setName( "From Layer" ); module.setName( "From" ); module.services( FromService.class ); module.entities( FromEntity.class ); module.transients( FromTransient.class ); module.values( FromValue.class ); module.objects( FromObject.class ); module.transients( ModuleApplicationVisible.class ).visibleIn( Visibility.application ); module.transients( ModuleLayerVisible.class ).visibleIn( Visibility.layer ); module.transients( ModuleModuleVisible.class ).visibleIn( Visibility.module ); } }
public Application givenFixture1() throws AssemblyException { Energy4Java polygene = new Energy4Java(); return polygene.newApplication( factory -> factory.newApplicationAssembly( new Assembler[][][] { { { module -> module.transients( TestComposite1.class ) }, { module -> module.transients( TestComposite2.class ).visibleIn( Visibility.layer ) } } } ) ); }
@Test public void testModel2XML() throws AssemblyException, TransformerException { Energy4Java polygene = new Energy4Java( ); ApplicationDescriptor model = polygene.newApplicationModel( factory -> { ApplicationAssembly assembly = factory.newApplicationAssembly(); assembly.setName( "Test application" ); LayerAssembly webLayer = assembly.layer( "Web" ); LayerAssembly domainLayer = assembly.layer( "Domain" ); LayerAssembly infrastructureLayer = assembly.layer( "Infrastructure" ); webLayer.uses( domainLayer, infrastructureLayer ); domainLayer.uses( infrastructureLayer ); ModuleAssembly rest = webLayer.module( "REST" ); rest.transients( TestTransient.class ).visibleIn( Visibility.layer ); domainLayer.module( "Domain" ); infrastructureLayer.module( "Database" ); return assembly; } ); Document document = new Model2XML().apply( model ); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.setOutputProperty( "indent", "yes" ); transformer.setOutputProperty( "{http://xml.apache.org/xslt}indent-amount", "2" ); transformer.transform( new DOMSource( document ), new StreamResult( System.out ) ); }
contexts.transients( contextClass ).visibleIn( Visibility.application );
module.transients( B1Composite.class ).visibleIn( Visibility.layer );
module.setName( "Module B" ); module.transients( B1Composite.class, B2Composite.class ) .visibleIn( Visibility.layer );
( ModuleAssembly module ) -> module.transients( MyTransient.class ).visibleIn( Visibility.layer )
module.transients( B1Composite.class ).visibleIn( Visibility.application );
@Test public void testMixinInLayerIsVisible() throws Exception { Energy4Java polygene = new Energy4Java(); Assembler[][][] assemblers = new Assembler[][][] { { // Layer { module -> { module.setName( "Module A" ); module.objects( ObjectA.class ); } }, { module -> { module.setName( "Module B" ); module.transients( B1Composite.class ).visibleIn( Visibility.layer ); } } } }; Application app = polygene.newApplication( new ApplicationAssemblerAdapter( assemblers ) { } ); app.activate(); ObjectA object = app.findModule( "Layer 1", "Module A" ).newObject( ObjectA.class ); assertEquals( "ok", object.test1() ); assertEquals( "abc", object.test2() ); }