>Ok, that looks good.
>Are you using JUnit (like AbstractQi4jTest) to run your code? And if
>so, do you have the "create" and "lookup" in separate methods?
>That would be explain it, since these stores (and indexing) will drop
>the result between tests.
>Cheers
>Niclas
Yes, I use AbstractQi4jTest but I use this methods in one test.
That the full code:
public class CompanyServiceTest extends AbstractQi4jTest
{
private CompanyService companyService;
@Before
public void setUp() throws Exception
{
super.setUp();
final ServiceReference<CompanyService> service =
serviceLocator.findService(CompanyService.class);
companyService = service.get();
}
@Test
public void createCompany()
{
companyService.addCompany("Company 1");
}
@Test
public void findCompanies()
{
companyService.addCompany("Company 1");
companyService.addCompany("Company 2");
Assert.assertEquals(2,companyService.findAll().count());
}
@Override
public void assemble(ModuleAssembly module) throws AssemblyException
{
new RdfMemoryStoreAssembler().assemble(module);
// Entity store
module.addServices( MemoryEntityStoreService.class,
UuidIdentityGeneratorService.class )
.visibleIn(Visibility.application )
.instantiateOnStartup();
module.addEntities(Company.class);
module.addServices(
CompanyService.class);
}
}
And the service code(without clean up. Also I guess uow.complete is
unnecessary in the findAll, but I tried different variants):
@Mixins(CompanyService.CompanyServiceMixin.class)
public interface CompanyService extends ServiceComposite
{
void addCompany(String name);
Query<Company> findAll();
@Concerns(UnitOfWorkConcern.class)
abstract class CompanyServiceMixin implements CompanyService
{
private final UnitOfWorkFactory unitOfWorkFactory;
private final QueryBuilderFactory qbf;
public CompanyServiceMixin(@Structure UnitOfWorkFactory
unitOfWorkFactory, @Structure QueryBuilderFactory qbf)
{
this.unitOfWorkFactory = unitOfWorkFactory;
this.qbf = qbf;
}
@UnitOfWorkPropagation
@Override
public void addCompany(String name)
{
final UnitOfWork uow = unitOfWorkFactory.newUnitOfWork();
try
{
final EntityBuilder<Company> builder =
uow.newEntityBuilder(Company.class);
final Company prototype = builder.instance();
prototype.name().set(name);
final Company company = builder.instance();
uow.complete();
}
catch (Exception e)
{
uow.discard();
}
}
@UnitOfWorkPropagation
@Override
public Query<Company> findAll()
{
final UnitOfWork uow = unitOfWorkFactory.newUnitOfWork();
try{
final Query<Company> companies =
qbf.newQueryBuilder(Company.class).newQuery(uow);
while(qbf.newQueryBuilder(Company.class).newQuery(uow).iterator().hasNext())
{
System.out.println(qbf.newQueryBuilder(Company.class).newQuery(uow).iterator().next().name());
}
uow.complete();
return companies;
}catch (Exception e)
{
}
return null;
}
}
}
Best regards,
Anton Podviaznikov
_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev