use of org.qi4j.bootstrap.AssemblyException in project qi4j-sdk by Qi4j.
the class CompositeModelResolverTest method testWhenDependentMixinsThenOrderMixins.
@Test
public void testWhenDependentMixinsThenOrderMixins() throws Exception {
Module module = new SingletonAssembler() {
public void assemble(ModuleAssembly module) throws AssemblyException {
module.transients(TestComposite1.class);
}
}.module();
Assert.assertEquals("ok", module.newTransient(TestComposite1.class).testB());
}
use of org.qi4j.bootstrap.AssemblyException in project qi4j-sdk by Qi4j.
the class PrivateEntityUnitOfWorkTest method givenAppWithPrivateEntityWhenUnitOfWorkCanSeeItThenCanCommit.
@Test
public void givenAppWithPrivateEntityWhenUnitOfWorkCanSeeItThenCanCommit() throws Exception {
System.setProperty("qi4j.compacttrace", "off");
Energy4Java is = new Energy4Java();
Application app = is.newApplication(new ApplicationAssembler() {
public ApplicationAssembly assemble(ApplicationAssemblyFactory applicationFactory) throws AssemblyException {
return applicationFactory.newApplicationAssembly(new Assembler[][][] { { { new Assembler() {
public void assemble(ModuleAssembly module) throws AssemblyException {
module.objects(PrivateEntityUnitOfWorkTest.class);
}
} } }, { { new Assembler() {
public void assemble(ModuleAssembly module) throws AssemblyException {
module.entities(ProductEntity.class);
module.entities(ProductCatalogEntity.class).visibleIn(application);
module.values(ProductInfo.class);
new EntityTestAssembler().assemble(module);
}
} } } });
}
});
app.activate();
Module module = app.findModule("Layer 1", "Module 1");
module.injectTo(this);
UnitOfWork unitOfWork = uowf.newUnitOfWork();
try {
unitOfWork.newEntity(ProductEntity.class);
fail("Should not be able to create product here");
} catch (EntityTypeNotFoundException e) {
// Ok
ProductCatalog catalog = unitOfWork.newEntity(ProductCatalog.class, "1");
unitOfWork.complete();
}
unitOfWork = uowf.newUnitOfWork();
String id;
try {
ProductCatalog catalog = unitOfWork.get(ProductCatalog.class, "1");
id = ((Identity) catalog.newProduct()).identity().get();
unitOfWork.complete();
} finally {
unitOfWork.discard();
}
unitOfWork = module.newUnitOfWork();
try {
ProductCatalog catalog = unitOfWork.get(ProductCatalog.class, "1");
Product product = catalog.findProduct(id);
product.price().set(100);
unitOfWork.complete();
} finally {
unitOfWork.discard();
}
}
use of org.qi4j.bootstrap.AssemblyException in project qi4j-sdk by Qi4j.
the class TypeToCompositeLookupTest method entities.
@Test
public void entities() throws UnitOfWorkCompletionException, ActivationException, AssemblyException {
Module module = new SingletonAssembler() {
@Override
public void assemble(ModuleAssembly module) throws AssemblyException {
new EntityTestAssembler().assemble(module);
module.entities(SomeOtherFoo.class);
}
}.module();
UnitOfWork uow = module.newUnitOfWork();
SomeOtherFoo someOtherFoo = uow.newEntityBuilder(SomeOtherFoo.class).newInstance();
BasicFoo basicFoo = uow.newEntityBuilder(BasicFoo.class).newInstance();
Foo foo = uow.newEntityBuilder(Foo.class).newInstance();
assertEquals(CATHEDRAL, someOtherFoo.bar());
assertEquals(CATHEDRAL, basicFoo.bar());
assertEquals(CATHEDRAL, foo.bar());
String someOtherFooIdentity = ((Identity) someOtherFoo).identity().get();
String basicFooIdentity = ((Identity) basicFoo).identity().get();
String fooIdentity = ((Identity) foo).identity().get();
uow.complete();
uow = module.newUnitOfWork();
uow.get(SomeOtherFoo.class, someOtherFooIdentity);
uow.get(BasicFoo.class, basicFooIdentity);
uow.get(Foo.class, fooIdentity);
uow.discard();
}
use of org.qi4j.bootstrap.AssemblyException in project qi4j-sdk by Qi4j.
the class TypeToCompositeLookupTest method entitiesAmbiguousDeclaration.
@Test
public void entitiesAmbiguousDeclaration() throws UnitOfWorkCompletionException, ActivationException, AssemblyException {
Module module = new SingletonAssembler() {
@Override
public void assemble(ModuleAssembly module) throws AssemblyException {
new EntityTestAssembler().assemble(module);
module.entities(SomeOtherFoo.class, BasicFoo.class);
}
}.module();
UnitOfWork uow = module.newUnitOfWork();
SomeOtherFoo someOtherFoo = uow.newEntityBuilder(SomeOtherFoo.class).newInstance();
BasicFoo basicFoo = uow.newEntityBuilder(BasicFoo.class).newInstance();
try {
uow.newEntityBuilder(Foo.class).newInstance();
fail("Ambiguous type exception not detected for Entities");
} catch (AmbiguousTypeException expected) {
}
// Specific Type used
assertEquals(CATHEDRAL, uow.newEntityBuilder(SomeOtherFoo.class).newInstance().bar());
// Specific Type used
assertEquals(BAZAR, uow.newEntityBuilder(BasicFoo.class).newInstance().bar());
String someOtherFooIdentity = ((Identity) someOtherFoo).identity().get();
String basicFooIdentity = ((Identity) basicFoo).identity().get();
uow.complete();
uow = module.newUnitOfWork();
assertEquals(CATHEDRAL, uow.get(SomeOtherFoo.class, someOtherFooIdentity).bar());
assertEquals(BAZAR, uow.get(BasicFoo.class, basicFooIdentity).bar());
assertEquals(CATHEDRAL, uow.get(Foo.class, someOtherFooIdentity).bar());
assertEquals(BAZAR, uow.get(Foo.class, basicFooIdentity).bar());
uow.discard();
}
use of org.qi4j.bootstrap.AssemblyException in project qi4j-sdk by Qi4j.
the class TypeToCompositeLookupTest method valuesAmbiguousDeclaration.
@Test
public void valuesAmbiguousDeclaration() throws ActivationException, AssemblyException {
Module module = new SingletonAssembler() {
@Override
public void assemble(ModuleAssembly module) throws AssemblyException {
module.values(SomeOtherFoo.class, BasicFoo.class);
}
}.module();
assertEquals(CATHEDRAL, module.newValueBuilder(SomeOtherFoo.class).newInstance().bar());
assertEquals(BAZAR, module.newValueBuilder(BasicFoo.class).newInstance().bar());
try {
module.newValueBuilder(Foo.class);
fail("Ambiguous type exception not detected for Values");
} catch (AmbiguousTypeException expected) {
}
}
Aggregations