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:09 UTC

[03/34] zest-java git commit: Starting to create a Multi Layer abstract test framework for indexing.

Starting to create a Multi Layer abstract test framework for indexing.


Project: http://git-wip-us.apache.org/repos/asf/zest-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-java/commit/5d2a62be
Tree: http://git-wip-us.apache.org/repos/asf/zest-java/tree/5d2a62be
Diff: http://git-wip-us.apache.org/repos/asf/zest-java/diff/5d2a62be

Branch: refs/heads/develop
Commit: 5d2a62bef95828222c17c1c2b413ac43d8d2b71b
Parents: e120d16
Author: Niclas Hedhman <ni...@hedhman.org>
Authored: Mon Dec 14 21:54:10 2015 +0800
Committer: Niclas Hedhman <ni...@hedhman.org>
Committed: Mon Dec 14 21:54:10 2015 +0800

----------------------------------------------------------------------
 .../layered/LayeredLayerAssembler.java          |   9 +-
 .../test/indexing/AbstractComplexQueryTest.java |   2 +-
 .../org/apache/zest/test/indexing/TestData.java |  11 +-
 .../AbstractMultiLayeredIndexingTest.java       | 101 +++++++++++++++++++
 .../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/TestCase.java    |  33 ++++++
 .../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 +++++++
 .../zest/test/indexing/model/Address.java       |   1 -
 .../apache/zest/test/indexing/model/Cat.java    |   3 +-
 .../apache/zest/test/indexing/model/City.java   |   3 +-
 .../apache/zest/test/indexing/model/Dog.java    |   3 +-
 .../apache/zest/test/indexing/model/Domain.java |   3 +-
 .../apache/zest/test/indexing/model/Female.java |   3 +-
 .../apache/zest/test/indexing/model/File.java   |   1 -
 .../apache/zest/test/indexing/model/Host.java   |   1 -
 .../apache/zest/test/indexing/model/Male.java   |   3 +-
 .../apache/zest/test/indexing/model/Port.java   |   1 -
 .../zest/test/indexing/model/Protocol.java      |   1 -
 .../zest/test/indexing/model/QueryParam.java    |   1 -
 .../apache/zest/test/indexing/model/URL.java    |   1 -
 33 files changed, 855 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zest-java/blob/5d2a62be/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 920ef54..898591e 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
@@ -63,17 +63,20 @@ public abstract class LayeredLayerAssembler
     private ModuleAssembler instantiateAssembler( LayerAssembly layer,
                                                   Class<? extends ModuleAssembler> modulerAssemblerClass
     )
-        throws InstantiationException, IllegalAccessException, java.lang.reflect.InvocationTargetException
+        throws InstantiationException, IllegalAccessException, java.lang.reflect.InvocationTargetException, NoSuchMethodException
     {
         ModuleAssembler moduleAssembler;
         try
         {
-            Constructor<? extends ModuleAssembler> assemblyConstructor = modulerAssemblerClass.getConstructor( ModuleAssembly.class );
+            Constructor<? extends ModuleAssembler> assemblyConstructor = modulerAssemblerClass.getDeclaredConstructor( ModuleAssembly.class );
+            assemblyConstructor.setAccessible( true );
             moduleAssembler = assemblyConstructor.newInstance( layer );
         }
         catch( NoSuchMethodException e )
         {
-            moduleAssembler = modulerAssemblerClass.newInstance();
+            Constructor<? extends ModuleAssembler> assemblyConstructor = modulerAssemblerClass.getDeclaredConstructor();
+            assemblyConstructor.setAccessible( true );
+            moduleAssembler = assemblyConstructor.newInstance();
         }
         return moduleAssembler;
     }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/5d2a62be/core/testsupport/src/main/java/org/apache/zest/test/indexing/AbstractComplexQueryTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/AbstractComplexQueryTest.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/AbstractComplexQueryTest.java
index 55b211c..4698753 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/AbstractComplexQueryTest.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/AbstractComplexQueryTest.java
@@ -56,7 +56,7 @@ public abstract class AbstractComplexQueryTest
     public void showNetwork()
         throws IOException
     {
-        IndexExporter indexerExporter = module.<IndexExporter>findService( IndexExporter.class ).get();
+        IndexExporter indexerExporter = module.findService( IndexExporter.class ).get();
         indexerExporter.exportReadableToStream( System.out );
     }
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/5d2a62be/core/testsupport/src/main/java/org/apache/zest/test/indexing/TestData.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/TestData.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/TestData.java
index e83b71b..b07055e 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/TestData.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/TestData.java
@@ -22,6 +22,7 @@ import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.zest.test.indexing.model.Dog;
 import org.joda.time.DateTime;
 import org.joda.time.LocalDate;
 import org.joda.time.LocalDateTime;
@@ -47,9 +48,9 @@ import static org.joda.time.DateTimeZone.UTC;
 /**
  * Utility class to populate Index/Query tests data.
  */
