You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by ni...@apache.org on 2016/04/14 08:13:10 UTC
[04/34] zest-java git commit: Multi Layer abstract test framework for
indexing in multi-layered applications, as it should work.
Multi Layer abstract test framework for indexing in multi-layered applications, as it should work.
Project: http://git-wip-us.apache.org/repos/asf/zest-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-java/commit/6138c305
Tree: http://git-wip-us.apache.org/repos/asf/zest-java/tree/6138c305
Diff: http://git-wip-us.apache.org/repos/asf/zest-java/diff/6138c305
Branch: refs/heads/develop
Commit: 6138c3057cb6a8546ca4d026fd30f26efa7bcfc0
Parents: 5d2a62b
Author: Niclas Hedhman <ni...@hedhman.org>
Authored: Tue Dec 15 12:17:55 2015 +0800
Committer: Niclas Hedhman <ni...@hedhman.org>
Committed: Tue Dec 15 12:17:55 2015 +0800
----------------------------------------------------------------------
.../layered/LayeredLayerAssembler.java | 2 +-
.../AbstractMultiLayeredIndexingTest.java | 86 ++++++++++++++------
.../zest/test/indexing/layered/AccessLayer.java | 39 ---------
.../test/indexing/layered/AccountModule.java | 52 ------------
.../indexing/layered/ApplicationAssembler.java | 52 ------------
.../zest/test/indexing/layered/ConfigLayer.java | 37 ---------
.../test/indexing/layered/ConfigModule.java | 41 ----------
.../zest/test/indexing/layered/DomainLayer.java | 38 ---------
.../test/indexing/layered/FamilyModule.java | 54 ------------
.../test/indexing/layered/IndexingLayer.java | 37 ---------
.../test/indexing/layered/PersistenceLayer.java | 37 ---------
.../indexing/layered/PersistenceModule.java | 44 ----------
.../zest/test/indexing/layered/Suite1Case1.java | 76 +++++++++++++++++
.../zest/test/indexing/layered/Suite1Case2.java | 76 +++++++++++++++++
.../zest/test/indexing/layered/TestCase.java | 2 +-
.../zest/test/indexing/layered/TestCase1.java | 76 -----------------
.../zest/test/indexing/layered/TestCase2.java | 76 -----------------
.../test/indexing/layered/TestSuite1Module.java | 40 ---------
.../test/indexing/layered/TestSuite2Module.java | 38 ---------
.../test/indexing/layered/TestSuite3Module.java | 38 ---------
.../indexing/layered/assembly/AccessLayer.java | 65 +++++++++++++++
.../layered/assembly/AccountModule.java | 52 ++++++++++++
.../layered/assembly/ApplicationAssembler.java | 71 ++++++++++++++++
.../indexing/layered/assembly/ConfigLayer.java | 37 +++++++++
.../indexing/layered/assembly/ConfigModule.java | 41 ++++++++++
.../indexing/layered/assembly/DomainLayer.java | 38 +++++++++
.../indexing/layered/assembly/FamilyModule.java | 54 ++++++++++++
.../layered/assembly/IndexingLayer.java | 38 +++++++++
.../layered/assembly/PersistenceLayer.java | 37 +++++++++
.../layered/assembly/PersistenceModule.java | 44 ++++++++++
.../layered/assembly/TestExecutionModule.java | 46 +++++++++++
.../layered/assembly/TestSuite1Module.java | 53 ++++++++++++
.../layered/assembly/TestSuite2Module.java | 38 +++++++++
.../layered/assembly/TestSuite3Module.java | 38 +++++++++
34 files changed, 867 insertions(+), 726 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/bootstrap/src/main/java/org/apache/zest/bootstrap/layered/LayeredLayerAssembler.java
----------------------------------------------------------------------
diff --git a/core/bootstrap/src/main/java/org/apache/zest/bootstrap/layered/LayeredLayerAssembler.java b/core/bootstrap/src/main/java/org/apache/zest/bootstrap/layered/LayeredLayerAssembler.java
index 898591e..ccec8d2 100644
--- a/core/bootstrap/src/main/java/org/apache/zest/bootstrap/layered/LayeredLayerAssembler.java
+++ b/core/bootstrap/src/main/java/org/apache/zest/bootstrap/layered/LayeredLayerAssembler.java
@@ -60,7 +60,7 @@ public abstract class LayeredLayerAssembler
return moduleName;
}
- private ModuleAssembler instantiateAssembler( LayerAssembly layer,
+ protected ModuleAssembler instantiateAssembler( LayerAssembly layer,
Class<? extends ModuleAssembler> modulerAssemblerClass
)
throws InstantiationException, IllegalAccessException, java.lang.reflect.InvocationTargetException, NoSuchMethodException
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/AbstractMultiLayeredIndexingTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/AbstractMultiLayeredIndexingTest.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/AbstractMultiLayeredIndexingTest.java
index 7a55fe0..a4f6790 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/AbstractMultiLayeredIndexingTest.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/AbstractMultiLayeredIndexingTest.java
@@ -21,23 +21,51 @@
package org.apache.zest.test.indexing.layered;
import org.apache.zest.api.activation.ActivationException;
+import org.apache.zest.api.common.Optional;
+import org.apache.zest.api.injection.scope.Service;
+import org.apache.zest.api.injection.scope.Structure;
import org.apache.zest.api.service.ServiceReference;
+import org.apache.zest.api.service.qualifier.Tagged;
import org.apache.zest.api.structure.Application;
import org.apache.zest.api.structure.Module;
+import org.apache.zest.api.unitofwork.UnitOfWork;
+import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
+import org.apache.zest.api.usecase.UsecaseBuilder;
import org.apache.zest.bootstrap.AssemblyException;
import org.apache.zest.bootstrap.layered.ModuleAssembler;
import org.apache.zest.test.indexing.TestData;
+import org.apache.zest.test.indexing.layered.assembly.ApplicationAssembler;
import org.junit.Before;
import org.junit.Test;
public abstract class AbstractMultiLayeredIndexingTest
{
- static Class<? extends ModuleAssembler> indexingAssembler;
+ public static Class<? extends ModuleAssembler> indexingAssembler;
protected Application application;
- private Iterable<ServiceReference<TestCase>> suite1;
- private Iterable<ServiceReference<TestCase>> suite2;
- private Iterable<ServiceReference<TestCase>> suite3;
+
+ @Structure
+ private UnitOfWorkFactory uowf;
+
+ @Optional
+ @Service
+ @Tagged( "Suite1Case1" )
+ private ServiceReference<TestCase> suite1Case1;
+
+ @Optional
+ @Service
+ @Tagged( "Suite1Case2" )
+ private ServiceReference<TestCase> suite1Case2;
+
+ @Optional
+ @Service
+ @Tagged( "Suite2Case1" )
+ private ServiceReference<TestCase> suite2Case1;
+
+ @Optional
+ @Service
+ @Tagged( "Suite3Case1" )
+ private ServiceReference<TestCase> suite3Case1;
public AbstractMultiLayeredIndexingTest( Class<? extends ModuleAssembler> indexingAssembler )
{
@@ -49,53 +77,61 @@ public abstract class AbstractMultiLayeredIndexingTest
throws AssemblyException, ActivationException
{
ApplicationAssembler assembler =
- new ApplicationAssembler( "Multi Layered Indexing Test", "1.0", Application.Mode.development );
+ new ApplicationAssembler( "Multi Layered Indexing Test", "1.0", Application.Mode.development, getClass() );
assembler.initialize();
assembler.start();
application = assembler.application();
Module familyModule = application.findModule( "Domain Layer", "Family Module" );
TestData.populate( familyModule );
- Module suite1Module = application.findModule( "Access Layer", "TestSuite1 Module" );
- suite1 = suite1Module.findServices( TestCase.class );
-
- Module suite2Module = application.findModule( "Access Layer", "TestSuite2 Module" );
- suite2 = suite2Module.findServices( TestCase.class );
+ Module executionModule = application.findModule( "Access Layer", "TestExecution Module" );
+ executionModule.injectTo( this );
+ }
- Module suite3Module = application.findModule( "Access Layer", "TestSuite3 Module" );
- suite3 = suite3Module.findServices( TestCase.class );
+ @Test
+ public void suite1Case1()
+ throws Exception
+ {
+ runTest( suite1Case1, "suite1Case1" );
}
@Test
- public void suite1Tests()
+ public void suite1Case2()
throws Exception
{
- Iterable<ServiceReference<TestCase>> suite = this.suite1;
- runTest( suite );
+ runTest( suite1Case2, "suite1Case2" );
}
@Test
- public void suite2Tests()
+ public void suite2Case1()
throws Exception
{
- runTest( suite2 );
+ runTest( suite2Case1, "suite2Case1" );
}
@Test
- public void suite3Tests()
+ public void suite3Case1()
throws Exception
{
- runTest( suite3 );
+ runTest( suite3Case1, "suite3Case1" );
}
- private void runTest( Iterable<ServiceReference<TestCase>> suite )
+ private void runTest( ServiceReference<TestCase> testCaseRef, String testName )
throws Exception
{
- for( ServiceReference<TestCase> ref : suite )
+ if( testCaseRef == null )
+ {
+ System.err.println( "TestCase is not defined." );
+ }
+ else
{
- TestCase testCase = ref.get();
- testCase.when();
- testCase.given();
- testCase.expect();
+ TestCase testCase = testCaseRef.get();
+ try(UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( testName ) ))
+ {
+ testCase.given();
+ testCase.when();
+ testCase.expect();
+ uow.complete();
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/AccessLayer.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/AccessLayer.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/AccessLayer.java
deleted file mode 100644
index 6b1b4e7..0000000
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/AccessLayer.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.zest.test.indexing.layered;
-
-import org.apache.zest.bootstrap.AssemblyException;
-import org.apache.zest.bootstrap.LayerAssembly;
-import org.apache.zest.bootstrap.layered.LayeredLayerAssembler;
-
-class AccessLayer extends LayeredLayerAssembler
-{
-
- @Override
- public LayerAssembly assemble( LayerAssembly layer )
- throws AssemblyException
- {
- createModule( layer, TestSuite1Module.class );
- createModule( layer, TestSuite2Module.class );
- createModule( layer, TestSuite3Module.class );
- return layer;
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/AccountModule.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/AccountModule.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/AccountModule.java
deleted file mode 100644
index 0df4aee..0000000
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/AccountModule.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.zest.test.indexing.layered;
-
-import org.apache.zest.api.common.Visibility;
-import org.apache.zest.bootstrap.AssemblyException;
-import org.apache.zest.bootstrap.LayerAssembly;
-import org.apache.zest.bootstrap.ModuleAssembly;
-import org.apache.zest.bootstrap.layered.ModuleAssembler;
-import org.apache.zest.spi.uuid.UuidIdentityGeneratorService;
-import org.apache.zest.test.indexing.model.Account;
-import org.apache.zest.test.indexing.model.Domain;
-import org.apache.zest.test.indexing.model.File;
-import org.apache.zest.test.indexing.model.Host;
-import org.apache.zest.test.indexing.model.Port;
-import org.apache.zest.test.indexing.model.Protocol;
-import org.apache.zest.test.indexing.model.QueryParam;
-import org.apache.zest.test.indexing.model.URL;
-
-class AccountModule
- implements ModuleAssembler
-{
-
- @Override
- public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
- throws AssemblyException
- {
- module.entities( Account.class, Domain.class ).visibleIn( Visibility.layer );
- module.values( File.class, Host.class, Port.class, Protocol.class, QueryParam.class, URL.class )
- .visibleIn( Visibility.layer );
- module.services( UuidIdentityGeneratorService.class );
- return module;
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/ApplicationAssembler.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/ApplicationAssembler.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/ApplicationAssembler.java
deleted file mode 100644
index 1b11738..0000000
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/ApplicationAssembler.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.zest.test.indexing.layered;
-
-import org.apache.zest.api.structure.Application;
-import org.apache.zest.bootstrap.ApplicationAssembly;
-import org.apache.zest.bootstrap.AssemblyException;
-import org.apache.zest.bootstrap.LayerAssembly;
-import org.apache.zest.bootstrap.layered.LayeredApplicationAssembler;
-
-class ApplicationAssembler extends LayeredApplicationAssembler
-{
-
- public ApplicationAssembler( String name, String version, Application.Mode mode )
- throws AssemblyException
- {
- super( name, version, mode );
- }
-
- @Override
- protected void assembleLayers( ApplicationAssembly assembly )
- throws AssemblyException
- {
- LayerAssembly accessLayer = createLayer( AccessLayer.class );
- LayerAssembly domainLayer = createLayer( DomainLayer.class );
- LayerAssembly persistenceLayer = createLayer( PersistenceLayer.class );
- LayerAssembly indexingLayer = createLayer( IndexingLayer.class );
- LayerAssembly configLayer = createLayer( ConfigLayer.class );
- accessLayer.uses( domainLayer );
- domainLayer.uses( persistenceLayer, indexingLayer );
- persistenceLayer.uses( configLayer );
- indexingLayer.uses( configLayer );
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/ConfigLayer.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/ConfigLayer.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/ConfigLayer.java
deleted file mode 100644
index 0b4fada..0000000
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/ConfigLayer.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.zest.test.indexing.layered;
-
-import org.apache.zest.bootstrap.AssemblyException;
-import org.apache.zest.bootstrap.LayerAssembly;
-import org.apache.zest.bootstrap.layered.LayeredLayerAssembler;
-
-class ConfigLayer extends LayeredLayerAssembler
-{
-
- @Override
- public LayerAssembly assemble( LayerAssembly layer )
- throws AssemblyException
- {
- createModule( layer, ConfigModule.class );
- return layer;
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/ConfigModule.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/ConfigModule.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/ConfigModule.java
deleted file mode 100644
index 00265f6..0000000
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/ConfigModule.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.zest.test.indexing.layered;
-
-import org.apache.zest.api.common.Visibility;
-import org.apache.zest.bootstrap.AssemblyException;
-import org.apache.zest.bootstrap.LayerAssembly;
-import org.apache.zest.bootstrap.ModuleAssembly;
-import org.apache.zest.bootstrap.layered.ModuleAssembler;
-import org.apache.zest.entitystore.memory.MemoryEntityStoreService;
-
-class ConfigModule
- implements ModuleAssembler
-{
-
- @Override
- public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
- throws AssemblyException
- {
- module.services( MemoryEntityStoreService.class ).visibleIn( Visibility.application );
- return module;
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/DomainLayer.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/DomainLayer.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/DomainLayer.java
deleted file mode 100644
index 5704d48..0000000
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/DomainLayer.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.zest.test.indexing.layered;
-
-import org.apache.zest.bootstrap.AssemblyException;
-import org.apache.zest.bootstrap.LayerAssembly;
-import org.apache.zest.bootstrap.layered.LayeredLayerAssembler;
-
-class DomainLayer extends LayeredLayerAssembler
-{
-
- @Override
- public LayerAssembly assemble( LayerAssembly layer )
- throws AssemblyException
- {
- createModule( layer, FamilyModule.class );
- createModule( layer, AccountModule.class );
- return layer;
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/FamilyModule.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/FamilyModule.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/FamilyModule.java
deleted file mode 100644
index 56a4939..0000000
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/FamilyModule.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.zest.test.indexing.layered;
-
-import org.apache.zest.api.common.Visibility;
-import org.apache.zest.bootstrap.AssemblyException;
-import org.apache.zest.bootstrap.LayerAssembly;
-import org.apache.zest.bootstrap.ModuleAssembly;
-import org.apache.zest.bootstrap.layered.ModuleAssembler;
-import org.apache.zest.spi.uuid.UuidIdentityGeneratorService;
-import org.apache.zest.test.indexing.model.Address;
-import org.apache.zest.test.indexing.model.Cat;
-import org.apache.zest.test.indexing.model.City;
-import org.apache.zest.test.indexing.model.Dog;
-import org.apache.zest.test.indexing.model.Female;
-import org.apache.zest.test.indexing.model.Male;
-
-class FamilyModule
- implements ModuleAssembler
-{
-
- @Override
- public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
- throws AssemblyException
- {
- module.entities( Male.class,
- Female.class,
- City.class,
- Cat.class,
- Dog.class ).visibleIn( Visibility.application );
-
- module.values( Address.class ).visibleIn( Visibility.application );
- module.services( UuidIdentityGeneratorService.class );
- return module;
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/IndexingLayer.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/IndexingLayer.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/IndexingLayer.java
deleted file mode 100644
index 489092d..0000000
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/IndexingLayer.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.zest.test.indexing.layered;
-
-import org.apache.zest.bootstrap.AssemblyException;
-import org.apache.zest.bootstrap.LayerAssembly;
-import org.apache.zest.bootstrap.layered.LayeredLayerAssembler;
-
-class IndexingLayer extends LayeredLayerAssembler
-{
-
- @Override
- public LayerAssembly assemble( LayerAssembly layer )
- throws AssemblyException
- {
- createModule( layer, AbstractMultiLayeredIndexingTest.indexingAssembler );
- return layer;
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/PersistenceLayer.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/PersistenceLayer.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/PersistenceLayer.java
deleted file mode 100644
index cc22513..0000000
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/PersistenceLayer.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.zest.test.indexing.layered;
-
-import org.apache.zest.bootstrap.AssemblyException;
-import org.apache.zest.bootstrap.LayerAssembly;
-import org.apache.zest.bootstrap.layered.LayeredLayerAssembler;
-
-class PersistenceLayer extends LayeredLayerAssembler
-{
-
- @Override
- public LayerAssembly assemble( LayerAssembly layer )
- throws AssemblyException
- {
- createModule( layer, PersistenceModule.class );
- return layer;
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/PersistenceModule.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/PersistenceModule.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/PersistenceModule.java
deleted file mode 100644
index 0b92f56..0000000
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/PersistenceModule.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.zest.test.indexing.layered;
-
-import org.apache.zest.api.common.Visibility;
-import org.apache.zest.api.value.ValueSerialization;
-import org.apache.zest.bootstrap.AssemblyException;
-import org.apache.zest.bootstrap.LayerAssembly;
-import org.apache.zest.bootstrap.ModuleAssembly;
-import org.apache.zest.bootstrap.layered.ModuleAssembler;
-import org.apache.zest.entitystore.memory.MemoryEntityStoreService;
-import org.apache.zest.valueserialization.orgjson.OrgJsonValueSerializationService;
-
-class PersistenceModule
- implements ModuleAssembler
-{
-
- @Override
- public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
- throws AssemblyException
- {
- module.services( MemoryEntityStoreService.class ).visibleIn( Visibility.application );
- module.services( OrgJsonValueSerializationService.class ).taggedWith( ValueSerialization.Formats.JSON );
- return module;
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/Suite1Case1.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/Suite1Case1.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/Suite1Case1.java
new file mode 100644
index 0000000..366533d
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/Suite1Case1.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.zest.test.indexing.layered;
+
+import org.apache.zest.api.injection.scope.Structure;
+import org.apache.zest.api.query.Query;
+import org.apache.zest.api.query.QueryBuilder;
+import org.apache.zest.api.query.QueryBuilderFactory;
+import org.apache.zest.api.query.QueryExpressions;
+import org.apache.zest.api.unitofwork.UnitOfWork;
+import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
+import org.apache.zest.api.unitofwork.concern.UnitOfWorkPropagation;
+import org.apache.zest.test.indexing.model.Male;
+import org.apache.zest.test.indexing.model.Person;
+
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.junit.Assert.assertThat;
+
+public class Suite1Case1
+ implements TestCase
+{
+ @Structure
+ private UnitOfWorkFactory uowf;
+
+ @Structure
+ private QueryBuilderFactory qbf;
+
+ private QueryBuilder<Male> builder;
+
+ private Query<Male> query;
+
+ @Override
+ public void given()
+ throws Exception
+ {
+ QueryBuilder<Male> qb = qbf.newQueryBuilder( Male.class );
+ Male prototype = QueryExpressions.templateFor( Male.class );
+ builder = qb.where( QueryExpressions.eq(prototype.name(), "Joe Doe" ) );
+ }
+
+ @Override
+ public void when()
+ throws Exception
+ {
+ UnitOfWork uow = uowf.currentUnitOfWork();
+ query = uow.newQuery( builder );
+ }
+
+ @Override
+ public void expect()
+ throws Exception
+ {
+ assertThat( query.count(), equalTo(1) );
+ Male male = query.find();
+ assertThat( male.title().get(), equalTo( Person.Title.MR ));
+ assertThat( male.name().get(), equalTo( "Joe Doe" ));
+ }
+}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/Suite1Case2.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/Suite1Case2.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/Suite1Case2.java
new file mode 100644
index 0000000..cdc4dc2
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/Suite1Case2.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.zest.test.indexing.layered;
+
+import org.apache.zest.api.injection.scope.Structure;
+import org.apache.zest.api.query.Query;
+import org.apache.zest.api.query.QueryBuilder;
+import org.apache.zest.api.query.QueryBuilderFactory;
+import org.apache.zest.api.query.QueryExpressions;
+import org.apache.zest.api.unitofwork.UnitOfWork;
+import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
+import org.apache.zest.api.unitofwork.concern.UnitOfWorkPropagation;
+import org.apache.zest.test.indexing.model.Male;
+import org.apache.zest.test.indexing.model.Person;
+
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.junit.Assert.assertThat;
+
+public class Suite1Case2
+ implements TestCase
+{
+ @Structure
+ private UnitOfWorkFactory uowf;
+
+ @Structure
+ private QueryBuilderFactory qbf;
+
+ private QueryBuilder<Male> builder;
+
+ private Query<Male> query;
+
+ @Override
+ public void given()
+ throws Exception
+ {
+ QueryBuilder<Male> qb = qbf.newQueryBuilder( Male.class );
+ Male prototype = QueryExpressions.templateFor( Male.class );
+ builder = qb.where( QueryExpressions.eq(prototype.name(), "Joe Doe" ) );
+ }
+
+ @Override
+ @UnitOfWorkPropagation
+ public void when()
+ throws Exception
+ {
+ UnitOfWork uow = uowf.currentUnitOfWork();
+ query = uow.newQuery( builder );
+ }
+
+ @Override
+ public void expect()
+ throws Exception
+ {
+ assertThat( query.count(), equalTo(1) );
+ Male male = query.find();
+ assertThat( male.title().get(), equalTo( Person.Title.MR ));
+ }
+}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestCase.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestCase.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestCase.java
index 5dd2e71..b5e0bc4 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestCase.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestCase.java
@@ -20,7 +20,7 @@
package org.apache.zest.test.indexing.layered;
-interface TestCase
+public interface TestCase
{
void given()
throws Exception;
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestCase1.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestCase1.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestCase1.java
deleted file mode 100644
index e2dd860..0000000
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestCase1.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.zest.test.indexing.layered;
-
-import org.apache.zest.api.injection.scope.Structure;
-import org.apache.zest.api.query.Query;
-import org.apache.zest.api.query.QueryBuilder;
-import org.apache.zest.api.query.QueryBuilderFactory;
-import org.apache.zest.api.query.QueryExpressions;
-import org.apache.zest.api.unitofwork.UnitOfWork;
-import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
-import org.apache.zest.api.unitofwork.concern.UnitOfWorkPropagation;
-import org.apache.zest.test.indexing.model.Male;
-import org.apache.zest.test.indexing.model.Person;
-
-import static org.hamcrest.core.IsEqual.equalTo;
-import static org.junit.Assert.assertThat;
-
-public class TestCase1
- implements TestCase
-{
- @Structure
- private UnitOfWorkFactory uowf;
-
- @Structure
- private QueryBuilderFactory qbf;
-
- private QueryBuilder<Male> builder;
-
- private Query<Male> query;
-
- @Override
- public void given()
- throws Exception
- {
- QueryBuilder<Male> qb = qbf.newQueryBuilder( Male.class );
- Male prototype = QueryExpressions.templateFor( Male.class );
- builder = qb.where( QueryExpressions.eq(prototype.name(), "Joe Doe" ) );
- }
-
- @Override
- @UnitOfWorkPropagation
- public void when()
- throws Exception
- {
- UnitOfWork uow = uowf.currentUnitOfWork();
- query = uow.newQuery( builder );
- }
-
- @Override
- public void expect()
- throws Exception
- {
- assertThat( query.count(), equalTo(1) );
- Male male = query.find();
- assertThat( male.title().get(), equalTo( Person.Title.MR ));
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestCase2.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestCase2.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestCase2.java
deleted file mode 100644
index dcd448a..0000000
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestCase2.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.zest.test.indexing.layered;
-
-import org.apache.zest.api.injection.scope.Structure;
-import org.apache.zest.api.query.Query;
-import org.apache.zest.api.query.QueryBuilder;
-import org.apache.zest.api.query.QueryBuilderFactory;
-import org.apache.zest.api.query.QueryExpressions;
-import org.apache.zest.api.unitofwork.UnitOfWork;
-import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
-import org.apache.zest.api.unitofwork.concern.UnitOfWorkPropagation;
-import org.apache.zest.test.indexing.model.Male;
-import org.apache.zest.test.indexing.model.Person;
-
-import static org.hamcrest.core.IsEqual.equalTo;
-import static org.junit.Assert.assertThat;
-
-public class TestCase2
- implements TestCase
-{
- @Structure
- private UnitOfWorkFactory uowf;
-
- @Structure
- private QueryBuilderFactory qbf;
-
- private QueryBuilder<Male> builder;
-
- private Query<Male> query;
-
- @Override
- public void given()
- throws Exception
- {
- QueryBuilder<Male> qb = qbf.newQueryBuilder( Male.class );
- Male prototype = QueryExpressions.templateFor( Male.class );
- builder = qb.where( QueryExpressions.eq(prototype.name(), "Joe Doe" ) );
- }
-
- @Override
- @UnitOfWorkPropagation
- public void when()
- throws Exception
- {
- UnitOfWork uow = uowf.currentUnitOfWork();
- query = uow.newQuery( builder );
- }
-
- @Override
- public void expect()
- throws Exception
- {
- assertThat( query.count(), equalTo(1) );
- Male male = query.find();
- assertThat( male.title().get(), equalTo( Person.Title.MR ));
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestSuite1Module.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestSuite1Module.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestSuite1Module.java
deleted file mode 100644
index 01011db..0000000
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestSuite1Module.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.zest.test.indexing.layered;
-
-import org.apache.zest.bootstrap.AssemblyException;
-import org.apache.zest.bootstrap.LayerAssembly;
-import org.apache.zest.bootstrap.ModuleAssembly;
-import org.apache.zest.bootstrap.layered.ModuleAssembler;
-
-class TestSuite1Module
- implements ModuleAssembler
-{
-
- @Override
- public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
- throws AssemblyException
- {
- module.services( TestCase.class ).withMixins( TestCase1.class );
- module.services( TestCase.class ).withMixins( TestCase2.class );
- return module;
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestSuite2Module.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestSuite2Module.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestSuite2Module.java
deleted file mode 100644
index 3d8a9e6..0000000
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestSuite2Module.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.zest.test.indexing.layered;
-
-import org.apache.zest.bootstrap.AssemblyException;
-import org.apache.zest.bootstrap.LayerAssembly;
-import org.apache.zest.bootstrap.ModuleAssembly;
-import org.apache.zest.bootstrap.layered.ModuleAssembler;
-
-class TestSuite2Module
- implements ModuleAssembler
-{
-
- @Override
- public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
- throws AssemblyException
- {
- return module;
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestSuite3Module.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestSuite3Module.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestSuite3Module.java
deleted file mode 100644
index 2c41329..0000000
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestSuite3Module.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.zest.test.indexing.layered;
-
-import org.apache.zest.bootstrap.AssemblyException;
-import org.apache.zest.bootstrap.LayerAssembly;
-import org.apache.zest.bootstrap.ModuleAssembly;
-import org.apache.zest.bootstrap.layered.ModuleAssembler;
-
-class TestSuite3Module
- implements ModuleAssembler
-{
-
- @Override
- public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
- throws AssemblyException
- {
- return module;
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/AccessLayer.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/AccessLayer.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/AccessLayer.java
new file mode 100644
index 0000000..0d349ff
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/AccessLayer.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.zest.test.indexing.layered.assembly;
+
+import java.lang.reflect.InvocationTargetException;
+import org.apache.zest.bootstrap.AssemblyException;
+import org.apache.zest.bootstrap.LayerAssembly;
+import org.apache.zest.bootstrap.layered.LayeredLayerAssembler;
+import org.apache.zest.bootstrap.layered.ModuleAssembler;
+
+class AccessLayer extends LayeredLayerAssembler
+{
+
+ private final Class<?> testClass;
+
+ AccessLayer( Class<?> testClass )
+ {
+ this.testClass = testClass;
+ }
+
+ @Override
+ public LayerAssembly assemble( LayerAssembly layer )
+ throws AssemblyException
+ {
+ createModule( layer, TestExecutionModule.class );
+ createModule( layer, TestSuite1Module.class );
+ createModule( layer, TestSuite2Module.class );
+ createModule( layer, TestSuite3Module.class );
+ return layer;
+ }
+
+ @Override
+ protected ModuleAssembler instantiateAssembler( LayerAssembly layer,
+ Class<? extends ModuleAssembler> moduleAssemblerClass
+ )
+ throws InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException
+ {
+ if( moduleAssemblerClass.equals(TestExecutionModule.class))
+ {
+ return new TestExecutionModule( testClass );
+ }
+ else
+ {
+ return super.instantiateAssembler( layer, moduleAssemblerClass );
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/AccountModule.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/AccountModule.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/AccountModule.java
new file mode 100644
index 0000000..d398e6f
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/AccountModule.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.zest.test.indexing.layered.assembly;
+
+import org.apache.zest.api.common.Visibility;
+import org.apache.zest.bootstrap.AssemblyException;
+import org.apache.zest.bootstrap.LayerAssembly;
+import org.apache.zest.bootstrap.ModuleAssembly;
+import org.apache.zest.bootstrap.layered.ModuleAssembler;
+import org.apache.zest.spi.uuid.UuidIdentityGeneratorService;
+import org.apache.zest.test.indexing.model.Account;
+import org.apache.zest.test.indexing.model.Domain;
+import org.apache.zest.test.indexing.model.File;
+import org.apache.zest.test.indexing.model.Host;
+import org.apache.zest.test.indexing.model.Port;
+import org.apache.zest.test.indexing.model.Protocol;
+import org.apache.zest.test.indexing.model.QueryParam;
+import org.apache.zest.test.indexing.model.URL;
+
+class AccountModule
+ implements ModuleAssembler
+{
+
+ @Override
+ public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
+ throws AssemblyException
+ {
+ module.entities( Account.class, Domain.class ).visibleIn( Visibility.layer );
+ module.values( File.class, Host.class, Port.class, Protocol.class, QueryParam.class, URL.class )
+ .visibleIn( Visibility.layer );
+ module.services( UuidIdentityGeneratorService.class );
+ return module;
+ }
+}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/ApplicationAssembler.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/ApplicationAssembler.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/ApplicationAssembler.java
new file mode 100644
index 0000000..399cc9b
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/ApplicationAssembler.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.zest.test.indexing.layered.assembly;
+
+import java.lang.reflect.InvocationTargetException;
+import org.apache.zest.api.structure.Application;
+import org.apache.zest.bootstrap.ApplicationAssembly;
+import org.apache.zest.bootstrap.AssemblyException;
+import org.apache.zest.bootstrap.LayerAssembly;
+import org.apache.zest.bootstrap.layered.IllegalLayerAssemblerException;
+import org.apache.zest.bootstrap.layered.LayerAssembler;
+import org.apache.zest.bootstrap.layered.LayeredApplicationAssembler;
+
+public class ApplicationAssembler extends LayeredApplicationAssembler
+{
+
+ private final Class<?> testClass;
+
+ public ApplicationAssembler( String name, String version, Application.Mode mode, Class<?> testClass )
+ throws AssemblyException
+ {
+ super( name, version, mode );
+ this.testClass = testClass;
+ }
+
+ @Override
+ protected void assembleLayers( ApplicationAssembly assembly )
+ throws AssemblyException
+ {
+ LayerAssembly accessLayer = createLayer( AccessLayer.class );
+ LayerAssembly domainLayer = createLayer( DomainLayer.class );
+ LayerAssembly persistenceLayer = createLayer( PersistenceLayer.class );
+ LayerAssembly indexingLayer = createLayer( IndexingLayer.class );
+ LayerAssembly configLayer = createLayer( ConfigLayer.class );
+ accessLayer.uses( domainLayer );
+ domainLayer.uses( persistenceLayer, indexingLayer );
+ persistenceLayer.uses( configLayer );
+ indexingLayer.uses( configLayer );
+ }
+
+ @Override
+ protected <T extends LayerAssembler> LayerAssembler instantiateLayerAssembler( Class<T> layerAssemblerClass,
+ LayerAssembly layer
+ )
+ throws InstantiationException, IllegalAccessException, InvocationTargetException, IllegalLayerAssemblerException
+ {
+ if( layerAssemblerClass.equals( AccessLayer.class ))
+ {
+ return new AccessLayer( testClass );
+ }
+ return super.instantiateLayerAssembler( layerAssemblerClass, layer );
+ }
+}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/ConfigLayer.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/ConfigLayer.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/ConfigLayer.java
new file mode 100644
index 0000000..04c732c
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/ConfigLayer.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.zest.test.indexing.layered.assembly;
+
+import org.apache.zest.bootstrap.AssemblyException;
+import org.apache.zest.bootstrap.LayerAssembly;
+import org.apache.zest.bootstrap.layered.LayeredLayerAssembler;
+
+class ConfigLayer extends LayeredLayerAssembler
+{
+
+ @Override
+ public LayerAssembly assemble( LayerAssembly layer )
+ throws AssemblyException
+ {
+ createModule( layer, ConfigModule.class );
+ return layer;
+ }
+}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/ConfigModule.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/ConfigModule.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/ConfigModule.java
new file mode 100644
index 0000000..ecd4939
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/ConfigModule.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.zest.test.indexing.layered.assembly;
+
+import org.apache.zest.api.common.Visibility;
+import org.apache.zest.bootstrap.AssemblyException;
+import org.apache.zest.bootstrap.LayerAssembly;
+import org.apache.zest.bootstrap.ModuleAssembly;
+import org.apache.zest.bootstrap.layered.ModuleAssembler;
+import org.apache.zest.entitystore.memory.MemoryEntityStoreService;
+
+class ConfigModule
+ implements ModuleAssembler
+{
+
+ @Override
+ public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
+ throws AssemblyException
+ {
+ module.services( MemoryEntityStoreService.class ).visibleIn( Visibility.application );
+ return module;
+ }
+}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/DomainLayer.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/DomainLayer.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/DomainLayer.java
new file mode 100644
index 0000000..e5ca391
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/DomainLayer.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.zest.test.indexing.layered.assembly;
+
+import org.apache.zest.bootstrap.AssemblyException;
+import org.apache.zest.bootstrap.LayerAssembly;
+import org.apache.zest.bootstrap.layered.LayeredLayerAssembler;
+
+class DomainLayer extends LayeredLayerAssembler
+{
+
+ @Override
+ public LayerAssembly assemble( LayerAssembly layer )
+ throws AssemblyException
+ {
+ createModule( layer, FamilyModule.class );
+ createModule( layer, AccountModule.class );
+ return layer;
+ }
+}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/FamilyModule.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/FamilyModule.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/FamilyModule.java
new file mode 100644
index 0000000..9e24b3f
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/FamilyModule.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.zest.test.indexing.layered.assembly;
+
+import org.apache.zest.api.common.Visibility;
+import org.apache.zest.bootstrap.AssemblyException;
+import org.apache.zest.bootstrap.LayerAssembly;
+import org.apache.zest.bootstrap.ModuleAssembly;
+import org.apache.zest.bootstrap.layered.ModuleAssembler;
+import org.apache.zest.spi.uuid.UuidIdentityGeneratorService;
+import org.apache.zest.test.indexing.model.Address;
+import org.apache.zest.test.indexing.model.Cat;
+import org.apache.zest.test.indexing.model.City;
+import org.apache.zest.test.indexing.model.Dog;
+import org.apache.zest.test.indexing.model.Female;
+import org.apache.zest.test.indexing.model.Male;
+
+class FamilyModule
+ implements ModuleAssembler
+{
+
+ @Override
+ public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
+ throws AssemblyException
+ {
+ module.entities( Male.class,
+ Female.class,
+ City.class,
+ Cat.class,
+ Dog.class ).visibleIn( Visibility.application );
+
+ module.values( Address.class ).visibleIn( Visibility.application );
+ module.services( UuidIdentityGeneratorService.class );
+ return module;
+ }
+}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/IndexingLayer.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/IndexingLayer.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/IndexingLayer.java
new file mode 100644
index 0000000..63933ea
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/IndexingLayer.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.zest.test.indexing.layered.assembly;
+
+import org.apache.zest.bootstrap.AssemblyException;
+import org.apache.zest.bootstrap.LayerAssembly;
+import org.apache.zest.bootstrap.layered.LayeredLayerAssembler;
+import org.apache.zest.test.indexing.layered.AbstractMultiLayeredIndexingTest;
+
+class IndexingLayer extends LayeredLayerAssembler
+{
+
+ @Override
+ public LayerAssembly assemble( LayerAssembly layer )
+ throws AssemblyException
+ {
+ createModule( layer, AbstractMultiLayeredIndexingTest.indexingAssembler );
+ return layer;
+ }
+}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/PersistenceLayer.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/PersistenceLayer.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/PersistenceLayer.java
new file mode 100644
index 0000000..fe0cd25
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/PersistenceLayer.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.zest.test.indexing.layered.assembly;
+
+import org.apache.zest.bootstrap.AssemblyException;
+import org.apache.zest.bootstrap.LayerAssembly;
+import org.apache.zest.bootstrap.layered.LayeredLayerAssembler;
+
+class PersistenceLayer extends LayeredLayerAssembler
+{
+
+ @Override
+ public LayerAssembly assemble( LayerAssembly layer )
+ throws AssemblyException
+ {
+ createModule( layer, PersistenceModule.class );
+ return layer;
+ }
+}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/PersistenceModule.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/PersistenceModule.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/PersistenceModule.java
new file mode 100644
index 0000000..b6ae1e7
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/PersistenceModule.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.zest.test.indexing.layered.assembly;
+
+import org.apache.zest.api.common.Visibility;
+import org.apache.zest.api.value.ValueSerialization;
+import org.apache.zest.bootstrap.AssemblyException;
+import org.apache.zest.bootstrap.LayerAssembly;
+import org.apache.zest.bootstrap.ModuleAssembly;
+import org.apache.zest.bootstrap.layered.ModuleAssembler;
+import org.apache.zest.entitystore.memory.MemoryEntityStoreService;
+import org.apache.zest.valueserialization.orgjson.OrgJsonValueSerializationService;
+
+class PersistenceModule
+ implements ModuleAssembler
+{
+
+ @Override
+ public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
+ throws AssemblyException
+ {
+ module.services( OrgJsonValueSerializationService.class ).taggedWith( ValueSerialization.Formats.JSON );
+ module.services( MemoryEntityStoreService.class ).visibleIn( Visibility.application );
+ return module;
+ }
+}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/TestExecutionModule.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/TestExecutionModule.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/TestExecutionModule.java
new file mode 100644
index 0000000..bf3fe2b
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/TestExecutionModule.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.zest.test.indexing.layered.assembly;
+
+import org.apache.zest.api.common.Visibility;
+import org.apache.zest.bootstrap.AssemblyException;
+import org.apache.zest.bootstrap.LayerAssembly;
+import org.apache.zest.bootstrap.ModuleAssembly;
+import org.apache.zest.bootstrap.layered.ModuleAssembler;
+
+public class TestExecutionModule
+ implements ModuleAssembler
+{
+ private final Class<?> testClass;
+
+ public TestExecutionModule( Class<?> testClass)
+ {
+ this.testClass = testClass;
+ }
+
+ @Override
+ public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
+ throws AssemblyException
+ {
+ module.objects( testClass ).visibleIn( Visibility.layer );
+ return module;
+ }
+}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/TestSuite1Module.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/TestSuite1Module.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/TestSuite1Module.java
new file mode 100644
index 0000000..efcb64b
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/TestSuite1Module.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.zest.test.indexing.layered.assembly;
+
+import org.apache.zest.api.common.Visibility;
+import org.apache.zest.bootstrap.AssemblyException;
+import org.apache.zest.bootstrap.LayerAssembly;
+import org.apache.zest.bootstrap.ModuleAssembly;
+import org.apache.zest.bootstrap.layered.ModuleAssembler;
+import org.apache.zest.test.indexing.layered.Suite1Case1;
+import org.apache.zest.test.indexing.layered.Suite1Case2;
+import org.apache.zest.test.indexing.layered.TestCase;
+
+class TestSuite1Module
+ implements ModuleAssembler
+{
+
+ @Override
+ public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
+ throws AssemblyException
+ {
+ declareTestCase( module, Suite1Case1.class );
+ declareTestCase( module, Suite1Case2.class );
+ return module;
+ }
+
+ private void declareTestCase( ModuleAssembly module, Class<?> testcaseMixin )
+ {
+ module.services( TestCase.class )
+ .withMixins( testcaseMixin )
+ .visibleIn( Visibility.layer )
+ .taggedWith( testcaseMixin.getSimpleName() );
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/TestSuite2Module.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/TestSuite2Module.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/TestSuite2Module.java
new file mode 100644
index 0000000..ac3f655
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/TestSuite2Module.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.zest.test.indexing.layered.assembly;
+
+import org.apache.zest.bootstrap.AssemblyException;
+import org.apache.zest.bootstrap.LayerAssembly;
+import org.apache.zest.bootstrap.ModuleAssembly;
+import org.apache.zest.bootstrap.layered.ModuleAssembler;
+
+class TestSuite2Module
+ implements ModuleAssembler
+{
+
+ @Override
+ public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
+ throws AssemblyException
+ {
+ return module;
+ }
+}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/6138c305/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/TestSuite3Module.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/TestSuite3Module.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/TestSuite3Module.java
new file mode 100644
index 0000000..f93ddf7
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/assembly/TestSuite3Module.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.zest.test.indexing.layered.assembly;
+
+import org.apache.zest.bootstrap.AssemblyException;
+import org.apache.zest.bootstrap.LayerAssembly;
+import org.apache.zest.bootstrap.ModuleAssembly;
+import org.apache.zest.bootstrap.layered.ModuleAssembler;
+
+class TestSuite3Module
+ implements ModuleAssembler
+{
+
+ @Override
+ public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
+ throws AssemblyException
+ {
+ return module;
+ }
+}