use of org.qi4j.bootstrap.ModuleAssembly in project qi4j-sdk by Qi4j.
the class MixinVisibilityTest method testMixinInModuleIsVisible.
@Test
public void testMixinInModuleIsVisible() throws Exception {
Energy4Java boot = new Energy4Java();
Assembler[][][] assemblers = new Assembler[][][] { { // Layer
{ // Module 1
new Assembler() {
public void assemble(ModuleAssembly module) throws AssemblyException {
module.setName("Module A");
module.transients(B1Composite.class);
module.objects(ObjectA.class);
}
} } } };
Application app = boot.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());
}
use of org.qi4j.bootstrap.ModuleAssembly in project qi4j-sdk by Qi4j.
the class StructureTest method createApplicationUsingApplicationAssembly.
@Test
public void createApplicationUsingApplicationAssembly() throws AssemblyException {
Energy4Java boot = new Energy4Java();
boot.newApplication(new ApplicationAssembler() {
public ApplicationAssembly assemble(ApplicationAssemblyFactory applicationFactory) throws AssemblyException {
ApplicationAssembly applicationAssembly = applicationFactory.newApplicationAssembly();
// Application Layer
LayerAssembly applicationLayer = applicationAssembly.layer("Application");
ModuleAssembly applicationModule = applicationLayer.module("Application");
new DomainApplicationAssembler().assemble(applicationModule);
// View Layer
LayerAssembly viewLayer = applicationAssembly.layer("View");
ModuleAssembly viewModule = viewLayer.module("View");
new ViewAssembler().assemble(viewModule);
viewLayer.uses(applicationLayer);
return applicationAssembly;
}
});
}
use of org.qi4j.bootstrap.ModuleAssembly in project qi4j-sdk by Qi4j.
the class TypeToCompositeLookupTest method objectsAmbiguousDeclaration.
@Test
public void objectsAmbiguousDeclaration() throws ActivationException, AssemblyException {
Module module = new SingletonAssembler() {
@Override
public void assemble(ModuleAssembly module) throws AssemblyException {
module.objects(SomeOtherFooImpl.class, BasicFooImpl.class);
}
}.module();
assertEquals(CATHEDRAL, module.newObject(SomeOtherFooImpl.class).bar());
assertEquals(BAZAR, module.newObject(BasicFooImpl.class).bar());
try {
module.newObject(Foo.class);
fail("Ambiguous type exception not detected for Objects");
} catch (AmbiguousTypeException expected) {
}
}
use of org.qi4j.bootstrap.ModuleAssembly in project qi4j-sdk by Qi4j.
the class TypeToCompositeLookupTest method transientsAmbiguousDeclaration.
@Test
public void transientsAmbiguousDeclaration() throws ActivationException, AssemblyException {
Module module = new SingletonAssembler() {
@Override
public void assemble(ModuleAssembly module) throws AssemblyException {
module.transients(SomeOtherFoo.class, BasicFoo.class);
}
}.module();
assertEquals(CATHEDRAL, module.newTransientBuilder(SomeOtherFoo.class).newInstance().bar());
assertEquals(BAZAR, module.newTransientBuilder(BasicFoo.class).newInstance().bar());
try {
module.newTransientBuilder(Foo.class);
fail("Ambiguous type exception not detected for Transients");
} catch (AmbiguousTypeException expected) {
}
}
use of org.qi4j.bootstrap.ModuleAssembly in project qi4j-sdk by Qi4j.
the class AvailableServiceTest method givenEnablableServiceWhenInjectWithAvailableQualifierThenInjectCorrectly.
@Test
public void givenEnablableServiceWhenInjectWithAvailableQualifierThenInjectCorrectly() throws ActivationException, AssemblyException {
SingletonAssembler assembler = new SingletonAssembler() {
public void assemble(ModuleAssembly module) throws AssemblyException {
module.objects(TestObject.class);
module.services(TestServiceComposite2.class);
module.entities(TestServiceConfiguration.class);
new EntityTestAssembler().assemble(module);
}
};
TestObject object = assembler.module().newObject(TestObject.class);
assertThat("service is unavailable", object.getService(), nullValue());
ServiceReference<TestServiceComposite2> serviceRef = assembler.module().findService(TestServiceComposite2.class);
serviceRef.get().get().enabled().set(true);
serviceRef.get().save();
object = assembler.module().newObject(TestObject.class);
assertThat("service is available", object.getService(), notNullValue());
}
Aggregations