-class TestData
+public class TestData
 {
-    static void populate( Module module )
+    public static void populate( Module module )
         throws UnitOfWorkCompletionException
     {
         try( UnitOfWork unitOfWork = module.newUnitOfWork() )
@@ -239,6 +240,12 @@ class TestData
                 felix.name().set( "Felix" );
                 catBuilder.newInstance();
             }
+            {
+                EntityBuilder<Dog> builder = unitOfWork.newEntityBuilder( Dog.class );
+                Dog snoopy = builder.instance();
+                snoopy.name().set( "Snoopy" );
+                builder.newInstance();
+            }
             unitOfWork.complete();
         }
     }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/5d2a62be/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
new file mode 100644
index 0000000..7a55fe0
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/AbstractMultiLayeredIndexingTest.java
@@ -0,0 +1,101 @@
+/*
+ * 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.activation.ActivationException;
+import org.apache.zest.api.service.ServiceReference;
+import org.apache.zest.api.structure.Application;
+import org.apache.zest.api.structure.Module;
+import org.apache.zest.bootstrap.AssemblyException;
+import org.apache.zest.bootstrap.layered.ModuleAssembler;
+import org.apache.zest.test.indexing.TestData;
+import org.junit.Before;
+import org.junit.Test;
+
+public abstract class AbstractMultiLayeredIndexingTest
+{
+    static Class<? extends ModuleAssembler> indexingAssembler;
+
+    protected Application application;
+    private Iterable<ServiceReference<TestCase>> suite1;
+    private Iterable<ServiceReference<TestCase>> suite2;
+    private Iterable<ServiceReference<TestCase>> suite3;
+
+    public AbstractMultiLayeredIndexingTest( Class<? extends ModuleAssembler> indexingAssembler )
+    {
+        AbstractMultiLayeredIndexingTest.indexingAssembler = indexingAssembler;
+    }
+
+    @Before
+    public void setup()
+        throws AssemblyException, ActivationException
+    {
+        ApplicationAssembler assembler =
+            new ApplicationAssembler( "Multi Layered Indexing Test", "1.0", Application.Mode.development );
+        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 suite3Module = application.findModule( "Access Layer", "TestSuite3 Module" );
+        suite3 = suite3Module.findServices( TestCase.class );
+    }
+
+    @Test
+    public void suite1Tests()
+        throws Exception
+    {
+        Iterable<ServiceReference<TestCase>> suite = this.suite1;
+        runTest( suite );
+    }
+
+    @Test
+    public void suite2Tests()
+        throws Exception
+    {
+        runTest( suite2 );
+    }
+
+    @Test
+    public void suite3Tests()
+        throws Exception
+    {
+        runTest( suite3 );
+    }
+
+    private void runTest( Iterable<ServiceReference<TestCase>> suite )
+        throws Exception
+    {
+        for( ServiceReference<TestCase> ref : suite )
+        {
+            TestCase testCase = ref.get();
+            testCase.when();
+            testCase.given();
+            testCase.expect();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/5d2a62be/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
new file mode 100644
index 0000000..6b1b4e7
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/AccessLayer.java
@@ -0,0 +1,39 @@
+/*
+ * 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/5d2a62be/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
new file mode 100644
index 0000000..0df4aee
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/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;
+
+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/5d2a62be/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
new file mode 100644
index 0000000..1b11738
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/ApplicationAssembler.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;
+
+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/5d2a62be/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
new file mode 100644
index 0000000..0b4fada
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/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;
+
+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/5d2a62be/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
new file mode 100644
index 0000000..00265f6
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/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;
+
+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/5d2a62be/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
new file mode 100644
index 0000000..5704d48
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/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;
+
+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/5d2a62be/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
new file mode 100644
index 0000000..56a4939
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/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;
+
+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/5d2a62be/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
new file mode 100644
index 0000000..489092d
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/IndexingLayer.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;
+
+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/5d2a62be/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
new file mode 100644
index 0000000..cc22513
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/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;
+
+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/5d2a62be/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
new file mode 100644
index 0000000..0b92f56
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/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;
+
+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/5d2a62be/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
new file mode 100644
index 0000000..5dd2e71
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestCase.java
@@ -0,0 +1,33 @@
+/*
+ * 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;
+
+interface TestCase
+{
+    void given()
+        throws Exception;
+
+    void when()
+        throws Exception;
+
+    void expect()
+        throws Exception;
+}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/5d2a62be/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
new file mode 100644
index 0000000..e2dd860
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestCase1.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 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/5d2a62be/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
new file mode 100644
index 0000000..dcd448a
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestCase2.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 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/5d2a62be/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
new file mode 100644
index 0000000..01011db
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/TestSuite1Module.java
@@ -0,0 +1,40 @@
+/*
+ * 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/5d2a62be/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
new file mode 100644
index 0000000..3d8a9e6
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/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;
+
+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/5d2a62be/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
new file mode 100644
index 0000000..2c41329
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/layered/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;
+
+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/5d2a62be/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Address.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Address.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Address.java
index 9ab3410..1d5c03a 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Address.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Address.java
@@ -21,7 +21,6 @@ import org.apache.zest.api.property.Property;
 import org.apache.zest.api.value.ValueComposite;
 
 public interface Address
-    extends ValueComposite
 {
     Property<String> line1();
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/5d2a62be/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Cat.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Cat.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Cat.java
index 7724170..81b4a7a 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Cat.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Cat.java
@@ -20,7 +20,6 @@ package org.apache.zest.test.indexing.model;
 /**
  * JAVADOC Add JavaDoc
  */
