http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/Account.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/Account.java 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/Account.java
new file mode 100644
index 0000000..c77ea1f
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/model/Account.java
@@ -0,0 +1,30 @@
+/*
+ *  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.polygene.test.model;
+
+import org.apache.polygene.api.property.Property;
+
+/**
+ * JAVADOC Add JavaDoc
+ */
+public interface Account
+{
+    Property<String> number();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/Address.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/Address.java 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/Address.java
new file mode 100644
index 0000000..3a24972
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/model/Address.java
@@ -0,0 +1,32 @@
+/*
+ *  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.polygene.test.model;
+
+import org.apache.polygene.api.property.Property;
+import org.apache.polygene.api.value.ValueComposite;
+
+public interface Address extends ValueComposite // necessary, @See POLYGENE-137
+{
+    Property<String> line1();
+
+    Property<String> line2();
+
+    Property<String> zipcode();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/Alive.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/Alive.java 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/Alive.java
new file mode 100644
index 0000000..f8dbf25
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/model/Alive.java
@@ -0,0 +1,27 @@
+/*
+ *  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.polygene.test.model;
+
+/**
+ * JAVADOC Add JavaDoc
+ */
+public interface Alive
+{
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/Cat.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/Cat.java 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/Cat.java
new file mode 100644
index 0000000..5d0aef9
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/model/Cat.java
@@ -0,0 +1,27 @@
+/*
+ *  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.polygene.test.model;
+
+/**
+ * JAVADOC Add JavaDoc
+ */
+public interface Cat extends Pet
+{
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/City.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/City.java 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/City.java
new file mode 100644
index 0000000..57c2aa9
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/model/City.java
@@ -0,0 +1,32 @@
+/*
+ *  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.polygene.test.model;
+
+import org.apache.polygene.api.property.Property;
+
+/**
+ * JAVADOC Add JavaDoc
+ */
+public interface City extends Nameable
+{
+    Property<String> country();
+
+    Property<String> county();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/Dog.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/Dog.java 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/Dog.java
new file mode 100644
index 0000000..3448aa4
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/model/Dog.java
@@ -0,0 +1,27 @@
+/*
+ *  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.polygene.test.model;
+
+/**
+ * JAVADOC Add JavaDoc
+ */
+public interface Dog extends Pet
+{
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/Domain.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/Domain.java 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/Domain.java
new file mode 100644
index 0000000..09536d5
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/model/Domain.java
@@ -0,0 +1,30 @@
+/*
+ *  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.polygene.test.model;
+
+import org.apache.polygene.api.property.Property;
+
+/**
+ * JAVADOC Add JavaDoc
+ */
+public interface Domain extends Nameable
+{
+    Property<String> description();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/Female.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/Female.java 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/Female.java
new file mode 100644
index 0000000..dcffeec
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/model/Female.java
@@ -0,0 +1,32 @@
+/*
+ *  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.polygene.test.model;
+
+import org.apache.polygene.api.association.Association;
+import org.apache.polygene.api.common.Optional;
+
+/**
+ * JAVADOC Add JavaDoc
+ */
+public interface Female extends Person
+{
+    @Optional
+    Association<Male> husband();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/File.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/File.java 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/File.java
new file mode 100644
index 0000000..8897059
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/model/File.java
@@ -0,0 +1,32 @@
+/*
+ *  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.polygene.test.model;
+
+import org.apache.polygene.api.entity.Queryable;
+import org.apache.polygene.api.property.Property;
+
+/**
+ * JAVADOC Add JavaDoc.
+ */
+@Queryable( false )
+public interface File
+{
+    Property<String> value();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/Host.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/Host.java 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/Host.java
new file mode 100644
index 0000000..cf9b428
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/model/Host.java
@@ -0,0 +1,30 @@
+/*
+ *  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.polygene.test.model;
+
+import org.apache.polygene.api.property.Property;
+
+/**
+ * JAVADOC Add JavaDoc.
+ */
+public interface Host
+{
+    Property<String> value();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/Male.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/Male.java 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/Male.java
new file mode 100644
index 0000000..5a676e8
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/model/Male.java
@@ -0,0 +1,32 @@
+/*
+ *  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.polygene.test.model;
+
+import org.apache.polygene.api.association.Association;
+import org.apache.polygene.api.common.Optional;
+
+/**
+ * JAVADOC Add JavaDoc
+ */
+public interface Male extends Person
+{
+    @Optional
+    Association<Female> wife();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/Nameable.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/Nameable.java 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/Nameable.java
new file mode 100644
index 0000000..43914ac
--- /dev/null
+++ 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/Nameable.java
@@ -0,0 +1,31 @@
+/*
+ *  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.polygene.test.model;
+
+import org.apache.polygene.api.identity.HasIdentity;
+import org.apache.polygene.api.property.Property;
+
+/**
+ * JAVADOC Add JavaDoc
+ */
+public interface Nameable extends HasIdentity
+{
+    Property<String> name();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/Owner.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/Owner.java 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/Owner.java
new file mode 100644
index 0000000..a783955
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/model/Owner.java
@@ -0,0 +1,24 @@
+/*
+ *  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.polygene.test.model;
+
+public interface Owner extends Person
+{
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/Person.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/Person.java 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/Person.java
new file mode 100644
index 0000000..7646928
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/model/Person.java
@@ -0,0 +1,99 @@
+/*
+ *  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.polygene.test.model;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZonedDateTime;
+import java.util.Map;
+import org.apache.polygene.api.association.Association;
+import org.apache.polygene.api.association.ManyAssociation;
+import org.apache.polygene.api.association.NamedAssociation;
+import org.apache.polygene.api.common.Optional;
+import org.apache.polygene.api.entity.Queryable;
+import org.apache.polygene.api.property.Property;
+
+/**
+ * JAVADOC Add JavaDoc
+ */
+public interface Person
+    extends Nameable, Alive
+{
+    enum Title
+    {
+        MR, MS, MRS, DR
+    }
+
+    Property<Title> title();
+
+    @Optional
+    Association<City> placeOfBirth();
+
+    Property<Integer> yearOfBirth();
+
+    @Optional
+    Property<Address> address();
+
+    @Optional
+    Association<Female> mother();
+
+    @Optional
+    Association<Male> father();
+
+    ManyAssociation<Domain> interests();
+
+    @Optional
+    Property<String> email();
+
+    @Optional
+    Property<URL> personalWebsite();
+
+    @Queryable( false )
+    Property<String> password();
+
+    @Optional
+    Association<Account> mainAccount();
+
+    NamedAssociation<Account> accounts();
+
+    @Optional
+    Property<Map<String, String>> additionalInfo();
+
+    @Optional
+    Property<BigInteger> bigInteger();
+
+    @Optional
+    Property<BigDecimal> bigDecimal();
+
+    @Optional
+    Property<Instant> instantValue();
+
+    @Optional
+    Property<ZonedDateTime> dateTimeValue();
+
+    @Optional
+    Property<LocalDateTime> localDateTimeValue();
+
+    @Optional
+    Property<LocalDate> localDateValue();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/Pet.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/Pet.java 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/Pet.java
new file mode 100644
index 0000000..77839f9
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/model/Pet.java
@@ -0,0 +1,28 @@
+/*
+ *  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.polygene.test.model;
+
+/**
+ * JAVADOC Add JavaDoc
+ */
+public interface Pet
+    extends Nameable, Alive
+{
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/PetShop.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/PetShop.java 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/PetShop.java
new file mode 100644
index 0000000..b50ad45
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/model/PetShop.java
@@ -0,0 +1,31 @@
+/*
+ *  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.polygene.test.model;
+
+import org.apache.polygene.api.association.Association;
+import org.apache.polygene.api.association.ManyAssociation;
+import org.apache.polygene.api.property.Property;
+
+public interface PetShop
+{
+    Property<Address> address();
+    Association<City> city();
+    ManyAssociation<Owner> owners();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/Port.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/Port.java 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/Port.java
new file mode 100644
index 0000000..f0f6bd7
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/model/Port.java
@@ -0,0 +1,32 @@
+/*
+ *  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.polygene.test.model;
+
+import org.apache.polygene.api.entity.Queryable;
+import org.apache.polygene.api.property.Property;
+
+/**
+ * JAVADOC Add JavaDoc.
+ */
+public interface Port
+{
+    @Queryable( false )
+    Property<Integer> value();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/Protocol.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/Protocol.java 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/Protocol.java
new file mode 100644
index 0000000..3466c9c
--- /dev/null
+++ 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/Protocol.java
@@ -0,0 +1,30 @@
+/*
+ *  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.polygene.test.model;
+
+import org.apache.polygene.api.property.Property;
+
+/**
+ * JAVADOC Add JavaDoc.
+ */
+public interface Protocol
+{
+    Property<String> value();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/QueryParam.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/QueryParam.java 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/QueryParam.java
new file mode 100644
index 0000000..c079f75
--- /dev/null
+++ 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/QueryParam.java
@@ -0,0 +1,32 @@
+/*
+ *  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.polygene.test.model;
+
+import org.apache.polygene.api.property.Property;
+
+/**
+ * JAVADOC Add JavaDoc.
+ */
+public interface QueryParam
+{
+    Property<String> name();
+
+    Property<String> value();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/Staff.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/Staff.java 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/Staff.java
new file mode 100644
index 0000000..c41b0f4
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/model/Staff.java
@@ -0,0 +1,24 @@
+/*
+ *  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.polygene.test.model;
+
+public interface Staff extends Person
+{
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/URL.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/URL.java 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/URL.java
new file mode 100644
index 0000000..dfc5e10
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/model/URL.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.polygene.test.model;
+
+import java.util.Collection;
+import org.apache.polygene.api.common.Optional;
+import org.apache.polygene.api.entity.Queryable;
+import org.apache.polygene.api.property.Property;
+
+/**
+ * JAVADOC Add JavaDoc.
+ */
+public interface URL
+{
+    Property<Protocol> protocol();
+
+    @Optional
+    @Queryable( false )
+    Property<Host> host();
+
+    @Optional
+    Property<Port> port();
+
+    @Optional
+    Property<File> file();
+
+    @Optional
+    Property<Collection<QueryParam>> queryParams();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/AccessLayer.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/AccessLayer.java
 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/AccessLayer.java
new file mode 100644
index 0000000..045b621
--- /dev/null
+++ 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/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.polygene.test.model.assembly;
+
+import java.lang.reflect.InvocationTargetException;
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.layered.LayeredLayerAssembler;
+import org.apache.polygene.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/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/AccountModule.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/AccountModule.java
 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/AccountModule.java
new file mode 100644
index 0000000..eec1885
--- /dev/null
+++ 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/AccountModule.java
@@ -0,0 +1,50 @@
+/*
+ *  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.polygene.test.model.assembly;
+
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.bootstrap.layered.ModuleAssembler;
+import org.apache.polygene.test.model.Account;
+import org.apache.polygene.test.model.Domain;
+import org.apache.polygene.test.model.File;
+import org.apache.polygene.test.model.Host;
+import org.apache.polygene.test.model.Port;
+import org.apache.polygene.test.model.Protocol;
+import org.apache.polygene.test.model.QueryParam;
+import org.apache.polygene.test.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 );
+        return module;
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/ApplicationAssembler.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/ApplicationAssembler.java
 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/ApplicationAssembler.java
new file mode 100644
index 0000000..e793455
--- /dev/null
+++ 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/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.polygene.test.model.assembly;
+
+import java.lang.reflect.InvocationTargetException;
+import org.apache.polygene.api.structure.Application;
+import org.apache.polygene.bootstrap.ApplicationAssembly;
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.layered.IllegalLayerAssemblerException;
+import org.apache.polygene.bootstrap.layered.LayerAssembler;
+import org.apache.polygene.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/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/ConfigLayer.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/ConfigLayer.java
 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/ConfigLayer.java
new file mode 100644
index 0000000..2413ea3
--- /dev/null
+++ 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/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.polygene.test.model.assembly;
+
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.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/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/ConfigModule.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/ConfigModule.java
 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/ConfigModule.java
new file mode 100644
index 0000000..6c7c52e
--- /dev/null
+++ 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/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.polygene.test.model.assembly;
+
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.bootstrap.layered.ModuleAssembler;
+import org.apache.polygene.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/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/DomainLayer.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/DomainLayer.java
 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/DomainLayer.java
new file mode 100644
index 0000000..3754fd8
--- /dev/null
+++ 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/DomainLayer.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.polygene.test.model.assembly;
+
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.layered.LayeredLayerAssembler;
+
+class DomainLayer extends LayeredLayerAssembler
+{
+
+    @Override
+    public LayerAssembly assemble( LayerAssembly layer )
+        throws AssemblyException
+    {
+        createModule( layer, PetShopModule.class );
+        createModule( layer, FamilyModule.class );
+        createModule( layer, AccountModule.class );
+        return layer;
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/FamilyModule.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/FamilyModule.java
 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/FamilyModule.java
new file mode 100644
index 0000000..42054a7
--- /dev/null
+++ 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/FamilyModule.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.polygene.test.model.assembly;
+
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.bootstrap.layered.ModuleAssembler;
+import org.apache.polygene.test.model.Address;
+import org.apache.polygene.test.model.Cat;
+import org.apache.polygene.test.model.City;
+import org.apache.polygene.test.model.Dog;
+import org.apache.polygene.test.model.Female;
+import org.apache.polygene.test.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 );
+        return module;
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/IndexingLayer.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/IndexingLayer.java
 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/IndexingLayer.java
new file mode 100644
index 0000000..b0b5b87
--- /dev/null
+++ 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/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.polygene.test.model.assembly;
+
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.layered.LayeredLayerAssembler;
+import 
org.apache.polygene.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/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/PersistenceLayer.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/PersistenceLayer.java
 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/PersistenceLayer.java
new file mode 100644
index 0000000..26e69ab
--- /dev/null
+++ 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/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.polygene.test.model.assembly;
+
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.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/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/PersistenceModule.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/PersistenceModule.java
 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/PersistenceModule.java
new file mode 100644
index 0000000..a19631f
--- /dev/null
+++ 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/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.polygene.test.model.assembly;
+
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.api.value.ValueSerialization;
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.bootstrap.layered.ModuleAssembler;
+import org.apache.polygene.entitystore.memory.MemoryEntityStoreService;
+import 
org.apache.polygene.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/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/PetShopModule.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/PetShopModule.java
 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/PetShopModule.java
new file mode 100644
index 0000000..40fae45
--- /dev/null
+++ 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/PetShopModule.java
@@ -0,0 +1,51 @@
+/*
+ *  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.polygene.test.model.assembly;
+
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.bootstrap.layered.ModuleAssembler;
+import org.apache.polygene.test.model.Address;
+import org.apache.polygene.test.model.Cat;
+import org.apache.polygene.test.model.City;
+import org.apache.polygene.test.model.Dog;
+import org.apache.polygene.test.model.Owner;
+import org.apache.polygene.test.model.Staff;
+
+class PetShopModule
+    implements ModuleAssembler
+{
+
+    @Override
+    public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module 
)
+        throws AssemblyException
+    {
+        module.entities( Owner.class,
+                         Staff.class );
+        module.entities( City.class,
+                         Cat.class,
+                         Dog.class );
+
+        module.values( Address.class );
+        return module;
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/TestExecutionModule.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/TestExecutionModule.java
 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/TestExecutionModule.java
new file mode 100644
index 0000000..09dd396
--- /dev/null
+++ 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/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.polygene.test.model.assembly;
+
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.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/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/TestSuite1Module.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/TestSuite1Module.java
 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/TestSuite1Module.java
new file mode 100644
index 0000000..ff2fa08
--- /dev/null
+++ 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/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.polygene.test.model.assembly;
+
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.bootstrap.layered.ModuleAssembler;
+import org.apache.polygene.test.indexing.layered.Suite1Case1;
+import org.apache.polygene.test.indexing.layered.Suite1Case2;
+import org.apache.polygene.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/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/TestSuite2Module.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/TestSuite2Module.java
 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/TestSuite2Module.java
new file mode 100644
index 0000000..cae05ac
--- /dev/null
+++ 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/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.polygene.test.model.assembly;
+
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.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/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/TestSuite3Module.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/TestSuite3Module.java
 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/TestSuite3Module.java
new file mode 100644
index 0000000..369cbba
--- /dev/null
+++ 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/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.polygene.test.model.assembly;
+
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.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/polygene-java/blob/cfd38626/core/testsupport/src/main/java/org/apache/polygene/test/model/package.html
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/polygene/test/model/package.html 
b/core/testsupport/src/main/java/org/apache/polygene/test/model/package.html
new file mode 100644
index 0000000..f006a94
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/model/package.html
@@ -0,0 +1,24 @@
+<!--
+  ~  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.
+  ~
+  ~
+  -->
+<html>
+    <body>
+        <h2>Index/Query SPI Test Support - Model.</h2>
+    </body>
+</html>

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraMapEntityStoreTest.java
----------------------------------------------------------------------
diff --git 
a/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraMapEntityStoreTest.java
 
b/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraMapEntityStoreTest.java
index af97dc9..7194340 100644
--- 
a/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraMapEntityStoreTest.java
+++ 
b/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraMapEntityStoreTest.java
@@ -38,7 +38,7 @@ public class CassandraMapEntityStoreTest
     extends AbstractEntityStoreTest
 {
     @ClassRule
-    public static final DockerRule DOCKER = new DockerRule( "cassandra", 9042 
);
+    public static final DockerRule DOCKER = new DockerRule( "cassandra", 
"Starting listening for CQL clients" );
 
     @Override
     // START SNIPPET: assembly
@@ -60,6 +60,7 @@ public class CassandraMapEntityStoreTest
         CassandraEntityStoreConfiguration cassandraConfig = config.forMixin( 
CassandraEntityStoreConfiguration.class ).declareDefaults();
         String host = DOCKER.getDockerHost();
         int port = DOCKER.getExposedContainerPort( "9042/tcp" );
+        System.out.println("Cassandra: " + host + ":" + port);
         cassandraConfig.hostnames().set( host + ':' + port );
         cassandraConfig.createIfMissing().set( true );
         // START SNIPPET: assembly

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsS3Test.java
----------------------------------------------------------------------
diff --git 
a/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsS3Test.java
 
b/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsS3Test.java
index f375b02..6b30854 100644
--- 
a/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsS3Test.java
+++ 
b/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsS3Test.java
@@ -31,7 +31,7 @@ import org.junit.ClassRule;
 public class JCloudsS3Test extends AbstractEntityStoreTest
 {
     @ClassRule
-    public static final DockerRule DOCKER = new DockerRule( "s3server", 8000 );
+    public static final DockerRule DOCKER = new DockerRule( "s3server", 
"server started" );
 
     @Override
     public void assemble( ModuleAssembly module )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakMapEntityStoreTest.java
----------------------------------------------------------------------
diff --git 
a/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakMapEntityStoreTest.java
 
b/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakMapEntityStoreTest.java
index 54a8f81..67904db 100644
--- 
a/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakMapEntityStoreTest.java
+++ 
b/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakMapEntityStoreTest.java
@@ -30,7 +30,7 @@ import org.junit.ClassRule;
 public class RiakMapEntityStoreTest extends AbstractEntityStoreTest
 {
     @ClassRule
-    public static final DockerRule DOCKER = new DockerRule( "riak", 8087 );
+    public static final DockerRule DOCKER = new DockerRule( 
"riak","riak_auth_mods started on node");
 
     private RiakFixture riakFixture;
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakMapEntityStoreWithCacheTest.java
----------------------------------------------------------------------
diff --git 
a/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakMapEntityStoreWithCacheTest.java
 
b/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakMapEntityStoreWithCacheTest.java
index 85946cd..99cf561 100644
--- 
a/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakMapEntityStoreWithCacheTest.java
+++ 
b/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakMapEntityStoreWithCacheTest.java
@@ -33,7 +33,7 @@ import org.junit.ClassRule;
 public class RiakMapEntityStoreWithCacheTest extends 
AbstractEntityStoreWithCacheTest
 {
     @ClassRule
-    public static final DockerRule DOCKER = new DockerRule( "riak", 8087 );
+    public static final DockerRule DOCKER = new DockerRule( 
"riak","riak_auth_mods started on node");
 
     private RiakFixture riakFixture;
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/extensions/entitystore-sql/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/build.gradle 
b/extensions/entitystore-sql/build.gradle
index ee99f52..e481c85 100644
--- a/extensions/entitystore-sql/build.gradle
+++ b/extensions/entitystore-sql/build.gradle
@@ -39,6 +39,7 @@ dependencies {
   testImplementation polygene.library( 'sql-dbcp' )
   testImplementation polygene.extension( 'valueserialization-orgjson' )
   testImplementation libraries.derby // Needed at compile time for polite test 
shutdown
+  testImplementation libraries.docker_junit
 
   testRuntimeOnly libraries.logback
   testRuntimeOnly libraries.h2

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MySQLEntityStoreTest.java
----------------------------------------------------------------------
diff --git 
a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MySQLEntityStoreTest.java
 
b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MySQLEntityStoreTest.java
index 0718ddb..9789ac9 100644
--- 
a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MySQLEntityStoreTest.java
+++ 
b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MySQLEntityStoreTest.java
@@ -52,7 +52,8 @@ public class MySQLEntityStoreTest
             put( "MYSQL_DATABASE", "jdbc_test_db" );
             put( "MYSQL_ROOT_HOST", "172.17.0.1" );
         }},
-        3306
+        30000L
+//        , "mysqld: ready for connections"   TODO: add this after next 
release of tdomzal/junit-docker-rule
     );
 
     @Override

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cfd38626/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTest.java
----------------------------------------------------------------------
diff --git 
a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTest.java
 
b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTest.java
index 49d5a13..8e32261 100644
--- 
a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTest.java
+++ 
b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTest.java
@@ -77,7 +77,7 @@ public class PostgreSQLEntityStoreTest
     extends AbstractEntityStoreTest
 {
     @ClassRule
-    public static final DockerRule DOCKER = new DockerRule( "postgres", 5432 );
+    public static final DockerRule DOCKER = new DockerRule( "postgres", 3000L, 
"PostgreSQL init process complete; ready for start up." );
 
     @Override
     // START SNIPPET: assembly

Reply via email to