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();
}
}