-public interface Cat
-    extends Pet
+public interface Cat extends Pet
 {
 }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/5d2a62be/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/City.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/City.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/City.java
index 6c43294..5084add 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/City.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/City.java
@@ -22,8 +22,7 @@ import org.apache.zest.api.property.Property;
 /**
  * JAVADOC Add JavaDoc
  */
-public interface City
-    extends Nameable
+public interface City extends Nameable
 {
     Property<String> country();
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/5d2a62be/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Dog.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Dog.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Dog.java
index 620b66d..0792416 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Dog.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Dog.java
@@ -20,7 +20,6 @@ package org.apache.zest.test.indexing.model;
 /**
  * JAVADOC Add JavaDoc
  */
-public interface Dog
-    extends Pet
+public interface Dog extends Pet
 {
 }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/5d2a62be/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Domain.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Domain.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Domain.java
index f15f3e9..64512ef 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Domain.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Domain.java
@@ -22,8 +22,7 @@ import org.apache.zest.api.property.Property;
 /**
  * JAVADOC Add JavaDoc
  */
-public interface Domain
-    extends Nameable
+public interface Domain extends Nameable
 {
     Property<String> description();
 }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/5d2a62be/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Female.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Female.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Female.java
index e4e7ca8..da8f0ce 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Female.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Female.java
@@ -23,8 +23,7 @@ import org.apache.zest.api.common.Optional;
 /**
  * JAVADOC Add JavaDoc
  */
-public interface Female
-    extends Person
+public interface Female extends Person
 {
     @Optional
     Association<Male> husband();

http://git-wip-us.apache.org/repos/asf/zest-java/blob/5d2a62be/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/File.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/File.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/File.java
index 552eddd..90077da 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/File.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/File.java
@@ -26,7 +26,6 @@ import org.apache.zest.api.value.ValueComposite;
  */
 @Queryable( false )
 public interface File
-    extends ValueComposite
 {
     Property<String> value();
 }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/5d2a62be/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Host.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Host.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Host.java
index 555a173..5414f99 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Host.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Host.java
@@ -24,7 +24,6 @@ import org.apache.zest.api.value.ValueComposite;
  * JAVADOC Add JavaDoc.
  */
 public interface Host
-    extends ValueComposite
 {
     Property<String> value();
 }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/5d2a62be/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Male.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Male.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Male.java
index a02b03e..c87f8d8 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Male.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Male.java
@@ -23,8 +23,7 @@ import org.apache.zest.api.common.Optional;
 /**
  * JAVADOC Add JavaDoc
  */
-public interface Male
-    extends Person
+public interface Male extends Person
 {
     @Optional
     Association<Female> wife();

http://git-wip-us.apache.org/repos/asf/zest-java/blob/5d2a62be/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Port.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Port.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Port.java
index 242dd82..aa2afb2 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Port.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Port.java
@@ -25,7 +25,6 @@ import org.apache.zest.api.value.ValueComposite;
  * JAVADOC Add JavaDoc.
  */
 public interface Port
-    extends ValueComposite
 {
     @Queryable( false )
     Property<Integer> value();

http://git-wip-us.apache.org/repos/asf/zest-java/blob/5d2a62be/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Protocol.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Protocol.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Protocol.java
index 04e2d1e..8e6735c 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Protocol.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Protocol.java
@@ -24,7 +24,6 @@ import org.apache.zest.api.value.ValueComposite;
  * JAVADOC Add JavaDoc.
  */
 public interface Protocol
-    extends ValueComposite
 {
     Property<String> value();
 }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/5d2a62be/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/QueryParam.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/QueryParam.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/QueryParam.java
index 3f39f63..028238d 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/QueryParam.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/QueryParam.java
@@ -24,7 +24,6 @@ import org.apache.zest.api.value.ValueComposite;
  * JAVADOC Add JavaDoc.
  */
 public interface QueryParam
-    extends ValueComposite
 {
     Property<String> name();
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/5d2a62be/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/URL.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/URL.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/URL.java
index 1cab264..44599c1 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/URL.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/URL.java
@@ -27,7 +27,6 @@ import org.apache.zest.api.value.ValueComposite;
  * JAVADOC Add JavaDoc.
  */
 public interface URL
-    extends ValueComposite
 {
     Property<Protocol> protocol();