use of org.qi4j.bootstrap.AssemblyException in project qi4j-sdk by Qi4j.
the class TypeToCompositeLookupTest method transients.
@Test
public void transients() throws ActivationException, AssemblyException {
Module module = new SingletonAssembler() {
@Override
public void assemble(ModuleAssembly module) throws AssemblyException {
module.transients(SomeOtherFoo.class);
}
}.module();
assertEquals(CATHEDRAL, module.newTransientBuilder(SomeOtherFoo.class).newInstance().bar());
assertEquals(CATHEDRAL, module.newTransientBuilder(BasicFoo.class).newInstance().bar());
assertEquals(CATHEDRAL, module.newTransientBuilder(Foo.class).newInstance().bar());
}
use of org.qi4j.bootstrap.AssemblyException in project qi4j-sdk by Qi4j.
the class TypeToCompositeLookupTest method servicesPluralDeclaration.
@Test
public void servicesPluralDeclaration() throws ActivationException, AssemblyException {
Module module = new SingletonAssembler() {
@Override
public void assemble(ModuleAssembly module) throws AssemblyException {
module.services(SomeOtherFoo.class, BasicFoo.class);
}
}.module();
assertEquals(1, Iterables.count(module.findServices(SomeOtherFoo.class)));
assertEquals(2, Iterables.count(module.findServices(BasicFoo.class)));
assertEquals(2, Iterables.count(module.findServices(Foo.class)));
assertEquals(CATHEDRAL, module.findService(SomeOtherFoo.class).get().bar());
// Exact type match first even if it is assembled _after_ an assignable, the assignable comes after
Iterator<ServiceReference<BasicFoo>> basicFoos = module.findServices(BasicFoo.class).iterator();
assertEquals(BAZAR, basicFoos.next().get().bar());
assertEquals(CATHEDRAL, basicFoos.next().get().bar());
assertFalse(basicFoos.hasNext());
// No exact type match, all assembled are assignable, follows assembly Type order
Iterator<ServiceReference<Foo>> foos = module.findServices(Foo.class).iterator();
assertEquals(CATHEDRAL, foos.next().get().bar());
assertEquals(BAZAR, foos.next().get().bar());
assertFalse(foos.hasNext());
}
use of org.qi4j.bootstrap.AssemblyException in project qi4j-sdk by Qi4j.
the class AbstractQi4jBaseTest method newApplication.
protected ApplicationDescriptor newApplication() throws AssemblyException {
ApplicationAssembler assembler = new ApplicationAssembler() {
@Override
public ApplicationAssembly assemble(ApplicationAssemblyFactory applicationFactory) throws AssemblyException {
ApplicationAssembly applicationAssembly = applicationFactory.newApplicationAssembly();
applicationAssembly.setMode(Application.Mode.test);
defineApplication(applicationAssembly);
return applicationAssembly;
}
};
try {
return qi4j.newApplicationModel(assembler);
} catch (AssemblyException e) {
assemblyException(e);
return null;
}
}
use of org.qi4j.bootstrap.AssemblyException in project qi4j-sdk by Qi4j.
the class AbstractQi4jScenarioTest method newApplication.
protected static ApplicationDescriptor newApplication() throws AssemblyException {
final Assembler asm = assembler;
ApplicationAssembler assembler = new ApplicationAssembler() {
@Override
public ApplicationAssembly assemble(ApplicationAssemblyFactory applicationFactory) throws AssemblyException {
return applicationFactory.newApplicationAssembly(asm);
}
};
try {
return qi4j.newApplicationModel(assembler);
} catch (AssemblyException e) {
assemblyException(e);
return null;
}
}
use of org.qi4j.bootstrap.AssemblyException in project qi4j-sdk by Qi4j.
the class MigrationTest method testMigration.
@Test
public void testMigration() throws UnitOfWorkCompletionException, IOException, ActivationException, AssemblyException {
// Set up version 1
String id;
StringInputOutput data_v1 = new StringInputOutput();
{
SingletonAssembler v1 = new SingletonAssembler() {
@Override
public void assemble(ModuleAssembly module) throws AssemblyException {
MigrationTest.this.assemble(module);
module.layer().application().setVersion("1.0");
}
};
UnitOfWork uow = v1.module().newUnitOfWork();
TestEntity1_0 entity = uow.newEntity(TestEntity1_0.class);
entity.foo().set("Some value");
entity.fooManyAssoc().add(entity);
entity.fooAssoc().set(entity);
id = entity.identity().get();
uow.complete();
BackupRestore backupRestore = v1.module().findService(BackupRestore.class).get();
backupRestore.backup().transferTo(data_v1);
}
// Set up version 1.1
StringInputOutput data_v1_1 = new StringInputOutput();
{
SingletonAssembler v1_1 = new SingletonAssembler() {
@Override
public void assemble(ModuleAssembly module) throws AssemblyException {
MigrationTest.this.assemble(module);
module.layer().application().setVersion("1.1");
}
};
BackupRestore testData = v1_1.module().findService(BackupRestore.class).get();
data_v1.transferTo(testData.restore());
UnitOfWork uow = v1_1.module().newUnitOfWork();
TestEntity1_1 entity = uow.get(TestEntity1_1.class, id);
assertThat("Property has been renamed", entity.newFoo().get(), CoreMatchers.equalTo("Some value"));
assertThat("ManyAssociation has been renamed", entity.newFooManyAssoc().count(), CoreMatchers.equalTo(1));
assertThat("Association has been renamed", entity.newFooAssoc().get(), CoreMatchers.equalTo(entity));
uow.complete();
testData.backup().transferTo(data_v1_1);
}
// Set up version 2.0
{
SingletonAssembler v2_0 = new SingletonAssembler() {
@Override
public void assemble(ModuleAssembly module) throws AssemblyException {
MigrationTest.this.assemble(module);
module.layer().application().setVersion("2.0");
}
};
BackupRestore testData = v2_0.module().findService(BackupRestore.class).get();
// Test migration from 1.0 -> 2.0
{
data_v1.transferTo(testData.restore());
UnitOfWork uow = v2_0.module().newUnitOfWork();
TestEntity2_0 entity = uow.get(TestEntity2_0.class, id);
assertThat("Property has been created", entity.bar().get(), CoreMatchers.equalTo("Some value"));
assertThat("Custom Property has been created", entity.customBar().get(), CoreMatchers.equalTo("Hello Some value"));
assertThat("ManyAssociation has been renamed", entity.newFooManyAssoc().count(), CoreMatchers.equalTo(1));
assertThat("Association has been renamed", entity.newFooAssoc().get(), CoreMatchers.equalTo(entity));
uow.complete();
}
}
// Set up version 3.0
{
SingletonAssembler v3_0 = new SingletonAssembler() {
@Override
public void assemble(ModuleAssembly module) throws AssemblyException {
MigrationTest.this.assemble(module);
module.layer().application().setVersion("3.0");
}
};
BackupRestore testData = v3_0.module().findService(BackupRestore.class).get();
data_v1_1.transferTo(testData.restore());
// Test migration from 1.0 -> 3.0
{
data_v1.transferTo(testData.restore());
UnitOfWork uow = v3_0.module().newUnitOfWork();
org.qi4j.migration.moved.TestEntity2_0 entity = uow.get(org.qi4j.migration.moved.TestEntity2_0.class, id);
uow.complete();
}
}
}
Aggregations