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 2017/07/10 06:53:03 UTC

[01/50] polygene-java git commit: Removed access to StringIdentity constructor.

Repository: polygene-java
Updated Branches:
  refs/heads/es-jooq 80a19d7bf -> 9e12cd7a5


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/DummyDataService.java
----------------------------------------------------------------------
diff --git a/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/DummyDataService.java b/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/DummyDataService.java
index 346ebd6..14387d1 100644
--- a/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/DummyDataService.java
+++ b/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/DummyDataService.java
@@ -43,7 +43,7 @@ public interface DummyDataService
     void insertInitialData()
             throws Exception;
 
-    static class Activator
+    class Activator
             extends ActivatorAdapter<ServiceReference<DummyDataService>>
     {
 
@@ -77,13 +77,13 @@ public interface DummyDataService
                     valueBuilder.prototype().string().set( "Foo bar value" );
                     valueBuilder.prototype().map().set( new HashMap() );
 
-                    EntityBuilder<TestEntity> builder = unitOfWork.newEntityBuilder( TestEntity.class, new StringIdentity( "test1" ) );
+                    EntityBuilder<TestEntity> builder = unitOfWork.newEntityBuilder( TestEntity.class, StringIdentity.fromString( "test1" ) );
                     builder.instance().name().set( "Foo bar" );
                     builder.instance().age().set( 42 );
                     builder.instance().value().set( valueBuilder.newInstance() );
                     TestEntity testEntity = builder.newInstance();
 
-                    EntityBuilder<TestEntity> builder2 = unitOfWork.newEntityBuilder( TestEntity.class, new StringIdentity( "test2" ) );
+                    EntityBuilder<TestEntity> builder2 = unitOfWork.newEntityBuilder( TestEntity.class, StringIdentity.fromString( "test2" ) );
                     builder2.instance().name().set( "Xyzzy" );
                     builder2.instance().age().set( 12 );
                     builder2.instance().association().set( testEntity );
@@ -98,7 +98,7 @@ public interface DummyDataService
                 }
 
                 {
-                    EntityBuilder<TestEntity2> builder = unitOfWork.newEntityBuilder( TestEntity2.class, new StringIdentity( "test3" ) );
+                    EntityBuilder<TestEntity2> builder = unitOfWork.newEntityBuilder( TestEntity2.class, StringIdentity.fromString( "test3" ) );
                     builder.instance().name().set( "Test3" );
                     builder.newInstance();
                 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/RestTest.java
----------------------------------------------------------------------
diff --git a/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/RestTest.java b/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/RestTest.java
index c9f5fa8..0364d18 100644
--- a/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/RestTest.java
+++ b/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/RestTest.java
@@ -111,13 +111,13 @@ public class RestTest extends AbstractPolygeneTest
         UnitOfWork uow = unitOfWorkFactory.newUnitOfWork();
         try
         {
-            EntityBuilder<PersonEntity> builder1 = uow.newEntityBuilder( PersonEntity.class, new StringIdentity( "P2" ) );
+            EntityBuilder<PersonEntity> builder1 = uow.newEntityBuilder( PersonEntity.class, StringIdentity.fromString( "P2" ) );
             PersonEntity maryDoe = builder1.instance();
             maryDoe.firstname().set( "Mary" );
             maryDoe.lastname().set( "Doe" );
             maryDoe = builder1.newInstance();
 
-            EntityBuilder<PersonEntity> builder2 = uow.newEntityBuilder( PersonEntity.class, new StringIdentity( "P1" ) );
+            EntityBuilder<PersonEntity> builder2 = uow.newEntityBuilder( PersonEntity.class, StringIdentity.fromString( "P1" ) );
             PersonEntity joeDoe = builder2.instance();
             joeDoe.firstname().set( "Joe" );
             joeDoe.lastname().set( "Doe" );
@@ -162,7 +162,7 @@ public class RestTest extends AbstractPolygeneTest
         UnitOfWork work = unitOfWorkFactory.newUnitOfWork();
         try
         {
-            PersonEntity entity = work.get( PersonEntity.class, new StringIdentity( "P1" ) );
+            PersonEntity entity = work.get( PersonEntity.class, StringIdentity.fromString( "P1" ) );
             assertEquals( "FirstName not changed.", "Jack", entity.firstname().get() );
             assertEquals( "LastName not changed.", "Doe", entity.lastname().get() );
             work.complete();
@@ -185,7 +185,7 @@ public class RestTest extends AbstractPolygeneTest
             PersonEntity entity = null;
             try
             {
-                entity = work.get( PersonEntity.class, new StringIdentity( "P1" ) );
+                entity = work.get( PersonEntity.class, StringIdentity.fromString( "P1" ) );
             }
             catch( NoSuchEntityException expected )
             {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityResource.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityResource.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityResource.java
index d7ab52c..8ed6fb1 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityResource.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityResource.java
@@ -97,7 +97,7 @@ public interface EntityResource<T extends HasIdentity> extends ServerResource<T>
         {
             Class entityType = parameters.entityType().get();
             String idOfEntity = parameters.id().get();
-            locator.find( entityType ).delete( new StringIdentity( idOfEntity ) );
+            locator.find( entityType ).delete( StringIdentity.fromString( idOfEntity ) );
         }
 
         @Override
@@ -137,7 +137,7 @@ public interface EntityResource<T extends HasIdentity> extends ServerResource<T>
                 throw new RuntimeException( message, e );
             }
             Reference base = parameters.request().get().getResourceRef();
-            return resourceBuilder.createRestLink( new StringIdentity( "" ), base, org.restlet.data.Method.GET );
+            return resourceBuilder.createRestLink( StringIdentity.fromString( "" ), base, org.restlet.data.Method.GET );
         }
 
         private Object createParametersComposite( RestForm form, Class argType )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/identity/IdentityManager.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/identity/IdentityManager.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/identity/IdentityManager.java
index b4ebde6..b41df0c 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/identity/IdentityManager.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/identity/IdentityManager.java
@@ -80,10 +80,10 @@ public interface IdentityManager
             if( isIdentity( canonicalName ) )
             {
                 // This is already an ID, and we simply return it.
-                return new StringIdentity( canonicalName );
+                return StringIdentity.fromString( canonicalName );
             }
             String prefix = findPrefix( type );
-            return new StringIdentity( prefix + SEPARATOR + canonicalName );
+            return StringIdentity.fromString( prefix + SEPARATOR + canonicalName );
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/EntryPointResource.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/EntryPointResource.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/EntryPointResource.java
index 053184b..274ea9e 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/EntryPointResource.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/EntryPointResource.java
@@ -80,18 +80,18 @@ public interface EntryPointResource extends ServerResource<EntryPoint>
                         RestLink link;
                         if( route.getDescription() == null )
                         {
-                            link = resourceBuilder.createRestLink( new StringIdentity( template.getPattern() ), hostRef, Method.GET );
+                            link = resourceBuilder.createRestLink( StringIdentity.fromString( template.getPattern() ), hostRef, Method.GET );
                         }
                         else
                         {
-                            link = resourceBuilder.createRestLink( new StringIdentity( template.getPattern() ), hostRef, Method.GET, route.getDescription() );
+                            link = resourceBuilder.createRestLink( StringIdentity.fromString( template.getPattern() ), hostRef, Method.GET, route.getDescription() );
                         }
                         entryPoints.put( route.getName(), link );
                     }
                 }
             }
             ValueBuilder<EntryPoint> builder = vbf.newValueBuilder( EntryPoint.class );
-            builder.prototype().identity().set( new StringIdentity( "/" ) );
+            builder.prototype().identity().set( StringIdentity.fromString( "/" ) );
             builder.prototype().api().set( entryPoints );
             return builder.newInstance();
         }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/ResourceBuilder.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/ResourceBuilder.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/ResourceBuilder.java
index bdf1942..eb46bac 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/ResourceBuilder.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/ResourceBuilder.java
@@ -143,7 +143,7 @@ public interface ResourceBuilder
         public RestForm createNameForm( Reference base )
         {
             ValueBuilder<RestForm> builder = vbf.newValueBuilder( RestForm.class );
-            builder.prototype().link().set( createRestLink( new StringIdentity( "form" ), base, Method.POST ) );
+            builder.prototype().link().set( createRestLink( StringIdentity.fromString( "form" ), base, Method.POST ) );
             builder.prototype().fields().set( Collections.singletonList( createFormField( "name", FormField.TEXT ) ) );
             return builder.newInstance();
         }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceAssembler.java b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceAssembler.java
index 21ed237..31cb4bc 100644
--- a/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceAssembler.java
+++ b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceAssembler.java
@@ -70,7 +70,7 @@ public class DataSourceAssembler
     {
         module.importedServices( DataSource.class ).
             importedBy( ServiceInstanceImporter.class ).
-            setMetaInfo( new StringIdentity( dataSourceServiceId ) ).
+            setMetaInfo( StringIdentity.fromString( dataSourceServiceId ) ).
             identifiedBy( identity() ).
             visibleIn( visibility() );
         if( circuitBreaker != null )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/ExternalDataSourceAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/ExternalDataSourceAssembler.java b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/ExternalDataSourceAssembler.java
index 2b03625..ef6b93d 100644
--- a/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/ExternalDataSourceAssembler.java
+++ b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/ExternalDataSourceAssembler.java
@@ -65,7 +65,7 @@ public class ExternalDataSourceAssembler
     {
         if( circuitBreaker != null )
         {
-            externalDataSource = DataSources.wrapWithCircuitBreaker( new StringIdentity(identity()), externalDataSource, circuitBreaker );
+            externalDataSource = DataSources.wrapWithCircuitBreaker( StringIdentity.fromString(identity()), externalDataSource, circuitBreaker );
         }
         module.importedServices( DataSource.class ).
             identifiedBy( identity() ).

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/libraries/sql/src/main/java/org/apache/polygene/library/sql/jmx/DataSourceConfigurationManagerService.java
----------------------------------------------------------------------
diff --git a/libraries/sql/src/main/java/org/apache/polygene/library/sql/jmx/DataSourceConfigurationManagerService.java b/libraries/sql/src/main/java/org/apache/polygene/library/sql/jmx/DataSourceConfigurationManagerService.java
index 777d419..e008589 100644
--- a/libraries/sql/src/main/java/org/apache/polygene/library/sql/jmx/DataSourceConfigurationManagerService.java
+++ b/libraries/sql/src/main/java/org/apache/polygene/library/sql/jmx/DataSourceConfigurationManagerService.java
@@ -175,7 +175,7 @@ public interface DataSourceConfigurationManagerService
             EditableConfiguration( MBeanInfo info, String identity, Map<String, AccessibleObject> propertyNames )
             {
                 this.info = info;
-                this.identity = new StringIdentity( identity );
+                this.identity = StringIdentity.fromString( identity );
                 this.propertyNames = propertyNames;
             }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext.java
----------------------------------------------------------------------
diff --git a/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext.java b/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext.java
index dac8153..5e7043f 100644
--- a/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext.java
+++ b/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext.java
@@ -133,8 +133,8 @@ public class PayBillsContext
             {
                 // Creditor retrieval could be a use case in itself...
                 List<BalanceData> creditors = new ArrayList<BalanceData>();
-                creditors.add( uowf.currentUnitOfWork().get( CreditorRolemap.class, new StringIdentity( "BakerAccount" ) ) );
-                creditors.add( uowf.currentUnitOfWork().get( CreditorRolemap.class, new StringIdentity( "ButcherAccount" ) ) );
+                creditors.add( uowf.currentUnitOfWork().get( CreditorRolemap.class, StringIdentity.fromString( "BakerAccount" ) ) );
+                creditors.add( uowf.currentUnitOfWork().get( CreditorRolemap.class, StringIdentity.fromString( "ButcherAccount" ) ) );
                 return creditors;
             }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext2.java
----------------------------------------------------------------------
diff --git a/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext2.java b/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext2.java
index 85009f8..9a4fe3e 100644
--- a/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext2.java
+++ b/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext2.java
@@ -126,8 +126,8 @@ public class PayBillsContext2
         {
             // Creditor retrieval could be a use case in itself...
             List<BalanceData> creditors = new ArrayList<>();
-            creditors.add( uowf.currentUnitOfWork().get( BalanceData.class, new StringIdentity( "BakerAccount" ) ) );
-            creditors.add( uowf.currentUnitOfWork().get( BalanceData.class, new StringIdentity( "ButcherAccount" ) ) );
+            creditors.add( uowf.currentUnitOfWork().get( BalanceData.class, StringIdentity.fromString( "BakerAccount" ) ) );
+            creditors.add( uowf.currentUnitOfWork().get( BalanceData.class, StringIdentity.fromString( "ButcherAccount" ) ) );
             return creditors;
         }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/samples/dci/src/test/java/org/apache/polygene/dci/moneytransfer/test/AccountIds.java
----------------------------------------------------------------------
diff --git a/samples/dci/src/test/java/org/apache/polygene/dci/moneytransfer/test/AccountIds.java b/samples/dci/src/test/java/org/apache/polygene/dci/moneytransfer/test/AccountIds.java
index 3530592..1e69a86 100644
--- a/samples/dci/src/test/java/org/apache/polygene/dci/moneytransfer/test/AccountIds.java
+++ b/samples/dci/src/test/java/org/apache/polygene/dci/moneytransfer/test/AccountIds.java
@@ -24,9 +24,9 @@ import org.apache.polygene.api.identity.StringIdentity;
 
 public interface AccountIds
 {
-    Identity SAVINGS_ACCOUNT_ID = new StringIdentity( "SavingsAccountId" );
-    Identity CHECKING_ACCOUNT_ID = new StringIdentity( "CheckingAccountId" );
-    Identity CREDITOR_ID1 = new StringIdentity( "BakerAccount" );
-    Identity CREDITOR_ID2 = new StringIdentity( "ButcherAccount" );
+    Identity SAVINGS_ACCOUNT_ID = StringIdentity.fromString( "SavingsAccountId" );
+    Identity CHECKING_ACCOUNT_ID = StringIdentity.fromString( "CheckingAccountId" );
+    Identity CREDITOR_ID1 = StringIdentity.fromString( "BakerAccount" );
+    Identity CREDITOR_ID2 = StringIdentity.fromString( "ButcherAccount" );
 
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Forums.java
----------------------------------------------------------------------
diff --git a/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Forums.java b/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Forums.java
index 2ea7fb9..5650376 100644
--- a/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Forums.java
+++ b/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Forums.java
@@ -38,9 +38,9 @@ import static org.apache.polygene.api.query.QueryExpressions.templateFor;
 public interface Forums
     extends Administrators, EntityComposite
 {
-    Identity FORUMS_ID = new StringIdentity( "forums" );
+    Identity FORUMS_ID = StringIdentity.fromString( "forums" );
 
-    public Query<Forum> forums();
+    Query<Forum> forums();
 
     abstract class Mixin
         implements Forums

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Users.java
----------------------------------------------------------------------
diff --git a/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Users.java b/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Users.java
index 31861b4..42f0205 100644
--- a/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Users.java
+++ b/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Users.java
@@ -41,7 +41,7 @@ import static org.apache.polygene.api.query.QueryExpressions.templateFor;
 public interface Users
     extends EntityComposite, Events
 {
-    Identity USERS_ID = new StringIdentity( "users" );
+    Identity USERS_ID = StringIdentity.fromString( "users" );
 
     Query<User> users();
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/BoardResource.java
----------------------------------------------------------------------
diff --git a/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/BoardResource.java b/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/BoardResource.java
index 164b0c8..7dd3e52 100644
--- a/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/BoardResource.java
+++ b/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/BoardResource.java
@@ -37,7 +37,7 @@ public class BoardResource
     public void resource( String segment )
         throws ResourceException
     {
-        selectFromManyAssociation( ObjectSelection.current().get( Forum.class ).boards(),  new StringIdentity( segment ) );
+        selectFromManyAssociation( ObjectSelection.current().get( Forum.class ).boards(),  StringIdentity.fromString( segment ) );
         subResource( BoardResource.class );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumResource.java
----------------------------------------------------------------------
diff --git a/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumResource.java b/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumResource.java
index 73ff700..a5c5977 100644
--- a/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumResource.java
+++ b/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumResource.java
@@ -37,7 +37,7 @@ public class ForumResource
     public void resource( String segment )
         throws ResourceException
     {
-        selectFromManyAssociation( ObjectSelection.current().get( Forum.class ).boards(), new StringIdentity( segment ) );
+        selectFromManyAssociation( ObjectSelection.current().get( Forum.class ).boards(), StringIdentity.fromString( segment ) );
         subResource( BoardResource.class );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumsResource.java
----------------------------------------------------------------------
diff --git a/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumsResource.java b/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumsResource.java
index 45e9f7b..931e5a2 100644
--- a/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumsResource.java
+++ b/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumsResource.java
@@ -36,7 +36,7 @@ public class ForumsResource
     public void resource( String segment )
         throws ResourceException
     {
-        select( Forum.class, new StringIdentity( segment ) );
+        select( Forum.class, StringIdentity.fromString( segment ) );
         subResource( ForumResource.class );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/samples/rental/src/main/java/org/apache/polygene/sample/rental/domain/dev/InitialData.java
----------------------------------------------------------------------
diff --git a/samples/rental/src/main/java/org/apache/polygene/sample/rental/domain/dev/InitialData.java b/samples/rental/src/main/java/org/apache/polygene/sample/rental/domain/dev/InitialData.java
index 3bb475c..1db4d19 100644
--- a/samples/rental/src/main/java/org/apache/polygene/sample/rental/domain/dev/InitialData.java
+++ b/samples/rental/src/main/java/org/apache/polygene/sample/rental/domain/dev/InitialData.java
@@ -198,7 +198,7 @@ public interface InitialData
         private RentalShop createShop( UnitOfWork uow )
             throws UnitOfWorkCompletionException
         {
-            return uow.newEntity( RentalShop.class, new StringIdentity( "SHOP" ) );
+            return uow.newEntity( RentalShop.class, StringIdentity.fromString( "SHOP" ) );
         }
 
         private void createCustomers( RentalShop shop )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/BookingPage.java
----------------------------------------------------------------------
diff --git a/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/BookingPage.java b/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/BookingPage.java
index 6d007f2..78815b8 100644
--- a/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/BookingPage.java
+++ b/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/BookingPage.java
@@ -52,7 +52,7 @@ public interface BookingPage
             Element result = dom.createElementNS( Page.XHTML, "div" );
             String bookingId = context.path();
             UnitOfWork uow = uowf.currentUnitOfWork();
-            Booking booking = uow.get( Booking.class, new StringIdentity( bookingId ) );
+            Booking booking = uow.get( Booking.class, StringIdentity.fromString( bookingId ) );
             Car car = booking.car().get();
             createChildNode( dom, result, car.model().get() );
             createChildNode( dom, result, car.licensePlate().get() );
@@ -73,7 +73,7 @@ public interface BookingPage
             Element result = dom.createElementNS( Page.XHTML, "div" );
             String bookingId = context.path();
             UnitOfWork uow = uowf.currentUnitOfWork();
-            Booking booking = uow.get( Booking.class, new StringIdentity( bookingId ) );
+            Booking booking = uow.get( Booking.class, StringIdentity.fromString( bookingId ) );
             Customer customer = booking.customer().get();
             createChildNode( dom, result, customer.name().get() );
             createChildNode( dom, result, customer.address().get().line1().get() );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/MainPage.java
----------------------------------------------------------------------
diff --git a/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/MainPage.java b/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/MainPage.java
index 68d868a..ebe24e6 100644
--- a/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/MainPage.java
+++ b/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/MainPage.java
@@ -59,7 +59,7 @@ public interface MainPage
             ArrayList<Node> nodes = new ArrayList<Node>();
             Document dom = context.dom();
             UnitOfWork uow = uowf.currentUnitOfWork();
-            RentalShop shop = uow.get( RentalShop.class, new StringIdentity( "SHOP" ) );
+            RentalShop shop = uow.get( RentalShop.class, StringIdentity.fromString( "SHOP" ) );
             for( Booking booking : shop.findAllBookings() )
             {
                 String plate = booking.car().get().licensePlate().get();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/tests/performance/src/main/java/org/apache/polygene/test/performance/entitystore/AbstractEntityStorePerformanceTest.java
----------------------------------------------------------------------
diff --git a/tests/performance/src/main/java/org/apache/polygene/test/performance/entitystore/AbstractEntityStorePerformanceTest.java b/tests/performance/src/main/java/org/apache/polygene/test/performance/entitystore/AbstractEntityStorePerformanceTest.java
index 69d1f69..fcb9524 100644
--- a/tests/performance/src/main/java/org/apache/polygene/test/performance/entitystore/AbstractEntityStorePerformanceTest.java
+++ b/tests/performance/src/main/java/org/apache/polygene/test/performance/entitystore/AbstractEntityStorePerformanceTest.java
@@ -243,7 +243,7 @@ public abstract class AbstractEntityStorePerformanceTest
                 UnitOfWork uow = uowf.newUnitOfWork( newUsecase( "readEntityWithComplexType PREPARE " + bulk ) );
                 for( int i = 0; i < ITERATIONS; i++ )
                 {
-                    ComplexProduct product = uow.newEntity( ComplexProduct.class, new StringIdentity( "product" + i ) );
+                    ComplexProduct product = uow.newEntity( ComplexProduct.class, StringIdentity.fromString( "product" + i ) );
                     product.name().set( "Product " + i );
 
                     if( i % 1000 == 0 )
@@ -265,7 +265,7 @@ public abstract class AbstractEntityStorePerformanceTest
                 String id = rnd.nextInt( ITERATIONS ) + "";
                 for( int i = 0; i < ITERATIONS; i++ )
                 {
-                    ComplexProduct product = uow.get( ComplexProduct.class, new StringIdentity( "product" + id ) );
+                    ComplexProduct product = uow.get( ComplexProduct.class, StringIdentity.fromString( "product" + id ) );
                     product.name().get();
                     if( i % 100 == 0 )
                     {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/tools/envisage/src/test/java/org/apache/polygene/envisage/school/domain/person/initialdata/SamplePersonInitialData.java
----------------------------------------------------------------------
diff --git a/tools/envisage/src/test/java/org/apache/polygene/envisage/school/domain/person/initialdata/SamplePersonInitialData.java b/tools/envisage/src/test/java/org/apache/polygene/envisage/school/domain/person/initialdata/SamplePersonInitialData.java
index e3bf5ce..c150d2e 100644
--- a/tools/envisage/src/test/java/org/apache/polygene/envisage/school/domain/person/initialdata/SamplePersonInitialData.java
+++ b/tools/envisage/src/test/java/org/apache/polygene/envisage/school/domain/person/initialdata/SamplePersonInitialData.java
@@ -94,7 +94,7 @@ public interface SamplePersonInitialData
 
         private void createPerson( UnitOfWork uow, String personId, String firstName, String lastName )
         {
-            EntityBuilder<Person> person = uow.newEntityBuilder( Person.class, new StringIdentity( personId ) );
+            EntityBuilder<Person> person = uow.newEntityBuilder( Person.class, StringIdentity.fromString( personId ) );
 
             PersonEntity.PersonState state = person.instanceFor( PersonEntity.PersonState.class );
             state.firstName().set( firstName );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/tutorials/hello/src/test/java/org/apache/polygene/tutorials/hello/HelloTest4.java
----------------------------------------------------------------------
diff --git a/tutorials/hello/src/test/java/org/apache/polygene/tutorials/hello/HelloTest4.java b/tutorials/hello/src/test/java/org/apache/polygene/tutorials/hello/HelloTest4.java
index 7df4c68..1608c96 100644
--- a/tutorials/hello/src/test/java/org/apache/polygene/tutorials/hello/HelloTest4.java
+++ b/tutorials/hello/src/test/java/org/apache/polygene/tutorials/hello/HelloTest4.java
@@ -35,7 +35,7 @@ import static org.junit.Assert.assertThat;
 public class HelloTest4 extends AbstractPolygeneTest
 {
 
-    public static final Identity TEST_IDENTITY = new StringIdentity( "123" );
+    public static final Identity TEST_IDENTITY = StringIdentity.fromString( "123" );
 
     @Override
     public void assemble( ModuleAssembly module )


[49/50] polygene-java git commit: Fix bugs in generator.

Posted by ni...@apache.org.
Fix bugs in generator.


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

Branch: refs/heads/es-jooq
Commit: cdec0e8b6c82e60aeff6c638348a8acb0cdc7c3d
Parents: 047380a
Author: niclas <ni...@hedhman.org>
Authored: Mon Jul 10 11:32:52 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Mon Jul 10 11:32:52 2017 +0800

----------------------------------------------------------------------
 .../templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl    | 2 +-
 .../app/templates/InfrastructureLayer/IndexingModule/module.js     | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cdec0e8b/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl b/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl
index 84c6226..744d8fd 100644
--- a/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl
@@ -64,7 +64,7 @@ public class HttpServerModule
 %>        new HttpShiroAssembler()
             .withConfig( module, Visibility.module )
             .assemble( module );
-        module.forMixin( ShiroIniConfiguration.class ).declareDefaults().iniResourcePath().set("web-shiro.ini");
+        module.forMixin( ShiroIniConfiguration.class ).declareDefaults().iniResourcePath().set("classpath:web-shiro.ini");
         new SecureJettyServiceAssembler()
             .withConfig( module, Visibility.layer )
             .visibleIn( Visibility.layer )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cdec0e8b/tools/generator-polygene/app/templates/InfrastructureLayer/IndexingModule/module.js
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/InfrastructureLayer/IndexingModule/module.js b/tools/generator-polygene/app/templates/InfrastructureLayer/IndexingModule/module.js
index bbcfb28..dfefccb 100644
--- a/tools/generator-polygene/app/templates/InfrastructureLayer/IndexingModule/module.js
+++ b/tools/generator-polygene/app/templates/InfrastructureLayer/IndexingModule/module.js
@@ -35,7 +35,7 @@ module.exports = {
                 'InfrastructureLayer/IndexingModule/indexing/solrconfig.xml',
                 'solrconfig.xml'
             );
-            p.copyTemplate(
+            p.copyToConfig(
                 p.ctx,
                 'InfrastructureLayer/IndexingModule/indexing/solr-schema.xml',
                 'schema.xml'


[15/50] polygene-java git commit: POLYGENE-265 - method argument names are now used in Constraint Violations. POLYGENE-264 - Consolidated how the ConstraintViolationException works. POLYGENE-262 - NoSuchCompositeException and subtypes changed name to NoS

Posted by ni...@apache.org.
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/main/java/org/apache/polygene/runtime/composite/ValueConstraintsInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/ValueConstraintsInstance.java b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/ValueConstraintsInstance.java
index ff53af8..98f6ab9 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/ValueConstraintsInstance.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/ValueConstraintsInstance.java
@@ -26,14 +26,10 @@ import java.lang.reflect.Member;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import java.util.stream.Stream;
 import org.apache.polygene.api.common.Optional;
-import org.apache.polygene.api.constraint.ConstraintViolation;
+import org.apache.polygene.api.constraint.ValueConstraintViolation;
 import org.apache.polygene.api.constraint.ConstraintViolationException;
 
-/**
- * JAVADOC
- */
 public final class ValueConstraintsInstance
 {
     private static final Optional OPTIONAL;
@@ -43,7 +39,6 @@ public final class ValueConstraintsInstance
         OPTIONAL = new OptionalDummy();
     }
 
-    @SuppressWarnings( "raw" )
     private final List<ConstraintInstance> constraints;
     private String name;
     private boolean optional;
@@ -60,9 +55,9 @@ public final class ValueConstraintsInstance
     }
 
     @SuppressWarnings( { "raw", "unchecked" } )
-    public List<ConstraintViolation> checkConstraints( Object value )
+    public List<ValueConstraintViolation> checkConstraints( Object value )
     {
-        List<ConstraintViolation> violations = null;
+        List<ValueConstraintViolation> violations = null;
 
         // Check optional first - this avoids NPE's in constraints
         if( optional )
@@ -77,11 +72,11 @@ public final class ValueConstraintsInstance
             if( value == null )
             {
                 violations = new ArrayList<>();
-                violations.add( new ConstraintViolation( name, OPTIONAL, null ) );
+                violations.add( new ValueConstraintViolation( name, OPTIONAL, null ) );
             }
         }
 
-        if( violations == null && value != null )
+        if( violations == null )
         {
             for( ConstraintInstance constraint : constraints )
             {
@@ -102,7 +97,7 @@ public final class ValueConstraintsInstance
                     {
                         violations = new ArrayList<>();
                     }
-                    ConstraintViolation violation = new ConstraintViolation( name, constraint.annotation(), value );
+                    ValueConstraintViolation violation = new ValueConstraintViolation( name, constraint.annotation(), value );
                     violations.add( violation );
                 }
             }
@@ -116,11 +111,21 @@ public final class ValueConstraintsInstance
 
     public void checkConstraints( Object value, AccessibleObject accessor )
     {
-        List<ConstraintViolation> violations = checkConstraints( value );
+        List<ValueConstraintViolation> violations = checkConstraints( value );
         if( !violations.isEmpty() )
         {
-            Stream<Class<?>> empty = Stream.empty();
-            throw new ConstraintViolationException( "", empty, (Member) accessor, violations );
+            for( ValueConstraintViolation violation : violations )
+            {
+                if( accessor instanceof Member )
+                {
+                    Member member = (Member) accessor;
+                    String methodName =  member.getName();
+                    violation.setMixinType( member.getDeclaringClass() );
+                    violation.setMethodName( methodName );
+                }
+
+            }
+            throw new ConstraintViolationException( violations );
         }
     }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/main/java/org/apache/polygene/runtime/composite/ValueConstraintsModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/ValueConstraintsModel.java b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/ValueConstraintsModel.java
index 5568881..3e95209 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/ValueConstraintsModel.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/ValueConstraintsModel.java
@@ -20,13 +20,11 @@
 
 package org.apache.polygene.runtime.composite;
 
+import java.util.Collections;
 import java.util.List;
 import org.apache.polygene.api.util.HierarchicalVisitor;
 import org.apache.polygene.api.util.VisitableHierarchy;
 
-/**
- * JAVADOC
- */
 public final class ValueConstraintsModel
     implements VisitableHierarchy<Object, Object>
 {
@@ -43,17 +41,13 @@ public final class ValueConstraintsModel
 
     public ValueConstraintsInstance newInstance()
     {
-        return new ValueConstraintsInstance( constraintModels, name, optional );
+        List<AbstractConstraintModel> models = isConstrained() ? this.constraintModels : Collections.emptyList();
+        return new ValueConstraintsInstance( models, name, optional );
     }
 
     public boolean isConstrained()
     {
-        if( !constraintModels.isEmpty() )
-        {
-            return true;
-        }
-
-        return !optional;
+        return !constraintModels.isEmpty() || !optional;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/main/java/org/apache/polygene/runtime/entity/EntityInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/entity/EntityInstance.java b/core/runtime/src/main/java/org/apache/polygene/runtime/entity/EntityInstance.java
index 6893225..386a592 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/entity/EntityInstance.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/entity/EntityInstance.java
@@ -20,8 +20,6 @@
 package org.apache.polygene.runtime.entity;
 
 import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -299,12 +297,11 @@ public final class EntityInstance
         }
         catch( ConstraintViolationException e )
         {
-            List<? extends Type> entityModelList = entityModel.types().collect( toList() );
-            throw new ConstraintViolationException( reference.identity(),
-                                                    entityModelList,
-                                                    e.mixinTypeName(),
-                                                    e.methodName(),
-                                                    e.constraintViolations() );
+            e.setCompositeDescriptor( descriptor() );
+            e.setIdentity( entityState.entityReference().identity() );
+            e.setInstanceString( proxy.toString() );
+            e.setCompositeDescriptor( entityModel );
+            throw e;
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/main/java/org/apache/polygene/runtime/injection/provider/ServiceInjectionProviderFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/injection/provider/ServiceInjectionProviderFactory.java b/core/runtime/src/main/java/org/apache/polygene/runtime/injection/provider/ServiceInjectionProviderFactory.java
index f3dc70c..f6542e5 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/injection/provider/ServiceInjectionProviderFactory.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/injection/provider/ServiceInjectionProviderFactory.java
@@ -27,7 +27,7 @@ import java.util.ArrayList;
 import java.util.function.Function;
 import java.util.function.Predicate;
 import java.util.stream.Stream;
-import org.apache.polygene.api.service.NoSuchServiceException;
+import org.apache.polygene.api.service.NoSuchServiceTypeException;
 import org.apache.polygene.api.service.ServiceReference;
 import org.apache.polygene.api.service.qualifier.Qualifier;
 import org.apache.polygene.api.util.Classes;
@@ -203,7 +203,7 @@ public final class ServiceInjectionProviderFactory
                                   .filter( serviceQualifier ).findFirst().orElse( null );
                 }
             }
-            catch( NoSuchServiceException e )
+            catch( NoSuchServiceTypeException e )
             {
                 return null;
             }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/main/java/org/apache/polygene/runtime/injection/provider/UsesInjectionProviderFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/injection/provider/UsesInjectionProviderFactory.java b/core/runtime/src/main/java/org/apache/polygene/runtime/injection/provider/UsesInjectionProviderFactory.java
index 6b21d29..0ebf7e2 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/injection/provider/UsesInjectionProviderFactory.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/injection/provider/UsesInjectionProviderFactory.java
@@ -20,8 +20,8 @@
 package org.apache.polygene.runtime.injection.provider;
 
 import java.lang.reflect.Constructor;
-import org.apache.polygene.api.composite.NoSuchTransientException;
-import org.apache.polygene.api.object.NoSuchObjectException;
+import org.apache.polygene.api.composite.NoSuchTransientTypeException;
+import org.apache.polygene.api.object.NoSuchObjectTypeException;
 import org.apache.polygene.api.structure.Module;
 import org.apache.polygene.api.util.AccessibleObjects;
 import org.apache.polygene.bootstrap.InvalidInjectionException;
@@ -83,13 +83,13 @@ public final class UsesInjectionProviderFactory
                     }
                     usesObject = moduleInstance.newTransient( injectionType, uses.toArray() );
                 }
-                catch( NoSuchTransientException e )
+                catch( NoSuchTransientTypeException e )
                 {
                     try
                     {
                         usesObject = moduleInstance.newObject( injectionType, uses.toArray() );
                     }
-                    catch( NoSuchObjectException e1 )
+                    catch( NoSuchObjectTypeException e1 )
                     {
                         // Could not instantiate an instance - to try instantiate as plain class
                         try

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/main/java/org/apache/polygene/runtime/property/PropertyModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/property/PropertyModel.java b/core/runtime/src/main/java/org/apache/polygene/runtime/property/PropertyModel.java
index 984d8c4..7ca4395 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/property/PropertyModel.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/property/PropertyModel.java
@@ -31,7 +31,7 @@ import java.util.function.BiFunction;
 import java.util.stream.Stream;
 import org.apache.polygene.api.common.MetaInfo;
 import org.apache.polygene.api.common.QualifiedName;
-import org.apache.polygene.api.constraint.ConstraintViolation;
+import org.apache.polygene.api.constraint.ValueConstraintViolation;
 import org.apache.polygene.api.constraint.ConstraintViolationException;
 import org.apache.polygene.api.entity.Queryable;
 import org.apache.polygene.api.property.DefaultValues;
@@ -286,12 +286,7 @@ public class PropertyModel
         {
             if( constraints != null )
             {
-                List<ConstraintViolation> violations = constraints.checkConstraints( value );
-                if( !violations.isEmpty() )
-                {
-                    Stream<Class<?>> empty = Stream.empty();
-                    throw new ConstraintViolationException( "", empty, (Member) accessor, violations );
-                }
+                constraints.checkConstraints( value, accessor );
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/main/java/org/apache/polygene/runtime/query/QueryBuilderFactoryImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/query/QueryBuilderFactoryImpl.java b/core/runtime/src/main/java/org/apache/polygene/runtime/query/QueryBuilderFactoryImpl.java
index 0f572ea..e01af28 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/query/QueryBuilderFactoryImpl.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/query/QueryBuilderFactoryImpl.java
@@ -23,7 +23,7 @@ import java.util.Objects;
 import org.apache.polygene.api.query.NotQueryableException;
 import org.apache.polygene.api.query.QueryBuilder;
 import org.apache.polygene.api.query.QueryBuilderFactory;
-import org.apache.polygene.api.service.NoSuchServiceException;
+import org.apache.polygene.api.service.NoSuchServiceTypeException;
 import org.apache.polygene.api.service.ServiceFinder;
 import org.apache.polygene.api.service.ServiceReference;
 import org.apache.polygene.spi.query.EntityFinder;
@@ -61,7 +61,7 @@ public final class QueryBuilderFactoryImpl
             serviceReference = finder.findService( EntityFinder.class );
             return new QueryBuilderImpl<>( serviceReference.get(), resultType, null );
         }
-        catch( NoSuchServiceException e )
+        catch( NoSuchServiceTypeException e )
         {
             return new QueryBuilderImpl<>( null, resultType, null );
         }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/main/java/org/apache/polygene/runtime/structure/ModuleInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/structure/ModuleInstance.java b/core/runtime/src/main/java/org/apache/polygene/runtime/structure/ModuleInstance.java
index 20fa0f7..9422816 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/structure/ModuleInstance.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/structure/ModuleInstance.java
@@ -37,14 +37,14 @@ import org.apache.polygene.api.association.AssociationDescriptor;
 import org.apache.polygene.api.common.ConstructionException;
 import org.apache.polygene.api.composite.Composite;
 import org.apache.polygene.api.composite.ModelDescriptor;
-import org.apache.polygene.api.composite.NoSuchTransientException;
+import org.apache.polygene.api.composite.NoSuchTransientTypeException;
 import org.apache.polygene.api.composite.TransientBuilder;
 import org.apache.polygene.api.composite.TransientBuilderFactory;
 import org.apache.polygene.api.composite.TransientDescriptor;
 import org.apache.polygene.api.entity.EntityReference;
 import org.apache.polygene.api.identity.IdentityGenerator;
 import org.apache.polygene.api.metrics.MetricsProvider;
-import org.apache.polygene.api.object.NoSuchObjectException;
+import org.apache.polygene.api.object.NoSuchObjectTypeException;
 import org.apache.polygene.api.object.ObjectDescriptor;
 import org.apache.polygene.api.object.ObjectFactory;
 import org.apache.polygene.api.property.Property;
@@ -53,7 +53,7 @@ import org.apache.polygene.api.query.QueryBuilder;
 import org.apache.polygene.api.query.QueryBuilderFactory;
 import org.apache.polygene.api.serialization.Serialization;
 import org.apache.polygene.api.serialization.SerializationException;
-import org.apache.polygene.api.service.NoSuchServiceException;
+import org.apache.polygene.api.service.NoSuchServiceTypeException;
 import org.apache.polygene.api.service.ServiceFinder;
 import org.apache.polygene.api.service.ServiceReference;
 import org.apache.polygene.api.structure.LayerDescriptor;
@@ -63,7 +63,7 @@ import org.apache.polygene.api.structure.TypeLookup;
 import org.apache.polygene.api.type.HasTypes;
 import org.apache.polygene.api.unitofwork.UnitOfWorkException;
 import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
-import org.apache.polygene.api.value.NoSuchValueException;
+import org.apache.polygene.api.value.NoSuchValueTypeException;
 import org.apache.polygene.api.value.ValueBuilder;
 import org.apache.polygene.api.value.ValueBuilderFactory;
 import org.apache.polygene.api.value.ValueDescriptor;
@@ -166,15 +166,15 @@ public class ModuleInstance
     // Implementation of ObjectFactory
     @Override
     public <T> T newObject( Class<T> mixinType, Object... uses )
-        throws NoSuchObjectException
+        throws NoSuchObjectTypeException
     {
         Objects.requireNonNull( mixinType, "mixinType" );
         ObjectDescriptor model = typeLookup.lookupObjectModel( mixinType );
 
         if( model == null )
         {
-            throw new NoSuchObjectException( mixinType.getName(), name(),
-                                             typeLookup.allObjects().flatMap( HasTypes::types ) );
+            throw new NoSuchObjectTypeException( mixinType.getName(), name(),
+                                                 typeLookup.allObjects().flatMap( HasTypes::types ) );
         }
 
         InjectionContext injectionContext = new InjectionContext( model.module(), UsesInstance.EMPTY_USES.use( uses ) );
@@ -190,8 +190,8 @@ public class ModuleInstance
 
         if( model == null )
         {
-            throw new NoSuchObjectException( instance.getClass().getName(), name(),
-                                             typeLookup.allObjects().flatMap( HasTypes::types ) );
+            throw new NoSuchObjectTypeException( instance.getClass().getName(), name(),
+                                                 typeLookup.allObjects().flatMap( HasTypes::types ) );
         }
 
         InjectionContext injectionContext = new InjectionContext( model.module(), UsesInstance.EMPTY_USES.use( uses ) );
@@ -201,14 +201,14 @@ public class ModuleInstance
     // Implementation of TransientBuilderFactory
     @Override
     public <T> TransientBuilder<T> newTransientBuilder( Class<T> mixinType )
-        throws NoSuchTransientException
+        throws NoSuchTransientTypeException
     {
         Objects.requireNonNull( mixinType, "mixinType" );
         TransientDescriptor model = typeLookup.lookupTransientModel( mixinType );
 
         if( model == null )
         {
-            throw new NoSuchTransientException( mixinType.getName(), name(), typeLookup );
+            throw new NoSuchTransientTypeException( mixinType.getName(), name(), typeLookup );
         }
 
         Map<AccessibleObject, Property<?>> properties = new HashMap<>();
@@ -228,7 +228,7 @@ public class ModuleInstance
 
     @Override
     public <T> T newTransient( final Class<T> mixinType, Object... uses )
-        throws NoSuchTransientException, ConstructionException
+        throws NoSuchTransientTypeException, ConstructionException
     {
         return newTransientBuilder( mixinType ).use( uses ).newInstance();
     }
@@ -236,21 +236,21 @@ public class ModuleInstance
     // Implementation of ValueBuilderFactory
     @Override
     public <T> T newValue( Class<T> mixinType )
-        throws NoSuchValueException, ConstructionException
+        throws NoSuchValueTypeException, ConstructionException
     {
         return newValueBuilder( mixinType ).newInstance();
     }
 
     @Override
     public <T> ValueBuilder<T> newValueBuilder( Class<T> mixinType )
-        throws NoSuchValueException
+        throws NoSuchValueTypeException
     {
         Objects.requireNonNull( mixinType, "mixinType" );
         ValueDescriptor compositeModelModule = typeLookup.lookupValueModel( mixinType );
 
         if( compositeModelModule == null )
         {
-            throw new NoSuchValueException( mixinType.getName(), name(), typeLookup );
+            throw new NoSuchValueTypeException( mixinType.getName(), name(), typeLookup );
         }
 
         StateResolver stateResolver = new InitialStateResolver( compositeModelModule.module() );
@@ -274,7 +274,7 @@ public class ModuleInstance
 
         if( compositeModelModule == null )
         {
-            throw new NoSuchValueException( mixinType.getName(), name(), typeLookup );
+            throw new NoSuchValueTypeException( mixinType.getName(), name(), typeLookup );
         }
 
         StateResolver stateResolver = new FunctionStateResolver(
@@ -332,7 +332,7 @@ public class ModuleInstance
 
         if( model == null )
         {
-            throw new NoSuchValueException( valueType.getName(), name(), typeLookup );
+            throw new NoSuchValueTypeException( valueType.getName(), name(), typeLookup );
         }
 
         return new ValueBuilderWithPrototype<>( model, this, prototype );
@@ -340,14 +340,14 @@ public class ModuleInstance
 
     @Override
     public <T> T newValueFromSerializedState( Class<T> mixinType, String serializedState )
-        throws NoSuchValueException, ConstructionException
+        throws NoSuchValueTypeException, ConstructionException
     {
         Objects.requireNonNull( mixinType, "mixinType" );
         ValueDescriptor model = typeLookup.lookupValueModel( mixinType );
 
         if( model == null )
         {
-            throw new NoSuchValueException( mixinType.getName(), name(), typeLookup );
+            throw new NoSuchValueTypeException( mixinType.getName(), name(), typeLookup );
         }
 
         try
@@ -369,7 +369,7 @@ public class ModuleInstance
 
     @Override
     public <T> ServiceReference<T> findService( Class<T> serviceType )
-        throws NoSuchServiceException
+        throws NoSuchServiceTypeException
     {
         return findService( (Type) serviceType );
     }
@@ -380,7 +380,7 @@ public class ModuleInstance
         ModelDescriptor serviceModel = typeLookup.lookupServiceModel( serviceType );
         if( serviceModel == null )
         {
-            throw new NoSuchServiceException( serviceType.getTypeName(), name(), typeLookup );
+            throw new NoSuchServiceTypeException( serviceType.getTypeName(), name(), typeLookup );
         }
         return findServiceReferenceInstance( serviceModel );
     }
@@ -482,7 +482,7 @@ public class ModuleInstance
                     {
                         store = findService( EntityStore.class ).get();
                     }
-                    catch( NoSuchServiceException e )
+                    catch( NoSuchServiceTypeException e )
                     {
                         throw new UnitOfWorkException( "No EntityStore service available in module " + name() );
                     }
@@ -505,7 +505,7 @@ public class ModuleInstance
                     {
                         uowf = findService( UnitOfWorkFactory.class ).get();
                     }
-                    catch( NoSuchServiceException e )
+                    catch( NoSuchServiceTypeException e )
                     {
                         throw new UnitOfWorkException( "No UnitOfWorkFactory service available in module " + name() );
                     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueBuilderInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueBuilderInstance.java b/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueBuilderInstance.java
index 91f975d..d92ad72 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueBuilderInstance.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueBuilderInstance.java
@@ -22,7 +22,7 @@ package org.apache.polygene.runtime.value;
 import org.apache.polygene.api.association.AssociationStateHolder;
 import org.apache.polygene.api.common.ConstructionException;
 import org.apache.polygene.api.composite.Composite;
-import org.apache.polygene.api.value.NoSuchValueException;
+import org.apache.polygene.api.value.NoSuchValueTypeException;
 import org.apache.polygene.api.value.ValueBuilder;
 import org.apache.polygene.api.value.ValueDescriptor;
 import org.apache.polygene.runtime.composite.StateResolver;
@@ -86,7 +86,7 @@ public final class ValueBuilderInstance<T>
 
         if( valueModel == null )
         {
-            throw new NoSuchValueException( valueType.getName(), currentModule.name(), currentModule.typeLookup() );
+            throw new NoSuchValueTypeException( valueType.getName(), currentModule.name(), currentModule.typeLookup() );
         }
         return new ValueBuilderWithPrototype<>( valueModel, currentModule, prototype() ).newInstance();
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueModel.java b/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueModel.java
index b79b298..9338deb 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueModel.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueModel.java
@@ -20,15 +20,20 @@
 
 package org.apache.polygene.runtime.value;
 
-import java.lang.reflect.Member;
-import java.lang.reflect.Type;
+import java.util.ArrayList;
 import java.util.List;
-import java.util.stream.Stream;
+import org.apache.polygene.api.association.AssociationDescriptor;
 import org.apache.polygene.api.common.MetaInfo;
 import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.api.constraint.ValueConstraintViolation;
 import org.apache.polygene.api.constraint.ConstraintViolationException;
+import org.apache.polygene.api.entity.EntityDescriptor;
+import org.apache.polygene.api.identity.HasIdentity;
+import org.apache.polygene.api.identity.Identity;
 import org.apache.polygene.api.structure.ModuleDescriptor;
+import org.apache.polygene.api.structure.TypeLookup;
 import org.apache.polygene.api.type.ValueCompositeType;
+import org.apache.polygene.api.unitofwork.NoSuchEntityTypeException;
 import org.apache.polygene.api.util.Classes;
 import org.apache.polygene.api.value.ValueDescriptor;
 import org.apache.polygene.runtime.composite.CompositeMethodsModel;
@@ -37,6 +42,7 @@ import org.apache.polygene.runtime.composite.MixinModel;
 import org.apache.polygene.runtime.composite.MixinsModel;
 import org.apache.polygene.runtime.composite.UsesInstance;
 import org.apache.polygene.runtime.injection.InjectionContext;
+import org.apache.polygene.runtime.property.PropertyInstance;
 import org.apache.polygene.runtime.unitofwork.UnitOfWorkInstance;
 
 /**
@@ -54,10 +60,11 @@ public final class ValueModel extends CompositeModel
                        final MixinsModel mixinsModel,
                        final ValueStateModel stateModel,
                        final CompositeMethodsModel compositeMethodsModel
-    )
+                     )
     {
         super( module, types, visibility, metaInfo, mixinsModel, stateModel, compositeMethodsModel );
-
+// TODO: When TypeLookup's lazy loading can be disabled during Model building, then uncomment the following line.
+//        checkAssociationVisibility();
         valueType = ValueCompositeType.of( this );
     }
 
@@ -77,6 +84,8 @@ public final class ValueModel extends CompositeModel
     void checkConstraints( ValueStateInstance state )
         throws ConstraintViolationException
     {
+        List<ValueConstraintViolation> violations = new ArrayList<>();
+
         stateModel.properties().forEach(
             propertyModel ->
             {
@@ -86,11 +95,10 @@ public final class ValueModel extends CompositeModel
                 }
                 catch( ConstraintViolationException e )
                 {
-                    throw new ConstraintViolationException( "<builder>", propertyModel.valueType()
-                        .types(), (Member) propertyModel.accessor(), e.constraintViolations() );
+                    violations.addAll( e.constraintViolations() );
                 }
             }
-        );
+                                       );
 
         // IF no UnitOfWork is active, then the Association checks shouldn't be done.
         if( UnitOfWorkInstance.getCurrent().empty() )
@@ -106,21 +114,73 @@ public final class ValueModel extends CompositeModel
                 }
                 catch( ConstraintViolationException e )
                 {
-                    Stream<? extends Type> types = Classes.interfacesOf( associationModel.type() );
-                    throw new ConstraintViolationException( "<builder>", types,
-                                                            (Member) associationModel.accessor(),
-                                                            e.constraintViolations() );
+                    try
+                    {
+                        PropertyInstance<Identity> identityProperty = state.propertyFor( HasIdentity.IDENTITY_METHOD );
+                        e.setIdentity( identityProperty.get() );
+                    }
+                    catch( IllegalArgumentException e1 )
+                    {
+                        // ignore. Is not a HasIdentity instance
+                    }
+                    throw e;
                 }
             }
-        );
+                                                               );
 
         ( (ValueStateModel) stateModel ).manyAssociations().forEach(
-            model -> model.checkAssociationConstraints( state.manyAssociationFor( model.accessor() ) )
-        );
+            model ->
+            {
+                try
+                {
+                    model.checkAssociationConstraints( state.manyAssociationFor( model.accessor() ) );
+                }
+                catch( ConstraintViolationException e )
+                {
+                    try
+                    {
+                        PropertyInstance<Identity> identityProperty = state.propertyFor( HasIdentity.IDENTITY_METHOD );
+                        e.setIdentity( identityProperty.get() );
+                    }
+                    catch( IllegalArgumentException e1 )
+                    {
+                        // ignore. is not a HasIdentity value
+                    }
+                    throw e;
+
+                }
+            }
+                                                                   );
 
         ( (ValueStateModel) stateModel ).namedAssociations().forEach(
-            model -> model.checkAssociationConstraints( state.namedAssociationFor( model.accessor() ) )
-        );
+            model ->
+            {
+                try
+                {
+                    model.checkAssociationConstraints( state.namedAssociationFor( model.accessor() ) );
+                }
+                catch( ConstraintViolationException e )
+                {
+                    PropertyInstance<Identity> propertyInstance = state.propertyFor( HasIdentity.IDENTITY_METHOD );
+                    throw e;
+
+                }
+            }
+                                                                    );
+        if( ! violations.isEmpty() )
+        {
+            ConstraintViolationException exception = new ConstraintViolationException( violations );
+            try
+            {
+                PropertyInstance<Identity> identityProperty = state.propertyFor( HasIdentity.IDENTITY_METHOD );
+                exception.setIdentity(identityProperty.get());
+            }
+            catch( IllegalArgumentException e )
+            {
+                // ignore, there is no Identity.
+            }
+            throw exception;
+        }
     }
 
     public ValueInstance newValueInstance( ValueStateInstance state )
@@ -140,4 +200,24 @@ public final class ValueModel extends CompositeModel
         // Return
         return instance;
     }
+
+    private void checkAssociationVisibility()
+    {
+        // All referenced entity types in any Associations must be visible from the module of this ValueModel.
+        TypeLookup lookup = module.typeLookup();
+        ValueStateModel stateModel = (ValueStateModel) this.stateModel;
+        stateModel.associations().forEach( model -> checkModel( lookup, model ) );
+        stateModel.manyAssociations().forEach( model -> checkModel( lookup, model ) );
+        stateModel.namedAssociations().forEach( model -> checkModel( lookup, model ) );
+    }
+
+    private void checkModel( TypeLookup lookup, AssociationDescriptor model )
+    {
+        Class<?> rawClass = Classes.RAW_CLASS.apply( model.type() );
+        List<EntityDescriptor> descriptors = lookup.lookupEntityModels( rawClass );
+        if( descriptors.size() == 0 )
+        {
+            throw new NoSuchEntityTypeException( rawClass.getName(), module.name(), lookup );
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/test/java/org/apache/polygene/constraints/PropertyConstraintTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/constraints/PropertyConstraintTest.java b/core/runtime/src/test/java/org/apache/polygene/constraints/PropertyConstraintTest.java
index ca3b1fa..51b9e93 100644
--- a/core/runtime/src/test/java/org/apache/polygene/constraints/PropertyConstraintTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/constraints/PropertyConstraintTest.java
@@ -22,7 +22,7 @@ package org.apache.polygene.constraints;
 import java.util.Collection;
 import org.apache.polygene.api.composite.TransientBuilder;
 import org.apache.polygene.api.composite.TransientComposite;
-import org.apache.polygene.api.constraint.ConstraintViolation;
+import org.apache.polygene.api.constraint.ValueConstraintViolation;
 import org.apache.polygene.api.constraint.ConstraintViolationException;
 import org.apache.polygene.api.constraint.Constraints;
 import org.apache.polygene.api.property.Property;
@@ -53,7 +53,7 @@ public class PropertyConstraintTest
         }
         catch( ConstraintViolationException e )
         {
-            Collection<ConstraintViolation> violations = e.constraintViolations();
+            Collection<ValueConstraintViolation> violations = e.constraintViolations();
             assertEquals( 2, violations.size() );
         }
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/test/java/org/apache/polygene/runtime/composite/CompositeFactoryImplTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/composite/CompositeFactoryImplTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/composite/CompositeFactoryImplTest.java
index f13c0b0..adb0ccb 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/composite/CompositeFactoryImplTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/composite/CompositeFactoryImplTest.java
@@ -26,7 +26,7 @@ import org.apache.polygene.test.AbstractPolygeneTest;
 import org.junit.Test;
 import org.apache.polygene.api.common.AppliesTo;
 import org.apache.polygene.api.common.AppliesToFilter;
-import org.apache.polygene.api.composite.NoSuchTransientException;
+import org.apache.polygene.api.composite.NoSuchTransientTypeException;
 import org.apache.polygene.api.composite.TransientBuilder;
 import org.apache.polygene.api.composite.TransientComposite;
 import org.apache.polygene.api.mixin.Mixins;
@@ -46,7 +46,7 @@ public class CompositeFactoryImplTest
     }
 
     @SuppressWarnings( "unchecked" )
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void testNewInstanceNotExtendingComposite()
         throws Exception
     {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/test/java/org/apache/polygene/runtime/composite/InterfaceDefaultMethodsTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/composite/InterfaceDefaultMethodsTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/composite/InterfaceDefaultMethodsTest.java
index f70ced7..ad9def8 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/composite/InterfaceDefaultMethodsTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/composite/InterfaceDefaultMethodsTest.java
@@ -46,7 +46,10 @@ import static org.junit.Assert.assertThat;
 public class InterfaceDefaultMethodsTest extends AbstractPolygeneTest
 {
     @BeforeClass
-    public static void assumeJavaVersionIs8() { assumeJavaVersion( 8 ); }
+    public static void assumeJavaVersionIs8()
+    {
+        assumeJavaVersion( 8 );
+    }
 
     public interface DefaultMethods
     {
@@ -236,6 +239,8 @@ public class InterfaceDefaultMethodsTest extends AbstractPolygeneTest
         catch( ConstraintViolationException ex )
         {
             assertThat( ex.getMessage(), containsString( "sayHello" ) );
+            assertThat( ex.getMessage(), containsString( "DefaultMethodsConstraints" ) );
+            assertThat( ex.getMessage(), containsString( "NotEmpty" ) );
         }
     }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/test/java/org/apache/polygene/runtime/constraints/ConstraintsTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/constraints/ConstraintsTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/constraints/ConstraintsTest.java
index f560439..f7d40d5 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/constraints/ConstraintsTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/constraints/ConstraintsTest.java
@@ -29,7 +29,7 @@ import org.apache.polygene.api.common.Optional;
 import org.apache.polygene.api.composite.TransientComposite;
 import org.apache.polygene.api.constraint.Constraint;
 import org.apache.polygene.api.constraint.ConstraintDeclaration;
-import org.apache.polygene.api.constraint.ConstraintViolation;
+import org.apache.polygene.api.constraint.ValueConstraintViolation;
 import org.apache.polygene.api.constraint.ConstraintViolationException;
 import org.apache.polygene.api.constraint.Constraints;
 import org.apache.polygene.api.constraint.Name;
@@ -66,7 +66,7 @@ public class ConstraintsTest
         }
         catch( ConstraintViolationException e )
         {
-            Collection<ConstraintViolation> violations = e.constraintViolations();
+            Collection<ValueConstraintViolation> violations = e.constraintViolations();
             assertEquals( 2, violations.size() );
 //            assertEquals( MyOne.class.getName(), e.mixinTypeName() );
         }
@@ -87,7 +87,7 @@ public class ConstraintsTest
         }
         catch( ConstraintViolationException e )
         {
-            Collection<ConstraintViolation> violations = e.constraintViolations();
+            Collection<ValueConstraintViolation> violations = e.constraintViolations();
             assertEquals( 2, violations.size() );
 //            assertEquals( MyOne.class.getName(), e.mixinTypeName() );
         }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectBuilderFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectBuilderFactoryTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectBuilderFactoryTest.java
index 39cb71c..9a6c49f 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectBuilderFactoryTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectBuilderFactoryTest.java
@@ -23,7 +23,7 @@ package org.apache.polygene.runtime.objects;
 import org.apache.polygene.api.activation.ActivationException;
 import org.apache.polygene.api.injection.scope.Structure;
 import org.apache.polygene.api.injection.scope.Uses;
-import org.apache.polygene.api.object.NoSuchObjectException;
+import org.apache.polygene.api.object.NoSuchObjectTypeException;
 import org.apache.polygene.api.structure.Module;
 import org.apache.polygene.bootstrap.SingletonAssembler;
 import org.junit.Assert;
@@ -43,7 +43,7 @@ public class ObjectBuilderFactoryTest
      *
      * @throws Exception expected
      */
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void newBuilderForUnregisteredObject()
         throws Exception
     {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectVisibilityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectVisibilityTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectVisibilityTest.java
index 59c5a98..ed0171a 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectVisibilityTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectVisibilityTest.java
@@ -27,7 +27,7 @@ import org.apache.polygene.api.identity.Identity;
 import org.apache.polygene.api.identity.StringIdentity;
 import org.apache.polygene.api.injection.scope.Structure;
 import org.apache.polygene.api.mixin.Mixins;
-import org.apache.polygene.api.object.NoSuchObjectException;
+import org.apache.polygene.api.object.NoSuchObjectTypeException;
 import org.apache.polygene.api.service.ServiceComposite;
 import org.apache.polygene.api.structure.Application;
 import org.apache.polygene.api.structure.Module;
@@ -131,7 +131,7 @@ public class ObjectVisibilityTest
         service.besideLayerVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromServiceWhenAccessingBesideModuleVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
@@ -145,35 +145,35 @@ public class ObjectVisibilityTest
         service.belowApplicationVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromServiceWhenAccessingBelowLayerVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
         service.belowLayerVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromServiceWhenAccessingBelowModuleVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
         service.belowModuleVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromServiceWhenAccessingAboveApplicationVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
         service.aboveApplicationVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromServiceWhenAccessingAboveLayerVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
         service.aboveLayerVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromServiceWhenAccessingAboveModuleVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
@@ -270,7 +270,7 @@ public class ObjectVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromEntityWhenAccessingBesideModuleVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -306,7 +306,7 @@ public class ObjectVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromEntityWhenAccessingBelowLayerVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -324,7 +324,7 @@ public class ObjectVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromEntityWhenAccessingBelowModuleVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -342,7 +342,7 @@ public class ObjectVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromEntityWhenAccessingAboveApplicationVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -360,7 +360,7 @@ public class ObjectVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromEntityWhenAccessingAboveLayerVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -378,7 +378,7 @@ public class ObjectVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromEntityWhenAccessingAboveModuleVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -431,7 +431,7 @@ public class ObjectVisibilityTest
         value.besideLayerVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromValueWhenAccessingBesideModuleVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
@@ -445,35 +445,35 @@ public class ObjectVisibilityTest
         value.belowApplicationVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromValueWhenAccessingBelowLayerVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
         value.belowLayerVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromValueWhenAccessingBelowModuleVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
         value.belowModuleVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromValueWhenAccessingAboveApplicationVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
         value.aboveApplicationVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromValueWhenAccessingAboveLayerVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
         value.aboveLayerVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromValueWhenAccessingAboveModuleVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
@@ -515,7 +515,7 @@ public class ObjectVisibilityTest
         transientt.besideLayerVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromTransientWhenAccessingBesideModuleVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
@@ -529,35 +529,35 @@ public class ObjectVisibilityTest
         transientt.belowApplicationVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromTransientWhenAccessingBelowLayerVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
         transientt.belowLayerVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromTransientWhenAccessingBelowModuleVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
         transientt.belowModuleVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromTransientWhenAccessingAboveApplicationVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
         transientt.aboveApplicationVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromTransientWhenAccessingAboveLayerVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
         transientt.aboveLayerVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromTransientWhenAccessingAboveModuleVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
@@ -599,7 +599,7 @@ public class ObjectVisibilityTest
         object.besideLayerVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromObjectWhenAccessingBesideModuleVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );
@@ -613,35 +613,35 @@ public class ObjectVisibilityTest
         object.belowApplicationVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromObjectWhenAccessingBelowLayerVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );
         object.belowLayerVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromObjectWhenAccessingBelowModuleVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );
         object.belowModuleVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromObjectWhenAccessingAboveApplicationVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );
         object.aboveApplicationVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromObjectWhenAccessingAboveLayerVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );
         object.aboveLayerVisible();
     }
 
-    @Test( expected = NoSuchObjectException.class )
+    @Test( expected = NoSuchObjectTypeException.class )
     public void givenFromObjectWhenAccessingAboveModuleVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/test/java/org/apache/polygene/runtime/service/ServiceVisibilityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/service/ServiceVisibilityTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/service/ServiceVisibilityTest.java
index e82a092..9d51f48 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/service/ServiceVisibilityTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/service/ServiceVisibilityTest.java
@@ -27,7 +27,7 @@ import org.apache.polygene.api.identity.Identity;
 import org.apache.polygene.api.identity.StringIdentity;
 import org.apache.polygene.api.injection.scope.Structure;
 import org.apache.polygene.api.mixin.Mixins;
-import org.apache.polygene.api.service.NoSuchServiceException;
+import org.apache.polygene.api.service.NoSuchServiceTypeException;
 import org.apache.polygene.api.service.ServiceComposite;
 import org.apache.polygene.api.structure.Application;
 import org.apache.polygene.api.structure.Module;
@@ -130,7 +130,7 @@ public class ServiceVisibilityTest
         service.besideLayerVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromServiceWhenAccessingBesideModuleVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
@@ -144,35 +144,35 @@ public class ServiceVisibilityTest
         service.belowApplicationVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromServiceWhenAccessingBelowLayerVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
         service.belowLayerVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromServiceWhenAccessingBelowModuleVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
         service.belowModuleVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromServiceWhenAccessingAboveApplicationVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
         service.aboveApplicationVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromServiceWhenAccessingAboveLayerVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
         service.aboveLayerVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromServiceWhenAccessingAboveModuleVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
@@ -269,7 +269,7 @@ public class ServiceVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromEntityWhenAccessingBesideModuleVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -305,7 +305,7 @@ public class ServiceVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromEntityWhenAccessingBelowLayerVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -323,7 +323,7 @@ public class ServiceVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromEntityWhenAccessingBelowModuleVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -341,7 +341,7 @@ public class ServiceVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromEntityWhenAccessingAboveApplicationVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -359,7 +359,7 @@ public class ServiceVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromEntityWhenAccessingAboveLayerVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -377,7 +377,7 @@ public class ServiceVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromEntityWhenAccessingAboveModuleVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -430,7 +430,7 @@ public class ServiceVisibilityTest
         value.besideLayerVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromValueWhenAccessingBesideModuleVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
@@ -444,35 +444,35 @@ public class ServiceVisibilityTest
         value.belowApplicationVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromValueWhenAccessingBelowLayerVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
         value.belowLayerVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromValueWhenAccessingBelowModuleVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
         value.belowModuleVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromValueWhenAccessingAboveApplicationVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
         value.aboveApplicationVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromValueWhenAccessingAboveLayerVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
         value.aboveLayerVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromValueWhenAccessingAboveModuleVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
@@ -514,7 +514,7 @@ public class ServiceVisibilityTest
         transientt.besideLayerVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromTransientWhenAccessingBesideModuleVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
@@ -528,35 +528,35 @@ public class ServiceVisibilityTest
         transientt.belowApplicationVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromTransientWhenAccessingBelowLayerVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
         transientt.belowLayerVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromTransientWhenAccessingBelowModuleVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
         transientt.belowModuleVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromTransientWhenAccessingAboveApplicationVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
         transientt.aboveApplicationVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromTransientWhenAccessingAboveLayerVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
         transientt.aboveLayerVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromTransientWhenAccessingAboveModuleVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
@@ -598,7 +598,7 @@ public class ServiceVisibilityTest
         object.besideLayerVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromObjectWhenAccessingBesideModuleVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );
@@ -612,35 +612,35 @@ public class ServiceVisibilityTest
         object.belowApplicationVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromObjectWhenAccessingBelowLayerVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );
         object.belowLayerVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromObjectWhenAccessingBelowModuleVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );
         object.belowModuleVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromObjectWhenAccessingAboveApplicationVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );
         object.aboveApplicationVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromObjectWhenAccessingAboveLayerVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );
         object.aboveLayerVisible();
     }
 
-    @Test( expected = NoSuchServiceException.class )
+    @Test( expected = NoSuchServiceTypeException.class )
     public void givenFromObjectWhenAccessingAboveModuleVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/test/java/org/apache/polygene/runtime/structure/MixinVisibilityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/structure/MixinVisibilityTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/structure/MixinVisibilityTest.java
index a1ee0e9..1174e2b 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/structure/MixinVisibilityTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/structure/MixinVisibilityTest.java
@@ -23,7 +23,7 @@ package org.apache.polygene.runtime.structure;
 import org.apache.polygene.api.common.Optional;
 import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.api.composite.AmbiguousTypeException;
-import org.apache.polygene.api.composite.NoSuchTransientException;
+import org.apache.polygene.api.composite.NoSuchTransientTypeException;
 import org.apache.polygene.api.composite.TransientBuilder;
 import org.apache.polygene.api.composite.TransientBuilderFactory;
 import org.apache.polygene.api.injection.scope.Structure;
@@ -97,7 +97,7 @@ public class MixinVisibilityTest
         assertEquals( "abc", object.test2() );
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void testMixinInLayerIsNotVisible()
         throws Exception
     {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/test/java/org/apache/polygene/runtime/structure/PrivateCompositeVisibilityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/structure/PrivateCompositeVisibilityTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/structure/PrivateCompositeVisibilityTest.java
index 701201a..70ef4b8 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/structure/PrivateCompositeVisibilityTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/structure/PrivateCompositeVisibilityTest.java
@@ -21,7 +21,7 @@
 package org.apache.polygene.runtime.structure;
 
 import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.api.composite.NoSuchTransientException;
+import org.apache.polygene.api.composite.NoSuchTransientTypeException;
 import org.apache.polygene.api.composite.TransientBuilderFactory;
 import org.apache.polygene.api.composite.TransientComposite;
 import org.apache.polygene.api.injection.scope.Structure;
@@ -39,7 +39,7 @@ import org.junit.Test;
  */
 public class PrivateCompositeVisibilityTest
 {
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void testPrivateCompositeVisibility()
         throws Exception
     {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientBuilderFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientBuilderFactoryTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientBuilderFactoryTest.java
index 9383841..95dbfff 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientBuilderFactoryTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientBuilderFactoryTest.java
@@ -25,7 +25,7 @@ import org.hamcrest.core.IsEqual;
 import org.junit.Test;
 import org.apache.polygene.api.activation.ActivationException;
 import org.apache.polygene.api.common.UseDefaults;
-import org.apache.polygene.api.composite.NoSuchTransientException;
+import org.apache.polygene.api.composite.NoSuchTransientTypeException;
 import org.apache.polygene.api.composite.TransientComposite;
 import org.apache.polygene.api.concern.Concerns;
 import org.apache.polygene.api.concern.GenericConcern;
@@ -52,7 +52,7 @@ public class TransientBuilderFactoryTest
      *
      * @throws Exception expected
      */
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void newBuilderForUnregisteredComposite()
         throws Exception
     {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientVisibilityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientVisibilityTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientVisibilityTest.java
index ba92bf1..c71d526 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientVisibilityTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientVisibilityTest.java
@@ -21,7 +21,7 @@
 package org.apache.polygene.runtime.transients;
 
 import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.api.composite.NoSuchTransientException;
+import org.apache.polygene.api.composite.NoSuchTransientTypeException;
 import org.apache.polygene.api.composite.TransientBuilder;
 import org.apache.polygene.api.composite.TransientComposite;
 import org.apache.polygene.api.entity.EntityComposite;
@@ -130,7 +130,7 @@ public class TransientVisibilityTest
         service.besideLayerVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromServiceWhenAccessingBesideModuleVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
@@ -144,35 +144,35 @@ public class TransientVisibilityTest
         service.belowApplicationVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromServiceWhenAccessingBelowLayerVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
         service.belowLayerVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromServiceWhenAccessingBelowModuleVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
         service.belowModuleVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromServiceWhenAccessingAboveApplicationVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
         service.aboveApplicationVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromServiceWhenAccessingAboveLayerVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
         service.aboveLayerVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromServiceWhenAccessingAboveModuleVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
@@ -269,7 +269,7 @@ public class TransientVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromEntityWhenAccessingBesideModuleVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -305,7 +305,7 @@ public class TransientVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromEntityWhenAccessingBelowLayerVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -323,7 +323,7 @@ public class TransientVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromEntityWhenAccessingBelowModuleVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -341,7 +341,7 @@ public class TransientVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromEntityWhenAccessingAboveApplicationVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -359,7 +359,7 @@ public class TransientVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromEntityWhenAccessingAboveLayerVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -377,7 +377,7 @@ public class TransientVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromEntityWhenAccessingAboveModuleVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -430,7 +430,7 @@ public class TransientVisibilityTest
         value.besideLayerVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromValueWhenAccessingBesideModuleVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
@@ -444,35 +444,35 @@ public class TransientVisibilityTest
         value.belowApplicationVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromValueWhenAccessingBelowLayerVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
         value.belowLayerVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromValueWhenAccessingBelowModuleVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
         value.belowModuleVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromValueWhenAccessingAboveApplicationVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
         value.aboveApplicationVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromValueWhenAccessingAboveLayerVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
         value.aboveLayerVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromValueWhenAccessingAboveModuleVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
@@ -514,7 +514,7 @@ public class TransientVisibilityTest
         transientt.besideLayerVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromTransientWhenAccessingBesideModuleVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
@@ -528,35 +528,35 @@ public class TransientVisibilityTest
         transientt.belowApplicationVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromTransientWhenAccessingBelowLayerVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
         transientt.belowLayerVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromTransientWhenAccessingBelowModuleVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
         transientt.belowModuleVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromTransientWhenAccessingAboveApplicationVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
         transientt.aboveApplicationVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromTransientWhenAccessingAboveLayerVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
         transientt.aboveLayerVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromTransientWhenAccessingAboveModuleVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
@@ -598,7 +598,7 @@ public class TransientVisibilityTest
         object.besideLayerVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromObjectWhenAccessingBesideModuleVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );
@@ -612,35 +612,35 @@ public class TransientVisibilityTest
         object.belowApplicationVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromObjectWhenAccessingBelowLayerVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );
         object.belowLayerVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromObjectWhenAccessingBelowModuleVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );
         object.belowModuleVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromObjectWhenAccessingAboveApplicationVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );
         object.aboveApplicationVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromObjectWhenAccessingAboveLayerVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );
         object.aboveLayerVisible();
     }
 
-    @Test( expected = NoSuchTransientException.class )
+    @Test( expected = NoSuchTransientTypeException.class )
     public void givenFromObjectWhenAccessingAboveModuleVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );


[18/50] polygene-java git commit: Reverting the check that Composites are not allowed in @Uses. My prevention was too wide.

Posted by ni...@apache.org.
Reverting the check that Composites are not allowed in @Uses. My prevention was too wide.


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

Branch: refs/heads/es-jooq
Commit: a3e9acd425c7b912223a589b528f4c35af19b0dc
Parents: 517b909
Author: niclas <ni...@hedhman.org>
Authored: Sat Jun 24 11:10:43 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sat Jun 24 11:10:43 2017 +0800

----------------------------------------------------------------------
 .../runtime/composite/TransientModel.java       | 15 +++-
 .../runtime/composite/UsesInstance.java         | 10 +--
 .../polygene/runtime/entity/EntityModel.java    |  6 ++
 .../polygene/runtime/value/ValueModel.java      | 56 +++++--------
 .../runtime/composite/IsCompositeTest.java      | 55 -------------
 .../runtime/composite/UseCompositeTest.java     | 84 ++++++++++++++++++++
 6 files changed, 125 insertions(+), 101 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a3e9acd4/core/runtime/src/main/java/org/apache/polygene/runtime/composite/TransientModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/TransientModel.java b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/TransientModel.java
index 4aedb47..5cf9a71 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/TransientModel.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/TransientModel.java
@@ -27,6 +27,7 @@ import org.apache.polygene.api.composite.TransientDescriptor;
 import org.apache.polygene.api.constraint.ConstraintViolationException;
 import org.apache.polygene.api.structure.ModuleDescriptor;
 import org.apache.polygene.runtime.injection.InjectionContext;
+import org.apache.polygene.runtime.property.PropertyModel;
 
 /**
  * Model for Transient Composites
@@ -67,8 +68,18 @@ public class TransientModel extends CompositeModel
     public void checkConstraints( TransientStateInstance instanceState )
         throws ConstraintViolationException
     {
-        stateModel.properties().forEach( propertyModel ->
-            propertyModel.checkConstraints( instanceState.propertyFor( propertyModel.accessor() ).get() )
+        stateModel.properties().forEach( ( PropertyModel propertyModel ) ->
+                                         {
+                                             try
+                                             {
+                                                 propertyModel.checkConstraints( instanceState.propertyFor( propertyModel.accessor() ).get() );
+                                             }
+                                             catch( ConstraintViolationException e )
+                                             {
+                                                 e.setCompositeDescriptor( this );
+                                                 throw e;
+                                             }
+                                         }
         );
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a3e9acd4/core/runtime/src/main/java/org/apache/polygene/runtime/composite/UsesInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/UsesInstance.java b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/UsesInstance.java
index 9d9632b..79ce9fa 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/UsesInstance.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/UsesInstance.java
@@ -47,15 +47,7 @@ public final class UsesInstance
 
     public UsesInstance use( Object... objects )
     {
-        // Validate that there are no Composites in the list, since they are possibly not fully initialized yet.
-        // TODO: The reason for that is that Composites may not be fully initialized when reaching here, and the hashCode() call later will cause an NPE.
-        for( Object obj : objects )
-        {
-            if( PolygeneRuntimeImpl.isCompositeType( obj ) )
-            {
-                throw new ConstructionException( "Composites are not allowed as @Uses arguments: " + obj.toString() );
-            }
-        }
+        // There is some case where we get here with only partially initialized composite as "objects". That fails with NPE in useObjects.addAll() below. Should be figured out when this happens and prevent it.
         HashSet<Object> useObjects = new HashSet<>();
         if( !uses.isEmpty() )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a3e9acd4/core/runtime/src/main/java/org/apache/polygene/runtime/entity/EntityModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/entity/EntityModel.java b/core/runtime/src/main/java/org/apache/polygene/runtime/entity/EntityModel.java
index 5fc00f5..bc2390e 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/entity/EntityModel.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/entity/EntityModel.java
@@ -134,6 +134,12 @@ public final class EntityModel extends CompositeModel
         {
             throw new ConstructionException( "Could not create new entity in store", e );
         }
+        catch( ConstraintViolationException e )
+        {
+            e.setCompositeDescriptor( this );
+            e.setIdentity( reference.identity() );
+            throw e;
+        }
     }
 
     public void initState( ModuleDescriptor module, EntityState entityState )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a3e9acd4/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueModel.java b/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueModel.java
index 9338deb..496e503 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueModel.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueModel.java
@@ -25,8 +25,8 @@ import java.util.List;
 import org.apache.polygene.api.association.AssociationDescriptor;
 import org.apache.polygene.api.common.MetaInfo;
 import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.api.constraint.ValueConstraintViolation;
 import org.apache.polygene.api.constraint.ConstraintViolationException;
+import org.apache.polygene.api.constraint.ValueConstraintViolation;
 import org.apache.polygene.api.entity.EntityDescriptor;
 import org.apache.polygene.api.identity.HasIdentity;
 import org.apache.polygene.api.identity.Identity;
@@ -114,16 +114,7 @@ public final class ValueModel extends CompositeModel
                 }
                 catch( ConstraintViolationException e )
                 {
-                    try
-                    {
-                        PropertyInstance<Identity> identityProperty = state.propertyFor( HasIdentity.IDENTITY_METHOD );
-                        e.setIdentity( identityProperty.get() );
-                    }
-                    catch( IllegalArgumentException e1 )
-                    {
-                        // ignore. Is not a HasIdentity instance
-                    }
-                    throw e;
+                    violations.addAll( e.constraintViolations() );
                 }
             }
                                                                );
@@ -137,17 +128,7 @@ public final class ValueModel extends CompositeModel
                 }
                 catch( ConstraintViolationException e )
                 {
-                    try
-                    {
-                        PropertyInstance<Identity> identityProperty = state.propertyFor( HasIdentity.IDENTITY_METHOD );
-                        e.setIdentity( identityProperty.get() );
-                    }
-                    catch( IllegalArgumentException e1 )
-                    {
-                        // ignore. is not a HasIdentity value
-                    }
-                    throw e;
-
+                    violations.addAll( e.constraintViolations() );
                 }
             }
                                                                    );
@@ -161,28 +142,33 @@ public final class ValueModel extends CompositeModel
                 }
                 catch( ConstraintViolationException e )
                 {
-                    PropertyInstance<Identity> propertyInstance = state.propertyFor( HasIdentity.IDENTITY_METHOD );
-                    throw e;
-
+                    violations.addAll( e.constraintViolations() );
                 }
             }
                                                                     );
-        if( ! violations.isEmpty() )
+        if( !violations.isEmpty() )
         {
             ConstraintViolationException exception = new ConstraintViolationException( violations );
-            try
-            {
-                PropertyInstance<Identity> identityProperty = state.propertyFor( HasIdentity.IDENTITY_METHOD );
-                exception.setIdentity(identityProperty.get());
-            }
-            catch( IllegalArgumentException e )
-            {
-                // ignore, there is no Identity.
-            }
+            exception.setCompositeDescriptor( this );
+            exception.setIdentity( extractIdentity( state, exception ) );
             throw exception;
         }
     }
 
+    private Identity extractIdentity( ValueStateInstance state, ConstraintViolationException e )
+    {
+        try
+        {
+            PropertyInstance<Identity> identityProperty = state.propertyFor( HasIdentity.IDENTITY_METHOD );
+            return identityProperty.get();
+        }
+        catch( IllegalArgumentException e1 )
+        {
+            // ignore. is not a HasIdentity value
+        }
+        return null;
+    }
+
     public ValueInstance newValueInstance( ValueStateInstance state )
     {
         Object[] mixins = mixinsModel.newMixinHolder();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a3e9acd4/core/runtime/src/test/java/org/apache/polygene/runtime/composite/IsCompositeTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/composite/IsCompositeTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/composite/IsCompositeTest.java
deleted file mode 100644
index a7fe462..0000000
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/composite/IsCompositeTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.runtime.composite;
-
-import org.apache.polygene.api.common.ConstructionException;
-import org.apache.polygene.api.injection.scope.Uses;
-import org.apache.polygene.bootstrap.AssemblyException;
-import org.apache.polygene.bootstrap.ModuleAssembly;
-import org.apache.polygene.test.AbstractPolygeneTest;
-import org.junit.Test;
-
-public class IsCompositeTest extends AbstractPolygeneTest
-{
-
-    @Override
-    public void assemble( ModuleAssembly module )
-        throws AssemblyException
-    {
-        module.transients( MyTransient.class );
-        module.objects( MyObject.class );
-    }
-
-    @Test( expected = ConstructionException.class )
-    public void givenCompositeToUsesWhenInstantiatingExpectException()
-    {
-        MyTransient myTransient = transientBuilderFactory.newTransient( MyTransient.class );
-        objectFactory.newObject( MyObject.class, myTransient );
-    }
-
-    public interface MyTransient
-    {}
-
-    public static class MyObject
-    {
-        @Uses
-        MyTransient my;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a3e9acd4/core/runtime/src/test/java/org/apache/polygene/runtime/composite/UseCompositeTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/composite/UseCompositeTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/composite/UseCompositeTest.java
new file mode 100644
index 0000000..16cb948
--- /dev/null
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/composite/UseCompositeTest.java
@@ -0,0 +1,84 @@
+/*
+ *  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.runtime.composite;
+
+import org.apache.polygene.api.common.Optional;
+import org.apache.polygene.api.injection.scope.Uses;
+import org.apache.polygene.api.mixin.Mixins;
+import org.apache.polygene.api.property.Property;
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.test.AbstractPolygeneTest;
+import org.junit.Test;
+
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.junit.Assert.assertThat;
+
+public class UseCompositeTest extends AbstractPolygeneTest
+{
+
+    @Override
+    public void assemble( ModuleAssembly module )
+        throws AssemblyException
+    {
+        module.transients( Hello.class );
+        module.objects( Speaker.class );
+    }
+
+    @Test
+    public void givenCompositeToUsesWhenInstantiatingExpectException()
+    {
+        Hello hello = transientBuilderFactory.newTransient( Hello.class );
+        hello.name().set( "World" );
+        Speaker speaker = objectFactory.newObject( Speaker.class, hello );
+        assertThat( speaker.speak(), equalTo( "Hello, World!" ) );
+    }
+
+    @Mixins( HelloMixin.class )
+    public interface Hello
+    {
+        String sayHello();
+
+        @Optional
+        Property<String> name();
+    }
+
+    public static abstract class HelloMixin
+        implements Hello
+    {
+
+        @Override
+        public String sayHello()
+        {
+            return "Hello, " + name().get();
+        }
+    }
+
+    public static class Speaker
+    {
+        @Uses
+        Hello hello;
+
+        String speak()
+        {
+            return hello.sayHello() + "!";
+        }
+    }
+}


[43/50] polygene-java git commit: SqlIndexingException

Posted by ni...@apache.org.
SqlIndexingException


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

Branch: refs/heads/es-jooq
Commit: c7d66e177a7cfc2d79652da03e943af92b022105
Parents: 9778ca0
Author: niclas <ni...@hedhman.org>
Authored: Sun Jul 9 12:38:06 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jul 9 12:38:06 2017 +0800

----------------------------------------------------------------------
 .../support/skeletons/SqlIndexingException.java    | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c7d66e17/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/SqlIndexingException.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/SqlIndexingException.java b/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/SqlIndexingException.java
new file mode 100644
index 0000000..cfa3b80
--- /dev/null
+++ b/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/SqlIndexingException.java
@@ -0,0 +1,17 @@
+package org.apache.polygene.index.sql.support.skeletons;
+
+import org.apache.polygene.spi.query.IndexingException;
+
+@SuppressWarnings( "WeakerAccess" )
+public class SqlIndexingException extends IndexingException
+{
+    public SqlIndexingException( String message )
+    {
+        super( message );
+    }
+
+    public SqlIndexingException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
+}


[17/50] polygene-java git commit: javadoc formatting error.

Posted by ni...@apache.org.
javadoc formatting error.


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/517b909d
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/517b909d
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/517b909d

Branch: refs/heads/es-jooq
Commit: 517b909d177a3aece129e5a34e52266fb63460bc
Parents: 559b38a
Author: niclas <ni...@hedhman.org>
Authored: Tue Jun 20 13:16:39 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Tue Jun 20 13:16:39 2017 +0800

----------------------------------------------------------------------
 .../polygene/api/constraint/ConstraintViolationException.java      | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/517b909d/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolationException.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolationException.java b/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolationException.java
index c54d35d..0eecf04 100644
--- a/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolationException.java
+++ b/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolationException.java
@@ -78,10 +78,12 @@ public class ConstraintViolationException extends IllegalArgumentException
      * Each ConstraintViolationException concerns one Composite instance, but may have many violations on that
      * instance. For the composite instance related message following entries in the ResourceBundle will be searched
      * for a pattern in the following order;
+     * </p>
      * <ol>
      * <li><code>polygene.constraint.<i><strong>CompositeType</strong></i></code></li>
      * <li><code>polygene.constraint.composite</code></li>
      * </ol>
+     * <p>
      * where <strong><code><i>CompositeType</i></code></strong> is the
      * class name of the Composite instance. If such key does not exist, or if the resourceBundle argument is null,
      * then the default patterns will be used;


[35/50] polygene-java git commit: Fixes in the polygene generator, steps closer to make it work.

Posted by ni...@apache.org.
Fixes in the polygene generator, steps closer to make it work.


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/2ac40125
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/2ac40125
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/2ac40125

Branch: refs/heads/es-jooq
Commit: 2ac401253a3d550ab8bcf08063ac1ef056cfed4c
Parents: c9d8c24
Author: niclas <ni...@hedhman.org>
Authored: Sun Jul 9 09:50:08 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jul 9 09:50:08 2017 +0800

----------------------------------------------------------------------
 tools/generator-polygene/app/index.js           |   3 +
 .../HttpServerModule/bootstrap.tmpl             |  10 +-
 .../DomainLayer/DomainModule/module.js          |   4 +-
 .../StorageModule/bootstrap.tmpl                |   4 +-
 .../InfrastructureLayer/StorageModule/module.js |   2 -
 .../storage/es-cassandra.properties             |  37 ++--
 .../RestAPIApplication/Launcher.java.tmpl       |  12 +-
 .../app/templates/RestAPIApplication/SETUP.tmpl |  41 +++++
 .../app/templates/RestAPIApplication/app.js     |  14 ++
 .../customUnixStartScript.txt                   | 175 +++++++++++++++++++
 .../customWindowsStartScript.txt                |  89 ++++++++++
 .../app/templates/buildtool/gradle-app.tmpl     |  35 ++--
 12 files changed, 386 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/2ac40125/tools/generator-polygene/app/index.js
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/index.js b/tools/generator-polygene/app/index.js
index a20b3eb..434e74e 100644
--- a/tools/generator-polygene/app/index.js
+++ b/tools/generator-polygene/app/index.js
@@ -290,6 +290,9 @@ function assignFunctions(polygene) {
         polygene.copyTemplate(ctx,
             from,
             'app/src/dist/config/production/' + toName);
+        polygene.copyTemplate(ctx,
+            from,
+            'app/src/test/resources/' + toName);
     };
 
     polygene.copyTemplate = function (ctx, from, to) {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/2ac40125/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl b/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl
index d30c1f3..98fc77a 100644
--- a/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl
@@ -47,10 +47,10 @@ public class HttpServerModule
 {<% if( hasFeature('security') ) { %>
     private static final int DEFAULT_PORT = 8443;
     public static final String KS_PASSWORD = "1234";  // TODO: Secure the key stores
-    public static final String SERVER_KEYSTORE_FILENAME = "security/<%= polygene.name.toLowerCase() %>-app.key";
-    public static final String SERVER_KEYSTORE_TYPE = "JCEKS";
-    public static final String TRUSTSTORE_FILENAME = "security/<%= polygene.name.toLowerCase() %>-app.key";
-    public static final String TRUSTSTORE_TYPE = "JCEKS";
+    public static final String SERVER_KEYSTORE_FILENAME = "security/<%= polygene.name.toLowerCase() %>-app.p12";
+    public static final String SERVER_KEYSTORE_TYPE = "PKCS12";
+    public static final String TRUSTSTORE_FILENAME = "security/<%= polygene.name.toLowerCase() %>-app.p12";
+    public static final String TRUSTSTORE_TYPE = "PKCS12";
 <% } else {
 %>    protected static final int DEFAULT_PORT = 8080;
 <% } %>
@@ -70,7 +70,7 @@ public class HttpServerModule
             .assemble( module );
         SecureJettyConfiguration defaults = module.forMixin( SecureJettyConfiguration.class ).declareDefaults();
         defaults.keystorePath().set( new File( SERVER_KEYSTORE_FILENAME ).getAbsolutePath() );
-        defaults.keystoreType().set( "JCEKS" );
+        defaults.keystoreType().set( SERVER_KEYSTORE_TYPE );
         defaults.keystorePassword().set( KS_PASSWORD );
         defaults.truststorePath().set( new File( TRUSTSTORE_FILENAME ).getAbsolutePath() );
         defaults.truststoreType().set( TRUSTSTORE_TYPE );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/2ac40125/tools/generator-polygene/app/templates/DomainLayer/DomainModule/module.js
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/module.js b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/module.js
index f511c0f..4051cf7 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/module.js
+++ b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/module.js
@@ -76,7 +76,9 @@ function copyConfigurationPropertiesFile(p, composites) {
         if (composites.hasOwnProperty(idx)) {
             p.current.clazz = composites[idx];
             p.prepareClazz(p.current);
-            p.copyToConfig(p.ctx,'DomainLayer/DomainModule/config.properties.tmpl', p.current.clazz.name + '.properties');
+            var configurationFile = 'DomainLayer/DomainModule/config.properties.tmpl';
+            var destFileName = p.current.clazz.name + '.properties';
+            p.copyToConfig(p.ctx,configurationFile, destFileName);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/2ac40125/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/bootstrap.tmpl b/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/bootstrap.tmpl
index 4220bd9..8a990c8 100644
--- a/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/bootstrap.tmpl
@@ -87,9 +87,7 @@ if( polygene.entitystore.indexOf( 'SQL' ) >= 0 ) {
             .assemble( module );
 <%
 if( polygene.entitystore === 'Cassandra' ) {
-%>        configModule.forMixin( CassandraEntityStoreConfiguration.class )
-            .declareDefaults()
-            .createIfMissing().set( true );
+%>        configModule.forMixin( CassandraEntityStoreConfiguration.class );
 <%
 }
 %>

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/2ac40125/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/module.js
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/module.js b/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/module.js
index c61466f..f1373f3 100644
--- a/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/module.js
+++ b/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/module.js
@@ -37,12 +37,10 @@ module.exports = {
         } else {
             var esSqlFileName = 'InfrastructureLayer/StorageModule/storage/es-sql.properties';
             p.copyToConfig(p.ctx, esSqlFileName, esFileName);
-            p.copyTemplate(p.ctx, esSqlFileName, 'app/src/test/resources/' + esFileName );
 
             var dsFileName = 'ds-es-' + p.entitystore.toLowerCase() + '.properties';
             var datasourceFile = 'InfrastructureLayer/StorageModule/storage/' + dsFileName;
             p.copyToConfig(p.ctx, datasourceFile, dsFileName);
-            p.copyTemplate(p.ctx, datasourceFile, 'app/src/test/resources/' + dsFileName)
         }
     }
 };

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/2ac40125/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/storage/es-cassandra.properties
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/storage/es-cassandra.properties b/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/storage/es-cassandra.properties
index 5ad0cab..5a68236 100644
--- a/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/storage/es-cassandra.properties
+++ b/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/storage/es-cassandra.properties
@@ -24,27 +24,34 @@
 # Also not that Cassandra refuse to bind to all interfaces on a host, so you
 # need to know which hostname corresponds to the interface that Cassandra is
 # bound to. This may not include 'localhost'.
-# Defaults: null
-# hostnames=
+#     Defaults: null
+#     hostnames=
+
 # The name of the cluster to connect to.
-# Defaults: polygene-cluster
-# clusterName=polygene-cluster
+#     Defaults: polygene-cluster
+#     clusterName=polygene-cluster
+
 # The replication factor to be used, if a KEYSPACE is created.
-# Defaults: 3
-# replicationFactor=3
+#     Defaults: 3
+#     replicationFactor=3
+
 # The Cassandra client uses the CQL interface, and typically needs a username
 # and password.
-# Defaults: no user name will be attempted.
-# username=
-# password=
+#     Defaults: no user name will be attempted.
+#     username=
+#     password=
+
 # The name of the KEYSPACE to be used.
-# Defaults:polygene
-# keySpace=polygene
+#     Defaults:polygene
+#     keySpace=polygene
+
 # The name of the entity TABLE to be used.
 # All entities are stored in the same table, with one entity per row.
-# Defaults: entitystore
-# entityTableName=entitystore
+#     Defaults: entitystore
+#     entityTableName=entitystore
+
 # Defines whether a KEYSPACE and entity TABLE should be created if not already
 # present in the Cassandra cluster.
-# Defaults: false
-# createIfMissing=false
\ No newline at end of file
+#     Defaults: false
+#     createIfMissing=false
+createIfMissing=true

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/2ac40125/tools/generator-polygene/app/templates/RestAPIApplication/Launcher.java.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/RestAPIApplication/Launcher.java.tmpl b/tools/generator-polygene/app/templates/RestAPIApplication/Launcher.java.tmpl
index 2acdca1..40d3dfd 100644
--- a/tools/generator-polygene/app/templates/RestAPIApplication/Launcher.java.tmpl
+++ b/tools/generator-polygene/app/templates/RestAPIApplication/Launcher.java.tmpl
@@ -32,7 +32,7 @@ public class <%= polygene.name %>Launcher extends PolygeneRestApplicationLaunche
 {
     private static final String name = "<%= polygene.name %>";
     private static final String version = "0.1";
-    private Application.Mode mode = Application.Mode.development;
+    private Application.Mode mode = getApplicationMode();
 
     public static void main( String[] args )
         throws Exception
@@ -69,4 +69,14 @@ public class <%= polygene.name %>Launcher extends PolygeneRestApplicationLaunche
     {
         return RestApiModule.NAME;
     }
+
+    private Application.Mode getApplicationMode()
+    {
+        String mode = System.getenv( "APP_MODE" );
+        if( mode == null )
+        {
+            return Application.Mode.development;
+        }
+        return Application.Mode.valueOf( mode );
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/2ac40125/tools/generator-polygene/app/templates/RestAPIApplication/SETUP.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/RestAPIApplication/SETUP.tmpl b/tools/generator-polygene/app/templates/RestAPIApplication/SETUP.tmpl
new file mode 100644
index 0000000..d5d95ad
--- /dev/null
+++ b/tools/generator-polygene/app/templates/RestAPIApplication/SETUP.tmpl
@@ -0,0 +1,41 @@
+<%
+if( polygene.entitystore == 'PostgreSQL' || polygene.indexing == 'SQL' ) {
+%>
+Start Postgres in Docker
+=========================
+    docker run -p 5432:5432 --name polygene-postgres -d postgres
+
+Connect to Postgres via Docker
+==============================
+    docker run -it --rm --link polygene-postgres:postgres postgres psql -h postgres -U postgres
+
+Setting up Postgresql database
+==============================
+In the psql command shell, execute the following commands (must have elevated
+permissions, such as user 'postgres'
+
+    CREATE USER polygene WITH PASSWORD 'ThisIsGreat!';
+    CREATE DATABASE <%= polygene.name.toLowerCase() %>;
+    GRANT ALL ON DATABASE <%= polygene.name.toLowerCase() %> TO polygene;
+    \connect <%= polygene.name.toLowerCase() %>
+    CREATE EXTENSION ltree;
+    \q
+<%
+}
+%>
+<%
+if( polygene.entitystore == 'Cassandra' ) {
+%>
+Start Cassandra in Docker
+=========================
+    docker run -d -p 7000:7000 -p 7001:7001 -p 7199:7199 -p 9042:9042 -p 9160:9160 --name polygene-cassandra cassandra
+    docker logs -f polygene-cassandra
+
+and wait for the following log message to appear.
+
+    Starting listening for CQL clients on /0.0.0.0:9042 (unencrypted)...
+
+after that you can Ctrl-C back to command line.
+<%
+}
+%>

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/2ac40125/tools/generator-polygene/app/templates/RestAPIApplication/app.js
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/RestAPIApplication/app.js b/tools/generator-polygene/app/templates/RestAPIApplication/app.js
index ceed39e..610b9af 100644
--- a/tools/generator-polygene/app/templates/RestAPIApplication/app.js
+++ b/tools/generator-polygene/app/templates/RestAPIApplication/app.js
@@ -46,6 +46,20 @@ module.exports = {
         p.copyTemplate(p.ctx,
             'RestAPIApplication/bootstrap.tmpl',
             'bootstrap/src/main/java/' + p.javaPackageDir + '/bootstrap/' + p.name + 'ApplicationAssembler.java');
+
+        p.copyTemplate(p.ctx,
+            'RestAPIApplication/SETUP.tmpl',
+            'SETUP.txt');
+
+        p.ctx.fs.copy(
+            p.ctx.templatePath('RestAPIApplication/customUnixStartScript.txt'),
+            p.ctx.destinationPath('app/src/scripts/customUnixStartScript.txt')
+        );
+
+        p.ctx.fs.copy(
+            p.ctx.templatePath('RestAPIApplication/customWindowsStartScript.txt'),
+            p.ctx.destinationPath('app/src/scripts/customWindowsStartScript.txt')
+        );
     }
 };
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/2ac40125/tools/generator-polygene/app/templates/RestAPIApplication/customUnixStartScript.txt
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/RestAPIApplication/customUnixStartScript.txt b/tools/generator-polygene/app/templates/RestAPIApplication/customUnixStartScript.txt
new file mode 100644
index 0000000..fd23f57
--- /dev/null
+++ b/tools/generator-polygene/app/templates/RestAPIApplication/customUnixStartScript.txt
@@ -0,0 +1,175 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+##  ${applicationName} start up script for UN*X
+##
+##############################################################################
+
+# default to 'development' mode
+if [ -z \$APP_MODE ] ; then
+    export APP_MODE=development
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: \$0 may be a link
+PRG="\$0"
+# Need this for relative symlinks.
+while [ -h "\$PRG" ] ; do
+    ls=`ls -ld "\$PRG"`
+    link=`expr "\$ls" : '.*-> \\(.*\\)\$'`
+    if expr "\$link" : '/.*' > /dev/null; then
+        PRG="\$link"
+    else
+        PRG=`dirname "\$PRG"`"/\$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"\$PRG\"`/${appHomeRelativePath}" >/dev/null
+APP_HOME="`pwd -P`"
+cd "\$SAVED" >/dev/null
+
+APP_NAME="${applicationName}"
+APP_BASE_NAME=`basename "\$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and ${optsEnvironmentVar} to pass JVM options to this script.
+DEFAULT_JVM_OPTS=${defaultJvmOpts}
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+    echo "\$*"
+}
+
+die () {
+    echo
+    echo "\$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+  NONSTOP* )
+    nonstop=true
+    ;;
+esac
+
+CLASSPATH=\$APP_HOME/config/\$APP_MODE:$classpath
+
+# Determine the Java command to use to start the JVM.
+if [ -n "\$JAVA_HOME" ] ; then
+    if [ -x "\$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="\$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="\$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "\$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: \$JAVA_HOME
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "\$cygwin" = "false" -a "\$darwin" = "false" -a "\$nonstop" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ \$? -eq 0 ] ; then
+        if [ "\$MAX_FD" = "maximum" -o "\$MAX_FD" = "max" ] ; then
+            MAX_FD="\$MAX_FD_LIMIT"
+        fi
+        ulimit -n \$MAX_FD
+        if [ \$? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: \$MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: \$MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if \$darwin; then
+    GRADLE_OPTS="\$GRADLE_OPTS \\"-Xdock:name=\$APP_NAME\\" \\"-Xdock:icon=\$APP_HOME/media/gradle.icns\\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if \$cygwin ; then
+    APP_HOME=`cygpath --path --mixed "\$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "\$CLASSPATH"`
+    JAVACMD=`cygpath --unix "\$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in \$ROOTDIRSRAW ; do
+        ROOTDIRS="\$ROOTDIRS\$SEP\$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^(\$ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "\$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="\$OURCYGPATTERN|(\$GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "\$@" ; do
+        CHECK=`echo "\$arg"|egrep -c "\$OURCYGPATTERN" -`
+        CHECK2=`echo "\$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ \$CHECK -ne 0 ] && [ \$CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args\$i`=`cygpath --path --ignore --mixed "\$arg"`
+        else
+            eval `echo args\$i`="\"\$arg\""
+        fi
+        i=\$((i+1))
+    done
+    case \$i in
+        (0) set -- ;;
+        (1) set -- "\$args0" ;;
+        (2) set -- "\$args0" "\$args1" ;;
+        (3) set -- "\$args0" "\$args1" "\$args2" ;;
+        (4) set -- "\$args0" "\$args1" "\$args2" "\$args3" ;;
+        (5) set -- "\$args0" "\$args1" "\$args2" "\$args3" "\$args4" ;;
+        (6) set -- "\$args0" "\$args1" "\$args2" "\$args3" "\$args4" "\$args5" ;;
+        (7) set -- "\$args0" "\$args1" "\$args2" "\$args3" "\$args4" "\$args5" "\$args6" ;;
+        (8) set -- "\$args0" "\$args1" "\$args2" "\$args3" "\$args4" "\$args5" "\$args6" "\$args7" ;;
+        (9) set -- "\$args0" "\$args1" "\$args2" "\$args3" "\$args4" "\$args5" "\$args6" "\$args7" "\$args8" ;;
+    esac
+fi
+
+# Escape application args
+save () {
+    for i do printf %s\\\\n "\$i" | sed "s/'/'\\\\\\\\''/g;1s/^/'/;\\\$s/\\\$/' \\\\\\\\/" ; done
+    echo " "
+}
+APP_ARGS=\$(save "\$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- \$DEFAULT_JVM_OPTS \$JAVA_OPTS \$${optsEnvironmentVar} <% if ( appNameSystemProperty ) { %>"\"-D${appNameSystemProperty}=\$APP_BASE_NAME\"" <% } %>-classpath "\"\$CLASSPATH\"" ${mainClassName} "\$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "\$(uname)" = "Darwin" ] && [ "\$HOME" = "\$PWD" ]; then
+  cd "\$(dirname "\$0")"
+fi
+
+exec "\$JAVACMD" "\$@"

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/2ac40125/tools/generator-polygene/app/templates/RestAPIApplication/customWindowsStartScript.txt
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/RestAPIApplication/customWindowsStartScript.txt b/tools/generator-polygene/app/templates/RestAPIApplication/customWindowsStartScript.txt
new file mode 100644
index 0000000..e891013
--- /dev/null
+++ b/tools/generator-polygene/app/templates/RestAPIApplication/customWindowsStartScript.txt
@@ -0,0 +1,89 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem  ${applicationName} startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.\
+
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%${appHomeRelativePath}
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and ${optsEnvironmentVar} to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=${defaultJvmOpts}
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto setmode
+
+set CMD_LINE_ARGS=%*
+
+:setmode
+if "x%APP_MODE%" <> "x" goto execute
+set APP_MODE=development
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\\config\\%APP_MODE%;$classpath
+
+@rem Execute ${applicationName}
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %${optsEnvironmentVar}% <% if ( appNameSystemProperty ) { %>"-D${appNameSystemProperty}=%APP_BASE_NAME%"<% } %> -classpath "%CLASSPATH%" ${mainClassName} %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable ${exitEnvironmentVar} if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if  not "" == "%${exitEnvironmentVar}%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/2ac40125/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl b/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl
index 441cdec..22cd161 100644
--- a/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl
+++ b/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl
@@ -17,24 +17,29 @@
  *
  *
 -%>
-
-
 apply plugin: 'application'
 
 mainClassName="<%= polygene.packageName %>.app.<%= polygene.name %>Launcher"
 
-applicationDefaultJvmArgs=[]
-// GC Tuning strategies, see https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/
-// Strict memory bound
-// applicationDefaultJvmArgs << "-Xmx512M -Xms512M"
-//
-// Goal oriented, "throughput" and "max pause"
-// applicationDefaultJvmArgs << "-XX:MaxGCPauseMillis=300 -XX:GCTimeRatio=19"
-//
-// Garbage Collector
-// OneOf; -XX:+UseG1GC, -XX:+UseConcMarkSweepGC, -XX:-UseParallelOldGC, -XX:+UseSerialGC
-applicationDefaultJvmArgs << "-XX:+UseG1GC"
+startScripts {
+  applicationName = "<%= polygene.name %>"
+  optsEnvironmentVar = "<%= polygene.name.toUpperCase() %>_OPTS"
+
+  // GC Tuning strategies, see https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/
+  // Strict memory bound
+  // defaultJvmOpts << "-Xmx512M -Xms512M"
+
+  // Goal oriented, "throughput" and "max pause"
+  // defaultJvmOpts << "-XX:MaxGCPauseMillis=300 -XX:GCTimeRatio=19"
 
+  // Garbage Collector
+  // OneOf; -XX:+UseG1GC, -XX:+UseConcMarkSweepGC, -XX:-UseParallelOldGC, -XX:+UseSerialGC
+  defaultJvmOpts << "-XX:+UseG1GC"
+
+  // Custom start scripts
+  unixStartScriptGenerator.template = resources.text.fromFile('src/scripts/customUnixStartScript.txt')
+  windowsStartScriptGenerator.template = resources.text.fromFile('src/scripts/customWindowsStartScript.txt')
+}
 
 dependencies {
   implementation project( ":bootstrap" )
@@ -104,3 +109,7 @@ if( polygene.entitystore == 'SQLite'  ) {
   testImplementation "org.apache.polygene.core:org.apache.polygene.core.testsupport:$polygeneVersion"
   testImplementation "com.github.tdomzal:junit-docker-rule:0.3"
 }
+
+tasks.withType(Tar){
+  compression = Compression.GZIP
+}


[41/50] polygene-java git commit: Get rid of warnings, and some reformatting of a messy class.

Posted by ni...@apache.org.
Get rid of warnings, and some reformatting of a messy class.


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/58b81749
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/58b81749
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/58b81749

Branch: refs/heads/es-jooq
Commit: 58b81749bfe27d204d85154f64fcc9806331701b
Parents: 002fb1c
Author: niclas <ni...@hedhman.org>
Authored: Sun Jul 9 12:36:19 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jul 9 12:36:19 2017 +0800

----------------------------------------------------------------------
 .../support/skeletons/AbstractSQLIndexing.java  | 281 ++++++++++---------
 1 file changed, 141 insertions(+), 140 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/58b81749/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/AbstractSQLIndexing.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/AbstractSQLIndexing.java b/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/AbstractSQLIndexing.java
index 47e0503..a250d66 100644
--- a/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/AbstractSQLIndexing.java
+++ b/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/AbstractSQLIndexing.java
@@ -87,13 +87,16 @@ public abstract class AbstractSQLIndexing
     implements SQLIndexing
 {
 
-    public static final Integer AMOUNT_OF_COLUMNS_IN_ENTITY_TABLE = 5;
+    protected static final Integer AMOUNT_OF_COLUMNS_IN_ENTITY_TABLE = 5;
 
-    public static final Integer AMOUNT_OF_COLUMNS_IN_ALL_QNAMES_TABLE = 2;
+    @SuppressWarnings( "WeakerAccess" )
+    protected static final Integer AMOUNT_OF_COLUMNS_IN_ALL_QNAMES_TABLE = 2;
 
-    public static final Integer AMOUNT_OF_COLUMNS_IN_ASSO_TABLE = 2;
+    @SuppressWarnings( "WeakerAccess" )
+    protected static final Integer AMOUNT_OF_COLUMNS_IN_ASSO_TABLE = 2;
 
-    public static final Integer AMOUNT_OF_COLUMNS_IN_MANY_ASSO_TABLE = 3;
+    @SuppressWarnings( "WeakerAccess" )
+    protected static final Integer AMOUNT_OF_COLUMNS_IN_MANY_ASSO_TABLE = 3;
 
     @Structure
     private Application _app;
@@ -299,10 +302,11 @@ public abstract class AbstractSQLIndexing
         }
     }
 
+    @SuppressWarnings( "WeakerAccess" )
     protected InsertStatement createInsertStatement( String schemaName, String tableName,
                                                      Integer amountOfColumns,
                                                      SQLVendor vendor
-    )
+                                                   )
     {
         ModificationFactory m = vendor.getModificationFactory();
         LiteralFactory l = vendor.getLiteralFactory();
@@ -315,16 +319,14 @@ public abstract class AbstractSQLIndexing
         }
 
         return m.insert().setTableName( t.tableName( schemaName, tableName ) )
-            .setColumnSource( columnBuilder.createExpression() ).createExpression();
+                .setColumnSource( columnBuilder.createExpression() ).createExpression();
     }
 
     protected abstract InsertStatement createInsertStatementWithAutoGeneratedIDForEntitiesTable(
-        String schemaName, String tableName, SQLVendor vendor
-    );
+        String schemaName, String tableName, SQLVendor vendor );
 
-    protected void addEntityInfoToInsertToEntityTablePS( EntityState state, PreparedStatement ps,
-                                                         int startingIndex
-    )
+    @SuppressWarnings( "SameParameterValue" )
+    protected void addEntityInfoToInsertToEntityTablePS( EntityState state, PreparedStatement ps, int startingIndex )
         throws SQLException
     {
         ps.setString( startingIndex, state.entityReference().identity().toString() );
@@ -333,9 +335,8 @@ public abstract class AbstractSQLIndexing
         ps.setString( startingIndex + 3, this._app.version() );
     }
 
-    protected Long findEntityPK( EntityState state,
-                                 Lazy<PreparedStatement, SQLException> queryPKPS
-    )
+    @SuppressWarnings( "WeakerAccess" )
+    protected Long findEntityPK( EntityState state, Lazy<PreparedStatement, SQLException> queryPKPS )
         throws SQLException
     {
         // TODO build cache: Polygene Identity -> PK
@@ -363,11 +364,11 @@ public abstract class AbstractSQLIndexing
     protected abstract long getPKFromAutoGeneratedIDInsert(
         EntityState state, PreparedStatement autoGeneratedIDStatement, SQLVendor vendor,
         Connection connection
-    )
+                                                          )
         throws SQLException;
 
-    protected UpdateStatement
-    createUpdateEntityTableStatement( String schemaName, SQLVendor vendor )
+    @SuppressWarnings( "WeakerAccess" )
+    protected UpdateStatement createUpdateEntityTableStatement( String schemaName, SQLVendor vendor )
     {
         ModificationFactory m = vendor.getModificationFactory();
         BooleanFactory b = vendor.getBooleanFactory();
@@ -397,9 +398,8 @@ public abstract class AbstractSQLIndexing
         return builder.createExpression();
     }
 
-    protected QueryExpression createQueryEntityPkByIdentityStatement( String schemaName,
-                                                                      SQLVendor vendor
-    )
+    @SuppressWarnings( "WeakerAccess" )
+    protected QueryExpression createQueryEntityPkByIdentityStatement( String schemaName, SQLVendor vendor )
     {
         BooleanFactory b = vendor.getBooleanFactory();
         LiteralFactory l = vendor.getLiteralFactory();
@@ -421,25 +421,25 @@ public abstract class AbstractSQLIndexing
         return q.createQuery( query.createExpression() );
     }
 
-    protected DeleteStatement createDeleteFromEntityTableStatement( String schemaName,
-                                                                    SQLVendor vendor
-    )
+    @SuppressWarnings( "WeakerAccess" )
+    protected DeleteStatement createDeleteFromEntityTableStatement( String schemaName, SQLVendor vendor )
     {
         return this.createDeleteFromTableStatement( schemaName, DBNames.ENTITY_TABLE_NAME,
                                                     DBNames.ENTITY_TABLE_IDENTITY_COLUMN_NAME, vendor );
     }
 
-    protected DeleteStatement
-    createClearEntityDataStatement( String schemaName, SQLVendor vendor )
+    @SuppressWarnings( "WeakerAccess" )
+    protected DeleteStatement createClearEntityDataStatement( String schemaName, SQLVendor vendor )
     {
         return this.createDeleteFromTableStatement( schemaName, DBNames.ALL_QNAMES_TABLE_NAME,
                                                     DBNames.ENTITY_TABLE_PK_COLUMN_NAME, vendor );
     }
 
+    @SuppressWarnings( "WeakerAccess" )
     protected DeleteStatement createDeleteFromTableStatement( String schemaName, String tableName,
                                                               String columnName,
                                                               SQLVendor vendor
-    )
+                                                            )
     {
         ModificationFactory m = vendor.getModificationFactory();
         BooleanFactory b = vendor.getBooleanFactory();
@@ -452,12 +452,13 @@ public abstract class AbstractSQLIndexing
         // ";" //
         DeleteBySearchBuilder delete = m.deleteBySearch();
         delete.setTargetTable( m.createTargetTable( t.tableName( schemaName, tableName ) ) )
-            .getWhere()
-            .reset( b.eq( c.colName( columnName ), l.param() ) );
+              .getWhere()
+              .reset( b.eq( c.colName( columnName ), l.param() ) );
 
         return delete.createExpression();
     }
 
+    @SuppressWarnings( "WeakerAccess" )
     protected InsertStatement createPropertyInsert( QNameInfo qNameInfo, SQLVendor vendor )
     {
         String tableName = qNameInfo.getTableName();
@@ -466,7 +467,7 @@ public abstract class AbstractSQLIndexing
         LiteralFactory l = vendor.getLiteralFactory();
 
         ColumnSourceByValuesBuilder columnBuilder = m.columnSourceByValues()
-            .addValues( l.param(), l.param(), l.param() );
+                                                     .addValues( l.param(), l.param(), l.param() );
         if( qNameInfo.getCollectionDepth() > 0 )
         {
             columnBuilder.addValues( l.func( "text2ltree", l.param() ) );
@@ -474,12 +475,13 @@ public abstract class AbstractSQLIndexing
         columnBuilder.addValues( l.param() );
 
         return m.insert().setTableName( t.tableName( this._state.schemaName().get(), tableName ) )
-            .setColumnSource( columnBuilder.createExpression() ).createExpression();
+                .setColumnSource( columnBuilder.createExpression() ).createExpression();
     }
 
+    @SuppressWarnings( "WeakerAccess" )
     protected InsertStatement createAssoInsert( QNameInfo qNameInfo, SQLVendor vendor,
                                                 Integer amountOfParams
-    )
+                                              )
     {
         ModificationFactory m = vendor.getModificationFactory();
         LiteralFactory l = vendor.getLiteralFactory();
@@ -512,6 +514,7 @@ public abstract class AbstractSQLIndexing
             .createExpression();
     }
 
+    @SuppressWarnings( "WeakerAccess" )
     protected InsertStatement createInsertEntityTypeStatement( String schemaName, SQLVendor vendor )
     {
         return this.createInsertStatement( schemaName, ENTITY_TYPES_JOIN_TABLE_NAME, 2, vendor );
@@ -520,7 +523,7 @@ public abstract class AbstractSQLIndexing
     private void syncQNamesInsertPSs( Connection connection,
                                       Map<QualifiedName, PreparedStatement> qNameInsertPSs,
                                       Set<QualifiedName> qNames
-    )
+                                    )
         throws SQLException
     {
         Set<QualifiedName> copy = new HashSet<>( qNames );
@@ -530,8 +533,7 @@ public abstract class AbstractSQLIndexing
             QNameInfo info = this._state.qNameInfos().get().get( qName );
             if( info == null )
             {
-                throw new InternalError(
-                    "Could not find database information about qualified name [" + qName + "]" );
+                throw new SqlIndexingException( "Could not find database information about qualified name [" + qName + "]" );
             }
 
             QNameType type = info.getQNameType();
@@ -549,8 +551,7 @@ public abstract class AbstractSQLIndexing
             }
             else
             {
-                throw new IllegalArgumentException( "Did not know what to do with QName of type "
-                                                    + type + "." );
+                throw new SqlIndexingException( "Did not know what to do with QName of type " + type + "." );
             }
         }
     }
@@ -575,7 +576,7 @@ public abstract class AbstractSQLIndexing
 
     private PreparedStatement createInsertManyAssociationPS( Connection connection,
                                                              QNameInfo qNameInfo
-    )
+                                                           )
         throws SQLException
     {
         SQLVendor vendor = this.descriptor.metaInfo( SQLVendor.class );
@@ -594,34 +595,34 @@ public abstract class AbstractSQLIndexing
     private Integer insertPropertyQNames( Connection connection,
                                           Map<QualifiedName, PreparedStatement> qNameInsertPSs,
                                           PreparedStatement insertAllQNamesPS, EntityState state, Long entityPK
-    )
+                                        )
         throws SQLException
     {
         Set<QualifiedName> qNames = this._state.entityUsedQNames().get().get( state.entityDescriptor() );
         this.syncQNamesInsertPSs( connection, qNameInsertPSs, qNames );
-        final Integer propertyPK[] = {0};
+        final Integer propertyPK[] = { 0 };
         state.entityDescriptor().state().properties()
-            .filter( pDesc -> SQLSkeletonUtil.isQueryable( pDesc.accessor() ) )
-            .forEach( pDesc -> {
-                try
-                {
-                    propertyPK[0] = this.insertProperty(
-                        qNameInsertPSs,
-                        insertAllQNamesPS,
-                        propertyPK[0],
-                        entityPK,
-                        pDesc.qualifiedName(),
-                        state.propertyValueOf( pDesc.qualifiedName() ),
-                        null //
-                    );
-                }
-                catch( SQLException e )
-                {
-                    throw new EntityStoreException( "Underlying exception when inserting property " + pDesc,
-                                                    SQLUtil.withAllSQLExceptions( e ) );
-                }
-            } );
-        return propertyPK[0];
+             .filter( pDesc -> SQLSkeletonUtil.isQueryable( pDesc.accessor() ) )
+             .forEach( pDesc -> {
+                 try
+                 {
+                     propertyPK[ 0 ] = this.insertProperty(
+                         qNameInsertPSs,
+                         insertAllQNamesPS,
+                         propertyPK[ 0 ],
+                         entityPK,
+                         pDesc.qualifiedName(),
+                         state.propertyValueOf( pDesc.qualifiedName() ),
+                         null //
+                                                          );
+                 }
+                 catch( SQLException e )
+                 {
+                     throw new EntityStoreException( "Underlying exception when inserting property " + pDesc,
+                                                     SQLUtil.withAllSQLExceptions( e ) );
+                 }
+             } );
+        return propertyPK[ 0 ];
     }
 
     private void insertAssoAndManyAssoQNames( Map<QualifiedName, PreparedStatement> qNameInsertPSs,
@@ -629,71 +630,71 @@ public abstract class AbstractSQLIndexing
                                               EntityState state,
                                               final Integer localPK,
                                               Long entityPK
-    )
+                                            )
         throws SQLException
     {
-        final Integer[] qNamePK = {localPK};
+        final Integer[] qNamePK = { localPK };
         state.entityDescriptor().state().associations()
-            .filter( aDesc -> SQLSkeletonUtil.isQueryable( aDesc.accessor() ) )
-            .forEach( aDesc -> {
-                try
-                {
-                    QualifiedName qName = aDesc.qualifiedName();
-                    PreparedStatement ps = qNameInsertPSs.get( qName );
-                    EntityReference ref = state.associationValueOf( qName );
-                    if( ref != null )
-                    {
-                        insertToAllQNamesPS.setInt( 1, qNamePK[0] );
-                        insertToAllQNamesPS.setLong( 2, entityPK );
-                        insertToAllQNamesPS.addBatch();
-
-                        ps.setInt( 1, qNamePK[0] );
-                        ps.setLong( 2, entityPK );
-                        ps.setString( 3, ref.identity().toString() );
-                        ps.addBatch();
-
-                        qNamePK[0] += 1;
-                    }
-                }
-                catch( SQLException e )
-                {
-                    throw new EntityStoreException( "Underlying exception when inserting association " + aDesc,
-                                                    SQLUtil.withAllSQLExceptions( e ) );
-                }
-            } );
+             .filter( aDesc -> SQLSkeletonUtil.isQueryable( aDesc.accessor() ) )
+             .forEach( aDesc -> {
+                 try
+                 {
+                     QualifiedName qName = aDesc.qualifiedName();
+                     PreparedStatement ps = qNameInsertPSs.get( qName );
+                     EntityReference ref = state.associationValueOf( qName );
+                     if( ref != null )
+                     {
+                         insertToAllQNamesPS.setInt( 1, qNamePK[ 0 ] );
+                         insertToAllQNamesPS.setLong( 2, entityPK );
+                         insertToAllQNamesPS.addBatch();
+
+                         ps.setInt( 1, qNamePK[ 0 ] );
+                         ps.setLong( 2, entityPK );
+                         ps.setString( 3, ref.identity().toString() );
+                         ps.addBatch();
+
+                         qNamePK[ 0 ] += 1;
+                     }
+                 }
+                 catch( SQLException e )
+                 {
+                     throw new EntityStoreException( "Underlying exception when inserting association " + aDesc,
+                                                     SQLUtil.withAllSQLExceptions( e ) );
+                 }
+             } );
 
         state.entityDescriptor().state().manyAssociations()
-            .filter( mDesc -> SQLSkeletonUtil.isQueryable( mDesc.accessor() ) )
-            .forEach( mDesc -> {
-                try
-                {
-                    QualifiedName qName = mDesc.qualifiedName();
-                    PreparedStatement ps = qNameInsertPSs.get( qName );
-                    Integer index = 0;
-                    for( EntityReference ref : state.manyAssociationValueOf( qName ) )
-                    {
-                        if( ref != null )
-                        {
-                            insertToAllQNamesPS.setInt( 1, qNamePK[0] );
-                            insertToAllQNamesPS.setLong( 2, entityPK );
-                            insertToAllQNamesPS.addBatch();
-
-                            ps.setInt( 1, qNamePK[0] );
-                            ps.setLong( 2, entityPK );
-                            ps.setInt( 3, index );
-                            ps.setString( 4, ref.identity().toString() );
-                            ps.addBatch();
-                            qNamePK[0] += 1;
-                        }
-                        ++index;
-                    }
-                }
-                catch( SQLException e )
-                {
-                    throw new EntityStoreException( "Underlying exception when inserting manyassociation " + mDesc,
-                                                    SQLUtil.withAllSQLExceptions( e ) );
-                }
-            } );
+             .filter( mDesc -> SQLSkeletonUtil.isQueryable( mDesc.accessor() ) )
+             .forEach( mDesc -> {
+                 try
+                 {
+                     QualifiedName qName = mDesc.qualifiedName();
+                     PreparedStatement ps = qNameInsertPSs.get( qName );
+                     Integer index = 0;
+                     for( EntityReference ref : state.manyAssociationValueOf( qName ) )
+                     {
+                         if( ref != null )
+                         {
+                             insertToAllQNamesPS.setInt( 1, qNamePK[ 0 ] );
+                             insertToAllQNamesPS.setLong( 2, entityPK );
+                             insertToAllQNamesPS.addBatch();
+
+                             ps.setInt( 1, qNamePK[ 0 ] );
+                             ps.setLong( 2, entityPK );
+                             ps.setInt( 3, index );
+                             ps.setString( 4, ref.identity().toString() );
+                             ps.addBatch();
+                             qNamePK[ 0 ] += 1;
+                         }
+                         ++index;
+                     }
+                 }
+                 catch( SQLException e )
+                 {
+                     throw new EntityStoreException( "Underlying exception when inserting manyassociation " + mDesc,
+                                                     SQLUtil.withAllSQLExceptions( e ) );
+                 }
+             } );
     }
 
     private Integer insertProperty(
@@ -704,7 +705,7 @@ public abstract class AbstractSQLIndexing
         QualifiedName qName,
         Object property,
         Integer parentQNameID
-    )
+                                  )
         throws SQLException
     {
         Integer result = propertyPK;
@@ -744,7 +745,7 @@ public abstract class AbstractSQLIndexing
         QualifiedName qName,
         Collection<?> property,
         Integer parentQNameID
-    )
+                                           )
         throws SQLException
     {
         QNameInfo info = this._state.qNameInfos().get().get( qName );
@@ -762,7 +763,7 @@ public abstract class AbstractSQLIndexing
     private Integer storeCollectionInfo( PreparedStatement insertAllQNamesPS, Integer propertyPK,
                                          Long entityPK,
                                          Integer parentQNameID, PreparedStatement ps, QNameInfo info
-    )
+                                       )
         throws SQLException
     {
         insertAllQNamesPS.setInt( 1, propertyPK );
@@ -798,7 +799,7 @@ public abstract class AbstractSQLIndexing
                                           Integer parentPK,
                                           Type finalType,
                                           Boolean isFinalTypePrimitive
-    )
+                                        )
         throws SQLException
     {
         Integer index = 0;
@@ -836,7 +837,7 @@ public abstract class AbstractSQLIndexing
         Object item,
         Boolean isFinalTypePrimitive,
         Type finalType
-    )
+                                       )
         throws SQLException
     {
         insertAllQNamesPS.setInt( 1, propertyPK );
@@ -869,7 +870,7 @@ public abstract class AbstractSQLIndexing
         QualifiedName qName,
         Object property,
         Integer parentQNameID
-    )
+                                          )
         throws SQLException
     {
         QNameInfo info = this._state.qNameInfos().get().get( qName );
@@ -896,7 +897,7 @@ public abstract class AbstractSQLIndexing
         QualifiedName qName,
         Object property,
         Integer parentQNameID
-    )
+                                               )
         throws SQLException
     {
 
@@ -920,7 +921,7 @@ public abstract class AbstractSQLIndexing
                                          Integer localPK,
                                          Long entityPK,
                                          Object property
-    )
+                                       )
         throws SQLException
     {
         ValueDescriptor vDesc = this._qi4SPI.valueDescriptorFor( property );
@@ -930,15 +931,15 @@ public abstract class AbstractSQLIndexing
 
             try
             {
-                propertyPK[0] = this.insertProperty(
+                propertyPK[ 0 ] = this.insertProperty(
                     qNameInsertPSs,
                     insertAllQNamesPS,
-                    propertyPK[0],
+                    propertyPK[ 0 ],
                     entityPK,
                     pDesc.qualifiedName(),
                     state.propertyFor( pDesc.accessor() ).get(),
                     localPK
-                );
+                                                     );
             }
             catch( SQLException e )
             {
@@ -947,13 +948,13 @@ public abstract class AbstractSQLIndexing
             }
         } );
 
-        return propertyPK[0];
+        return propertyPK[ 0 ];
     }
 
     private void storePrimitiveUsingPS( PreparedStatement ps, Integer nextFreeIndex,
                                         Object primitive,
                                         Type primitiveType
-    )
+                                      )
         throws SQLException
     {
         if( primitiveType instanceof ParameterizedType )
@@ -968,7 +969,7 @@ public abstract class AbstractSQLIndexing
                 nextFreeIndex,
                 this._state.enumPKs().get().get(
                     QualifiedName.fromClass( (Class<?>) primitiveType, primitive.toString() ).toString() )
-            );
+                     );
         }
         else
         {
@@ -999,7 +1000,7 @@ public abstract class AbstractSQLIndexing
                                                 EntityState state,
                                                 Long entityPK,
                                                 Map<Long, Integer> qNamePKs
-    )
+                                              )
         throws SQLException
     {
 
@@ -1024,7 +1025,7 @@ public abstract class AbstractSQLIndexing
                                    EntityState state,
                                    Long entityPK,
                                    Map<Long, Integer> qNamePKs
-    )
+                                 )
         throws SQLException
     {
         Integer nextQnamePK = this.insertPropertyQNames( connection,
@@ -1047,9 +1048,9 @@ public abstract class AbstractSQLIndexing
             Integer typePK = this._state.entityTypePKs().get().get( clazz.getName() );
             if( typePK == null )
             {
-                throw new InternalError( "Tried to get entity : " + clazz
-                                         + ", but only aware of the following entities: "
-                                         + this._state.entityTypePKs().get().keySet() );
+                throw new SqlIndexingException( "Tried to get entity : " + clazz
+                                                + ", but only aware of the following entities: "
+                                                + this._state.entityTypePKs().get().keySet() );
             }
             try
             {
@@ -1059,7 +1060,7 @@ public abstract class AbstractSQLIndexing
             }
             catch( SQLException e )
             {
-                throw new EntityStoreException( "Underlying Exception when inserting " + entityPK,
+                throw new SqlIndexingException( "Underlying Exception when inserting " + entityPK,
                                                 SQLUtil.withAllSQLExceptions( e ) );
             }
         } );


[25/50] polygene-java git commit: Fixed bug that caused some polygene generator build failures.. Is those disabled in Jenkins, or why didn't it show up in the CI?

Posted by ni...@apache.org.
Fixed bug that caused some polygene generator build failures.. Is those disabled in Jenkins, or why didn't it show up in the CI?


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/52f36f31
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/52f36f31
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/52f36f31

Branch: refs/heads/es-jooq
Commit: 52f36f319a20c5e72cbb2a87a0f6055757c84815
Parents: 41fbc54
Author: niclas <ni...@hedhman.org>
Authored: Fri Jun 30 13:49:28 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Fri Jun 30 13:49:28 2017 +0800

----------------------------------------------------------------------
 tools/generator-polygene/app/index.js | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/52f36f31/tools/generator-polygene/app/index.js
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/index.js b/tools/generator-polygene/app/index.js
index f248eda..8cbd9fd 100644
--- a/tools/generator-polygene/app/index.js
+++ b/tools/generator-polygene/app/index.js
@@ -194,6 +194,7 @@ module.exports = generators.Base.extend(
                         this.log('Entity Stores:', answers.entitystore);
                         this.log('Indexing:', answers.indexing);
                         this.log('Caching:', answers.caching);
+                        this.log('Metrics:', answers.metrics);
                         this.log('Features:', answers.features);
                         answers.dbpool = answers.dbpool === undefined ? "DBCP" : answers.dbpool;
                         polygene.name = answers.name;
@@ -202,6 +203,7 @@ module.exports = generators.Base.extend(
                         polygene.features = answers.features;
                         polygene.indexing = answers.indexing;
                         polygene.entitystore = answers.entitystore;
+                        polygene.metrics = answers.metrics;
                         polygene.caching = answers.caching;
                     }.bind(this)
                 );


[08/50] polygene-java git commit: Merge remote-tracking branch 'origin/develop' into develop

Posted by ni...@apache.org.
Merge remote-tracking branch 'origin/develop' into develop


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/55ddd146
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/55ddd146
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/55ddd146

Branch: refs/heads/es-jooq
Commit: 55ddd1464c76dd9bf13c75ebbfebbbbc6b47f8a1
Parents: f5cb14a b950fd9
Author: niclas <ni...@hedhman.org>
Authored: Thu Jun 15 18:30:48 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Thu Jun 15 18:30:48 2017 +0800

----------------------------------------------------------------------
 .../reports/AggregatedJacocoReportTask.groovy   |   2 +-
 .../tests/PerformanceTestsPlugin.groovy         |   2 +-
 dependencies.gradle                             |   2 +-
 gradle/wrapper/gradle-wrapper.jar               | Bin 54416 -> 54706 bytes
 gradle/wrapper/gradle-wrapper.properties        |   2 +-
 libraries/http/build.gradle                     |   2 +-
 6 files changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------



[32/50] polygene-java git commit: Ouch... missed an equal sign.

Posted by ni...@apache.org.
Ouch... missed an equal sign.


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

Branch: refs/heads/es-jooq
Commit: c543db57936cc504e140349e111f2ecddfd89f03
Parents: cf12e4b
Author: niclas <ni...@hedhman.org>
Authored: Sun Jul 2 23:34:49 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jul 2 23:34:49 2017 +0800

----------------------------------------------------------------------
 tools/generator-polygene/app/templates/buildtool/gradle-root.tmpl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c543db57/tools/generator-polygene/app/templates/buildtool/gradle-root.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/buildtool/gradle-root.tmpl b/tools/generator-polygene/app/templates/buildtool/gradle-root.tmpl
index 6ec2b7f..60dbb70 100644
--- a/tools/generator-polygene/app/templates/buildtool/gradle-root.tmpl
+++ b/tools/generator-polygene/app/templates/buildtool/gradle-root.tmpl
@@ -33,7 +33,7 @@ rootProject.ext {
 <%
 }
 if( polygene.entitystore == 'DerbySQL'  ) {
-%>  derbyVersion "10.13.1.1"
+%>  derbyVersion = "10.13.1.1"
 <%
 }
 if( polygene.entitystore == 'H2SQL'  ) {


[36/50] polygene-java git commit: Removed lines used in debugging.

Posted by ni...@apache.org.
Removed lines used in debugging.


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

Branch: refs/heads/es-jooq
Commit: f08fd79cd8bbd8ca27e3727b213cbe8910a74e3c
Parents: 2ac4012
Author: niclas <ni...@hedhman.org>
Authored: Sun Jul 9 09:51:49 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jul 9 09:51:49 2017 +0800

----------------------------------------------------------------------
 .../org/apache/polygene/library/restlet/PolygeneServerServlet.java | 2 --
 1 file changed, 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f08fd79c/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneServerServlet.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneServerServlet.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneServerServlet.java
index 4d2c125..1505e00 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneServerServlet.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneServerServlet.java
@@ -44,8 +44,6 @@ public interface PolygeneServerServlet extends Servlet
         @Override
         protected org.restlet.Application createApplication( Context parentContext )
         {
-            ServerList servers = getComponent().getServers();
-            System.out.println(servers);
             return objectFactory.newObject( PolygeneRestApplication.class, parentContext.createChildContext() );
         }
     }


[12/50] polygene-java git commit: POLYGENE-255 - Fixed Envisage problems in Yeoman generator.

Posted by ni...@apache.org.
POLYGENE-255 - Fixed Envisage problems in Yeoman generator.

Signed-off-by: niclas <ni...@hedhman.org>


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/818df1a8
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/818df1a8
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/818df1a8

Branch: refs/heads/es-jooq
Commit: 818df1a894f749b0e74f2e9cd0bc1bdd3bb4d0b8
Parents: 0d9e8a1
Author: niclas <ni...@hedhman.org>
Authored: Thu Jun 15 22:34:33 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Thu Jun 15 22:34:33 2017 +0800

----------------------------------------------------------------------
 .../app/templates/RestAPIApplication/bootstrap.tmpl               | 1 +
 .../app/templates/buildtool/gradle-bootstrap.tmpl                 | 3 +++
 2 files changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/818df1a8/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap.tmpl b/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap.tmpl
index dd3f876..bb16465 100644
--- a/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/RestAPIApplication/bootstrap.tmpl
@@ -28,6 +28,7 @@ import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.bootstrap.layered.LayeredApplicationAssembler;
 <% if( polygene.hasFeature('envisage' ) ) {
 %>import org.apache.polygene.envisage.Envisage;
+import org.apache.polygene.api.structure.ApplicationDescriptor;
 <% } %>
 import <%= polygene.packageName %>.bootstrap.connectivity.ConnectivityLayer;
 import <%= polygene.packageName %>.bootstrap.config.ConfigurationLayer;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/818df1a8/tools/generator-polygene/app/templates/buildtool/gradle-bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/buildtool/gradle-bootstrap.tmpl b/tools/generator-polygene/app/templates/buildtool/gradle-bootstrap.tmpl
index 051cc29..55b1c93 100644
--- a/tools/generator-polygene/app/templates/buildtool/gradle-bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/buildtool/gradle-bootstrap.tmpl
@@ -55,4 +55,7 @@ if( polygene.caching !== "None" ) {
 %>  implementation "org.apache.polygene.extensions:org.apache.polygene.extension.metrics-<%= polygene.metrics.toLowerCase() %>:$polygeneVersion"
 <%
     }
+if( polygene.hasFeature('envisage' ) ) {
+%>  implementation "org.apache.polygene.tools:org.apache.polygene.tool.envisage:$polygeneVersion"
+<% }
 %>}
\ No newline at end of file


[16/50] polygene-java git commit: POLYGENE-265 - method argument names are now used in Constraint Violations. POLYGENE-264 - Consolidated how the ConstraintViolationException works. POLYGENE-262 - NoSuchCompositeException and subtypes changed name to NoS

Posted by ni...@apache.org.
POLYGENE-265 - method argument names are now used in Constraint Violations.
POLYGENE-264 - Consolidated how the ConstraintViolationException works.
POLYGENE-262 - NoSuchCompositeException and subtypes changed name to NoSuchCompositeTypeException.


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/559b38a5
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/559b38a5
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/559b38a5

Branch: refs/heads/es-jooq
Commit: 559b38a5b0c857c6553ae9dff925ff71a65f1cae
Parents: 85a37fd
Author: niclas <ni...@hedhman.org>
Authored: Mon Jun 19 15:43:59 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Mon Jun 19 15:43:59 2017 +0800

----------------------------------------------------------------------
 .../api/composite/NoSuchCompositeException.java |  56 ----
 .../composite/NoSuchCompositeTypeException.java | 138 ++++++++
 .../api/composite/NoSuchTransientException.java |  45 ---
 .../composite/NoSuchTransientTypeException.java |  42 +++
 .../api/composite/TransientBuilderFactory.java  |   8 +-
 .../api/constraint/ConstraintViolation.java     |  56 ----
 .../ConstraintViolationException.java           | 312 +++++++++++--------
 .../constraint/ValueConstraintViolation.java    |  79 +++++
 .../api/object/NoSuchObjectException.java       |  57 ----
 .../api/object/NoSuchObjectTypeException.java   |  57 ++++
 .../polygene/api/object/ObjectFactory.java      |   4 +-
 .../api/service/NoSuchServiceException.java     |  58 ----
 .../api/service/NoSuchServiceTypeException.java |  47 +++
 .../polygene/api/service/ServiceFinder.java     |   8 +-
 .../unitofwork/NoSuchEntityTypeException.java   |  21 +-
 .../polygene/api/unitofwork/UnitOfWork.java     |   2 -
 .../api/value/NoSuchValueException.java         |  46 ---
 .../api/value/NoSuchValueTypeException.java     |  45 +++
 .../polygene/api/value/ValueBuilderFactory.java |  14 +-
 .../bootstrap/AssemblyReportException.java      |   5 +-
 .../association/AbstractAssociationModel.java   |  10 +-
 .../bootstrap/CompositeAssemblyImpl.java        | 117 ++++---
 .../runtime/bootstrap/ModuleAssemblyImpl.java   |   2 +-
 .../runtime/composite/CompositeModel.java       |  11 +-
 .../runtime/composite/ConstraintsInstance.java  |  24 +-
 .../composite/FragmentInvocationHandler.java    |  15 +-
 .../composite/ValueConstraintsInstance.java     |  33 +-
 .../composite/ValueConstraintsModel.java        |  14 +-
 .../polygene/runtime/entity/EntityInstance.java |  13 +-
 .../ServiceInjectionProviderFactory.java        |   4 +-
 .../provider/UsesInjectionProviderFactory.java  |   8 +-
 .../runtime/property/PropertyModel.java         |   9 +-
 .../runtime/query/QueryBuilderFactoryImpl.java  |   4 +-
 .../runtime/structure/ModuleInstance.java       |  46 +--
 .../runtime/value/ValueBuilderInstance.java     |   4 +-
 .../polygene/runtime/value/ValueModel.java      | 114 ++++++-
 .../constraints/PropertyConstraintTest.java     |   4 +-
 .../composite/CompositeFactoryImplTest.java     |   4 +-
 .../composite/InterfaceDefaultMethodsTest.java  |   7 +-
 .../runtime/constraints/ConstraintsTest.java    |   6 +-
 .../objects/ObjectBuilderFactoryTest.java       |   4 +-
 .../runtime/objects/ObjectVisibilityTest.java   |  62 ++--
 .../runtime/service/ServiceVisibilityTest.java  |  62 ++--
 .../runtime/structure/MixinVisibilityTest.java  |   4 +-
 .../PrivateCompositeVisibilityTest.java         |   4 +-
 .../transients/TransientBuilderFactoryTest.java |   4 +-
 .../transients/TransientVisibilityTest.java     |  62 ++--
 .../runtime/value/ValueVisibilityTest.java      |  62 ++--
 .../test/cache/AbstractCachePoolTest.java       |  11 +-
 .../test/entity/model/EntityStoreTestSuite.java | 153 +++++++--
 .../test/entity/model/legal/LegalService.java   |  68 +++-
 .../polygene/test/entity/model/legal/Will.java  |  14 +-
 .../test/entity/model/legal/WillAmount.java     |   3 +-
 .../test/entity/model/legal/WillBenefit.java    |   1 +
 .../test/entity/model/monetary/Currency.java    |  51 +++
 .../polygene/test/entity/model/people/Rent.java |  20 +-
 .../polygene/test/cache/MemoryCacheTest.java    |   3 +-
 .../apache/polygene/test/docker/DockerRule.java |   2 +-
 .../library/constraints/ConstraintTest.java     |   3 +-
 .../rest/server/api/ContextResource.java        |   4 +-
 .../restlet/ConstraintViolationMessages.java    |   4 +-
 .../restlet/InteractionConstraintsService.java  |   6 +-
 .../ParameterViolationConcern.java              |   4 +-
 .../PhoneNumberParameterViolationConcern.java   |   6 +-
 64 files changed, 1294 insertions(+), 872 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchCompositeException.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchCompositeException.java b/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchCompositeException.java
deleted file mode 100644
index c3f51bb..0000000
--- a/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchCompositeException.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.api.composite;
-
-import org.apache.polygene.api.common.InvalidApplicationException;
-
-/**
- * This exception is thrown if client code tries to create a non-existing Composite type.
- */
-public class NoSuchCompositeException extends InvalidApplicationException
-{
-    private final String compositeType;
-    private final String moduleName;
-    private final String visibleTypes;
-
-    protected NoSuchCompositeException( String metaType, String compositeType, String moduleName, String visibleTypes )
-    {
-        super( "Could not find any visible " + metaType + " of type [" + compositeType + "] in module [" +
-               moduleName + "].\n" + visibleTypes );
-        this.compositeType = compositeType;
-        this.moduleName = moduleName;
-        this.visibleTypes = visibleTypes;
-    }
-
-    public String compositeType()
-    {
-        return compositeType;
-    }
-
-    public String moduleName()
-    {
-        return moduleName;
-    }
-
-    public String visibleTypes()
-    {
-        return visibleTypes;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchCompositeTypeException.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchCompositeTypeException.java b/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchCompositeTypeException.java
new file mode 100644
index 0000000..64977ef
--- /dev/null
+++ b/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchCompositeTypeException.java
@@ -0,0 +1,138 @@
+/*
+ *  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.api.composite;
+
+import java.util.stream.Stream;
+import org.apache.polygene.api.common.InvalidApplicationException;
+import org.apache.polygene.api.structure.TypeLookup;
+
+import static java.util.stream.Collectors.joining;
+
+/**
+ * This exception is thrown if client code tries to create a non-existing Composite type.
+ */
+public abstract class NoSuchCompositeTypeException extends InvalidApplicationException
+{
+    private final String compositeType;
+    private final String moduleName;
+    private final String visibleTypes;
+    private final String metaType;
+    private final String candidateTypes;
+
+    protected NoSuchCompositeTypeException( String metaType, String compositeType, String moduleName, TypeLookup typeLookup )
+    {
+        super( "\n\tCould not find any visible " + metaType + " of type [" + compositeType + "] in module [" + moduleName + "]." );
+        this.metaType = metaType;
+        this.compositeType = compositeType;
+        this.moduleName = moduleName;
+        visibleTypes = formatVisibleTypes( typeLookup );
+        candidateTypes = findCandidateTypes( typeLookup );
+    }
+
+    public String compositeType()
+    {
+        return compositeType;
+    }
+
+    public String moduleName()
+    {
+        return moduleName;
+    }
+
+    public String visibleTypes()
+    {
+        return visibleTypes;
+    }
+
+    public String candidateTypes()
+    {
+        return candidateTypes;
+    }
+
+    @Override
+    public String getMessage()
+    {
+        return super.getMessage() + "\n" + candidateTypes + "\n" + visibleTypes;
+    }
+
+    private String formatVisibleTypes( TypeLookup typeLookup )
+    {
+        return descriptors( typeLookup )
+            .map( descriptor ->
+                  {
+                      String moduleName = descriptor.module().name();
+                      String typeName = descriptor.primaryType().getName();
+                      return "\t\t[" + typeName + "] in [" + moduleName + "]";
+                  } )
+            .sorted()
+            .distinct()
+            .collect( joining( "\n", "\tVisible " + metaType + " types are:\n", "" ) );
+    }
+
+    private String findCandidateTypes( TypeLookup typeLookup )
+    {
+        return "";
+//        return descriptors( typeLookup )
+//            .filter( type -> compositeType.equals( type.primaryType().getName() ) )
+//            .map( descriptor ->
+//                  {
+//                      Class<?> primarytype = descriptor.primaryType();
+//                      String typeName = primarytype.getName();
+//                      return "\t\t[ " + typeName + "] in [" + descriptor.module().name() + "] with visibility " + descriptor.visibility();
+//                  } )
+//            .collect( joining( "\n", "\tInvisible " + metaType + " types are:\n", "" ) );
+    }
+
+    protected abstract Stream<? extends CompositeDescriptor> descriptors( TypeLookup typeLookup );
+
+    @Override
+    public boolean equals( Object o )
+    {
+        if( this == o )
+        {
+            return true;
+        }
+        if( o == null || getClass() != o.getClass() )
+        {
+            return false;
+        }
+
+        NoSuchCompositeTypeException that = (NoSuchCompositeTypeException) o;
+
+        if( !compositeType.equals( that.compositeType ) )
+        {
+            return false;
+        }
+        if( !moduleName.equals( that.moduleName ) )
+        {
+            return false;
+        }
+        return visibleTypes.equals( that.visibleTypes );
+    }
+
+    @Override
+    public int hashCode()
+    {
+        int result = compositeType.hashCode();
+        result = 31 * result + moduleName.hashCode();
+        result = 31 * result + visibleTypes.hashCode();
+        return result;
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchTransientException.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchTransientException.java b/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchTransientException.java
deleted file mode 100644
index d55c34d..0000000
--- a/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchTransientException.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-
-package org.apache.polygene.api.composite;
-
-import org.apache.polygene.api.structure.TypeLookup;
-
-import static java.util.stream.Collectors.joining;
-
-/**
- * This exception is thrown if client code tries to create a non-existing TransientComposite type.
- */
-public class NoSuchTransientException extends NoSuchCompositeException
-{
-    public NoSuchTransientException( String typeName, String moduleName, TypeLookup typeLookup )
-    {
-        super( "TransientComposite", typeName, moduleName, formatVisibleTypes( typeLookup ) );
-    }
-
-    private static String formatVisibleTypes( TypeLookup typeLookup )
-    {
-        return typeLookup.allTransients()
-                         .map( descriptor -> descriptor.primaryType().getName() )
-                         .sorted()
-                         .distinct()
-                         .collect( joining( "\n", "Visible transient types are:\n", "" ) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchTransientTypeException.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchTransientTypeException.java b/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchTransientTypeException.java
new file mode 100644
index 0000000..45ecd17
--- /dev/null
+++ b/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchTransientTypeException.java
@@ -0,0 +1,42 @@
+/*
+ *  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.api.composite;
+
+import java.util.stream.Stream;
+import org.apache.polygene.api.structure.TypeLookup;
+
+import static java.util.stream.Collectors.joining;
+
+/**
+ * This exception is thrown if client code tries to create a non-existing TransientComposite type.
+ */
+public class NoSuchTransientTypeException extends NoSuchCompositeTypeException
+{
+    public NoSuchTransientTypeException( String typeName, String moduleName, TypeLookup typeLookup )
+    {
+        super( "TransientComposite", typeName, moduleName, typeLookup );
+    }
+
+    protected Stream<? extends CompositeDescriptor> descriptors( TypeLookup typeLookup )
+    {
+        return typeLookup.allTransients();
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/api/src/main/java/org/apache/polygene/api/composite/TransientBuilderFactory.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/composite/TransientBuilderFactory.java b/core/api/src/main/java/org/apache/polygene/api/composite/TransientBuilderFactory.java
index 5656c71..12f71e9 100644
--- a/core/api/src/main/java/org/apache/polygene/api/composite/TransientBuilderFactory.java
+++ b/core/api/src/main/java/org/apache/polygene/api/composite/TransientBuilderFactory.java
@@ -39,10 +39,10 @@ public interface TransientBuilderFactory
      *
      * @return a TransientBuilder for creation of TransientComposites implementing the interface
      *
-     * @throws NoSuchTransientException if no composite extending the mixinType has been registered
+     * @throws NoSuchTransientTypeException if no composite extending the mixinType has been registered
      */
     <T> TransientBuilder<T> newTransientBuilder( Class<T> mixinType )
-        throws NoSuchTransientException;
+        throws NoSuchTransientTypeException;
 
     /**
      * Instantiate a TransientComposite of the given type.
@@ -53,10 +53,10 @@ public interface TransientBuilderFactory
      *
      * @return a new TransientComposite instance
      *
-     * @throws NoSuchTransientException if no composite extending the mixinType has been registered
+     * @throws NoSuchTransientTypeException if no composite extending the mixinType has been registered
      * @throws org.apache.polygene.api.common.ConstructionException
      *                                  if the composite could not be instantiated
      */
     <T> T newTransient( Class<T> mixinType, Object... uses )
-        throws NoSuchTransientException, ConstructionException;
+        throws NoSuchTransientTypeException, ConstructionException;
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolation.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolation.java b/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolation.java
deleted file mode 100644
index 75bbecb..0000000
--- a/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolation.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-
-package org.apache.polygene.api.constraint;
-
-import java.lang.annotation.Annotation;
-
-/**
- * When a constraint violation has occurred (ie Constraint.isValid has returned false) it
- * is put in a collection of all violations that have occurred for this value check.
- */
-public final class ConstraintViolation
-{
-    private String name;
-    private final Annotation constraint;
-    private final Object value;
-
-    public ConstraintViolation( String name, Annotation constraint, Object value )
-    {
-        this.name = name;
-        this.constraint = constraint;
-        this.value = value;
-    }
-
-    public String name()
-    {
-        return name;
-    }
-
-    public Annotation constraint()
-    {
-        return constraint;
-    }
-
-    public Object value()
-    {
-        return value;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolationException.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolationException.java b/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolationException.java
index a007a11..c54d35d 100644
--- a/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolationException.java
+++ b/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolationException.java
@@ -20,23 +20,22 @@
 package org.apache.polygene.api.constraint;
 
 import java.lang.annotation.Annotation;
-import java.lang.reflect.Member;
 import java.lang.reflect.Type;
 import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Locale;
-import java.util.MissingResourceException;
+import java.util.Objects;
 import java.util.ResourceBundle;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
-import org.apache.polygene.api.composite.Composite;
+import org.apache.polygene.api.composite.CompositeDescriptor;
+import org.apache.polygene.api.entity.EntityDescriptor;
 import org.apache.polygene.api.identity.Identity;
+import org.apache.polygene.api.service.ServiceDescriptor;
 import org.apache.polygene.api.util.Classes;
 
-import static java.util.stream.Collectors.joining;
-
 /**
  * This Exception is thrown when there is one or more Constraint Violations in a method
  * call.
@@ -48,65 +47,49 @@ import static java.util.stream.Collectors.joining;
  */
 public class ConstraintViolationException extends IllegalArgumentException
 {
-    private final Collection<ConstraintViolation> constraintViolations;
-    private String methodName;
-    private String mixinTypeName;
-    private String instanceToString;
-    private List<? extends Type> instanceTypes;
+    private static final boolean longNames = Boolean.getBoolean( "polygene.constraints.longNames" );
+    private static final String DEFAULT_PATTERN = "\n\tConstraint Violation(s) in {0} of types [{3}].\n";
+    private static final String ENTITY_DEFAULT_PATTERN = "\n\tConstraint Violation(s) in entity {0} with id=[{2}].\n";
+    private static final String SERVICE_DEFAULT_PATTERN = "\n\tConstraint Violation(s) in service {0} with id=[{2}].\n";
+    private static final String MIXIN_DEFAULT_PATTERN = "\t\t@{2}({3}) on {0}.{1}(). Parameter [{4}] does not allow value [{5}].\n";
 
-    public ConstraintViolationException( Composite instance, Member method,
-                                         Collection<ConstraintViolation> constraintViolations
-    )
-    {
-        this( instance.toString(), Classes.interfacesOf( instance.getClass() ), method, constraintViolations );
-    }
-
-    public ConstraintViolationException( String instanceToString,
-                                         Stream<? extends Type> instanceTypes,
-                                         Member method,
-                                         Collection<ConstraintViolation> violations
-    )
-    {
-        this.instanceToString = instanceToString;
-        this.instanceTypes = instanceTypes.collect( Collectors.toList() );
-        mixinTypeName = method.getDeclaringClass().getName();
-        methodName = method.getName();
-        this.constraintViolations = violations;
-    }
+    private String instanceToString;                              // arg {0}
+    private Class<?> primaryType;                                 // arg {1}
+    private List<? extends Type> instanceTypes;                   // arg {2}
+    private Collection<ValueConstraintViolation> constraintViolations; // arg {4} and {5}
+    private String identity;                                      // arg {6}
+    private boolean isService;
+    private boolean isEntity;
 
-    public ConstraintViolationException( Identity identity,
-                                         List<? extends Type> instanceTypes,
-                                         String mixinTypeName,
-                                         String methodName,
-                                         Collection<ConstraintViolation> violations
-    )
+    public ConstraintViolationException( Collection<ValueConstraintViolation> violations )
     {
-        this.instanceToString = identity.toString();
-        this.instanceTypes = instanceTypes;
-        this.mixinTypeName = mixinTypeName;
-        this.methodName = methodName;
-        this.constraintViolations = violations;
+        this.constraintViolations = new ArrayList<>();
+        this.constraintViolations.addAll( violations );
     }
 
-    public Collection<ConstraintViolation> constraintViolations()
+    public Collection<ValueConstraintViolation> constraintViolations()
     {
         return constraintViolations;
     }
 
     /**
-     * Creates localized messages of all the constraint violations that has occured.
+     * Creates localized message of all the constraint violations that has occured.
      * <p>
-     * The key "<code>polygene.constraint.<i><strong>CompositeType</strong></i>.<i><strong>methodName</strong></i></code>"
-     * will be used to lookup the text formatting
-     * pattern from the ResourceBundle, where <strong><code><i>CompositeType</i></code></strong> is the
-     * class name of the Composite where the constraint was violated. If such key does not exist, then the
-     * key &nbsp;"<code>polygene.constraint</code>" will be used, and if that one also doesn't exist, or
-     * the resourceBundle argument is null, then the default patterns will be used;
+     * Each ConstraintViolationException concerns one Composite instance, but may have many violations on that
+     * instance. For the composite instance related message following entries in the ResourceBundle will be searched
+     * for a pattern in the following order;
+     * <ol>
+     * <li><code>polygene.constraint.<i><strong>CompositeType</strong></i></code></li>
+     * <li><code>polygene.constraint.composite</code></li>
+     * </ol>
+     * where <strong><code><i>CompositeType</i></code></strong> is the
+     * class name of the Composite instance. If such key does not exist, or if the resourceBundle argument is null,
+     * then the default patterns will be used;
      * </p>
-     * <table summary="Localization of constraint vioations.">
+     * <table summary="Default localization of constraint violations for composite.">
      * <tr><th>Type of Composite</th><th>Pattern used</th></tr>
      * <tr><td>Composite</td>
-     * <td><code>Constraint Violation in {2}.{3} with constraint {4}, in composite \n{0} of type {1}</code></td>
+     * <td><code>\tConstraint Violation(s) in {0} with types {3}\n</code></td>
      * </tr>
      * <tr><td>EntityComposite</td>
      * <td><code>Constraint Violation in {2}.{3} with constraint {4}, in entity {1}[id={0}]</code></td>
@@ -115,144 +98,213 @@ public class ConstraintViolationException extends IllegalArgumentException
      * <td><code>Constraint Violation in {2}.{3} with constraint {4}, in service {0}</code></td>
      * </tr>
      * </table>
+     * The ResourceBundle arguments are defined as;
+     * <p>
+     * <p>
      * Then format each ConstraintViolation according to such pattern, where the following argument are passed;
      * <table summary="List of arguments available."><tr><th>Arg</th><th>Value</th></tr>
      * <tr>
      * <td>{0}</td>
+     * <td>Primary Type of Composite</td>
+     * </tr>
+     * <tr>
+     * <td>{1}</td>
      * <td>Composite instance toString()</td>
      * </tr>
      * <tr>
+     * <td>{2}</td>
+     * <td>Identity if composite implements HasIdentity</td>
+     * </tr>
+     * <tr>
+     * <td>{3}</td>
+     * <td>Comma-separeated list of types implemented by Composite</td>
+     * </tr>
+     * </table>
+     * <p>
+     * Once the message at the composite type level has been established, the message will contain each of the found
+     * violations. For each such violation, the resource bundle will be searched in the following order;
+     * <ol>
+     * <li><code>polygene.constraint.<i><strong>MixinType</strong></i>.<i><strong>member</strong></i></code></li>
+     * <li><code>polygene.constraint.<i><strong>MixinType</strong></i></code></li>
+     * <li><code>polygene.constraint.mixin</code></li>
+     * </ol>
+     * where <code><i><strong>MixinType</strong></i></code> refers to the mixin type of the member (method, field or
+     * constructor) and the <code><i><strong>member</strong></i></code> is the name of such Member.
+     * <table summary="Default localization of constraint violations for mixin.">
+     * <tr><th>Type of Composite</th><th>Pattern used</th></tr>
+     * <tr><td>Mixin</td>
+     * <td><code>\t\t@{2} {0}.{1} does not allow value [{4}]</code></td>
+     * </tr>
+     * </table>
+     * For these the ResourceBundle arguments are;
+     * <table summary="List of arguments available."><tr><th>Arg</th><th>Value</th></tr>
+     * <tr>
+     * <td>{0}</td>
+     * <td>Mixin Type Name</td>
+     * </tr>
+     * <tr>
      * <td>{1}</td>
-     * <td>CompositeType class name</td>
+     * <td>Mixin Member Name</td>
      * </tr>
      * <tr>
      * <td>{2}</td>
-     * <td>MixinType class name</td>
+     * <td>Annotation type</td>
      * </tr>
      * <tr>
      * <td>{3}</td>
-     * <td>MixinType method name</td>
+     * <td>Annotation toString</td>
      * </tr>
      * <tr>
      * <td>{4}</td>
-     * <td>Annotation toString()</td>
+     * <td>Name of the Member, see {@link Name}</td>
      * </tr>
      * <tr>
      * <td>{5}</td>
-     * <td>toString() of value passed as the argument, or "null" text if argument was null.</td>
+     * <td>Value attempted</td>
      * </tr>
      * </table>
-     * <p>
-     * <b>NOTE!!!</b> This class is still under construction and will be modified further.
-     * </p>
      *
      * @param bundle The ResourceBundle for Localization, or null if default formatting and locale to be used.
-     *
      * @return An array of localized messages of the violations incurred.
      */
-    public String[] localizedMessagesFrom( ResourceBundle bundle )
+    public String localizedMessageFrom( ResourceBundle bundle )
     {
-        String pattern = "Constraint violation in {0}.{1} for method ''{3}'' with constraint \"{4}({6})\", for value ''{5}''";
-
-        ArrayList<String> list = new ArrayList<>();
-        for( ConstraintViolation violation : constraintViolations )
+        Locale locale;
+        if( bundle != null )
         {
-            Locale locale;
-            if( bundle != null )
+            locale = bundle.getLocale();
+        }
+        else
+        {
+            locale = Locale.getDefault();
+        }
+        StringBuffer message = new StringBuffer();
+        {
+            String[] searchKeys = new String[]{ "polygene.constraint." + primaryType, "polygene.constraint.composite" };
+            String compositePattern = findPattern( bundle, searchKeys, defaultPattern() );
+            String types = instanceTypes == null
+                           ? null
+                           : instanceTypes.stream()
+                                          .map( this::nameOf )
+                                          .collect( Collectors.joining( "," ) );
+            String name;
+            if( longNames )
             {
-                try
-                {
-                    pattern = bundle.getString( "polygene.constraint." + mixinTypeName + "." + methodName );
-                }
-                catch( MissingResourceException e1 )
-                {
-                    try
-                    {
-                        pattern = bundle.getString( "polygene.constraint" );
-                    }
-                    catch( MissingResourceException e2 )
-                    {
-                        // ignore. The default pattern will be used.
-                    }
-                }
-                locale = bundle.getLocale();
+                name = primaryType.getName();
             }
             else
             {
-                locale = Locale.getDefault();
+                name = primaryType.getSimpleName();
             }
-            MessageFormat format = new MessageFormat( pattern, locale );
+            Object[] args = new Object[]{ name, instanceToString, identity, types };
+            MessageFormat formatter = new MessageFormat( compositePattern, locale );
+            formatter.format( args, message, null );
+        }
+        for( ValueConstraintViolation violation : constraintViolations )
+        {
+            String[] searchKeys = new String[]{ "polygene.constraint." + primaryType, "polygene.constraint.composite" };
+            String mixinPattern = findPattern( bundle, searchKeys, MIXIN_DEFAULT_PATTERN );
 
             Annotation annotation = violation.constraint();
-            String name = violation.name();
-            Object value = violation.value();
-            String classes;
-            if( instanceTypes.size() == 1 )
-            {
-                Type type = instanceTypes.stream().findFirst().get();
-                classes = Classes.RAW_CLASS.apply( type ).getSimpleName();
-            }
-            else
-            {
-                classes = "[" + instanceTypes.stream()
-                    .map( Classes.RAW_CLASS )
-                    .map( Class::getSimpleName ).collect( joining( "," ) ) + "]";
-            }
+            Class<? extends Annotation> annotatioType = annotation.annotationType();
+            Class<?> mixinType = violation.mixinType();
             Object[] args = new Object[]
                 {
-                    instanceToString,
-                    classes,
-                    mixinTypeName,
-                    methodName,
+                    longNames ? mixinType.getName() : mixinType.getSimpleName(),
+                    violation.methodName(),
+                    longNames ? annotatioType.getName() : annotatioType.getSimpleName(),
                     annotation.toString(),
-                    "" + value,
-                    name
+                    violation.name(),
+                    violation.value()
                 };
-            StringBuffer text = new StringBuffer();
-            format.format( args, text, null );
-            list.add( text.toString() );
+            MessageFormat formatter = new MessageFormat( mixinPattern, locale );
+            formatter.format( args, message, null );
         }
-        String[] result = new String[ list.size() ];
-        list.toArray( result );
+        String result = message.toString();
+        message.setLength( 0 ); // TODO: is this still needed to avoid JVM memory leak??
         return result;
     }
 
-    public String localizedMessage()
+    private String nameOf( Type type )
     {
-        String[] messages = localizedMessagesFrom( null );
-        StringBuilder result = new StringBuilder();
-        boolean first = true;
-        for( String message : messages )
+        Class<?> clazz = Classes.RAW_CLASS.apply( type );
+        if( longNames )
         {
-            if( !first )
-            {
-                result.append( ',' );
-            }
-            first = false;
-            result.append( message );
+            return clazz.getName();
+        }
+        else
+        {
+            return clazz.getSimpleName();
         }
-        return result.toString();
     }
 
     @Override
-    public String getLocalizedMessage()
+    public String getMessage()
     {
-        return localizedMessage();
+        return localizedMessageFrom( null );
     }
 
-    @Override
-    public String getMessage()
+    private String findPattern( ResourceBundle bundle, String[] searchKeys, String defaultPattern )
+    {
+        String compositePattern;
+        if( bundle != null )
+        {
+            compositePattern = Stream.of( searchKeys )
+                                     .map( name -> findPattern( bundle, name ) )
+                                     .filter( Objects::nonNull )
+                                     .findFirst().orElse( defaultPattern );
+        }
+        else
+        {
+            compositePattern = defaultPattern;
+        }
+        return compositePattern;
+    }
+
+    private String findPattern( ResourceBundle bundle, String name )
+    {
+        try
+        {
+            return bundle.getString( name );
+        }
+        catch( Exception e )
+        {
+            return null;
+        }
+    }
+
+    private String defaultPattern()
     {
-        return localizedMessage();
+        if( isEntity )
+        {
+            return ENTITY_DEFAULT_PATTERN;
+        }
+        if( isService )
+        {
+            return SERVICE_DEFAULT_PATTERN;
+        }
+        return DEFAULT_PATTERN;
     }
 
-    public String methodName()
+    public void setCompositeDescriptor( CompositeDescriptor descriptor )
     {
-        return methodName;
+        this.primaryType = descriptor.primaryType();
+        this.instanceTypes = descriptor.mixinTypes().collect( Collectors.toList() );
+        this.isEntity = descriptor instanceof EntityDescriptor;
+        this.isService = descriptor instanceof ServiceDescriptor;
+    }
+
+    public void setIdentity( Identity identity )
+    {
+        if( identity == null )
+        {
+            return;
+        }
+        this.identity = identity.toString();
     }
 
-    public String mixinTypeName()
+    public void setInstanceString( String instanceString )
     {
-        return mixinTypeName;
+        instanceToString = instanceString;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/api/src/main/java/org/apache/polygene/api/constraint/ValueConstraintViolation.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/constraint/ValueConstraintViolation.java b/core/api/src/main/java/org/apache/polygene/api/constraint/ValueConstraintViolation.java
new file mode 100644
index 0000000..1da5a4b
--- /dev/null
+++ b/core/api/src/main/java/org/apache/polygene/api/constraint/ValueConstraintViolation.java
@@ -0,0 +1,79 @@
+/*
+ *  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.api.constraint;
+
+import java.lang.annotation.Annotation;
+import java.util.List;
+
+/**
+ * When a constraint violation has occurred (ie Constraint.isValid has returned false) it
+ * is put in a collection of all violations that have occurred for this value check.
+ */
+public final class ValueConstraintViolation
+{
+    private final String name;
+    private final Annotation constraint;
+    private final Object value;
+    private Class<?> mixinType;
+    private String methodName;
+
+    public ValueConstraintViolation( String name, Annotation constraint, Object value )
+    {
+        this.name = name;
+        this.constraint = constraint;
+        this.value = value;
+    }
+
+    public String name()
+    {
+        return name;
+    }
+
+    public Annotation constraint()
+    {
+        return constraint;
+    }
+
+    public Object value()
+    {
+        return value;
+    }
+
+    public void setMixinType( Class<?> mixinType )
+    {
+        this.mixinType = mixinType;
+    }
+
+    public void setMethodName( String methodName )
+    {
+        this.methodName = methodName;
+    }
+
+    public Class<?> mixinType()
+    {
+        return mixinType;
+    }
+
+    public String methodName()
+    {
+        return methodName;
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/api/src/main/java/org/apache/polygene/api/object/NoSuchObjectException.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/object/NoSuchObjectException.java b/core/api/src/main/java/org/apache/polygene/api/object/NoSuchObjectException.java
deleted file mode 100644
index 82b63bd..0000000
--- a/core/api/src/main/java/org/apache/polygene/api/object/NoSuchObjectException.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.api.object;
-
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-import org.apache.polygene.api.common.InvalidApplicationException;
-
-/**
- * This exception is thrown if no visible Object of the requested type can be found.
- */
-public class NoSuchObjectException
-    extends InvalidApplicationException
-{
-    private static final long serialVersionUID = -1121690536365682511L;
-
-    private final String objectType;
-    private final String moduleName;
-
-    public NoSuchObjectException( String type, String moduleName, Stream<Class<?>> visible )
-    {
-        super( "Could not find any visible Object of type [" + type + "] in module ["
-               + moduleName
-               + "]. The visible types are: \n"
-               + visible.map( Class::getName ).collect( Collectors.joining("\n") )
-        );
-        this.objectType = type;
-        this.moduleName = moduleName;
-    }
-
-    public String objectType()
-    {
-        return objectType;
-    }
-
-    public String moduleName()
-    {
-        return moduleName;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/api/src/main/java/org/apache/polygene/api/object/NoSuchObjectTypeException.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/object/NoSuchObjectTypeException.java b/core/api/src/main/java/org/apache/polygene/api/object/NoSuchObjectTypeException.java
new file mode 100644
index 0000000..af1801f
--- /dev/null
+++ b/core/api/src/main/java/org/apache/polygene/api/object/NoSuchObjectTypeException.java
@@ -0,0 +1,57 @@
+/*
+ *  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.api.object;
+
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import org.apache.polygene.api.common.InvalidApplicationException;
+
+/**
+ * This exception is thrown if no visible Object of the requested type can be found.
+ */
+public class NoSuchObjectTypeException
+    extends InvalidApplicationException
+{
+    private static final long serialVersionUID = -1121690536365682511L;
+
+    private final String objectType;
+    private final String moduleName;
+
+    public NoSuchObjectTypeException( String type, String moduleName, Stream<Class<?>> visible )
+    {
+        super( "Could not find any visible Object of type [" + type + "] in module ["
+               + moduleName
+               + "]. The visible types are: \n"
+               + visible.map( Class::getName ).collect( Collectors.joining("\n") )
+        );
+        this.objectType = type;
+        this.moduleName = moduleName;
+    }
+
+    public String objectType()
+    {
+        return objectType;
+    }
+
+    public String moduleName()
+    {
+        return moduleName;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/api/src/main/java/org/apache/polygene/api/object/ObjectFactory.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/object/ObjectFactory.java b/core/api/src/main/java/org/apache/polygene/api/object/ObjectFactory.java
index fddeeb1..a13a5bf 100644
--- a/core/api/src/main/java/org/apache/polygene/api/object/ObjectFactory.java
+++ b/core/api/src/main/java/org/apache/polygene/api/object/ObjectFactory.java
@@ -36,10 +36,10 @@ public interface ObjectFactory
      * @return new objects.
      *
      * @throws ConstructionException Thrown if instantiation fails.
-     * @throws NoSuchObjectException Thrown if {@code type} class is not an object.
+     * @throws NoSuchObjectTypeException Thrown if {@code type} class is not an object.
      */
     <T> T newObject( Class<T> type, Object... uses )
-        throws NoSuchObjectException, ConstructionException;
+        throws NoSuchObjectTypeException, ConstructionException;
 
     /**
      * Inject an existing instance. Only fields and methods will be called.

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/api/src/main/java/org/apache/polygene/api/service/NoSuchServiceException.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/service/NoSuchServiceException.java b/core/api/src/main/java/org/apache/polygene/api/service/NoSuchServiceException.java
deleted file mode 100644
index 3b98272..0000000
--- a/core/api/src/main/java/org/apache/polygene/api/service/NoSuchServiceException.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-
-package org.apache.polygene.api.service;
-
-import java.util.stream.Collectors;
-import org.apache.polygene.api.composite.CompositeDescriptor;
-import org.apache.polygene.api.composite.ModelDescriptor;
-import org.apache.polygene.api.composite.NoSuchCompositeException;
-import org.apache.polygene.api.structure.TypeLookup;
-
-/**
- * Thrown when no visible service of the requested type is found.
- */
-public class NoSuchServiceException extends NoSuchCompositeException
-{
-    public NoSuchServiceException( String typeName, String moduleName, TypeLookup typeLookup )
-    {
-        super( "ServiceComposite", typeName, moduleName, formatVisibleTypes( typeLookup ) );
-    }
-
-    private static String formatVisibleTypes( TypeLookup typeLookup )
-    {
-        return typeLookup.allServices()
-            .map( NoSuchServiceException::typeOf )
-            .collect( Collectors.joining( "\n", "Visible service types are:\n", "" ) );
-    }
-
-    private static String typeOf( ModelDescriptor descriptor )
-    {
-        if( descriptor instanceof CompositeDescriptor )
-        {
-            return ( (CompositeDescriptor) descriptor ).primaryType().getName();
-        }
-        return descriptor.types()
-                         .map( Class::getName )
-                         .sorted()
-                         .distinct()
-                         .collect( Collectors.joining( ",", "[", "]") );
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/api/src/main/java/org/apache/polygene/api/service/NoSuchServiceTypeException.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/service/NoSuchServiceTypeException.java b/core/api/src/main/java/org/apache/polygene/api/service/NoSuchServiceTypeException.java
new file mode 100644
index 0000000..cc43627
--- /dev/null
+++ b/core/api/src/main/java/org/apache/polygene/api/service/NoSuchServiceTypeException.java
@@ -0,0 +1,47 @@
+/*
+ *  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.api.service;
+
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import org.apache.polygene.api.composite.CompositeDescriptor;
+import org.apache.polygene.api.composite.ModelDescriptor;
+import org.apache.polygene.api.composite.NoSuchCompositeTypeException;
+import org.apache.polygene.api.structure.TypeLookup;
+
+/**
+ * Thrown when no visible service of the requested type is found.
+ */
+public class NoSuchServiceTypeException extends NoSuchCompositeTypeException
+{
+    public NoSuchServiceTypeException( String typeName, String moduleName, TypeLookup typeLookup )
+    {
+        super( "ServiceComposite", typeName, moduleName, typeLookup );
+    }
+
+    @Override
+    protected Stream<? extends CompositeDescriptor> descriptors( TypeLookup typeLookup )
+    {
+        return typeLookup.allServices()
+                         .filter( descriptor -> descriptor instanceof ServiceDescriptor )
+                         .map( descriptor -> (ServiceDescriptor) descriptor );
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/api/src/main/java/org/apache/polygene/api/service/ServiceFinder.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/service/ServiceFinder.java b/core/api/src/main/java/org/apache/polygene/api/service/ServiceFinder.java
index 8e7e9d5..28389ae 100644
--- a/core/api/src/main/java/org/apache/polygene/api/service/ServiceFinder.java
+++ b/core/api/src/main/java/org/apache/polygene/api/service/ServiceFinder.java
@@ -50,10 +50,10 @@ public interface ServiceFinder
      *
      * @return a ServiceReference if one is found
      *
-     * @throws NoSuchServiceException if no service of serviceType is found
+     * @throws NoSuchServiceTypeException if no service of serviceType is found
      */
     <T> ServiceReference<T> findService( Class<T> serviceType )
-        throws NoSuchServiceException;
+        throws NoSuchServiceTypeException;
 
     /**
      * Find a ServiceReference that implements the given type.
@@ -63,10 +63,10 @@ public interface ServiceFinder
      *
      * @return a ServiceReference if one is found
      *
-     * @throws NoSuchServiceException if no service of serviceType is found
+     * @throws NoSuchServiceTypeException if no service of serviceType is found
      */
     <T> ServiceReference<T> findService( Type serviceType )
-        throws NoSuchServiceException;
+        throws NoSuchServiceTypeException;
 
     /**
      * Find ServiceReferences that implements the given type.

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/api/src/main/java/org/apache/polygene/api/unitofwork/NoSuchEntityTypeException.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/unitofwork/NoSuchEntityTypeException.java b/core/api/src/main/java/org/apache/polygene/api/unitofwork/NoSuchEntityTypeException.java
index d6dbe8d..a020c6e 100644
--- a/core/api/src/main/java/org/apache/polygene/api/unitofwork/NoSuchEntityTypeException.java
+++ b/core/api/src/main/java/org/apache/polygene/api/unitofwork/NoSuchEntityTypeException.java
@@ -19,7 +19,9 @@
  */
 package org.apache.polygene.api.unitofwork;
 
-import org.apache.polygene.api.composite.NoSuchCompositeException;
+import java.util.stream.Stream;
+import org.apache.polygene.api.composite.CompositeDescriptor;
+import org.apache.polygene.api.composite.NoSuchCompositeTypeException;
 import org.apache.polygene.api.structure.TypeLookup;
 
 import static java.util.stream.Collectors.joining;
@@ -29,23 +31,16 @@ import static java.util.stream.Collectors.joining;
  * was not found during a lookup call.
  */
 public class NoSuchEntityTypeException
-    extends NoSuchCompositeException
+    extends NoSuchCompositeTypeException
 {
     public NoSuchEntityTypeException( String typeName, String moduleName, TypeLookup typeLookup )
     {
-        super( "EntityComposite", typeName, moduleName, formatVisibleTypes( typeLookup ) );
+        super( "EntityComposite", typeName, moduleName, typeLookup  );
     }
 
-    private static String formatVisibleTypes( TypeLookup typeLookup )
+    @Override
+    protected Stream<? extends CompositeDescriptor> descriptors( TypeLookup typeLookup )
     {
-        return typeLookup.allEntities()
-                         .map( descriptor -> {
-                             String moduleName = descriptor.module().name();
-                             String entityClassName = descriptor.primaryType().getName();
-                             return entityClassName + " in " + moduleName;
-                         } )
-                         .sorted()
-                         .distinct()
-                         .collect( joining( "\n", "Visible entity types are:\n", "" ) );
+        return typeLookup.allEntities();
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/api/src/main/java/org/apache/polygene/api/unitofwork/UnitOfWork.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/unitofwork/UnitOfWork.java b/core/api/src/main/java/org/apache/polygene/api/unitofwork/UnitOfWork.java
index badbe4c..168a55c 100644
--- a/core/api/src/main/java/org/apache/polygene/api/unitofwork/UnitOfWork.java
+++ b/core/api/src/main/java/org/apache/polygene/api/unitofwork/UnitOfWork.java
@@ -23,7 +23,6 @@ import java.time.Instant;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.function.BiFunction;
 import java.util.function.Function;
 import java.util.stream.Stream;
 import org.apache.polygene.api.association.AssociationDescriptor;
@@ -42,7 +41,6 @@ import org.apache.polygene.api.query.QueryBuilder;
 import org.apache.polygene.api.structure.MetaInfoHolder;
 import org.apache.polygene.api.structure.ModuleDescriptor;
 import org.apache.polygene.api.usecase.Usecase;
-import org.apache.polygene.api.value.ValueBuilder;
 
 /**
  * All operations on entities goes through an UnitOfWork.

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/api/src/main/java/org/apache/polygene/api/value/NoSuchValueException.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/value/NoSuchValueException.java b/core/api/src/main/java/org/apache/polygene/api/value/NoSuchValueException.java
deleted file mode 100644
index b62b8e1..0000000
--- a/core/api/src/main/java/org/apache/polygene/api/value/NoSuchValueException.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.api.value;
-
-import org.apache.polygene.api.composite.NoSuchCompositeException;
-import org.apache.polygene.api.structure.TypeLookup;
-
-import static java.util.stream.Collectors.joining;
-
-/**
- * Thrown when no visible value of the requested type is found.
- */
-public class NoSuchValueException
-    extends NoSuchCompositeException
-{
-    public NoSuchValueException( String valueType, String moduleName, TypeLookup typeLookup )
-    {
-        super( "ValueComposite", valueType, moduleName, formatVisibleTypes( typeLookup ) );
-    }
-
-    private static String formatVisibleTypes( TypeLookup typeLookup )
-    {
-        return typeLookup.allValues()
-                         .map( descriptor -> descriptor.primaryType().getName() )
-                         .sorted()
-                         .distinct()
-                         .collect( joining( "\n", "Visible value types are:\n", "" ) );
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/api/src/main/java/org/apache/polygene/api/value/NoSuchValueTypeException.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/value/NoSuchValueTypeException.java b/core/api/src/main/java/org/apache/polygene/api/value/NoSuchValueTypeException.java
new file mode 100644
index 0000000..77d2dc5
--- /dev/null
+++ b/core/api/src/main/java/org/apache/polygene/api/value/NoSuchValueTypeException.java
@@ -0,0 +1,45 @@
+/*
+ *  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.api.value;
+
+import java.util.stream.Stream;
+import org.apache.polygene.api.composite.CompositeDescriptor;
+import org.apache.polygene.api.composite.NoSuchCompositeTypeException;
+import org.apache.polygene.api.structure.TypeLookup;
+
+import static java.util.stream.Collectors.joining;
+
+/**
+ * Thrown when no visible value of the requested type is found.
+ */
+public class NoSuchValueTypeException
+    extends NoSuchCompositeTypeException
+{
+    public NoSuchValueTypeException( String valueType, String moduleName, TypeLookup typeLookup )
+    {
+        super( "ValueComposite", valueType, moduleName, typeLookup );
+    }
+
+    @Override
+    protected Stream<? extends CompositeDescriptor> descriptors( TypeLookup typeLookup )
+    {
+        return typeLookup.allValues();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/api/src/main/java/org/apache/polygene/api/value/ValueBuilderFactory.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/value/ValueBuilderFactory.java b/core/api/src/main/java/org/apache/polygene/api/value/ValueBuilderFactory.java
index 510c373..65cce37 100644
--- a/core/api/src/main/java/org/apache/polygene/api/value/ValueBuilderFactory.java
+++ b/core/api/src/main/java/org/apache/polygene/api/value/ValueBuilderFactory.java
@@ -41,11 +41,11 @@ public interface ValueBuilderFactory
      *
      * @return a new Value instance
      *
-     * @throws NoSuchValueException if no value extending the mixinType has been registered
+     * @throws NoSuchValueTypeException if no value extending the mixinType has been registered
      * @throws ConstructionException if the value could not be instantiated
      */
     <T> T newValue( Class<T> valueType )
-        throws NoSuchValueException, ConstructionException;
+        throws NoSuchValueTypeException, ConstructionException;
 
     /**
      * Create a builder for creating new Values that implements the given Value type.
@@ -56,10 +56,10 @@ public interface ValueBuilderFactory
      *
      * @return a ValueBuilder for creation of ValueComposites implementing the interface
      *
-     * @throws NoSuchValueException if no value extending the mixinType has been registered
+     * @throws NoSuchValueTypeException if no value extending the mixinType has been registered
      */
     <T> ValueBuilder<T> newValueBuilder( Class<T> valueType )
-        throws NoSuchValueException;
+        throws NoSuchValueTypeException;
 
     /**
      * Create a builder for creating a new Value starting with the given prototype.
@@ -70,7 +70,7 @@ public interface ValueBuilderFactory
      *
      * @return a ValueBuilder for creation of ValueComposites implementing the interface of the prototype
      *
-     * @throws NoSuchValueException if no value extending the mixinType has been registered
+     * @throws NoSuchValueTypeException if no value extending the mixinType has been registered
      */
     <T> ValueBuilder<T> newValueBuilderWithPrototype( T prototype );
 
@@ -87,7 +87,7 @@ public interface ValueBuilderFactory
      *
      * @return a ValueBuilder for creation of ValueComposites implementing the interface
      *
-     * @throws NoSuchValueException if no value extending the mixinType has been registered
+     * @throws NoSuchValueTypeException if no value extending the mixinType has been registered
      */
     <T> ValueBuilder<T> newValueBuilderWithState( Class<T> mixinType,
                                                   Function<PropertyDescriptor, Object> propertyFunction,
@@ -104,7 +104,7 @@ public interface ValueBuilderFactory
      *
      * @return a new Value instance
      *
-     * @throws NoSuchValueException if no value extending the mixinType has been registered
+     * @throws NoSuchValueTypeException if no value extending the mixinType has been registered
      * @throws ConstructionException if the value could not be instantiated
      */
     <T> T newValueFromSerializedState( Class<T> valueType, String serializedState );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/bootstrap/src/main/java/org/apache/polygene/bootstrap/AssemblyReportException.java
----------------------------------------------------------------------
diff --git a/core/bootstrap/src/main/java/org/apache/polygene/bootstrap/AssemblyReportException.java b/core/bootstrap/src/main/java/org/apache/polygene/bootstrap/AssemblyReportException.java
index f3c933c..4a2211e 100644
--- a/core/bootstrap/src/main/java/org/apache/polygene/bootstrap/AssemblyReportException.java
+++ b/core/bootstrap/src/main/java/org/apache/polygene/bootstrap/AssemblyReportException.java
@@ -22,6 +22,7 @@ package org.apache.polygene.bootstrap;
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
 import java.util.List;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -29,10 +30,10 @@ import java.util.stream.Collectors;
  */
 public class AssemblyReportException extends AssemblyException
 {
-    private List<Throwable> problems;
+    private Set<Throwable> problems;
     private String modelReport;
 
-    public AssemblyReportException( List<Throwable> problems )
+    public AssemblyReportException( Set<Throwable> problems )
     {
         this.problems = problems;
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/main/java/org/apache/polygene/runtime/association/AbstractAssociationModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/association/AbstractAssociationModel.java b/core/runtime/src/main/java/org/apache/polygene/runtime/association/AbstractAssociationModel.java
index 052ba02..166c601 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/association/AbstractAssociationModel.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/association/AbstractAssociationModel.java
@@ -123,19 +123,13 @@ public class AbstractAssociationModel<AT>
     public void checkConstraints( Object value )
         throws ConstraintViolationException
     {
-        if( constraints != null )
-        {
-            constraints.checkConstraints( value, accessor );
-        }
+        constraints.checkConstraints( value, accessor );
     }
 
     public void checkAssociationConstraints( AbstractAssociation association )
         throws ConstraintViolationException
     {
-        if( associationConstraints != null )
-        {
-            associationConstraints.checkConstraints( association, accessor );
-        }
+        associationConstraints.checkConstraints( association, accessor );
     }
 
     public AssociationInfo builderInfo()

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/CompositeAssemblyImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/CompositeAssemblyImpl.java b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/CompositeAssemblyImpl.java
index bc3993b..cb1c751 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/CompositeAssemblyImpl.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/CompositeAssemblyImpl.java
@@ -26,6 +26,7 @@ import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Member;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
+import java.lang.reflect.Parameter;
 import java.lang.reflect.Proxy;
 import java.lang.reflect.Type;
 import java.util.ArrayList;
@@ -210,7 +211,7 @@ public abstract class CompositeAssemblyImpl
                                      List<Class<?>> mixinClasses
                                    )
     {
-        List<Throwable> exceptions = new ArrayList<>();
+        Set<Throwable> exceptions = new HashSet<>();
         Set<Class<?>> thisDependencies = new HashSet<>();
         types.stream()
              .peek( mixinType -> mixinsModel.addMixinType( mixinType ) )
@@ -259,7 +260,7 @@ public abstract class CompositeAssemblyImpl
                                        List<Class<?>> constraintClasses,
                                        List<Class<?>> concernClasses,
                                        List<Class<?>> sideEffectClasses,
-                                       List<Throwable> exceptions,
+                                       Set<Throwable> exceptions,
                                        Set<Class<?>> thisDependencies )
     {
         try
@@ -476,11 +477,7 @@ public abstract class CompositeAssemblyImpl
             optional,
             constraintClasses,
             accessor );
-        ValueConstraintsInstance valueConstraintsInstance = null;
-        if( valueConstraintsModel.isConstrained() )
-        {
-            valueConstraintsInstance = valueConstraintsModel.newInstance();
-        }
+        ValueConstraintsInstance valueConstraintsInstance = valueConstraintsModel.newInstance();
         MetaInfo metaInfo = stateDeclarations.metaInfoFor( accessor );
         UseDefaults useDefaultsDeclaration = metaInfo.get( UseDefaults.class );
         Object initialValue = stateDeclarations.initialValueOf( accessor );
@@ -506,17 +503,19 @@ public abstract class CompositeAssemblyImpl
                                            )
     {
         List<ValueConstraintsModel> parameterConstraintModels = Collections.emptyList();
-        Annotation[][] parameterAnnotations = method.getParameterAnnotations();
+
+        Parameter[] parameters = method.getParameters();
         Type[] parameterTypes = method.getGenericParameterTypes();
         boolean constrained = false;
-        for( int i = 0; i < parameterAnnotations.length; i++ )
+        for( int i = 0; i < parameters.length; i++ )
         {
-            Annotation[] parameterAnnotation = parameterAnnotations[ i ];
+            Parameter param = parameters[i];
+
+            Annotation[] parameterAnnotation = param.getAnnotations();
 
             Name nameAnnotation = (Name) of( parameterAnnotation ).filter( isType( Name.class ) )
                                                                   .findFirst().orElse( null );
-            String name = nameAnnotation == null ? "param" + ( i + 1 ) : nameAnnotation.value();
-
+            String name = nameAnnotation == null ? param.getName() : nameAnnotation.value();
             boolean optional = of( parameterAnnotation )
                 .anyMatch( isType( Optional.class ) );
             ValueConstraintsModel parameterConstraintsModel = constraintsFor(
@@ -865,29 +864,23 @@ public abstract class CompositeAssemblyImpl
         boolean optional = annotations.stream().anyMatch( isType( Optional.class ) );
 
         // Constraints for Association references
-        ValueConstraintsModel constraintsModel = constraintsFor( annotations.stream(), GenericAssociationInfo
-            .associationTypeOf( accessor ), ( (Member) accessor ).getName(), optional, constraintClasses, accessor );
-        ValueConstraintsInstance valueConstraintsInstance;
-        if( constraintsModel.isConstrained() )
-        {
-            valueConstraintsInstance = constraintsModel.newInstance();
-        }
-        else
-        {
-            valueConstraintsInstance = new ValueConstraintsInstance( Collections.emptyList(), ( (Member) accessor ).getName(), true );
-        }
+        ValueConstraintsModel constraintsModel =
+            constraintsFor( annotations.stream(),
+                            GenericAssociationInfo.associationTypeOf( accessor ),
+                            ( (Member) accessor ).getName(),
+                            optional,
+                            constraintClasses,
+                            accessor );
+        ValueConstraintsInstance valueConstraintsInstance = constraintsModel.newInstance();
 
         // Constraints for the Association itself
-        constraintsModel = constraintsFor( annotations.stream(), Association.class, ( (Member) accessor ).getName(), optional, constraintClasses, accessor );
-        ValueConstraintsInstance associationValueConstraintsInstance;
-        if( constraintsModel.isConstrained() )
-        {
-            associationValueConstraintsInstance = constraintsModel.newInstance();
-        }
-        else
-        {
-            associationValueConstraintsInstance = new ValueConstraintsInstance( Collections.emptyList(), ( (Member) accessor ).getName(), true );
-        }
+        constraintsModel = constraintsFor( annotations.stream(),
+                                           Association.class,
+                                           ( (Member) accessor ).getName(),
+                                           optional,
+                                           constraintClasses,
+                                           accessor );
+        ValueConstraintsInstance associationValueConstraintsInstance = constraintsModel.newInstance();
 
         MetaInfo metaInfo = stateDeclarations.metaInfoFor( accessor );
         return new AssociationModel( accessor, valueConstraintsInstance, associationValueConstraintsInstance, metaInfo );
@@ -901,21 +894,24 @@ public abstract class CompositeAssemblyImpl
         boolean optional = annotations.stream().anyMatch( isType( Optional.class ) );
 
         // Constraints for entities in ManyAssociation
-        ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations.stream(), GenericAssociationInfo
-            .associationTypeOf( accessor ), ( (Member) accessor ).getName(), optional, constraintClasses, accessor );
-        ValueConstraintsInstance valueConstraintsInstance = null;
-        if( valueConstraintsModel.isConstrained() )
-        {
-            valueConstraintsInstance = valueConstraintsModel.newInstance();
-        }
+        ValueConstraintsModel valueConstraintsModel =
+            constraintsFor( annotations.stream(),
+                            GenericAssociationInfo.associationTypeOf( accessor ),
+                            ( (Member) accessor ).getName(),
+                            optional,
+                            constraintClasses,
+                            accessor );
+        ValueConstraintsInstance valueConstraintsInstance = valueConstraintsModel.newInstance();
 
         // Constraints for the ManyAssociation itself
-        valueConstraintsModel = constraintsFor( annotations.stream(), ManyAssociation.class, ( (Member) accessor ).getName(), optional, constraintClasses, accessor );
-        ValueConstraintsInstance manyValueConstraintsInstance = null;
-        if( valueConstraintsModel.isConstrained() )
-        {
-            manyValueConstraintsInstance = valueConstraintsModel.newInstance();
-        }
+        valueConstraintsModel = constraintsFor( annotations.stream(),
+                                                ManyAssociation.class,
+                                                ( (Member) accessor ).getName(),
+                                                optional,
+                                                constraintClasses,
+                                                accessor );
+        ValueConstraintsInstance manyValueConstraintsInstance = valueConstraintsModel.newInstance();
+
         MetaInfo metaInfo = stateDeclarations.metaInfoFor( accessor );
         return new ManyAssociationModel( accessor, valueConstraintsInstance, manyValueConstraintsInstance, metaInfo );
     }
@@ -928,21 +924,24 @@ public abstract class CompositeAssemblyImpl
         boolean optional = annotations.stream().anyMatch( isType( Optional.class ) );
 
         // Constraints for entities in NamedAssociation
-        ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations.stream(), GenericAssociationInfo
-            .associationTypeOf( accessor ), ( (Member) accessor ).getName(), optional, constraintClasses, accessor );
-        ValueConstraintsInstance valueConstraintsInstance = null;
-        if( valueConstraintsModel.isConstrained() )
-        {
-            valueConstraintsInstance = valueConstraintsModel.newInstance();
-        }
+        ValueConstraintsModel valueConstraintsModel =
+            constraintsFor( annotations.stream(),
+                            GenericAssociationInfo.associationTypeOf( accessor ),
+                            ( (Member) accessor ).getName(),
+                            optional,
+                            constraintClasses,
+                            accessor );
+        ValueConstraintsInstance valueConstraintsInstance = valueConstraintsModel.newInstance();
 
         // Constraints for the NamedAssociation itself
-        valueConstraintsModel = constraintsFor( annotations.stream(), NamedAssociation.class, ( (Member) accessor ).getName(), optional, constraintClasses, accessor );
-        ValueConstraintsInstance namedValueConstraintsInstance = null;
-        if( valueConstraintsModel.isConstrained() )
-        {
-            namedValueConstraintsInstance = valueConstraintsModel.newInstance();
-        }
+        valueConstraintsModel = constraintsFor( annotations.stream(),
+                                                NamedAssociation.class,
+                                                ( (Member) accessor ).getName(),
+                                                optional,
+                                                constraintClasses,
+                                                accessor );
+        ValueConstraintsInstance namedValueConstraintsInstance = valueConstraintsModel.newInstance();
+
         MetaInfo metaInfo = stateDeclarations.metaInfoFor( accessor );
         return new NamedAssociationModel( accessor, valueConstraintsInstance, namedValueConstraintsInstance, metaInfo );
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ModuleAssemblyImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ModuleAssemblyImpl.java b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ModuleAssemblyImpl.java
index 5c30117..d4cfa29 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ModuleAssemblyImpl.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ModuleAssemblyImpl.java
@@ -525,7 +525,7 @@ final class ModuleAssemblyImpl
             throws AssemblyException
     {
         addRequiredAssemblers();
-        List<Throwable> exceptions = new ArrayList<>();
+        Set<Throwable> exceptions = new HashSet<>();
         List<TransientModel> transientModels = new ArrayList<>();
         List<ObjectModel> objectModels = new ArrayList<>();
         List<ValueModel> valueModels = new ArrayList<>();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/main/java/org/apache/polygene/runtime/composite/CompositeModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/CompositeModel.java b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/CompositeModel.java
index 59ad428..72ab757 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/CompositeModel.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/CompositeModel.java
@@ -32,6 +32,7 @@ import org.apache.polygene.api.common.MetaInfo;
 import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.api.composite.Composite;
 import org.apache.polygene.api.composite.CompositeDescriptor;
+import org.apache.polygene.api.constraint.ConstraintViolationException;
 import org.apache.polygene.api.structure.ModuleDescriptor;
 import org.apache.polygene.api.util.AccessibleObjects;
 import org.apache.polygene.api.util.HierarchicalVisitor;
@@ -228,7 +229,15 @@ public abstract class CompositeModel
     {
         try
         {
-            return compositeMethodsModel.invoke( mixins, proxy, method, args, module );
+            try
+            {
+                return compositeMethodsModel.invoke( mixins, proxy, method, args, module );
+            }
+            catch( ConstraintViolationException e )
+            {
+                e.setCompositeDescriptor(this);
+                throw e;
+            }
         }
         catch( Throwable throwable )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/main/java/org/apache/polygene/runtime/composite/ConstraintsInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/ConstraintsInstance.java b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/ConstraintsInstance.java
index 23e8f98..efa9521 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/ConstraintsInstance.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/ConstraintsInstance.java
@@ -23,11 +23,11 @@ package org.apache.polygene.runtime.composite;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.stream.Stream;
-import org.apache.polygene.api.composite.Composite;
 import org.apache.polygene.api.composite.CompositeInstance;
-import org.apache.polygene.api.constraint.ConstraintViolation;
+import org.apache.polygene.api.constraint.ValueConstraintViolation;
 import org.apache.polygene.api.constraint.ConstraintViolationException;
+import org.apache.polygene.api.identity.HasIdentity;
+import org.apache.polygene.api.identity.Identity;
 
 /**
  * JAVADOC
@@ -51,11 +51,11 @@ public final class ConstraintsInstance
         }
 
         // Check constraints
-        List<ConstraintViolation> violations = null;
+        List<ValueConstraintViolation> violations = null;
         for( int i = 0; i < params.length; i++ )
         {
             Object param = params[ i ];
-            List<ConstraintViolation> paramViolations = valueConstraintsInstances.get( i ).checkConstraints( param );
+            List<ValueConstraintViolation> paramViolations = valueConstraintsInstances.get( i ).checkConstraints( param );
             if( !paramViolations.isEmpty() )
             {
                 if( violations == null )
@@ -69,16 +69,20 @@ public final class ConstraintsInstance
         // Check if any constraint failed
         if( violations != null )
         {
-            if( instance instanceof Composite )
+            for( ValueConstraintViolation violation : violations )
             {
-                throw new ConstraintViolationException( (Composite) instance, method, violations );
+                violation.setMixinType( method.getDeclaringClass() );
+                violation.setMethodName( method.getName() );
             }
+            ConstraintViolationException exception = new ConstraintViolationException( violations );
+            Identity identity = instance instanceof HasIdentity ? ( (HasIdentity) instance ).identity().get() : null;
+            exception.setIdentity( identity );
             if( instance instanceof CompositeInstance )
             {
-                throw new ConstraintViolationException( ( (CompositeInstance) instance ).proxy(), method, violations );
+                instance = ( (CompositeInstance) instance ).proxy();
             }
-            Stream<Class<?>> types = Stream.of( instance.getClass() );
-            throw new ConstraintViolationException( instance.toString(), types, method, violations );
+            exception.setInstanceString( instance.toString() );
+            throw exception;
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/main/java/org/apache/polygene/runtime/composite/FragmentInvocationHandler.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/FragmentInvocationHandler.java b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/FragmentInvocationHandler.java
index f0dfca6..936db3c 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/FragmentInvocationHandler.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/FragmentInvocationHandler.java
@@ -84,7 +84,7 @@ abstract class FragmentInvocationHandler
                     // Stop removing if the originating method call has been located in the stack.
                     // For 'semi' and 'extensive' compaction, we don't and do the entire stack instead.
                     trace[ i ] = new StackTraceElement( proxy.getClass()
-                                                            .getInterfaces()[ 0 ].getName(), method.getName(), null, -1 );
+                                                             .getInterfaces()[ 0 ].getName(), method.getName(), null, -1 );
                     break; // Stop compacting this trace
                 }
             }
@@ -118,19 +118,22 @@ abstract class FragmentInvocationHandler
 
     private boolean isApplicationClass( String className )
     {
+        boolean jdkInternals = isJdkInternals( className );
         if( compactLevel == CompactLevel.semi )
         {
-            return !isJdkInternals( className );
+            return !jdkInternals;
         }
-        return !( className.endsWith( FragmentClassLoader.GENERATED_POSTFIX ) ||
-                  className.startsWith( "org.apache.polygene.runtime" ) ||
-                  isJdkInternals( className ) );
+        boolean polygeneRuntime = className.startsWith( "org.apache.polygene.runtime" );
+        boolean stubClass = className.endsWith( FragmentClassLoader.GENERATED_POSTFIX );
+        return !( stubClass ||
+                  polygeneRuntime ||
+                  jdkInternals );
     }
 
     private boolean isJdkInternals( String className )
     {
         return className.startsWith( "java.lang.reflect" )
-               || className.startsWith( "jdk.internal.reflect" )
+               || className.startsWith( "reflect" )
                || className.startsWith( "com.sun.proxy" )
                || className.startsWith( "sun.reflect" );
     }


[06/50] polygene-java git commit: POLYGENE-261 - Fixed the "duplicate should be allowed" for ManyAssociations.

Posted by ni...@apache.org.
POLYGENE-261 - Fixed the "duplicate should be allowed" for ManyAssociations.

Signed-off-by: niclas <ni...@hedhman.org>


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

Branch: refs/heads/es-jooq
Commit: f5cb14aa9aa48786354e28111f2eb327c297640d
Parents: df5fd8a
Author: niclas <ni...@hedhman.org>
Authored: Thu Jun 15 16:30:43 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Thu Jun 15 16:30:43 2017 +0800

----------------------------------------------------------------------
 .../api/association/ManyAssociation.java        | 36 +++++++++++++-------
 .../helpers/DefaultManyAssociationState.java    |  5 ---
 2 files changed, 24 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f5cb14aa/core/api/src/main/java/org/apache/polygene/api/association/ManyAssociation.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/association/ManyAssociation.java b/core/api/src/main/java/org/apache/polygene/api/association/ManyAssociation.java
index b7b7f7f..2471b94 100644
--- a/core/api/src/main/java/org/apache/polygene/api/association/ManyAssociation.java
+++ b/core/api/src/main/java/org/apache/polygene/api/association/ManyAssociation.java
@@ -40,18 +40,23 @@ public interface ManyAssociation<T> extends Iterable<T>, AbstractAssociation
      */
     boolean contains( T entity );
 
-    /** Adds an entity reference representing the given entity to the {@code index} slot of this collection.
+    /**
+     * Adds an entity reference representing the given entity to the {@code index} slot of this collection.
      * <p>
-     *     {@code index=0} represents the beginning of the collection and if the {@code index} is equal or larger
-     *     than the length of the collection, the entity reference will be added to the end.
+     * {@code index=0} represents the beginning of the collection and if the {@code index} is equal or larger
+     * than the length of the collection, the entity reference will be added to the end.
      * </p>
+     *
      * @param entity The entity whose entity reference is to be added to this collection.
-     * @param index the position for the entity to be inserted at.
+     * @param index  the position for the entity to be inserted at, starting at 0. If index is larger than number
+     *               of references present, then it will be added to the end. If index is smaller than 0, then it
+     *               will be added at the beginning, position 0.
      * @return true if the entity reference has been added, false otherwise.
      */
     boolean add( int index, T entity );
 
-    /** Adds an entity reference representing the given entity to the end of this collection.
+    /**
+     * Adds an entity reference representing the given entity to the end of this collection.
      *
      * @param entity The entity whose entity reference is to be added to this collection.
      * @return true if the entity reference has been added, false otherwise.
@@ -61,8 +66,9 @@ public interface ManyAssociation<T> extends Iterable<T>, AbstractAssociation
     /**
      * Removes the given entity from this {@code ManyAssociation}.
      * <p>
-     *     The entity reference representing the given entity is removed from this collection.
+     * The entity reference representing the given entity is removed from this collection.
      * </p>
+     *
      * @param entity The entity reference to be removed.
      * @return true if an entity reference was removed, otherwise false
      */
@@ -71,13 +77,15 @@ public interface ManyAssociation<T> extends Iterable<T>, AbstractAssociation
     /**
      * Clear all entities from this {@code ManyAssociation}.
      * <p>
-     *     All entity references present is removed from this collection.
+     * All entity references present is removed from this collection.
      * </p>
+     *
      * @return true if any entity reference was removed, otherwise false
      */
     boolean clear();
 
-    /** Fetch the entity refrence at the given index and fetch the entity from the entity store.
+    /**
+     * Fetch the entity refrence at the given index and fetch the entity from the entity store.
      *
      * @param index The index location in the collection of the entity reference to be fetched.
      * @return The retrieved entity that the entity reference of this collection represents.
@@ -86,6 +94,7 @@ public interface ManyAssociation<T> extends Iterable<T>, AbstractAssociation
 
     /**
      * Returns the number of references in this association.
+     *
      * @return the number of references in this association.
      */
     int count();
@@ -94,9 +103,10 @@ public interface ManyAssociation<T> extends Iterable<T>, AbstractAssociation
      * Fetches all entities represented by entity references in this collection and returns a List of such
      * entities.
      * <p>
-     *     Multiple references to the same entity will be present multiple times in the List, unlike {@link #toSet()}.
-     *     The order in which the entities were added to this collection is preserved.
+     * Multiple references to the same entity will be present multiple times in the List, unlike {@link #toSet()}.
+     * The order in which the entities were added to this collection is preserved.
      * </p>
+     *
      * @return a List of entities represented by the entity references in this collection.
      */
     List<T> toList();
@@ -105,15 +115,17 @@ public interface ManyAssociation<T> extends Iterable<T>, AbstractAssociation
      * Fetches all entities represented by entity references in this collection and returns a Set of such
      * entities.
      * <p>
-     *     Multiple references to the same entity will NOT be present, unlike {@link #toList()}. Sets are defined
-     *     to only contain any particular object once. Order is not preserved.
+     * Multiple references to the same entity will NOT be present, unlike {@link #toList()}. Sets are defined
+     * to only contain any particular object once. Order is not preserved.
      * </p>
+     *
      * @return a Set of entities represented by the entity references in this collection.
      */
     Set<T> toSet();
 
     /**
      * Returns a stream of the references to the associated entities.
+     *
      * @return the references to the associated entities.
      */
     Stream<EntityReference> references();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f5cb14aa/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/DefaultManyAssociationState.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/DefaultManyAssociationState.java b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/DefaultManyAssociationState.java
index 9e95188..83b883e 100644
--- a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/DefaultManyAssociationState.java
+++ b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/DefaultManyAssociationState.java
@@ -55,11 +55,6 @@ public final class DefaultManyAssociationState
     @Override
     public boolean add( int i, EntityReference entityReference )
     {
-        if( references.contains( entityReference ) )
-        {
-            return false;
-        }
-
         references.add( i, entityReference );
         entityState.markUpdated();
         return true;


[47/50] polygene-java git commit: Fix Exceptions in RDF Indexing

Posted by ni...@apache.org.
Fix Exceptions in RDF Indexing


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/73fa7bd8
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/73fa7bd8
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/73fa7bd8

Branch: refs/heads/es-jooq
Commit: 73fa7bd89b3a8af275041524dfa762fee9554377
Parents: 007d812
Author: niclas <ni...@hedhman.org>
Authored: Sun Jul 9 12:48:45 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jul 9 12:48:45 2017 +0800

----------------------------------------------------------------------
 .../apache/polygene/index/rdf/UnsupportedLanguageException.java  | 4 ++--
 .../polygene/index/rdf/assembly/RdfMemoryStoreAssembler.java     | 1 +
 .../index/rdf/assembly/RdfNativeSesameStoreAssembler.java        | 1 +
 .../index/rdf/assembly/RdfRdbmsSesameStoreAssembler.java         | 1 +
 .../org/apache/polygene/index/rdf/indexing/RdfIndexExporter.java | 1 +
 .../apache/polygene/index/rdf/indexing/RdfIndexerService.java    | 2 +-
 6 files changed, 7 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/73fa7bd8/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/UnsupportedLanguageException.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/UnsupportedLanguageException.java b/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/UnsupportedLanguageException.java
index 3e02eb9..08c0d00 100644
--- a/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/UnsupportedLanguageException.java
+++ b/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/UnsupportedLanguageException.java
@@ -19,10 +19,10 @@
  */
 package org.apache.polygene.index.rdf;
 
+import org.apache.polygene.api.indexing.IndexingException;
 import org.openrdf.query.QueryLanguage;
 
-public class UnsupportedLanguageException
-    extends RuntimeException
+public class UnsupportedLanguageException extends IndexingException
 {
     private QueryLanguage language;
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/73fa7bd8/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/assembly/RdfMemoryStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/assembly/RdfMemoryStoreAssembler.java b/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/assembly/RdfMemoryStoreAssembler.java
index ef6f5bd..5299c48 100644
--- a/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/assembly/RdfMemoryStoreAssembler.java
+++ b/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/assembly/RdfMemoryStoreAssembler.java
@@ -46,6 +46,7 @@ public class RdfMemoryStoreAssembler extends AbstractRdfIndexingAssembler<RdfNat
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         module.services( MemoryRepositoryService.class )
               .visibleIn( repositoryVisibility )
               .instantiateOnStartup();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/73fa7bd8/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/assembly/RdfNativeSesameStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/assembly/RdfNativeSesameStoreAssembler.java b/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/assembly/RdfNativeSesameStoreAssembler.java
index 7fb19a9..5014acc 100644
--- a/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/assembly/RdfNativeSesameStoreAssembler.java
+++ b/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/assembly/RdfNativeSesameStoreAssembler.java
@@ -47,6 +47,7 @@ public class RdfNativeSesameStoreAssembler extends AbstractRdfIndexingAssembler<
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         module.services( NativeRepositoryService.class )
               .visibleIn( repositoryVisibility )
               .instantiateOnStartup();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/73fa7bd8/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/assembly/RdfRdbmsSesameStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/assembly/RdfRdbmsSesameStoreAssembler.java b/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/assembly/RdfRdbmsSesameStoreAssembler.java
index 1176e16..521476f 100644
--- a/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/assembly/RdfRdbmsSesameStoreAssembler.java
+++ b/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/assembly/RdfRdbmsSesameStoreAssembler.java
@@ -47,6 +47,7 @@ public class RdfRdbmsSesameStoreAssembler  extends AbstractRdfIndexingAssembler<
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         module.services( RdbmsRepositoryService.class )
               .visibleIn( repositoryVisibility )
               .instantiateOnStartup();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/73fa7bd8/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/indexing/RdfIndexExporter.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/indexing/RdfIndexExporter.java b/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/indexing/RdfIndexExporter.java
index ad0e599..b33eea9 100644
--- a/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/indexing/RdfIndexExporter.java
+++ b/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/indexing/RdfIndexExporter.java
@@ -77,6 +77,7 @@ public interface RdfIndexExporter extends IndexExporter
                 catch( Exception e )
                 {
                     e.printStackTrace();
+                    throw new IOException( "Problem writing to RdfWriter", e );
                 }
                 finally
                 {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/73fa7bd8/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/indexing/RdfIndexerService.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/indexing/RdfIndexerService.java b/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/indexing/RdfIndexerService.java
index d47a7f7..38f501a 100644
--- a/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/indexing/RdfIndexerService.java
+++ b/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/indexing/RdfIndexerService.java
@@ -125,7 +125,7 @@ public interface RdfIndexerService extends StateChangeListener
             catch( Throwable e )
             {
                 e.printStackTrace();
-                //TODO What shall we do with the exception?
+                //TODO What shall we do with the exception? Probably figure out if we can recover, and possibly queue the state changes and retry later.
             }
         }
 


[34/50] polygene-java git commit: Stanislav correctly identified a new regexp to be used.

Posted by ni...@apache.org.
Stanislav correctly identified a new regexp to be used.


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

Branch: refs/heads/es-jooq
Commit: c9d8c249642d6edb2ea29409a462a25ff0efc9cb
Parents: 8393d86
Author: niclas <ni...@hedhman.org>
Authored: Sun Jul 9 09:48:37 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jul 9 09:48:37 2017 +0800

----------------------------------------------------------------------
 .../index/sql/support/skeletons/AbstractSQLStartup.java     | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c9d8c249/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/AbstractSQLStartup.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/AbstractSQLStartup.java b/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/AbstractSQLStartup.java
index e2d2cc6..6a8aa12 100644
--- a/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/AbstractSQLStartup.java
+++ b/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/AbstractSQLStartup.java
@@ -1654,9 +1654,14 @@ public abstract class AbstractSQLStartup
         + Pattern.quote( DESCRIPTOR_COMPONENT_SEPARATOR_END )
         + Pattern.quote( DESCRIPTOR_COMPONENT_SEPARATOR_START ) + "(.*)"
         + Pattern.quote( DESCRIPTOR_COMPONENT_SEPARATOR_END )
-        + Pattern.quote( DESCRIPTOR_COMPONENT_SEPARATOR_START ) + "(" + "[^"
+        + Pattern.quote( DESCRIPTOR_COMPONENT_SEPARATOR_START )
+        + "([^"
         + Pattern.quote( DESCRIPTOR_COMPONENT_SEPARATOR_END + DESCRIPTOR_TYPE_SEPARATOR )
-        + "]+)" + Pattern.quote( DESCRIPTOR_COMPONENT_SEPARATOR_END ) + "$" );
+        + "]+)"
+        + "(,[^"
+        + Pattern.quote( DESCRIPTOR_COMPONENT_SEPARATOR_END + DESCRIPTOR_TYPE_SEPARATOR )
+        + "]+)*"
+        + Pattern.quote( DESCRIPTOR_COMPONENT_SEPARATOR_END ) + "$" );
 
     protected static String compositeDescriptorToString( LayerDescriptor layer,
                                                          ModuleDescriptor module, CompositeDescriptor descriptor )


[02/50] polygene-java git commit: Removed access to StringIdentity constructor.

Posted by ni...@apache.org.
Removed access to StringIdentity constructor.

Signed-off-by: niclas <ni...@hedhman.org>


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/24fe6039
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/24fe6039
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/24fe6039

Branch: refs/heads/es-jooq
Commit: 24fe60399f57690f1353c068d8f5ef21b72eae15
Parents: 0a0c6e4
Author: niclas <ni...@hedhman.org>
Authored: Mon Jun 12 09:29:32 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Mon Jun 12 09:29:32 2017 +0800

----------------------------------------------------------------------
 .../polygene/api/entity/EntityReference.java     |  2 +-
 .../polygene/api/identity/StringIdentity.java    |  2 +-
 .../org/apache/polygene/api/OperatorsTest.java   |  2 +-
 .../polygene/api/type/ValueTypeFactoryTest.java  |  2 +-
 .../polygene/api/unitofwork/RemovalTest.java     |  6 +++---
 .../api/unitofwork/ToEntityConversionTest.java   |  2 +-
 .../api/unitofwork/ToValueConversionTest.java    | 12 ++++++------
 .../bootstrap/ImportedServiceAssemblyImpl.java   |  6 +++---
 .../runtime/bootstrap/ModuleAssemblyImpl.java    |  4 ++--
 .../bootstrap/ServiceDeclarationImpl.java        |  2 +-
 .../runtime/unitofwork/ModuleUnitOfWork.java     |  2 +-
 .../apache/polygene/api/common/RemovalTest.java  |  6 +++---
 .../qi377/SetAssociationInSideEffectTest.java    |  8 ++++----
 ...ValueCollisionWithRelatedReturnTypesTest.java | 10 +++++-----
 .../polygene/regression/qi382/Qi382Test.java     |  4 ++--
 .../polygene/regression/qi383/Qi383Test.java     |  6 +++---
 .../ImportedServiceActivationTest.java           |  2 +-
 .../polygene/runtime/entity/EntityTypeTest.java  | 12 ++++++------
 .../runtime/entity/EntityVisibilityTest.java     |  2 +-
 .../runtime/injection/ServiceInjectionTest.java  |  2 +-
 .../injection/UnitOfWorkInjectionTest.java       |  6 +++---
 .../runtime/mixin/AssemblyMixinTest.java         | 10 +++++-----
 .../polygene/runtime/mixin/AssemblyRoleTest.java |  8 ++++----
 .../polygene/runtime/mixin/JDKMixinTest.java     |  4 ++--
 .../runtime/objects/ObjectVisibilityTest.java    |  2 +-
 .../runtime/query/IterableQuerySourceTest.java   |  2 +-
 .../apache/polygene/runtime/query/Network.java   |  4 ++--
 .../runtime/service/ServiceVisibilityTest.java   |  2 +-
 .../transients/TransientVisibilityTest.java      |  2 +-
 .../unitofwork/PrivateEntityUnitOfWorkTest.java  |  2 +-
 .../polygene/runtime/unitofwork/RemovalTest.java |  8 ++++----
 .../runtime/value/AssociationToValueTest.java    |  4 ++--
 .../value/ValueSerializationRegressionTest.java  |  2 +-
 .../runtime/value/ValueVisibilityTest.java       |  2 +-
 .../runtime/value/ValueWithAssociationTest.java  |  6 +++---
 .../visibility/VisibilityInUnitOfWorkTest.java   |  4 ++--
 .../importer/ServiceInstanceImporterTest.java    | 10 +++++-----
 .../helpers/JSONMapEntityStoreMixin.java         |  2 +-
 .../entitystore/helpers/MapEntityStoreMixin.java |  2 +-
 .../spi/entitystore/Polygene142Test.java         |  4 ++--
 .../test/entity/AbstractEntityStoreTest.java     |  1 -
 .../test/indexing/AbstractQueryTest.java         |  6 +++---
 .../apache/polygene/test/indexing/TestData.java  |  8 ++++----
 .../cassandra/CassandraEntityStoreMixin.java     |  2 +-
 .../AbstractSQLEntityStoreAssembler.java         |  2 +-
 .../polygene/index/rdf/RDFPerformanceTest.java   |  4 ++--
 .../assembly/AbstractSQLIndexQueryAssembler.java |  2 +-
 .../polygene/library/alarm/AlarmSystem.java      |  2 +-
 .../polygene/library/alarm/AlarmProxyTest.java   |  6 +++---
 .../library/jmx/ConfigurationManagerService.java |  2 +-
 .../library/rdf/entity/EntitySerializerTest.java |  4 ++--
 .../rdf/entity/EntityTypeSerializerTest.java     | 19 +++++++++----------
 .../server/restlet/RequestReaderDelegator.java   |  2 +-
 .../server/restlet/ResponseWriterDelegator.java  |  2 +-
 .../requestreader/DefaultRequestReader.java      |  4 ++--
 .../library/rest/admin/EntityResource.java       |  2 +-
 .../library/rest/admin/DummyDataService.java     |  8 ++++----
 .../polygene/library/rest/admin/RestTest.java    |  8 ++++----
 .../library/restlet/crud/EntityResource.java     |  4 ++--
 .../restlet/identity/IdentityManager.java        |  4 ++--
 .../restlet/resource/EntryPointResource.java     |  6 +++---
 .../restlet/resource/ResourceBuilder.java        |  2 +-
 .../sql/assembly/DataSourceAssembler.java        |  2 +-
 .../assembly/ExternalDataSourceAssembler.java    |  2 +-
 .../DataSourceConfigurationManagerService.java   |  2 +-
 .../moneytransfer/context/PayBillsContext.java   |  4 ++--
 .../moneytransfer/context/PayBillsContext2.java  |  4 ++--
 .../dci/moneytransfer/test/AccountIds.java       |  8 ++++----
 .../sample/forum/data/entity/Forums.java         |  4 ++--
 .../polygene/sample/forum/data/entity/Users.java |  2 +-
 .../forum/rest/resource/forum/BoardResource.java |  2 +-
 .../forum/rest/resource/forum/ForumResource.java |  2 +-
 .../rest/resource/forum/ForumsResource.java      |  2 +-
 .../sample/rental/domain/dev/InitialData.java    |  2 +-
 .../polygene/sample/rental/web/BookingPage.java  |  4 ++--
 .../polygene/sample/rental/web/MainPage.java     |  2 +-
 .../AbstractEntityStorePerformanceTest.java      |  4 ++--
 .../initialdata/SamplePersonInitialData.java     |  2 +-
 .../polygene/tutorials/hello/HelloTest4.java     |  2 +-
 79 files changed, 164 insertions(+), 166 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java b/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java
index 3bc557e..9952994 100644
--- a/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java
+++ b/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java
@@ -41,7 +41,7 @@ public final class EntityReference
     public static EntityReference parseEntityReference(String identityString)
     {
         Objects.requireNonNull( identityString, "identityString must not be null" );
-        return new EntityReference( new StringIdentity( identityString ) );
+        return new EntityReference( StringIdentity.fromString( identityString ) );
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/api/src/main/java/org/apache/polygene/api/identity/StringIdentity.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/identity/StringIdentity.java b/core/api/src/main/java/org/apache/polygene/api/identity/StringIdentity.java
index d5c43f9..7d85381 100644
--- a/core/api/src/main/java/org/apache/polygene/api/identity/StringIdentity.java
+++ b/core/api/src/main/java/org/apache/polygene/api/identity/StringIdentity.java
@@ -27,7 +27,7 @@ public class StringIdentity
 {
     private final String value;
 
-    public StringIdentity(String value)
+    private StringIdentity(String value)
     {
         Objects.requireNonNull( value, "Identity can not be null." );
         this.value = value;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/api/src/test/java/org/apache/polygene/api/OperatorsTest.java
----------------------------------------------------------------------
diff --git a/core/api/src/test/java/org/apache/polygene/api/OperatorsTest.java b/core/api/src/test/java/org/apache/polygene/api/OperatorsTest.java
index 025f987..72f8c7f 100644
--- a/core/api/src/test/java/org/apache/polygene/api/OperatorsTest.java
+++ b/core/api/src/test/java/org/apache/polygene/api/OperatorsTest.java
@@ -63,7 +63,7 @@ public class OperatorsTest
 
         try
         {
-            EntityBuilder<TestEntity> entityBuilder = uow.newEntityBuilder( TestEntity.class, new StringIdentity( "123" ) );
+            EntityBuilder<TestEntity> entityBuilder = uow.newEntityBuilder( TestEntity.class, StringIdentity.fromString( "123" ) );
             entityBuilder.instance().value().set( assembler.module().newValue( TestValue.class ) );
             TestEntity testEntity = entityBuilder.newInstance();
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/api/src/test/java/org/apache/polygene/api/type/ValueTypeFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/api/src/test/java/org/apache/polygene/api/type/ValueTypeFactoryTest.java b/core/api/src/test/java/org/apache/polygene/api/type/ValueTypeFactoryTest.java
index 7f093af..bd9ce3b 100644
--- a/core/api/src/test/java/org/apache/polygene/api/type/ValueTypeFactoryTest.java
+++ b/core/api/src/test/java/org/apache/polygene/api/type/ValueTypeFactoryTest.java
@@ -125,7 +125,7 @@ public class ValueTypeFactoryTest extends AbstractPolygeneTest
         try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork() )
         {
             assertThat(
-                valueTypeFactory.valueTypeOf( module, uow.newEntity( SomeState.class, new StringIdentity( "abc" ) ) ),
+                valueTypeFactory.valueTypeOf( module, uow.newEntity( SomeState.class, StringIdentity.fromString( "abc" ) ) ),
                 instanceOf( EntityCompositeType.class ) );
         }
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/api/src/test/java/org/apache/polygene/api/unitofwork/RemovalTest.java
----------------------------------------------------------------------
diff --git a/core/api/src/test/java/org/apache/polygene/api/unitofwork/RemovalTest.java b/core/api/src/test/java/org/apache/polygene/api/unitofwork/RemovalTest.java
index 87d609c..97b78db 100644
--- a/core/api/src/test/java/org/apache/polygene/api/unitofwork/RemovalTest.java
+++ b/core/api/src/test/java/org/apache/polygene/api/unitofwork/RemovalTest.java
@@ -20,16 +20,16 @@
 
 package org.apache.polygene.api.unitofwork;
 
-import org.apache.polygene.api.identity.StringIdentity;
-import org.junit.Test;
 import org.apache.polygene.api.common.Optional;
 import org.apache.polygene.api.entity.EntityBuilder;
 import org.apache.polygene.api.entity.EntityComposite;
+import org.apache.polygene.api.identity.StringIdentity;
 import org.apache.polygene.api.property.Property;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.test.AbstractPolygeneTest;
 import org.apache.polygene.test.EntityTestAssembler;
+import org.junit.Test;
 
 public class RemovalTest
     extends AbstractPolygeneTest
@@ -49,7 +49,7 @@ public class RemovalTest
         UnitOfWork uow = unitOfWorkFactory.newUnitOfWork();
         try
         {
-            EntityBuilder<TestEntity> builder = uow.newEntityBuilder( TestEntity.class, new StringIdentity( "123" ) );
+            EntityBuilder<TestEntity> builder = uow.newEntityBuilder( TestEntity.class, StringIdentity.fromString( "123" ) );
             builder.instance().test().set( "habba" );
             TestEntity test = builder.newInstance();
             uow.remove( test );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToEntityConversionTest.java
----------------------------------------------------------------------
diff --git a/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToEntityConversionTest.java b/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToEntityConversionTest.java
index 5f5a5b5..055a1db 100644
--- a/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToEntityConversionTest.java
+++ b/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToEntityConversionTest.java
@@ -65,7 +65,7 @@ public class ToEntityConversionTest
     public void testPropertyConversionToEntity()
         throws Exception
     {
-        Identity identity = new StringIdentity( "Niclas" );
+        Identity identity = StringIdentity.fromString( "Niclas" );
         ValueBuilder<SomeType> vb = valueBuilderFactory.newValueBuilder( SomeType.class );
         SomeType prototype = vb.prototype();
         prototype.identity().set( identity );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToValueConversionTest.java
----------------------------------------------------------------------
diff --git a/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToValueConversionTest.java b/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToValueConversionTest.java
index 08751d4..ae9c7c2 100644
--- a/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToValueConversionTest.java
+++ b/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToValueConversionTest.java
@@ -73,11 +73,11 @@ public class ToValueConversionTest
         SomeType value;
         try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork(usecase) )
         {
-            SomeType entity1 = createEntity( uow, new StringIdentity( "Niclas" ) );
-            SomeType entity2 = createEntity( uow, new StringIdentity( "Paul" ) );
-            SomeType entity3 = createEntity( uow, new StringIdentity( "Jiri" ) );
-            SomeType entity4 = createEntity( uow, new StringIdentity( "Kent" ) );
-            SomeType entity5 = createEntity( uow, new StringIdentity( "Stan" ) );
+            SomeType entity1 = createEntity( uow, StringIdentity.fromString( "Niclas" ) );
+            SomeType entity2 = createEntity( uow, StringIdentity.fromString( "Paul" ) );
+            SomeType entity3 = createEntity( uow, StringIdentity.fromString( "Jiri" ) );
+            SomeType entity4 = createEntity( uow, StringIdentity.fromString( "Kent" ) );
+            SomeType entity5 = createEntity( uow, StringIdentity.fromString( "Stan" ) );
             entity1.assoc().set( entity2 );
             entity1.many().add( entity3 );
             entity1.named().put( "kent", entity4 );
@@ -89,7 +89,7 @@ public class ToValueConversionTest
         }
         try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork(usecase) )
         {
-            assertThat( value.identity().get(), equalTo( new StringIdentity( "Niclas" ) ) );
+            assertThat( value.identity().get(), equalTo( StringIdentity.fromString( "Niclas" ) ) );
             assertThat( value.name().get(), equalTo( "[Niclas]" ) );
 
             assertThat( uow.toValue( SomeType.class, value.assoc().get()).name().get(), equalTo( "[Paul]" ));

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ImportedServiceAssemblyImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ImportedServiceAssemblyImpl.java b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ImportedServiceAssemblyImpl.java
index c455aed..2c7905b 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ImportedServiceAssemblyImpl.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ImportedServiceAssemblyImpl.java
@@ -78,7 +78,7 @@ public final class ImportedServiceAssemblyImpl
             }
             else
             {
-                id = new StringIdentity( identity );
+                id = StringIdentity.fromString( identity );
             }
 
             ImportedServiceModel serviceModel = new ImportedServiceModel( module,
@@ -103,7 +103,7 @@ public final class ImportedServiceAssemblyImpl
     {
         // Find reference that is not yet used
         int idx = 0;
-        Identity id = new StringIdentity( serviceType.getSimpleName() );
+        Identity id = StringIdentity.fromString( serviceType.getSimpleName() );
         boolean invalid;
         do
         {
@@ -113,7 +113,7 @@ public final class ImportedServiceAssemblyImpl
                 if( serviceModel.identity().equals( id ) )
                 {
                     idx++;
-                    id = new StringIdentity( serviceType.getSimpleName() + "_" + idx );
+                    id = StringIdentity.fromString( serviceType.getSimpleName() + "_" + idx );
                     invalid = true;
                     break;
                 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ModuleAssemblyImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ModuleAssemblyImpl.java b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ModuleAssemblyImpl.java
index 2c5b3bf..f69fe9f 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ModuleAssemblyImpl.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ModuleAssemblyImpl.java
@@ -708,7 +708,7 @@ final class ModuleAssemblyImpl
         Class<?> serviceType = serviceTypes.findFirst()
                 .orElse(null); // Use the first, which *SHOULD* be the main serviceType
         int idx = 0;
-        Identity id = new StringIdentity(serviceType.getSimpleName());
+        Identity id = StringIdentity.fromString(serviceType.getSimpleName());
         boolean invalid;
         do
         {
@@ -718,7 +718,7 @@ final class ModuleAssemblyImpl
                 if (serviceAssembly.identity() != null && serviceAssembly.identity().equals(id))
                 {
                     idx++;
-                    id = new StringIdentity(serviceType.getSimpleName() + "_" + idx);
+                    id = StringIdentity.fromString(serviceType.getSimpleName() + "_" + idx);
                     invalid = true;
                     break;
                 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ServiceDeclarationImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ServiceDeclarationImpl.java b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ServiceDeclarationImpl.java
index 7740d37..e5e17bb 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ServiceDeclarationImpl.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ServiceDeclarationImpl.java
@@ -59,7 +59,7 @@ public final class ServiceDeclarationImpl
         for( ServiceAssemblyImpl serviceAssembly : serviceAssemblies )
         {
             if( identity != null ) {
-                serviceAssembly.identity = new StringIdentity( identity );
+                serviceAssembly.identity = StringIdentity.fromString( identity );
             }
         }
         return this;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java b/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
index 4787aa5..b836f67 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
@@ -264,7 +264,7 @@ public class ModuleUnitOfWork
             }
             else
             {
-                identity = new StringIdentity( propertyState );
+                identity = StringIdentity.fromString( propertyState );
             }
         }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/api/common/RemovalTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/api/common/RemovalTest.java b/core/runtime/src/test/java/org/apache/polygene/api/common/RemovalTest.java
index a900a4f..0c67baa 100644
--- a/core/runtime/src/test/java/org/apache/polygene/api/common/RemovalTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/api/common/RemovalTest.java
@@ -20,10 +20,9 @@
 
 package org.apache.polygene.api.common;
 
-import org.apache.polygene.api.identity.StringIdentity;
-import org.junit.Test;
 import org.apache.polygene.api.entity.EntityBuilder;
 import org.apache.polygene.api.entity.EntityComposite;
+import org.apache.polygene.api.identity.StringIdentity;
 import org.apache.polygene.api.property.Property;
 import org.apache.polygene.api.unitofwork.UnitOfWork;
 import org.apache.polygene.api.unitofwork.UnitOfWorkCompletionException;
@@ -31,6 +30,7 @@ import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.test.AbstractPolygeneTest;
 import org.apache.polygene.test.EntityTestAssembler;
+import org.junit.Test;
 
 public class RemovalTest
     extends AbstractPolygeneTest
@@ -48,7 +48,7 @@ public class RemovalTest
         throws Exception
     {
         UnitOfWork uow = unitOfWorkFactory.newUnitOfWork();
-        EntityBuilder<TestEntity> builder = uow.newEntityBuilder( TestEntity.class, new StringIdentity( "123" ) );
+        EntityBuilder<TestEntity> builder = uow.newEntityBuilder( TestEntity.class, StringIdentity.fromString( "123" ) );
         builder.instance().test().set( "habba" );
         TestEntity test = builder.newInstance();
         uow.remove( test );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/regression/qi377/SetAssociationInSideEffectTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/regression/qi377/SetAssociationInSideEffectTest.java b/core/runtime/src/test/java/org/apache/polygene/regression/qi377/SetAssociationInSideEffectTest.java
index bcb7654..941099b 100644
--- a/core/runtime/src/test/java/org/apache/polygene/regression/qi377/SetAssociationInSideEffectTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/regression/qi377/SetAssociationInSideEffectTest.java
@@ -22,12 +22,11 @@ package org.apache.polygene.regression.qi377;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.reflect.Method;
-import org.apache.polygene.api.identity.StringIdentity;
-import org.junit.Test;
 import org.apache.polygene.api.association.Association;
 import org.apache.polygene.api.common.AppliesTo;
 import org.apache.polygene.api.common.Optional;
 import org.apache.polygene.api.entity.EntityComposite;
+import org.apache.polygene.api.identity.StringIdentity;
 import org.apache.polygene.api.injection.scope.This;
 import org.apache.polygene.api.mixin.Mixins;
 import org.apache.polygene.api.sideeffect.GenericSideEffect;
@@ -38,6 +37,7 @@ import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.test.AbstractPolygeneTest;
 import org.apache.polygene.test.EntityTestAssembler;
+import org.junit.Test;
 
 import static org.hamcrest.core.Is.is;
 import static org.hamcrest.core.IsNull.nullValue;
@@ -61,8 +61,8 @@ public class SetAssociationInSideEffectTest
     {
         try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Purchase Steinway" ) ) )
         {
-            Pianist chris = uow.newEntity( Pianist.class, new StringIdentity( "Chris" ) );
-            Steinway modelD = uow.newEntity( Steinway.class, new StringIdentity( "ModelD-274" ) );
+            Pianist chris = uow.newEntity( Pianist.class, StringIdentity.fromString( "Chris" ) );
+            Steinway modelD = uow.newEntity( Steinway.class, StringIdentity.fromString( "ModelD-274" ) );
 
             assertThat( modelD.owner().get(), is( nullValue() ) );
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/regression/qi377/ValueCollisionWithRelatedReturnTypesTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/regression/qi377/ValueCollisionWithRelatedReturnTypesTest.java b/core/runtime/src/test/java/org/apache/polygene/regression/qi377/ValueCollisionWithRelatedReturnTypesTest.java
index 1163024..5e49acf 100644
--- a/core/runtime/src/test/java/org/apache/polygene/regression/qi377/ValueCollisionWithRelatedReturnTypesTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/regression/qi377/ValueCollisionWithRelatedReturnTypesTest.java
@@ -19,24 +19,24 @@
  */
 package org.apache.polygene.regression.qi377;
 
-import org.apache.polygene.api.identity.HasIdentity;
-import org.apache.polygene.api.identity.Identity;
-import org.apache.polygene.api.identity.StringIdentity;
-import org.junit.Test;
 import org.apache.polygene.api.association.Association;
 import org.apache.polygene.api.association.ManyAssociation;
 import org.apache.polygene.api.common.Optional;
+import org.apache.polygene.api.identity.HasIdentity;
+import org.apache.polygene.api.identity.Identity;
+import org.apache.polygene.api.identity.StringIdentity;
 import org.apache.polygene.api.property.Property;
 import org.apache.polygene.api.value.ValueBuilder;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.test.AbstractPolygeneTest;
+import org.junit.Test;
 
 public class ValueCollisionWithRelatedReturnTypesTest
     extends AbstractPolygeneTest
 {
 
-    public static final Identity NICLAS = new StringIdentity( "niclas" );
+    public static final Identity NICLAS = StringIdentity.fromString( "niclas" );
 
     @Override
     public void assemble( ModuleAssembly module )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/regression/qi382/Qi382Test.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/regression/qi382/Qi382Test.java b/core/runtime/src/test/java/org/apache/polygene/regression/qi382/Qi382Test.java
index 2dd99e2..dd818f9 100644
--- a/core/runtime/src/test/java/org/apache/polygene/regression/qi382/Qi382Test.java
+++ b/core/runtime/src/test/java/org/apache/polygene/regression/qi382/Qi382Test.java
@@ -44,8 +44,8 @@ import static org.junit.Assert.assertThat;
 public class Qi382Test extends AbstractPolygeneTest
 {
 
-    public static final Identity FERRARI = new StringIdentity( "Ferrari" );
-    public static final Identity NICLAS = new StringIdentity( "Niclas" );
+    public static final Identity FERRARI = StringIdentity.fromString( "Ferrari" );
+    public static final Identity NICLAS = StringIdentity.fromString( "Niclas" );
 
     @Override
     public void assemble( ModuleAssembly module )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/regression/qi383/Qi383Test.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/regression/qi383/Qi383Test.java b/core/runtime/src/test/java/org/apache/polygene/regression/qi383/Qi383Test.java
index 8ec0369..ea15a4f 100644
--- a/core/runtime/src/test/java/org/apache/polygene/regression/qi383/Qi383Test.java
+++ b/core/runtime/src/test/java/org/apache/polygene/regression/qi383/Qi383Test.java
@@ -47,9 +47,9 @@ public class Qi383Test extends AbstractPolygeneTest
     {
         try( UnitOfWork unitOfWork = unitOfWorkFactory.newUnitOfWork() )
         {
-            unitOfWork.newEntity( Car.class, new StringIdentity( "Ferrari" ) );
-            unitOfWork.newEntity( Car.class, new StringIdentity( "Ford" ) );
-            unitOfWork.newEntity( Car.class, new StringIdentity( "Ferrari" ) );
+            unitOfWork.newEntity( Car.class, StringIdentity.fromString( "Ferrari" ) );
+            unitOfWork.newEntity( Car.class, StringIdentity.fromString( "Ford" ) );
+            unitOfWork.newEntity( Car.class, StringIdentity.fromString( "Ferrari" ) );
             unitOfWork.complete();
         }
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/runtime/activation/ImportedServiceActivationTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/activation/ImportedServiceActivationTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/activation/ImportedServiceActivationTest.java
index 5848403..db3cca8 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/activation/ImportedServiceActivationTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/activation/ImportedServiceActivationTest.java
@@ -179,7 +179,7 @@ public class ImportedServiceActivationTest
             module -> {
                 module.importedServices( TestedService.class ).
                     importedBy( ImportedServiceDeclaration.SERVICE_IMPORTER ).
-                          setMetaInfo( new StringIdentity( "testimporter" ) ).
+                          setMetaInfo( StringIdentity.fromString( "testimporter" ) ).
                           withActivators( TestedActivator.class ).
                           importOnStartup();
                 module.services( TestedServiceImporterService.class ).identifiedBy( "testimporter" );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityTypeTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityTypeTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityTypeTest.java
index c5ef312..ab7bf79 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityTypeTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityTypeTest.java
@@ -20,15 +20,15 @@
 
 package org.apache.polygene.runtime.entity;
 
-import org.apache.polygene.api.identity.StringIdentity;
-import org.apache.polygene.test.AbstractPolygeneTest;
-import org.junit.Test;
 import org.apache.polygene.api.entity.EntityBuilder;
 import org.apache.polygene.api.entity.EntityComposite;
+import org.apache.polygene.api.identity.StringIdentity;
 import org.apache.polygene.api.unitofwork.UnitOfWork;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.test.AbstractPolygeneTest;
 import org.apache.polygene.test.EntityTestAssembler;
+import org.junit.Test;
 
 public class EntityTypeTest
     extends AbstractPolygeneTest
@@ -40,9 +40,9 @@ public class EntityTypeTest
         UnitOfWork uow = unitOfWorkFactory.newUnitOfWork();
         try
         {
-            EntityBuilder<Rst> builder3 = uow.newEntityBuilder( Rst.class, new StringIdentity( "123" ) );
-            EntityBuilder<Def> builder2 = uow.newEntityBuilder( Def.class, new StringIdentity( "456" ) );
-            EntityBuilder<Abc> builder1 = uow.newEntityBuilder( Abc.class, new StringIdentity( "789" ) );
+            EntityBuilder<Rst> builder3 = uow.newEntityBuilder( Rst.class, StringIdentity.fromString( "123" ) );
+            EntityBuilder<Def> builder2 = uow.newEntityBuilder( Def.class, StringIdentity.fromString( "456" ) );
+            EntityBuilder<Abc> builder1 = uow.newEntityBuilder( Abc.class, StringIdentity.fromString( "789" ) );
         }
         finally
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityVisibilityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityVisibilityTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityVisibilityTest.java
index e2e466f..908e8f2 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityVisibilityTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityVisibilityTest.java
@@ -47,7 +47,7 @@ import org.junit.Test;
 public class EntityVisibilityTest
 {
 
-    public static final Identity TEST_IDENTITY = new StringIdentity( "123" );
+    public static final Identity TEST_IDENTITY = StringIdentity.fromString( "123" );
 
     private Energy4Java polygene;
     private Module module;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/runtime/injection/ServiceInjectionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/injection/ServiceInjectionTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/injection/ServiceInjectionTest.java
index 10d47b9..9fa6411 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/injection/ServiceInjectionTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/injection/ServiceInjectionTest.java
@@ -82,7 +82,7 @@ public class ServiceInjectionTest
         ServiceUser user = factory.newObject( ServiceUser.class );
 
         assertEquals( "X", user.testSingle() );
-        assertThat( user.testIdentity(), equalTo( new StringIdentity( "Foo" ) ) );
+        assertThat( user.testIdentity(), equalTo( StringIdentity.fromString( "Foo" ) ) );
         assertEquals( "FooX", user.testServiceReference() );
         assertEquals( "Bar", user.testQualifier() );
         assertEquals( "A", user.testStringIterable() );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/runtime/injection/UnitOfWorkInjectionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/injection/UnitOfWorkInjectionTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/injection/UnitOfWorkInjectionTest.java
index 8a38d17..105a698 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/injection/UnitOfWorkInjectionTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/injection/UnitOfWorkInjectionTest.java
@@ -20,9 +20,8 @@
 
 package org.apache.polygene.runtime.injection;
 
-import org.apache.polygene.api.identity.StringIdentity;
-import org.junit.Test;
 import org.apache.polygene.api.entity.EntityComposite;
+import org.apache.polygene.api.identity.StringIdentity;
 import org.apache.polygene.api.injection.scope.State;
 import org.apache.polygene.api.mixin.Mixins;
 import org.apache.polygene.api.unitofwork.UnitOfWork;
@@ -32,6 +31,7 @@ import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.test.AbstractPolygeneTest;
 import org.apache.polygene.test.EntityTestAssembler;
+import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
 
@@ -53,7 +53,7 @@ public class UnitOfWorkInjectionTest
         UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( usecase );
         try
         {
-            Trial trial = uow.newEntity( Trial.class, new StringIdentity( "123" ) );
+            Trial trial = uow.newEntity( Trial.class, StringIdentity.fromString( "123" ) );
             trial.doSomething();
             uow.complete();
             uow = unitOfWorkFactory.newUnitOfWork( usecase );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyMixinTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyMixinTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyMixinTest.java
index e0ed2ba..6432ccb 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyMixinTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyMixinTest.java
@@ -20,16 +20,16 @@
 
 package org.apache.polygene.runtime.mixin;
 
-import org.apache.polygene.api.identity.StringIdentity;
-import org.apache.polygene.test.AbstractPolygeneTest;
-import org.junit.Test;
 import org.apache.polygene.api.composite.TransientComposite;
 import org.apache.polygene.api.entity.EntityComposite;
+import org.apache.polygene.api.identity.StringIdentity;
 import org.apache.polygene.api.unitofwork.UnitOfWork;
 import org.apache.polygene.api.unitofwork.UnitOfWorkCompletionException;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.test.AbstractPolygeneTest;
 import org.apache.polygene.test.EntityTestAssembler;
+import org.junit.Test;
 
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.junit.Assert.assertThat;
@@ -62,11 +62,11 @@ public class AssemblyMixinTest
         throws UnitOfWorkCompletionException
     {
         UnitOfWork uow = unitOfWorkFactory.newUnitOfWork();
-        FooEntity entity = uow.newEntity( FooEntity.class, new StringIdentity( "123" ) );
+        FooEntity entity = uow.newEntity( FooEntity.class, StringIdentity.fromString( "123" ) );
         uow.complete();
 
         uow = unitOfWorkFactory.newUnitOfWork();
-        Foo foo = uow.get( Foo.class, new StringIdentity( "123" ) );
+        Foo foo = uow.get( Foo.class, StringIdentity.fromString( "123" ) );
 
         try
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyRoleTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyRoleTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyRoleTest.java
index 0f1f3b9..965d8a8 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyRoleTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyRoleTest.java
@@ -20,10 +20,9 @@
 
 package org.apache.polygene.runtime.mixin;
 
-import org.apache.polygene.api.identity.StringIdentity;
-import org.junit.Test;
 import org.apache.polygene.api.composite.TransientComposite;
 import org.apache.polygene.api.entity.EntityComposite;
+import org.apache.polygene.api.identity.StringIdentity;
 import org.apache.polygene.api.mixin.Mixins;
 import org.apache.polygene.api.unitofwork.UnitOfWork;
 import org.apache.polygene.api.unitofwork.UnitOfWorkCompletionException;
@@ -31,6 +30,7 @@ import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.test.AbstractPolygeneTest;
 import org.apache.polygene.test.EntityTestAssembler;
+import org.junit.Test;
 
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.junit.Assert.assertThat;
@@ -71,11 +71,11 @@ public class AssemblyRoleTest
         throws UnitOfWorkCompletionException
     {
         UnitOfWork uow = unitOfWorkFactory.newUnitOfWork();
-        uow.newEntity( FooEntity.class, new StringIdentity( "123" ) );
+        uow.newEntity( FooEntity.class, StringIdentity.fromString( "123" ) );
         uow.complete();
 
         uow = unitOfWorkFactory.newUnitOfWork();
-        Foo foo = uow.get( Foo.class, new StringIdentity( "123" ) );
+        Foo foo = uow.get( Foo.class, StringIdentity.fromString( "123" ) );
 
         try
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/JDKMixinTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/JDKMixinTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/JDKMixinTest.java
index fc4937a..8bf7e41 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/JDKMixinTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/JDKMixinTest.java
@@ -98,8 +98,8 @@ public class JDKMixinTest extends AbstractPolygeneTest
         }
     }
 
-    private static final Identity EXTENDS_IDENTITY = new StringIdentity( ExtendsJDKMixin.class.getName() );
-    private static final Identity COMPOSE_IDENTITY = new StringIdentity( ComposeWithJDKMixin.class.getName() );
+    private static final Identity EXTENDS_IDENTITY = StringIdentity.fromString( ExtendsJDKMixin.class.getName() );
+    private static final Identity COMPOSE_IDENTITY = StringIdentity.fromString( ComposeWithJDKMixin.class.getName() );
     private static final Predicate<ServiceReference<?>> EXTENDS_IDENTITY_SPEC = new ServiceIdentitySpec(
         EXTENDS_IDENTITY );
     private static final Predicate<ServiceReference<?>> COMPOSE_IDENTITY_SPEC = new ServiceIdentitySpec(

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectVisibilityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectVisibilityTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectVisibilityTest.java
index be787ef..33785ea 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectVisibilityTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectVisibilityTest.java
@@ -47,7 +47,7 @@ import org.junit.Test;
 public class ObjectVisibilityTest
 {
 
-    public static final Identity TEST_IDENTITY = new StringIdentity( "123" );
+    public static final Identity TEST_IDENTITY = StringIdentity.fromString( "123" );
 
     private Energy4Java polygene;
     private Module module;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/runtime/query/IterableQuerySourceTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/query/IterableQuerySourceTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/query/IterableQuerySourceTest.java
index d14780b..9f93dbd 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/query/IterableQuerySourceTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/query/IterableQuerySourceTest.java
@@ -214,7 +214,7 @@ public class IterableQuerySourceTest
     {
         QueryBuilder<Person> qb = qbf.newQueryBuilder( Person.class );
         Person person = templateFor( Person.class );
-        City kl = uow.get( City.class, new StringIdentity( "kualalumpur" ));
+        City kl = uow.get( City.class, StringIdentity.fromString( "kualalumpur" ));
         Query<Person> query = qb.where(
             eq( person.mother().get().placeOfBirth(), kl )
         ).newQuery( Network.persons() );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/runtime/query/Network.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/query/Network.java b/core/runtime/src/test/java/org/apache/polygene/runtime/query/Network.java
index 8930654..a84aca2 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/query/Network.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/query/Network.java
@@ -44,8 +44,8 @@ import org.apache.polygene.runtime.query.model.values.ContactsValue;
  */
 class Network
 {
-    public static final Identity KUALALUMPUR = new StringIdentity( "kualalumpur" );
-    public static final Identity PENANG = new StringIdentity( "penang" );
+    public static final Identity KUALALUMPUR = StringIdentity.fromString( "kualalumpur" );
+    public static final Identity PENANG = StringIdentity.fromString( "penang" );
     private static List<Domain> domains;
     private static List<Person> persons;
     private static List<Male> males;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/runtime/service/ServiceVisibilityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/service/ServiceVisibilityTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/service/ServiceVisibilityTest.java
index 84b6f43..f1d2f5c 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/service/ServiceVisibilityTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/service/ServiceVisibilityTest.java
@@ -46,7 +46,7 @@ import org.junit.Test;
 
 public class ServiceVisibilityTest
 {
-    public static final Identity TEST_IDENTITY = new StringIdentity( "123" );
+    public static final Identity TEST_IDENTITY = StringIdentity.fromString( "123" );
 
     private Energy4Java polygene;
     private Module module;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientVisibilityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientVisibilityTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientVisibilityTest.java
index 1231e21..2a80ff1 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientVisibilityTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientVisibilityTest.java
@@ -47,7 +47,7 @@ import org.junit.Test;
 
 public class TransientVisibilityTest
 {
-    public static final Identity TEST_IDENTITY = new StringIdentity( "123" );
+    public static final Identity TEST_IDENTITY = StringIdentity.fromString( "123" );
     private Energy4Java polygene;
     private Module module;
     private Application app;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/PrivateEntityUnitOfWorkTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/PrivateEntityUnitOfWorkTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/PrivateEntityUnitOfWorkTest.java
index 26148ee..8ee0fb0 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/PrivateEntityUnitOfWorkTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/PrivateEntityUnitOfWorkTest.java
@@ -52,7 +52,7 @@ import static org.junit.Assert.fail;
  */
 public class PrivateEntityUnitOfWorkTest
 {
-    private static final Identity TEST_IDENTITY = new StringIdentity( "1" );
+    private static final Identity TEST_IDENTITY = StringIdentity.fromString( "1" );
 
     @Structure
     private UnitOfWorkFactory uowf;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/RemovalTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/RemovalTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/RemovalTest.java
index 843c103..765fe6a 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/RemovalTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/RemovalTest.java
@@ -20,11 +20,10 @@
 
 package org.apache.polygene.runtime.unitofwork;
 
-import org.apache.polygene.api.identity.Identity;
-import org.apache.polygene.api.identity.StringIdentity;
-import org.junit.Test;
 import org.apache.polygene.api.entity.EntityBuilder;
 import org.apache.polygene.api.entity.EntityComposite;
+import org.apache.polygene.api.identity.Identity;
+import org.apache.polygene.api.identity.StringIdentity;
 import org.apache.polygene.api.property.Property;
 import org.apache.polygene.api.unitofwork.NoSuchEntityException;
 import org.apache.polygene.api.unitofwork.UnitOfWork;
@@ -32,6 +31,7 @@ import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.test.AbstractPolygeneTest;
 import org.apache.polygene.test.EntityTestAssembler;
+import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
@@ -40,7 +40,7 @@ public class RemovalTest
     extends AbstractPolygeneTest
 {
 
-    private static final Identity TEST_IDENTITY = new StringIdentity( "123" );
+    private static final Identity TEST_IDENTITY = StringIdentity.fromString( "123" );
 
     public void assemble(ModuleAssembly module )
         throws AssemblyException

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/runtime/value/AssociationToValueTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/value/AssociationToValueTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/value/AssociationToValueTest.java
index 3c49336..2966ea5 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/value/AssociationToValueTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/value/AssociationToValueTest.java
@@ -151,7 +151,7 @@ public class AssociationToValueTest extends AbstractPolygeneTest
         public Person findPersonByName( String name )
         {
             UnitOfWork uow = unitOfWorkFactory.currentUnitOfWork();
-            return uow.toValue( Person.class, uow.get( Person.class, new StringIdentity( name ) ) );
+            return uow.toValue( Person.class, uow.get( Person.class, StringIdentity.fromString( name ) ) );
         }
     }
 
@@ -206,7 +206,7 @@ public class AssociationToValueTest extends AbstractPolygeneTest
         private Person createPerson( String name )
         {
             UnitOfWork uow = uowf.currentUnitOfWork();
-            return uow.newEntity( Person.class, new StringIdentity( name ) );
+            return uow.newEntity( Person.class, StringIdentity.fromString( name ) );
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueSerializationRegressionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueSerializationRegressionTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueSerializationRegressionTest.java
index fe8cdd8..f29895d 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueSerializationRegressionTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueSerializationRegressionTest.java
@@ -50,7 +50,7 @@ public class ValueSerializationRegressionTest extends AbstractPolygeneTest
         throws UnitOfWorkCompletionException
     {
         ValueBuilder<DualFaced> builder = valueBuilderFactory.newValueBuilder( DualFaced.class );
-        builder.prototype().identity().set( new StringIdentity( "1234" ) );
+        builder.prototype().identity().set( StringIdentity.fromString( "1234" ) );
         builder.prototype().name().set( "Hedhman" );
         DualFaced value = builder.newInstance();
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueVisibilityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueVisibilityTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueVisibilityTest.java
index 4c83a45..b0d7336 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueVisibilityTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueVisibilityTest.java
@@ -48,7 +48,7 @@ import org.junit.Test;
 public class ValueVisibilityTest
 {
 
-    public static final Identity TEST_IDENTIY = new StringIdentity( "123" );
+    public static final Identity TEST_IDENTIY = StringIdentity.fromString( "123" );
     private Energy4Java polygene;
     private Module module;
     private Application app;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueWithAssociationTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueWithAssociationTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueWithAssociationTest.java
index db3d02f..02067e5 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueWithAssociationTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueWithAssociationTest.java
@@ -113,7 +113,7 @@ public class ValueWithAssociationTest extends AbstractPolygeneTest
         throws UnitOfWorkCompletionException
     {
         ValueBuilder<DualFaced> builder = valueBuilderFactory.newValueBuilder( DualFaced.class );
-        builder.prototype().identity().set( new StringIdentity( "1234" ) );
+        builder.prototype().identity().set( StringIdentity.fromString( "1234" ) );
         builder.prototype().name().set( "Hedhman" );
         DualFaced value = builder.newInstance();
 
@@ -125,8 +125,8 @@ public class ValueWithAssociationTest extends AbstractPolygeneTest
 
         try (UnitOfWork uow = unitOfWorkFactory.newUnitOfWork())
         {
-            DualFaced entity = uow.get( DualFaced.class, new StringIdentity( "1234" ) );
-            assertThat( entity.identity().get(), equalTo( new StringIdentity( "1234" ) ) );
+            DualFaced entity = uow.get( DualFaced.class, StringIdentity.fromString( "1234" ) );
+            assertThat( entity.identity().get(), equalTo( StringIdentity.fromString( "1234" ) ) );
             assertThat( entity.name().get(), equalTo( "Hedhman" ) );
             uow.complete();
         }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/runtime/visibility/VisibilityInUnitOfWorkTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/visibility/VisibilityInUnitOfWorkTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/visibility/VisibilityInUnitOfWorkTest.java
index 2fb301b..559605f 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/visibility/VisibilityInUnitOfWorkTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/visibility/VisibilityInUnitOfWorkTest.java
@@ -41,8 +41,8 @@ import org.junit.Test;
 public class VisibilityInUnitOfWorkTest
 {
 
-    public static final Identity TEST_IDENTITY1 = new StringIdentity( "123" );
-    public static final Identity TEST_IDENTITY2 = new StringIdentity( "345" );
+    public static final Identity TEST_IDENTITY1 = StringIdentity.fromString( "123" );
+    public static final Identity TEST_IDENTITY2 = StringIdentity.fromString( "345" );
 
     @Test
     public void givenTwoModulesWithServiceAndEntityInOneAndEntityInOtherWhenOtherEntityAccessServiceWhichUsesItsEntityExpectServiceToHaveVisibility()

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/runtime/src/test/java/org/apache/polygene/spi/service/importer/ServiceInstanceImporterTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/spi/service/importer/ServiceInstanceImporterTest.java b/core/runtime/src/test/java/org/apache/polygene/spi/service/importer/ServiceInstanceImporterTest.java
index 6a891c4..2c566b4 100644
--- a/core/runtime/src/test/java/org/apache/polygene/spi/service/importer/ServiceInstanceImporterTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/spi/service/importer/ServiceInstanceImporterTest.java
@@ -21,10 +21,6 @@
 package org.apache.polygene.spi.service.importer;
 
 import org.apache.polygene.api.identity.StringIdentity;
-import org.apache.polygene.test.AbstractPolygeneTest;
-import org.hamcrest.CoreMatchers;
-import org.junit.Assert;
-import org.junit.Test;
 import org.apache.polygene.api.injection.scope.Service;
 import org.apache.polygene.api.mixin.Mixins;
 import org.apache.polygene.api.service.ImportedServiceDescriptor;
@@ -34,6 +30,10 @@ import org.apache.polygene.api.service.ServiceImporterException;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ImportedServiceDeclaration;
 import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.test.AbstractPolygeneTest;
+import org.hamcrest.CoreMatchers;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * JAVADOC
@@ -46,7 +46,7 @@ public class ServiceInstanceImporterTest
     {
         module.importedServices( TestService.class ).
             identifiedBy( "test" ).
-            setMetaInfo( new StringIdentity( "testimporter" ) ).
+            setMetaInfo( StringIdentity.fromString( "testimporter" ) ).
             importedBy( ImportedServiceDeclaration.SERVICE_IMPORTER );
         module.services( TestImporterService.class ).identifiedBy( "testimporter" );
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/JSONMapEntityStoreMixin.java b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
index bc715b7..b88c189 100644
--- a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
+++ b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
@@ -419,7 +419,7 @@ public class JSONMapEntityStoreMixin
 
             String version = parsedState.getString( JSONKeys.VERSION );
             Instant modified = Instant.ofEpochMilli( parsedState.getJsonNumber( JSONKeys.MODIFIED ).longValueExact() );
-            Identity identity = new StringIdentity( parsedState.getString( JSONKeys.IDENTITY ) );
+            Identity identity = StringIdentity.fromString( parsedState.getString( JSONKeys.IDENTITY ) );
 
             // Check if version is correct
             JsonObject state;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java
index c8bd163..5e784f7 100644
--- a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java
+++ b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java
@@ -382,7 +382,7 @@ public class MapEntityStoreMixin
 
             String version = parsedState.getString( JSONKeys.VERSION );
             Instant modified = Instant.ofEpochMilli( parsedState.getJsonNumber( JSONKeys.MODIFIED ).longValueExact() );
-            Identity identity = new StringIdentity( parsedState.getString( JSONKeys.IDENTITY ) );
+            Identity identity = StringIdentity.fromString( parsedState.getString( JSONKeys.IDENTITY ) );
 
             // Check if version is correct
             JsonObject state;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/spi/src/test/java/org/apache/polygene/spi/entitystore/Polygene142Test.java
----------------------------------------------------------------------
diff --git a/core/spi/src/test/java/org/apache/polygene/spi/entitystore/Polygene142Test.java b/core/spi/src/test/java/org/apache/polygene/spi/entitystore/Polygene142Test.java
index 935d2ee..85bc744 100644
--- a/core/spi/src/test/java/org/apache/polygene/spi/entitystore/Polygene142Test.java
+++ b/core/spi/src/test/java/org/apache/polygene/spi/entitystore/Polygene142Test.java
@@ -22,8 +22,8 @@ import org.apache.polygene.api.identity.Identity;
 import org.apache.polygene.api.identity.StringIdentity;
 import org.apache.polygene.api.injection.scope.Service;
 import org.apache.polygene.api.property.Property;
-import org.apache.polygene.api.service.qualifier.Tagged;
 import org.apache.polygene.api.serialization.Serialization;
+import org.apache.polygene.api.service.qualifier.Tagged;
 import org.apache.polygene.api.unitofwork.UnitOfWork;
 import org.apache.polygene.api.usecase.UsecaseBuilder;
 import org.apache.polygene.api.value.ValueBuilder;
@@ -61,7 +61,7 @@ public class Polygene142Test extends AbstractPolygeneTest
             value = serialization.deserialize( module, Regression142Type.class, serialized ); // ok
         }
         {
-            Identity valueId = new StringIdentity( "abcdefg" );
+            Identity valueId = StringIdentity.fromString( "abcdefg" );
             {
                 try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "create" ) ) )
                 {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/testsupport/src/main/java/org/apache/polygene/test/entity/AbstractEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/AbstractEntityStoreTest.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/AbstractEntityStoreTest.java
index 2bb6abb..e936c1a 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/entity/AbstractEntityStoreTest.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/AbstractEntityStoreTest.java
@@ -426,7 +426,6 @@ public abstract class AbstractEntityStoreTest
             assertThat( "many association cleared", testEntity.manyAssociation().count(), is( 0 ) );
             assertThat( "named association cleared", testEntity.namedAssociation().count(), is( 0 ) );
             assertThat( "version has not changed", newVersion, not( equalTo( version ) ) );
-
             unitOfWork.complete();
         }
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractQueryTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractQueryTest.java b/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractQueryTest.java
index f005398..08abae0 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractQueryTest.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractQueryTest.java
@@ -465,7 +465,7 @@ public abstract class AbstractQueryTest
     {
         QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
         Person person = templateFor( Person.class );
-        Domain gaming = unitOfWork.get( Domain.class, new StringIdentity( "Gaming" ) );
+        Domain gaming = unitOfWork.get( Domain.class, StringIdentity.fromString( "Gaming" ) );
         Query<Person> query = unitOfWork.newQuery( qb.where( contains( person.interests(), gaming ) ) );
         System.out.println( "*** script33: " + query );
 
@@ -477,7 +477,7 @@ public abstract class AbstractQueryTest
     {
         QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
         Person person = templateFor( Person.class );
-        Female annDoe = unitOfWork.get( Female.class, new StringIdentity( "anndoe" ) );
+        Female annDoe = unitOfWork.get( Female.class, StringIdentity.fromString( "anndoe" ) );
         Query<Person> query = unitOfWork.newQuery( qb.where( eq( person.mother(), annDoe ) ) );
         System.out.println( "*** script34: " + query );
 
@@ -500,7 +500,7 @@ public abstract class AbstractQueryTest
     {
         QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
         Person person = templateFor( Person.class );
-        Account anns = unitOfWork.get( Account.class, new StringIdentity( "accountOfAnnDoe" ) );
+        Account anns = unitOfWork.get( Account.class, StringIdentity.fromString( "accountOfAnnDoe" ) );
         Query<Person> query = unitOfWork.newQuery( qb.where( contains( person.accounts(), anns ) ) );
         System.out.println( "*** script36: " + query );
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/core/testsupport/src/main/java/org/apache/polygene/test/indexing/TestData.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/indexing/TestData.java b/core/testsupport/src/main/java/org/apache/polygene/test/indexing/TestData.java
index aaa8bac..bc275bb 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/indexing/TestData.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/indexing/TestData.java
@@ -59,7 +59,7 @@ public class TestData
             NameableAssert.clear();
             Domain gaming;
             {
-                EntityBuilder<Domain> domainBuilder = unitOfWork.newEntityBuilder( Domain.class, new StringIdentity( "Gaming" ) );
+                EntityBuilder<Domain> domainBuilder = unitOfWork.newEntityBuilder( Domain.class, StringIdentity.fromString( "Gaming" ) );
                 gaming = domainBuilder.instance();
                 gaming.name().set( "Gaming" );
                 gaming.description().set( "Gaming domain" );
@@ -121,7 +121,7 @@ public class TestData
 
             Account annsAccount;
             {
-                EntityBuilder<Account> accountBuilder = unitOfWork.newEntityBuilder( Account.class, new StringIdentity( "accountOfAnnDoe" ) );
+                EntityBuilder<Account> accountBuilder = unitOfWork.newEntityBuilder( Account.class, StringIdentity.fromString( "accountOfAnnDoe" ) );
                 annsAccount = accountBuilder.instance();
                 annsAccount.number().set( "accountOfAnnDoe" );
                 annsAccount = accountBuilder.newInstance();
@@ -129,7 +129,7 @@ public class TestData
 
             Account jacksAccount;
             {
-                EntityBuilder<Account> accountBuilder = unitOfWork.newEntityBuilder( Account.class, new StringIdentity( "accountOfJackDoe" ) );
+                EntityBuilder<Account> accountBuilder = unitOfWork.newEntityBuilder( Account.class, StringIdentity.fromString( "accountOfJackDoe" ) );
                 jacksAccount = accountBuilder.instance();
                 jacksAccount.number().set( "accountOfJackDoe" );
                 jacksAccount = accountBuilder.newInstance();
@@ -143,7 +143,7 @@ public class TestData
 
             Female annDoe;
             {
-                EntityBuilder<Female> femaleBuilder = unitOfWork.newEntityBuilder( Female.class, new StringIdentity( "anndoe" ) );
+                EntityBuilder<Female> femaleBuilder = unitOfWork.newEntityBuilder( Female.class, StringIdentity.fromString( "anndoe" ) );
                 annDoe = femaleBuilder.instance();
                 annDoe.name().set( "Ann Doe" );
                 annDoe.title().set( Person.Title.MRS );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreMixin.java b/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreMixin.java
index fe078d5..cde443c 100644
--- a/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreMixin.java
+++ b/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreMixin.java
@@ -427,7 +427,7 @@ public class CassandraEntityStoreMixin
         Identity newIdentity;
         if( idGenerator == null )
         {
-            newIdentity = new StringIdentity( UUID.randomUUID().toString() );
+            newIdentity = StringIdentity.fromString( UUID.randomUUID().toString() );
         }
         else
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java b/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java
index b23d678..36fe4ee 100644
--- a/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java
+++ b/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java
@@ -36,7 +36,7 @@ import org.jooq.conf.Settings;
 public abstract class AbstractSQLEntityStoreAssembler<AssemblerType>
     extends Assemblers.VisibilityIdentityConfig<AssemblerType>
 {
-    public static final Identity DEFAULT_ENTITYSTORE_IDENTITY = new StringIdentity( "entitystore-sql" );
+    public static final Identity DEFAULT_ENTITYSTORE_IDENTITY = StringIdentity.fromString( "entitystore-sql" );
     private static final String DEFAULT_CHANGELOG_PATH = "org/apache/polygene/entitystore/sql/changelog.xml";
 
     private String changelogPath = DEFAULT_CHANGELOG_PATH;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/extensions/indexing-rdf/src/test/java/org/apache/polygene/index/rdf/RDFPerformanceTest.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-rdf/src/test/java/org/apache/polygene/index/rdf/RDFPerformanceTest.java b/extensions/indexing-rdf/src/test/java/org/apache/polygene/index/rdf/RDFPerformanceTest.java
index 014d8fb..96abf69 100644
--- a/extensions/indexing-rdf/src/test/java/org/apache/polygene/index/rdf/RDFPerformanceTest.java
+++ b/extensions/indexing-rdf/src/test/java/org/apache/polygene/index/rdf/RDFPerformanceTest.java
@@ -102,7 +102,7 @@ public class RDFPerformanceTest extends AbstractPolygeneTest
         List<ExampleEntity> entities = new ArrayList<ExampleEntity>();
         for (Integer x = 0; x < howMany; ++x)
         {
-            ExampleEntity exampleEntity = this.unitOfWorkFactory.currentUnitOfWork().newEntity( ExampleEntity.class, new StringIdentity( "entity" + x ) );
+            ExampleEntity exampleEntity = this.unitOfWorkFactory.currentUnitOfWork().newEntity( ExampleEntity.class, StringIdentity.fromString( "entity" + x ) );
 
             for (ExampleEntity entity : entities)
             {
@@ -188,7 +188,7 @@ public class RDFPerformanceTest extends AbstractPolygeneTest
         UnitOfWork uow = this.unitOfWorkFactory.newUnitOfWork();
         for (int i = 0; i < 1000; i++)
         {
-            ExampleEntity entity50 = uow.get(ExampleEntity.class, new StringIdentity( "entity50" ) );
+            ExampleEntity entity50 = uow.get(ExampleEntity.class, StringIdentity.fromString( "entity50" ) );
             Query<ExampleEntity> query = uow.newQuery( this.queryBuilderFactory.newQueryBuilder( ExampleEntity.class ).
                     where( QueryExpressions.contains( QueryExpressions.templateFor( ExampleEntity.class ).manyAssoc(), entity50) ));
             System.out.println(query.count());

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/assembly/AbstractSQLIndexQueryAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/assembly/AbstractSQLIndexQueryAssembler.java b/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/assembly/AbstractSQLIndexQueryAssembler.java
index 7fd3ec0..d3675a3 100644
--- a/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/assembly/AbstractSQLIndexQueryAssembler.java
+++ b/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/assembly/AbstractSQLIndexQueryAssembler.java
@@ -35,7 +35,7 @@ import org.apache.polygene.library.sql.generator.vendor.SQLVendorProvider;
 
 public abstract class AbstractSQLIndexQueryAssembler<AssemblerType> extends Assemblers.VisibilityIdentityConfig<AssemblerType>
 {
-    public static final Identity DEFAULT_IDENTITY = new StringIdentity( "indexing-sql" );
+    public static final Identity DEFAULT_IDENTITY = StringIdentity.fromString( "indexing-sql" );
 
     private Class<? extends ReindexingStrategy> reindexingStrategy = ReindexingStrategy.NeverNeed.class;
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/libraries/alarm/src/main/java/org/apache/polygene/library/alarm/AlarmSystem.java
----------------------------------------------------------------------
diff --git a/libraries/alarm/src/main/java/org/apache/polygene/library/alarm/AlarmSystem.java b/libraries/alarm/src/main/java/org/apache/polygene/library/alarm/AlarmSystem.java
index c205f64..b275943 100644
--- a/libraries/alarm/src/main/java/org/apache/polygene/library/alarm/AlarmSystem.java
+++ b/libraries/alarm/src/main/java/org/apache/polygene/library/alarm/AlarmSystem.java
@@ -214,7 +214,7 @@ public interface AlarmSystem
         public AlarmPoint createAlarm( String name, AlarmCategory category )
         {
             UnitOfWork uow = uowf.currentUnitOfWork();
-            EntityBuilder<AlarmPoint> builder = uow.newEntityBuilder( AlarmPoint.class, new StringIdentity( name ) );
+            EntityBuilder<AlarmPoint> builder = uow.newEntityBuilder( AlarmPoint.class, StringIdentity.fromString( name ) );
             builder.instance().category().set( category );
             AlarmPoint.AlarmState state = builder.instanceFor( AlarmPoint.AlarmState.class );
             state.systemName().set( name );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmProxyTest.java
----------------------------------------------------------------------
diff --git a/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmProxyTest.java b/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmProxyTest.java
index 478ef93..30e9c35 100644
--- a/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmProxyTest.java
+++ b/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmProxyTest.java
@@ -21,13 +21,13 @@
 package org.apache.polygene.library.alarm;
 
 import org.apache.polygene.api.identity.StringIdentity;
-import org.junit.Test;
 import org.apache.polygene.api.injection.scope.Service;
 import org.apache.polygene.api.unitofwork.UnitOfWork;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.test.AbstractPolygeneTest;
 import org.apache.polygene.test.EntityTestAssembler;
+import org.junit.Test;
 
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.CoreMatchers.notNullValue;
@@ -60,7 +60,7 @@ public class AlarmProxyTest extends AbstractPolygeneTest
         try
         {
 // START SNIPPET: documentation
-            myAlarmPoint = factory.create( new StringIdentity( "This Alarm Identity" ), "ProActiveCRM", "Sales", AlarmClass.B );
+            myAlarmPoint = factory.create( StringIdentity.fromString( "This Alarm Identity" ), "ProActiveCRM", "Sales", AlarmClass.B );
             myAlarmPoint.history().maxSize().set( 20 );
 // END SNIPPET: documentation
 
@@ -71,7 +71,7 @@ public class AlarmProxyTest extends AbstractPolygeneTest
             assertThat( myAlarmPoint.history().activateCounter(), equalTo( 1 ) );
             AlarmEvent event = myAlarmPoint.history().firstEvent();
             assertThat( event, notNullValue() );
-            assertThat( event.identity().get(), equalTo( new StringIdentity( "This Alarm Identity" ) ) );
+            assertThat( event.identity().get(), equalTo( StringIdentity.fromString( "This Alarm Identity" ) ) );
             assertThat( event.newStatus().get().name( null ), equalTo( "Activated" ) );
             assertThat( event.oldStatus().get().name( null ), equalTo( "Normal" ) );
         }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/libraries/jmx/src/main/java/org/apache/polygene/library/jmx/ConfigurationManagerService.java
----------------------------------------------------------------------
diff --git a/libraries/jmx/src/main/java/org/apache/polygene/library/jmx/ConfigurationManagerService.java b/libraries/jmx/src/main/java/org/apache/polygene/library/jmx/ConfigurationManagerService.java
index 50485d1..a8ce3bf 100644
--- a/libraries/jmx/src/main/java/org/apache/polygene/library/jmx/ConfigurationManagerService.java
+++ b/libraries/jmx/src/main/java/org/apache/polygene/library/jmx/ConfigurationManagerService.java
@@ -243,7 +243,7 @@ public interface ConfigurationManagerService
             EditableConfiguration( MBeanInfo info, String identity, Map<String, AccessibleObject> propertyNames )
             {
                 this.info = info;
-                this.identity = new StringIdentity(identity);
+                this.identity = StringIdentity.fromString(identity);
                 this.propertyNames = propertyNames;
             }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntitySerializerTest.java
----------------------------------------------------------------------
diff --git a/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntitySerializerTest.java b/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntitySerializerTest.java
index fb5b0c3..59528e2 100644
--- a/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntitySerializerTest.java
+++ b/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntitySerializerTest.java
@@ -109,14 +109,14 @@ public class EntitySerializerTest
             valueBuilder.prototype().test3().set( valueBuilder2.newInstance() );
             TestValue testValue = valueBuilder.newInstance();
 
-            EntityBuilder<TestEntity> builder = unitOfWork.newEntityBuilder( TestEntity.class, new StringIdentity( "test1" ) );
+            EntityBuilder<TestEntity> builder = unitOfWork.newEntityBuilder( TestEntity.class, StringIdentity.fromString( "test1" ) );
             TestEntity rickardTemplate = builder.instance();
             rickardTemplate.name().set( "Rickard" );
             rickardTemplate.title().set( "Mr" );
             rickardTemplate.value().set( testValue );
             TestEntity testEntity = builder.newInstance();
 
-            EntityBuilder<TestEntity> builder2 = unitOfWork.newEntityBuilder( TestEntity.class, new StringIdentity( "test2" ) );
+            EntityBuilder<TestEntity> builder2 = unitOfWork.newEntityBuilder( TestEntity.class, StringIdentity.fromString( "test2" ) );
             TestEntity niclasTemplate = builder2.instance();
             niclasTemplate.name().set( "Niclas" );
             niclasTemplate.title().set( "Mr" );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntityTypeSerializerTest.java
----------------------------------------------------------------------
diff --git a/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntityTypeSerializerTest.java b/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntityTypeSerializerTest.java
index 6c1d279..e4a7efe 100644
--- a/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntityTypeSerializerTest.java
+++ b/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntityTypeSerializerTest.java
@@ -20,14 +20,10 @@
 
 package org.apache.polygene.library.rdf.entity;
 
-import org.apache.polygene.api.identity.StringIdentity;
-import org.apache.polygene.test.AbstractPolygeneTest;
-import org.junit.Before;
-import org.junit.Test;
-import org.openrdf.model.Statement;
-import org.openrdf.rio.RDFHandlerException;
+import java.io.PrintWriter;
 import org.apache.polygene.api.entity.EntityBuilder;
 import org.apache.polygene.api.entity.EntityDescriptor;
+import org.apache.polygene.api.identity.StringIdentity;
 import org.apache.polygene.api.injection.scope.Service;
 import org.apache.polygene.api.injection.scope.Uses;
 import org.apache.polygene.api.unitofwork.UnitOfWork;
@@ -40,9 +36,12 @@ import org.apache.polygene.library.rdf.PolygeneEntityType;
 import org.apache.polygene.library.rdf.Rdfs;
 import org.apache.polygene.library.rdf.serializer.RdfXmlSerializer;
 import org.apache.polygene.spi.entitystore.EntityStore;
-
-import java.io.PrintWriter;
+import org.apache.polygene.test.AbstractPolygeneTest;
 import org.apache.polygene.test.EntityTestAssembler;
+import org.junit.Before;
+import org.junit.Test;
+import org.openrdf.model.Statement;
+import org.openrdf.rio.RDFHandlerException;
 
 
 /**
@@ -96,14 +95,14 @@ public class EntityTypeSerializerTest
             valueBuilder.prototype().test3().set( vb2.newInstance() );
             TestValue testValue = valueBuilder.newInstance();
 
-            EntityBuilder<TestEntity> builder = unitOfWork.newEntityBuilder(TestEntity.class, new StringIdentity( "test1") );
+            EntityBuilder<TestEntity> builder = unitOfWork.newEntityBuilder(TestEntity.class, StringIdentity.fromString( "test1") );
             TestEntity rickardTemplate = builder.instance();
             rickardTemplate.name().set( "Rickard" );
             rickardTemplate.title().set( "Mr" );
             rickardTemplate.value().set( testValue );
             TestEntity testEntity = builder.newInstance();
 
-            EntityBuilder<TestEntity> builder2 = unitOfWork.newEntityBuilder(TestEntity.class, new StringIdentity( "test2") );
+            EntityBuilder<TestEntity> builder2 = unitOfWork.newEntityBuilder(TestEntity.class, StringIdentity.fromString( "test2") );
             TestEntity niclasTemplate = builder2.instance();
             niclasTemplate.name().set( "Niclas" );
             niclasTemplate.title().set( "Mr" );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/RequestReaderDelegator.java
----------------------------------------------------------------------
diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/RequestReaderDelegator.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/RequestReaderDelegator.java
index db767ff..7bfc77b 100644
--- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/RequestReaderDelegator.java
+++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/RequestReaderDelegator.java
@@ -51,7 +51,7 @@ public class RequestReaderDelegator
     public void init( @Service Iterable<ServiceReference<RequestReader>> requestReaderReferences )
     {
         Logger logger = LoggerFactory.getLogger( getClass() );
-        Identity requestreaderdelegator = new StringIdentity("requestreaderdelegator");
+        Identity requestreaderdelegator = StringIdentity.fromString("requestreaderdelegator");
 
         // Add custom readers first
         for( ServiceReference<RequestReader> requestReader : requestReaderReferences )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/ResponseWriterDelegator.java
----------------------------------------------------------------------
diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/ResponseWriterDelegator.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/ResponseWriterDelegator.java
index 18fd7fa..14279c8 100644
--- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/ResponseWriterDelegator.java
+++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/ResponseWriterDelegator.java
@@ -48,7 +48,7 @@ public class ResponseWriterDelegator
     public void init( @Service Iterable<ServiceReference<ResponseWriter>> resultWriters )
     {
         Logger logger = LoggerFactory.getLogger( getClass() );
-        Identity responsewriterdelegator = new StringIdentity( "responsewriterdelegator" );
+        Identity responsewriterdelegator = StringIdentity.fromString( "responsewriterdelegator" );
 
         // Add custom writers first
         for( ServiceReference<ResponseWriter> resultWriter : resultWriters )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/requestreader/DefaultRequestReader.java
----------------------------------------------------------------------
diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/requestreader/DefaultRequestReader.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/requestreader/DefaultRequestReader.java
index b968da4..8ed1666 100644
--- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/requestreader/DefaultRequestReader.java
+++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/requestreader/DefaultRequestReader.java
@@ -251,7 +251,7 @@ public class DefaultRequestReader
                         entityAsForm = new Form();
                     }
 
-                    Identity entityIdentity = new StringIdentity( getValue( "entity", queryAsForm, entityAsForm ) );
+                    Identity entityIdentity = StringIdentity.fromString( getValue( "entity", queryAsForm, entityAsForm ) );
                     args[0] = uowf.currentUnitOfWork().get( method.getParameterTypes()[0], entityIdentity );
 
                     return args;
@@ -480,7 +480,7 @@ public class DefaultRequestReader
             }
             else if( parameterType.isInterface() )
             {
-                arg = uowf.currentUnitOfWork().get( parameterType, new StringIdentity( argString ) );
+                arg = uowf.currentUnitOfWork().get( parameterType, StringIdentity.fromString( argString ) );
             }
             else
             {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/24fe6039/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntityResource.java
----------------------------------------------------------------------
diff --git a/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntityResource.java b/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntityResource.java
index 99a538c..5401a54 100644
--- a/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntityResource.java
+++ b/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntityResource.java
@@ -106,7 +106,7 @@ public class EntityResource
     {
         // /entity/{reference}
         Map<String, Object> attributes = getRequest().getAttributes();
-        identity = new StringIdentity( (String) attributes.get( "reference" ) );
+        identity = StringIdentity.fromString( (String) attributes.get( "reference" ) );
     }
 
     @Override


[33/50] polygene-java git commit: Working on getting everything in generator working properly.

Posted by ni...@apache.org.
Working on getting everything in generator working properly.


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/8393d863
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/8393d863
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/8393d863

Branch: refs/heads/es-jooq
Commit: 8393d8633ea646504eb0d8aaf2c8022dc4d10181
Parents: c543db5
Author: niclas <ni...@hedhman.org>
Authored: Wed Jul 5 12:08:08 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Wed Jul 5 12:08:08 2017 +0800

----------------------------------------------------------------------
 tools/generator-polygene/app/index.js           | 12 +++----
 .../indexing/ds-index-postgresql.properties     |  2 +-
 .../IndexingModule/module.js                    | 22 +++++++-----
 .../storage/ds-es-postgresql.properties         |  2 +-
 .../app/templates/buildtool/gradle-app.tmpl     | 38 +++++---------------
 .../app/templates/buildtool/gradle-root.tmpl    |  2 +-
 6 files changed, 31 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/8393d863/tools/generator-polygene/app/index.js
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/index.js b/tools/generator-polygene/app/index.js
index bcb7453..a20b3eb 100644
--- a/tools/generator-polygene/app/index.js
+++ b/tools/generator-polygene/app/index.js
@@ -65,6 +65,7 @@ module.exports = generators.Base.extend(
                 polygene.indexing = polygene.indexing ? polygene.indexing : null;
                 polygene.entitystore = polygene.entitystore ? polygene.entitystore : null;
                 polygene.caching = polygene.caching ? polygene.caching : null;
+                polygene.dbpool = polygene.dbpool === undefined ? "DBCP" : answers.dbpool;
             }
         },
 
@@ -196,14 +197,13 @@ module.exports = generators.Base.extend(
                         this.log('Caching:', answers.caching);
                         this.log('Metrics:', answers.metrics);
                         this.log('Features:', answers.features);
-                        answers.dbpool = answers.dbpool === undefined ? "DBCP" : answers.dbpool;
                         polygene.name = answers.name;
                         polygene.packageName = answers.packageName;
                         polygene.applicationtype = answers.applicationtype;
                         polygene.features = answers.features;
                         polygene.indexing = answers.indexing;
                         polygene.entitystore = answers.entitystore;
-                        polygene.dbpool = answers.dbpool;
+                        polygene.dbpool = answers.dbpool === undefined ? "DBCP" : answers.dbpool;
                         polygene.metrics = answers.metrics;
                         polygene.caching = answers.caching;
                     }.bind(this)
@@ -280,16 +280,16 @@ function assignFunctions(polygene) {
     polygene.copyToConfig = function (ctx, from, toName) {
         polygene.copyTemplate(ctx,
             from,
-            'app/src/main/config/development/' + toName);
+            'app/src/dist/config/development/' + toName);
         polygene.copyTemplate(ctx,
             from,
-            'app/src/main/config/qa/' + toName);
+            'app/src/dist/config/qa/' + toName);
         polygene.copyTemplate(ctx,
             from,
-            'app/src/main/config/staging/' + toName);
+            'app/src/dist/config/staging/' + toName);
         polygene.copyTemplate(ctx,
             from,
-            'app/src/main/config/production/' + toName);
+            'app/src/dist/config/production/' + toName);
     };
 
     polygene.copyTemplate = function (ctx, from, to) {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/8393d863/tools/generator-polygene/app/templates/InfrastructureLayer/IndexingModule/indexing/ds-index-postgresql.properties
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/InfrastructureLayer/IndexingModule/indexing/ds-index-postgresql.properties b/tools/generator-polygene/app/templates/InfrastructureLayer/IndexingModule/indexing/ds-index-postgresql.properties
index 4097894..4c6eb91 100644
--- a/tools/generator-polygene/app/templates/InfrastructureLayer/IndexingModule/indexing/ds-index-postgresql.properties
+++ b/tools/generator-polygene/app/templates/InfrastructureLayer/IndexingModule/indexing/ds-index-postgresql.properties
@@ -17,7 +17,7 @@
 
 
 enabled=true
-url=jdbc:postgres://127.0.0.1:5432/<%= polygene.name %>
+url=jdbc:postgresql://127.0.0.1:5432/<%= polygene.name.toLowerCase() %>
 driver=org.postgresql.Driver
 username=polygene
 password=ThisIsGreat!

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/8393d863/tools/generator-polygene/app/templates/InfrastructureLayer/IndexingModule/module.js
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/InfrastructureLayer/IndexingModule/module.js b/tools/generator-polygene/app/templates/InfrastructureLayer/IndexingModule/module.js
index 4000571..bbcfb28 100644
--- a/tools/generator-polygene/app/templates/InfrastructureLayer/IndexingModule/module.js
+++ b/tools/generator-polygene/app/templates/InfrastructureLayer/IndexingModule/module.js
@@ -22,18 +22,24 @@ module.exports = {
         p.copyTemplate(p.ctx,
             'InfrastructureLayer/IndexingModule/bootstrap.tmpl',
             'bootstrap/src/main/java/' + p.javaPackageDir + '/bootstrap/infrastructure/' + p.indexing + 'IndexingModule.java');
-        if( p.indexing === 'SQL' ) {
-            p.copyTemplate(p.ctx,
+        if (p.indexing === 'SQL') {
+            p.copyToConfig(
+                p.ctx,
                 'InfrastructureLayer/IndexingModule/indexing/ds-index-postgresql.properties',
-                'app/src/main/resources/ds-index-postgresql.properties');
+                'ds-index-postgresql.properties'
+            );
         }
-        if( p.indexing === 'Solr' ) {
-            p.copyTemplate(p.ctx,
+        if (p.indexing === 'Solr') {
+            p.copyToConfig(
+                p.ctx,
                 'InfrastructureLayer/IndexingModule/indexing/solrconfig.xml',
-                'app/src/main/resources/solrconfig.xml');
-            p.copyTemplate(p.ctx,
+                'solrconfig.xml'
+            );
+            p.copyTemplate(
+                p.ctx,
                 'InfrastructureLayer/IndexingModule/indexing/solr-schema.xml',
-                'app/src/main/resources/schema.xml');
+                'schema.xml'
+            );
         }
     }
 };

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/8393d863/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/storage/ds-es-postgresql.properties
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/storage/ds-es-postgresql.properties b/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/storage/ds-es-postgresql.properties
index 333d6aa..8e696f1 100644
--- a/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/storage/ds-es-postgresql.properties
+++ b/tools/generator-polygene/app/templates/InfrastructureLayer/StorageModule/storage/ds-es-postgresql.properties
@@ -18,7 +18,7 @@
 #
 #
 enabled=true
-url=jdbc:postgres://127.0.0.1:5432/<%= polygene.name %>
+url=jdbc:postgresql://127.0.0.1:5432/<%= polygene.name.toLowerCase() %>
 driver=org.postgresql.Driver
 username=polygene
 password=ThisIsGreat!

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/8393d863/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl b/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl
index 697a2b0..441cdec 100644
--- a/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl
+++ b/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl
@@ -53,7 +53,6 @@ if( hasFeature( 'security' ) ) {
 }
 %>  implementation "org.apache.polygene.core:org.apache.polygene.core.spi:$polygeneVersion"
   implementation "org.apache.polygene.core:org.apache.polygene.core.bootstrap:$polygeneVersion"
-
   implementation "org.apache.polygene.extensions:org.apache.polygene.extension.entitystore-<%= polygene.entitystoremodule.toLowerCase() %>:$polygeneVersion"
   implementation "org.apache.polygene.extensions:org.apache.polygene.extension.indexing-<%= polygene.indexing.toLowerCase() %>:$polygeneVersion"
   implementation "org.apache.polygene.extensions:org.apache.polygene.extension.serialization-javaxjson:$polygeneVersion"
@@ -71,32 +70,30 @@ if( hasFeature( 'envisage' ) ) {
 <%
 }
 if( polygene.entitystore == 'LevelDB'  ) {
-%>  implementation "org.fusesource.leveldbjni:leveldbjni-all:$levelDbVersion"
+%>  runtimeOnly "org.fusesource.leveldbjni:leveldbjni-all:$levelDbVersion"
 <%
 }
 if( polygene.entitystore == 'DerbySQL'  ) {
-%>  implementation "org.apache.derby:derby:$derbyVersion"
+%>  runtimeOnly "org.apache.derby:derby:$derbyVersion"
 <%
 }
 if( polygene.entitystore == 'H2SQL'  ) {
-%>  implementation "com.h2database:h2:$h2Version"
+%>  runtimeOnly "com.h2database:h2:$h2Version"
 <%
 }
 if( polygene.entitystore == 'MySQL'  ) {
-%>  implementation "mysql:mysql-connector-java:$mysqlVersion"
+%>  runtimeOnly "mysql:mysql-connector-java:$mysqlVersion"
 <%
 }
-if( polygene.entitystore == 'PostgreSQL'  ) {
-%>  implementation "org.postgresql:postgresql:$postgresVersion"
+if( polygene.entitystore == 'PostgreSQL' || polygene.indexing == 'SQL' ) {
+%>  runtimeOnly "org.postgresql:postgresql:$postgresVersion"
 <%
 }
 if( polygene.entitystore == 'SQLite'  ) {
-%>  implementation "org.xerial:sqlite-jdbc:$sqliteVersion"
+%>  runtimeOnly "org.xerial:sqlite-jdbc:$sqliteVersion"
 <%
 }
-%>
-
-  runtimeOnly "org.apache.polygene.core:org.apache.polygene.core.runtime:$polygeneVersion"
+%>  runtimeOnly "org.apache.polygene.core:org.apache.polygene.core.runtime:$polygeneVersion"
   runtimeOnly "org.apache.johnzon:johnzon-core:$johnzonVersion"
   runtimeOnly "org.apache.johnzon:johnzon-mapper:$johnzonVersion"
   runtimeOnly "org.apache.geronimo.specs:geronimo-json_1.1_spec:1.0"
@@ -107,22 +104,3 @@ if( polygene.entitystore == 'SQLite'  ) {
   testImplementation "org.apache.polygene.core:org.apache.polygene.core.testsupport:$polygeneVersion"
   testImplementation "com.github.tdomzal:junit-docker-rule:0.3"
 }
-
-
-task createConfigs {
-  def config = file("src/main/config")
-  outputs.dir config
-  doLast {
-    config.mkdirs()
-  }
-}
-
-distributions {
-  main {
-    contents {
-      from(createConfigs) {
-        into "config"
-      }
-    }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/8393d863/tools/generator-polygene/app/templates/buildtool/gradle-root.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/buildtool/gradle-root.tmpl b/tools/generator-polygene/app/templates/buildtool/gradle-root.tmpl
index 60dbb70..6d2a6bf 100644
--- a/tools/generator-polygene/app/templates/buildtool/gradle-root.tmpl
+++ b/tools/generator-polygene/app/templates/buildtool/gradle-root.tmpl
@@ -44,7 +44,7 @@ if( polygene.entitystore == 'MySQL'  ) {
 %>  mysqlVersion = "6.0.6"
 <%
 }
-if( polygene.entitystore == 'PostgreSQL'  ) {
+if( polygene.entitystore == 'PostgreSQL' || polygene.indexing == 'SQL' ) {
 %>  postgresVersion = "42.0.0"
 <%
 }


[40/50] polygene-java git commit: Forgot to assemble Shiro module

Posted by ni...@apache.org.
Forgot to assemble Shiro module


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/002fb1c7
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/002fb1c7
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/002fb1c7

Branch: refs/heads/es-jooq
Commit: 002fb1c7d61f53816c633fbec0ffdcef4fffa758
Parents: f838035
Author: niclas <ni...@hedhman.org>
Authored: Sun Jul 9 11:42:44 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jul 9 11:42:44 2017 +0800

----------------------------------------------------------------------
 .../templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl   | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/002fb1c7/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl b/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl
index 98fc77a..84c6226 100644
--- a/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl
@@ -62,7 +62,8 @@ public class HttpServerModule
     {
 <% if( hasFeature('security') ) {
 %>        new HttpShiroAssembler()
-            .withConfig( module, Visibility.module );
+            .withConfig( module, Visibility.module )
+            .assemble( module );
         module.forMixin( ShiroIniConfiguration.class ).declareDefaults().iniResourcePath().set("web-shiro.ini");
         new SecureJettyServiceAssembler()
             .withConfig( module, Visibility.layer )


[38/50] polygene-java git commit: Exclude txt files that are copied verbatim to generated project and should not have license headers.

Posted by ni...@apache.org.
Exclude txt files that are copied verbatim to generated project and should not have license headers.


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/0665d56d
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/0665d56d
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/0665d56d

Branch: refs/heads/es-jooq
Commit: 0665d56d6432800226196d9deb9b610661841c7e
Parents: bc0a510
Author: niclas <ni...@hedhman.org>
Authored: Sun Jul 9 11:03:39 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jul 9 11:03:39 2017 +0800

----------------------------------------------------------------------
 .../gradle/structure/distributions/DistributionsPlugin.groovy    | 4 ++++
 1 file changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0665d56d/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/distributions/DistributionsPlugin.groovy
----------------------------------------------------------------------
diff --git a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/distributions/DistributionsPlugin.groovy b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/distributions/DistributionsPlugin.groovy
index f6eee1f..1fa7936 100644
--- a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/distributions/DistributionsPlugin.groovy
+++ b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/distributions/DistributionsPlugin.groovy
@@ -165,6 +165,10 @@ class DistributionsPlugin implements Plugin<Project>
       spec.exclude '**/.nb-gradle/**'        // Netbeans files
       spec.exclude '**/.nb-gradle*'          // Netbeans files
 
+      // Polygene Generator files
+      spec.exclude '**/customUnixStartScript.txt'
+      spec.exclude '**/customWindowsStartScript.txt'
+
       spec.into '.'
     }
     def srcDistSupplementaryFilesCopySpec = project.copySpec { CopySpec spec ->


[13/50] polygene-java git commit: POLYGENE-255 - Fixed JMX problems in Command Line AppType in Yeoman generator.

Posted by ni...@apache.org.
POLYGENE-255 - Fixed JMX problems in Command Line AppType in Yeoman generator.

Signed-off-by: niclas <ni...@hedhman.org>


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/85a37fdc
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/85a37fdc
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/85a37fdc

Branch: refs/heads/es-jooq
Commit: 85a37fdc1c0724dffddf47a06205a1272815ddf6
Parents: 818df1a
Author: niclas <ni...@hedhman.org>
Authored: Sat Jun 17 09:26:41 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sat Jun 17 09:26:41 2017 +0800

----------------------------------------------------------------------
 .../templates/buildtool/gradle-bootstrap.tmpl   |  4 ++
 tools/generator-polygene/test/generator_test.js | 39 +++++++++++++-------
 2 files changed, 29 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/85a37fdc/tools/generator-polygene/app/templates/buildtool/gradle-bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/buildtool/gradle-bootstrap.tmpl b/tools/generator-polygene/app/templates/buildtool/gradle-bootstrap.tmpl
index 55b1c93..13085c0 100644
--- a/tools/generator-polygene/app/templates/buildtool/gradle-bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/buildtool/gradle-bootstrap.tmpl
@@ -55,6 +55,10 @@ if( polygene.caching !== "None" ) {
 %>  implementation "org.apache.polygene.extensions:org.apache.polygene.extension.metrics-<%= polygene.metrics.toLowerCase() %>:$polygeneVersion"
 <%
     }
+if( polygene.hasFeature('jmx' ) ) {
+%>  implementation "org.apache.polygene.libraries:org.apache.polygene.library.jmx:$polygeneVersion"
+<%
+    }
 if( polygene.hasFeature('envisage' ) ) {
 %>  implementation "org.apache.polygene.tools:org.apache.polygene.tool.envisage:$polygeneVersion"
 <% }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/85a37fdc/tools/generator-polygene/test/generator_test.js
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/test/generator_test.js b/tools/generator-polygene/test/generator_test.js
index 99f9bdb..1afd9a1 100644
--- a/tools/generator-polygene/test/generator_test.js
+++ b/tools/generator-polygene/test/generator_test.js
@@ -22,10 +22,13 @@ var assert = require('yeoman-assert');
 var shell = require('shelljs');
 
 //See http://yeoman.io/authoring/testing.html
+var restApiAppType = "Rest API";
+var commandLineAppType = "Command Line";
+var defaultAppType = restApiAppType;
 
 var appTypes = [
-    "Rest API",
-    'Command Line'
+    restApiAppType,
+    commandLineAppType
 ];
 
 var entityStores = [
@@ -70,17 +73,25 @@ var featuresset = [
     [],
     ['jmx'],
     ['mixin scripting'],
-    ['security'],
     ['jmx', 'mixin scripting'],
-    ['jmx', 'scripting'],
-    ['mixin scripting', 'scripting'],
-    ['jmx', 'mixin scripting', 'scripting']
+    ['security'],
+    ['jmx', 'security'],
+    ['mixin scripting', 'security'],
+    ['jmx', 'mixin scripting', 'security'],
+    ['envisage'],
+    ['jmx', 'envisage'],
+    ['mixin scripting', 'envisage'],
+    ['jmx', 'mixin scripting', 'envisage'],
+    ['security', 'envisage'],
+    ['jmx', 'security', 'envisage'],
+    ['mixin scripting', 'security', 'envisage'],
+    ['jmx', 'mixin scripting', 'security', 'envisage']
 ];
 
 // test with all defaults first.
 test();
 
-if(process.env.TEST_ALL === 'yes') {
+if (process.env.TEST_ALL === 'yes') {
     // All Tests !!!!
     appTypes.forEach(function (appType) {
         entityStores.forEach(function (entitystore) {
@@ -102,23 +113,23 @@ if(process.env.TEST_ALL === 'yes') {
     });
 
     entityStores.forEach(function (entityStore) {
-        test("Rest API", entityStore, "Rdf", "Memcache", "Codahale", "[]");
+        test(defaultAppType, entityStore, "Rdf", "Memcache", "Codahale", "[]");
     });
 
     indexings.forEach(function (indexing) {
-        test("Rest API", "Memory", indexing, "Memcache", "Codahale", "[]");
+        test(defaultAppType, "Memory", indexing, "Memcache", "Codahale", "[]");
     });
 
     cachings.forEach(function (caching) {
-        test("Rest API", "Memory", "Rdf", caching, "Codahale", "[]");
+        test(defaultAppType, "Memory", "Rdf", caching, "Codahale", "[]");
     });
 
     metricses.forEach(function (metrics) {
-        test("Rest API", "Memory", "Rdf", "Memcache", metrics, "[]");
+        test(defaultAppType, "Memory", "Rdf", "Memcache", metrics, "[]");
     });
 
     featuresset.forEach(function (feature) {
-        test("Rest API", "Memory", "Rdf", "Memcache", "Codahale", feature);
+        test(defaultAppType, "Memory", "Rdf", "Memcache", "Codahale", feature);
     });
 }
 
@@ -129,13 +140,13 @@ function test(appType, entityStore, indexing, caching, metrics, features) {
             + indexing + ' Indexing - '
             + caching + ' Caching - '
             + metrics + ' Metrics';
-        if(features && features.length > 0) {
+        if (features && features.length > 0) {
             testName += ' - ' + features.toString().replace(new RegExp(',', 'g'), ' - ');
         }
         var testDirName = testName.replace(new RegExp(' - ', 'g'), '_').replace(new RegExp(' ', 'g'), '_');
         it(testName,
             function () {
-                console.log( "\n\nTest: " + testName );
+                console.log("\n\nTest: " + testName);
                 this.timeout(60000);
                 return helpers.run(path.join(__dirname, '../app'))
                     .inDir(path.join(__dirname, '../build/npm-test/' + testDirName))


[07/50] polygene-java git commit: Upgrade Gradle to 4.0

Posted by ni...@apache.org.
Upgrade Gradle to 4.0

And remove usage of deprecated Gradle APIs


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

Branch: refs/heads/es-jooq
Commit: b950fd9262af1fbf645b007f39aff44893f8fed8
Parents: df5fd8a
Author: Paul Merlin <pa...@apache.org>
Authored: Thu Jun 15 10:54:57 2017 +0200
Committer: Paul Merlin <pa...@apache.org>
Committed: Thu Jun 15 10:54:57 2017 +0200

----------------------------------------------------------------------
 .../reports/AggregatedJacocoReportTask.groovy   |   2 +-
 .../tests/PerformanceTestsPlugin.groovy         |   2 +-
 dependencies.gradle                             |   2 +-
 gradle/wrapper/gradle-wrapper.jar               | Bin 54416 -> 54706 bytes
 gradle/wrapper/gradle-wrapper.properties        |   2 +-
 libraries/http/build.gradle                     |   2 +-
 6 files changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b950fd92/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/reports/AggregatedJacocoReportTask.groovy
----------------------------------------------------------------------
diff --git a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/reports/AggregatedJacocoReportTask.groovy b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/reports/AggregatedJacocoReportTask.groovy
index ba1b8f2..5b7232e 100644
--- a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/reports/AggregatedJacocoReportTask.groovy
+++ b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/reports/AggregatedJacocoReportTask.groovy
@@ -66,7 +66,7 @@ class AggregatedJacocoReportTask extends DefaultTask
       sourceDirs.findAll { it.directory }.collect { it.absolutePath }
     }
     def classesDirsOf = { List<SourceSet> sourceSets ->
-      def classesDirs = sourceSets.collect { it.output.classesDir } as List<File>
+      def classesDirs = sourceSets.collect { it.output.classesDirs.files }.flatten() as List<File>
       classesDirs.findAll { it.directory }.collect { it.absolutePath }
     }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b950fd92/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/tests/PerformanceTestsPlugin.groovy
----------------------------------------------------------------------
diff --git a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/tests/PerformanceTestsPlugin.groovy b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/tests/PerformanceTestsPlugin.groovy
index 3b10b2f..48db0ad 100644
--- a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/tests/PerformanceTestsPlugin.groovy
+++ b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/tests/PerformanceTestsPlugin.groovy
@@ -54,7 +54,7 @@ class PerformanceTestsPlugin implements Plugin<Project>
       task.description = 'Runs performance tests.'
       task.maxParallelForks = 1
       task.forkEvery = 1L
-      task.testClassesDir = sourceSets.getByName( 'perf' ).output.classesDir
+      task.testClassesDirs = sourceSets.getByName( 'perf' ).output.classesDirs
       task.classpath = sourceSets.getByName( 'perf' ).runtimeClasspath
       task.systemProperty 'jar.path', ( project.tasks.getByName( 'jar' ) as Jar ).archivePath
     } as Action<Test> )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b950fd92/dependencies.gradle
----------------------------------------------------------------------
diff --git a/dependencies.gradle b/dependencies.gradle
index d75e937..3c6bfaf 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -20,7 +20,7 @@ import org.apache.polygene.gradle.dependencies.DependenciesDeclarationExtension
 def dependencies = extensions.getByType( DependenciesDeclarationExtension )
 
 // Gradle version
-dependencies.gradleVersion = '3.5'
+dependencies.gradleVersion = '4.0'
 
 // Remote repositories
 dependencies.repositoriesUrls << [

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b950fd92/gradle/wrapper/gradle-wrapper.jar
----------------------------------------------------------------------
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index f662fc6..7536313 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b950fd92/gradle/wrapper/gradle-wrapper.properties
----------------------------------------------------------------------
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 2271d9f..125e44b 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -20,5 +20,5 @@ distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.0-all.zip
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b950fd92/libraries/http/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/http/build.gradle b/libraries/http/build.gradle
index 6002d53..651249b 100644
--- a/libraries/http/build.gradle
+++ b/libraries/http/build.gradle
@@ -76,7 +76,7 @@ if( JavaVersion.current() < JavaVersion.VERSION_1_9 )
     {
       enabled = false
     }
-    testClassesDir = sourceSets.vhostTest.output.classesDir
+    testClassesDirs = sourceSets.vhostTest.output.classesDirs
     classpath = sourceSets.vhostTest.runtimeClasspath
     systemProperties 'networkaddress.cache.ttl': '0'
     systemProperties 'sun.net.spi.nameservice.provider.1': 'dns,LocalManagedDns'


[10/50] polygene-java git commit: POLYGENE-260 - Fixed the "duplicate should be allowed" for ManyAssociations. POLYGENE-261 - Documentation of "No order is defined" for NamedAssociation Changed StringIdentity creation to use static factory method, and ch

Posted by ni...@apache.org.
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-hazelcast/src/test/java/org/apache/polygene/entitystore/hazelcast/HazelcastEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-hazelcast/src/test/java/org/apache/polygene/entitystore/hazelcast/HazelcastEntityStoreTestSuite.java b/extensions/entitystore-hazelcast/src/test/java/org/apache/polygene/entitystore/hazelcast/HazelcastEntityStoreTestSuite.java
new file mode 100644
index 0000000..346f0ea
--- /dev/null
+++ b/extensions/entitystore-hazelcast/src/test/java/org/apache/polygene/entitystore/hazelcast/HazelcastEntityStoreTestSuite.java
@@ -0,0 +1,48 @@
+/*
+ *  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.entitystore.hazelcast;
+
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.hazelcast.assembly.HazelcastEntityStoreAssembler;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.junit.After;
+
+public class HazelcastEntityStoreTestSuite extends EntityStoreTestSuite
+{
+    @Override
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        new HazelcastEntityStoreAssembler()
+            .visibleIn( Visibility.application )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+    }
+
+    @After
+    @Override
+    public void tearDown()
+        throws Exception
+    {
+        super.tearDown();
+        // TODO : delete test data
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsFilesystemTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsFilesystemTestSuite.java b/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsFilesystemTestSuite.java
new file mode 100644
index 0000000..d1eeb88
--- /dev/null
+++ b/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsFilesystemTestSuite.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.entitystore.jclouds;
+
+import java.util.Collections;
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.jclouds.assembly.JCloudsEntityStoreAssembler;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.jclouds.filesystem.reference.FilesystemConstants;
+import org.junit.Rule;
+import org.junit.rules.TemporaryFolder;
+
+public class JCloudsFilesystemTestSuite extends EntityStoreTestSuite
+{
+    @Rule
+    public TemporaryFolder tmpDir = new TemporaryFolder();
+
+    @Override
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        new JCloudsEntityStoreAssembler()
+            .visibleIn( Visibility.application )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+
+        JCloudsEntityStoreConfiguration defaults = configModule.forMixin( JCloudsEntityStoreConfiguration.class )
+                                                               .declareDefaults();
+        defaults.provider().set( "filesystem" );
+        defaults.properties().set( Collections.singletonMap( FilesystemConstants.PROPERTY_BASEDIR,
+                                                             tmpDir.getRoot().getAbsolutePath() ) );
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsS3TestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsS3TestSuite.java b/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsS3TestSuite.java
new file mode 100644
index 0000000..1b43c7d
--- /dev/null
+++ b/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsS3TestSuite.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.entitystore.jclouds;
+
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.jclouds.assembly.JCloudsEntityStoreAssembler;
+import org.apache.polygene.test.docker.DockerRule;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.junit.ClassRule;
+
+public class JCloudsS3TestSuite extends EntityStoreTestSuite
+{
+    @ClassRule
+    public static final DockerRule DOCKER = new DockerRule( "s3server", "server started" );
+
+    @Override
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        new JCloudsEntityStoreAssembler()
+            .visibleIn( Visibility.application )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+
+        JCloudsEntityStoreConfiguration defaults =
+            configModule.forMixin( JCloudsEntityStoreConfiguration.class ).declareDefaults();
+
+        String host = DOCKER.getDockerHost();
+        int port = DOCKER.getExposedContainerPort( "8000/tcp" );
+        defaults.provider().set( "s3" );
+        defaults.endpoint().set( "http://" + host + ':' + port );
+        defaults.identifier().set( "dummyIdentifier" );
+        defaults.credential().set( "dummyCredential" );
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsTransientTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsTransientTestSuite.java b/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsTransientTestSuite.java
new file mode 100644
index 0000000..186d7f0
--- /dev/null
+++ b/extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsTransientTestSuite.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.entitystore.jclouds;
+
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.jclouds.assembly.JCloudsEntityStoreAssembler;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+
+public class JCloudsTransientTestSuite extends EntityStoreTestSuite
+{
+    @Override
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        new JCloudsEntityStoreAssembler()
+            .visibleIn( Visibility.application )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreTestSuite.java b/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreTestSuite.java
index 597bfe3..959c83f 100644
--- a/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreTestSuite.java
+++ b/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreTestSuite.java
@@ -32,7 +32,6 @@ public class JdbmEntityStoreTestSuite extends EntityStoreTestSuite
 {
     @Rule
     public final TemporaryFolder tmpDir = new TemporaryFolder();
-    private ModuleAssembly configModule;
 
     @Override
     protected void defineStorageModule( ModuleAssembly module )
@@ -45,11 +44,4 @@ public class JdbmEntityStoreTestSuite extends EntityStoreTestSuite
                                       .withConfig( configModule, Visibility.application )
                                       .assemble( module );
     }
-
-    @Override
-    protected void defineConfigModule( ModuleAssembly module )
-    {
-        configModule = module;
-        super.defineConfigModule( module );
-    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JavaLevelDBEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JavaLevelDBEntityStoreTestSuite.java b/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JavaLevelDBEntityStoreTestSuite.java
new file mode 100644
index 0000000..70c8929
--- /dev/null
+++ b/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JavaLevelDBEntityStoreTestSuite.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.entitystore.leveldb;
+
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.leveldb.assembly.LevelDBEntityStoreAssembler;
+import org.apache.polygene.library.fileconfig.FileConfigurationAssembler;
+import org.apache.polygene.library.fileconfig.FileConfigurationOverride;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.junit.Rule;
+import org.junit.rules.TemporaryFolder;
+
+public class JavaLevelDBEntityStoreTestSuite extends EntityStoreTestSuite
+{
+    @Rule
+    public final TemporaryFolder tmpDir = new TemporaryFolder();
+
+    @Override
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        new FileConfigurationAssembler()
+            .withOverride( new FileConfigurationOverride().withConventionalRoot( tmpDir.getRoot() ) )
+            .assemble( module );
+
+        new LevelDBEntityStoreAssembler()
+            .visibleIn( Visibility.application )
+            .withConfig( configModule, Visibility.application )
+            .identifiedBy( "java-leveldb-entitystore" )
+            .assemble( module );
+
+        configModule.forMixin( LevelDBEntityStoreConfiguration.class ).declareDefaults().flavour().set( "java" );
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JniLevelDBEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JniLevelDBEntityStoreTest.java b/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JniLevelDBEntityStoreTest.java
index 08177e1..c072f4d 100644
--- a/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JniLevelDBEntityStoreTest.java
+++ b/extensions/entitystore-leveldb/src/test/java/org/apache/polygene/entitystore/leveldb/JniLevelDBEntityStoreTest.java
@@ -20,40 +20,33 @@
 package org.apache.polygene.entitystore.leveldb;
 
 import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.leveldb.assembly.LevelDBEntityStoreAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationAssembler;
 import org.apache.polygene.library.fileconfig.FileConfigurationOverride;
-import org.apache.polygene.test.EntityTestAssembler;
-import org.apache.polygene.test.entity.AbstractEntityStoreTest;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
 import org.junit.Rule;
 import org.junit.rules.TemporaryFolder;
 
-public class JniLevelDBEntityStoreTest
-    extends AbstractEntityStoreTest
+public class JniLevelDBEntityStoreTest extends EntityStoreTestSuite
 {
     @Rule
     public final TemporaryFolder tmpDir = new TemporaryFolder();
 
     @Override
-    public void assemble( ModuleAssembly module )
-        throws AssemblyException
+    protected void defineStorageModule( ModuleAssembly module )
     {
-        super.assemble( module );
-
-        ModuleAssembly config = module.layer().module( "config" );
-        new EntityTestAssembler().defaultServicesVisibleIn( Visibility.layer ).assemble( config );
-
+        module.defaultServices();
         new FileConfigurationAssembler()
             .withOverride( new FileConfigurationOverride().withConventionalRoot( tmpDir.getRoot() ) )
             .assemble( module );
 
         new LevelDBEntityStoreAssembler()
-            .withConfig( config, Visibility.layer )
+            .visibleIn( Visibility.application )
+            .withConfig( configModule, Visibility.application )
             .identifiedBy( "jni-leveldb-entitystore" )
             .assemble( module );
 
-        config.forMixin( LevelDBEntityStoreConfiguration.class ).declareDefaults().flavour().set( "jni" );
+        configModule.forMixin( LevelDBEntityStoreConfiguration.class ).declareDefaults().flavour().set( "jni" );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-memory/src/test/java/org/apache/polygene/entitystore/memory/MemoryEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-memory/src/test/java/org/apache/polygene/entitystore/memory/MemoryEntityStoreTestSuite.java b/extensions/entitystore-memory/src/test/java/org/apache/polygene/entitystore/memory/MemoryEntityStoreTestSuite.java
new file mode 100644
index 0000000..01d4b33
--- /dev/null
+++ b/extensions/entitystore-memory/src/test/java/org/apache/polygene/entitystore/memory/MemoryEntityStoreTestSuite.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.entitystore.memory;
+
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.memory.assembly.MemoryEntityStoreAssembler;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+
+public class MemoryEntityStoreTestSuite extends EntityStoreTestSuite
+{
+    @Override
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        new MemoryEntityStoreAssembler()
+            .visibleIn( Visibility.application )
+            .assemble( module );
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/EmbedMongoDBMapEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/EmbedMongoDBMapEntityStoreTestSuite.java b/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/EmbedMongoDBMapEntityStoreTestSuite.java
new file mode 100644
index 0000000..57c1e16
--- /dev/null
+++ b/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/EmbedMongoDBMapEntityStoreTestSuite.java
@@ -0,0 +1,84 @@
+/*
+ *  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.entitystore.mongodb;
+
+import de.flapdoodle.embed.mongo.MongodExecutable;
+import de.flapdoodle.embed.mongo.MongodStarter;
+import de.flapdoodle.embed.mongo.config.MongodConfigBuilder;
+import de.flapdoodle.embed.mongo.config.Net;
+import de.flapdoodle.embed.mongo.distribution.Version;
+import de.flapdoodle.embed.process.runtime.Network;
+import java.io.IOException;
+import java.util.Collections;
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.mongodb.assembly.MongoDBEntityStoreAssembler;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.apache.polygene.test.util.FreePortFinder;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.rules.TestName;
+
+public class EmbedMongoDBMapEntityStoreTestSuite extends EntityStoreTestSuite
+{
+    private static final MongodStarter MONGO_STARTER = MongodStarter.getDefaultInstance();
+
+    @Rule
+    public TestName testName = new TestName();
+    private static int port;
+    private static MongodExecutable mongod;
+
+    @BeforeClass
+    public static void startEmbedMongo()
+        throws IOException
+    {
+        port = FreePortFinder.findFreePortOnLoopback();
+        mongod = MONGO_STARTER.prepare( new MongodConfigBuilder()
+                                            .version( Version.Main.PRODUCTION )
+                                            .net( new Net( "localhost", port, Network.localhostIsIPv6() ) )
+                                            .build() );
+        mongod.start();
+    }
+
+    @AfterClass
+    public static void stopEmbedMongo()
+    {
+        if( mongod != null )
+        {
+            mongod.stop();
+        }
+    }
+
+    @Override
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        new MongoDBEntityStoreAssembler()
+            .visibleIn( Visibility.application )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+
+        MongoDBEntityStoreConfiguration mongoConfig = configModule.forMixin( MongoDBEntityStoreConfiguration.class )
+                                                                  .declareDefaults();
+        mongoConfig.writeConcern().set( MongoDBEntityStoreConfiguration.WriteConcern.MAJORITY );
+        mongoConfig.database().set( "polygene-test" );
+        mongoConfig.collection().set( testName.getMethodName() );
+        mongoConfig.nodes().set( Collections.singletonList( "localhost:" + port ) );
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTestSuite.java b/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTestSuite.java
new file mode 100644
index 0000000..109ff43
--- /dev/null
+++ b/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTestSuite.java
@@ -0,0 +1,77 @@
+/*
+ *  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.entitystore.mongodb;
+
+import com.mongodb.Mongo;
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.api.structure.Module;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.mongodb.assembly.MongoDBEntityStoreAssembler;
+import org.apache.polygene.test.docker.DockerRule;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.junit.ClassRule;
+
+/**
+ * Test the MongoDBEntityStoreService.
+ */
+public class MongoDBEntityStoreTestSuite extends EntityStoreTestSuite
+{
+    @ClassRule
+    public static final DockerRule DOCKER = new DockerRule( "mongo", 27017 );
+
+    @Override
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        new MongoDBEntityStoreAssembler()
+            .visibleIn( Visibility.application )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+
+        MongoDBEntityStoreConfiguration mongoConfig = configModule.forMixin( MongoDBEntityStoreConfiguration.class ).declareDefaults();
+        mongoConfig.writeConcern().set( MongoDBEntityStoreConfiguration.WriteConcern.MAJORITY );
+        mongoConfig.database().set( "polygene:test" );
+        mongoConfig.collection().set( "polygene:test:entities" );
+        mongoConfig.hostname().set( DOCKER.getDockerHost() );
+        mongoConfig.port().set( DOCKER.getExposedContainerPort( "27017/tcp" ) );
+    }
+
+    private Mongo mongo;
+    private String dbName;
+
+    @Override
+    public void setUp()
+        throws Exception
+    {
+        super.setUp();
+        Module storageModule = application.findModule( "Infrastructure Layer", "Storage Module" );
+        MongoDBEntityStoreService es = storageModule.serviceFinder().findService( MongoDBEntityStoreService.class ).get();
+        mongo = es.mongoInstanceUsed();
+        dbName = es.dbInstanceUsed().getName();
+    }
+
+    @Override
+    public void tearDown()
+        throws Exception
+    {
+        mongo.dropDatabase( dbName );
+        super.tearDown();
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-preferences/src/main/java/org/apache/polygene/entitystore/preferences/assembly/PreferencesEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-preferences/src/main/java/org/apache/polygene/entitystore/preferences/assembly/PreferencesEntityStoreAssembler.java b/extensions/entitystore-preferences/src/main/java/org/apache/polygene/entitystore/preferences/assembly/PreferencesEntityStoreAssembler.java
index 1020216..f3b0de5 100644
--- a/extensions/entitystore-preferences/src/main/java/org/apache/polygene/entitystore/preferences/assembly/PreferencesEntityStoreAssembler.java
+++ b/extensions/entitystore-preferences/src/main/java/org/apache/polygene/entitystore/preferences/assembly/PreferencesEntityStoreAssembler.java
@@ -26,8 +26,7 @@ import org.apache.polygene.bootstrap.ServiceDeclaration;
 import org.apache.polygene.entitystore.preferences.PreferencesEntityStoreInfo;
 import org.apache.polygene.entitystore.preferences.PreferencesEntityStoreService;
 
-public class PreferencesEntityStoreAssembler
-    extends Assemblers.VisibilityIdentityConfig<PreferencesEntityStoreAssembler>
+public class PreferencesEntityStoreAssembler extends Assemblers.VisibilityIdentityConfig<PreferencesEntityStoreAssembler>
 {
     @Override
     public void assemble( ModuleAssembly module )
@@ -38,9 +37,9 @@ public class PreferencesEntityStoreAssembler
         Preferences node = root.node( applicationName );
         PreferencesEntityStoreInfo info = new PreferencesEntityStoreInfo( node );
         ServiceDeclaration service = module.services( PreferencesEntityStoreService.class )
-            .setMetaInfo( info )
-            .visibleIn( visibility() )
-            .instantiateOnStartup();
+                                           .setMetaInfo( info )
+                                           .visibleIn( visibility() )
+                                           .instantiateOnStartup();
         if( hasIdentity() )
         {
             service.identifiedBy( identity() );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-preferences/src/test/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-preferences/src/test/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreTestSuite.java b/extensions/entitystore-preferences/src/test/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreTestSuite.java
new file mode 100644
index 0000000..4ca18b4
--- /dev/null
+++ b/extensions/entitystore-preferences/src/test/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreTestSuite.java
@@ -0,0 +1,56 @@
+/*
+ *  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.entitystore.preferences;
+
+import java.util.prefs.BackingStoreException;
+import java.util.prefs.Preferences;
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.preferences.assembly.PreferencesEntityStoreAssembler;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.junit.After;
+import org.junit.Rule;
+import org.junit.rules.TemporaryFolder;
+
+public class PreferencesEntityStoreTestSuite extends EntityStoreTestSuite
+{
+    @Rule
+    public TemporaryFolder tmpDir = new TemporaryFolder();
+    private Preferences rootNode;
+
+    @Override
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        String applicationName = module.layer().application().name();
+        rootNode = Preferences.userRoot().node( applicationName );
+
+        new PreferencesEntityStoreAssembler()
+            .visibleIn( Visibility.application )
+            .assemble( module );
+    }
+
+    @After
+    public void tearDown()
+        throws BackingStoreException
+    {
+        rootNode.removeNode();
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTestSuite.java b/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTestSuite.java
new file mode 100644
index 0000000..6ae99a1
--- /dev/null
+++ b/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTestSuite.java
@@ -0,0 +1,74 @@
+/*
+ *  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.entitystore.redis;
+
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.api.structure.Module;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.redis.assembly.RedisEntityStoreAssembler;
+import org.apache.polygene.test.docker.DockerRule;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.junit.ClassRule;
+import redis.clients.jedis.Jedis;
+import redis.clients.jedis.JedisPool;
+
+public class RedisEntityStoreTestSuite extends EntityStoreTestSuite
+{
+    @ClassRule
+    public static final DockerRule DOCKER = new DockerRule( "redis", 6379 );
+
+    @Override
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        new RedisEntityStoreAssembler()
+            .visibleIn( Visibility.application )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+
+        RedisEntityStoreConfiguration redisConfig = configModule.forMixin( RedisEntityStoreConfiguration.class )
+                                                                .declareDefaults();
+        redisConfig.host().set( DOCKER.getDockerHost() );
+        redisConfig.port().set( DOCKER.getExposedContainerPort( "6379/tcp" ) );
+    }
+
+    private JedisPool jedisPool;
+
+    @Override
+    public void setUp()
+        throws Exception
+    {
+        super.setUp();
+        Module storageModule = application.findModule( "Infrastructure Layer", "Storage Module" );
+        RedisEntityStoreService es = storageModule.findService( RedisEntityStoreService.class ).get();
+        jedisPool = es.jedisPool();
+    }
+
+    @Override
+    public void tearDown()
+        throws Exception
+    {
+        try( Jedis jedis = jedisPool.getResource() )
+        {
+            jedis.flushDB();
+        }
+        super.tearDown();
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakEntityStoreTestSuite.java b/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakEntityStoreTestSuite.java
new file mode 100644
index 0000000..14828ff
--- /dev/null
+++ b/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakEntityStoreTestSuite.java
@@ -0,0 +1,70 @@
+/*
+ *  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.entitystore.riak;
+
+import java.util.Collections;
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.api.structure.Module;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.riak.assembly.RiakEntityStoreAssembler;
+import org.apache.polygene.test.docker.DockerRule;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.junit.ClassRule;
+
+public class RiakEntityStoreTestSuite extends EntityStoreTestSuite
+{
+    @ClassRule
+    public static final DockerRule DOCKER = new DockerRule( "riak", "riak_auth_mods started on node" );
+
+    private RiakFixture riakFixture;
+
+    @Override
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        new RiakEntityStoreAssembler()
+            .visibleIn( Visibility.application )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+
+        RiakEntityStoreConfiguration riakConfig = configModule.forMixin( RiakEntityStoreConfiguration.class )
+                                                              .declareDefaults();
+        String host = DOCKER.getDockerHost();
+        int port = DOCKER.getExposedContainerPort( "8087/tcp" );
+        riakConfig.hosts().set( Collections.singletonList( host + ':' + port ) );
+    }
+
+    @Override
+    public void tearDown()
+        throws Exception
+    {
+        riakFixture.deleteTestData();
+        super.tearDown();
+    }
+
+    @Override
+    public void setUp()
+        throws Exception
+    {
+        super.setUp();
+        Module storageModule = application.findModule( "Infrastructure Layer", "Storage Module" );
+        RiakEntityStoreService es = storageModule.findService( RiakEntityStoreService.class ).get();
+        riakFixture = new RiakFixture( es.riakClient(), es.riakNamespace() );
+        riakFixture.waitUntilReady();
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java b/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java
index 6a41cea..c25a3cd 100644
--- a/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java
+++ b/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java
@@ -36,7 +36,7 @@ import org.jooq.conf.Settings;
 public abstract class AbstractSQLEntityStoreAssembler<AssemblerType>
     extends Assemblers.VisibilityIdentityConfig<AssemblerType>
 {
-    public static final Identity DEFAULT_ENTITYSTORE_IDENTITY = StringIdentity.identity( "entitystore-sql" );
+    public static final Identity DEFAULT_ENTITYSTORE_IDENTITY = StringIdentity.identityOf( "entitystore-sql" );
     private static final String DEFAULT_CHANGELOG_PATH = "org/apache/polygene/entitystore/sql/changelog.xml";
 
     private String changelogPath = DEFAULT_CHANGELOG_PATH;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTestSuite.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTestSuite.java
new file mode 100644
index 0000000..7fbfb2a
--- /dev/null
+++ b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTestSuite.java
@@ -0,0 +1,94 @@
+/*
+ *  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.entitystore.sql;
+
+import java.sql.Connection;
+import java.sql.Statement;
+import javax.sql.DataSource;
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.api.structure.Module;
+import org.apache.polygene.api.unitofwork.UnitOfWork;
+import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
+import org.apache.polygene.api.usecase.UsecaseBuilder;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.sql.assembly.DerbySQLEntityStoreAssembler;
+import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
+import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+
+import static org.apache.polygene.entitystore.sql.assembly.DerbySQLEntityStoreAssembler.DEFAULT_ENTITYSTORE_IDENTITY;
+
+public class DerbySQLEntityStoreTestSuite extends EntityStoreTestSuite
+{
+    @Override
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        // DataSourceService
+        new DBCPDataSourceServiceAssembler()
+            .identifiedBy( "derby-datasource-service" )
+            .visibleIn( Visibility.module )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+
+        // DataSource
+        new DataSourceAssembler()
+            .withDataSourceServiceIdentity( "derby-datasource-service" )
+            .identifiedBy( "derby-datasource" )
+            .visibleIn( Visibility.module )
+            .withCircuitBreaker()
+            .assemble( module );
+
+        // SQL EntityStore
+        new DerbySQLEntityStoreAssembler()
+            .visibleIn( Visibility.application )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+    }
+
+    @Override
+    public void tearDown()
+        throws Exception
+    {
+        Module storageModule = application.findModule( "Infrastructure Layer","Storage Module" );
+        UnitOfWorkFactory uowf = storageModule.unitOfWorkFactory();
+        UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase(
+            "Delete " + getClass().getSimpleName() + " test data" ) );
+        try
+        {
+            SQLEntityStoreConfiguration config = uow.get( SQLEntityStoreConfiguration.class,
+                                                          DEFAULT_ENTITYSTORE_IDENTITY );
+            Connection connection = storageModule.serviceFinder().findService( DataSource.class ).get().getConnection();
+            connection.setAutoCommit( false );
+            try( Statement stmt = connection.createStatement() )
+            {
+                stmt.execute( String.format( "DELETE FROM %s.%s",
+                                             config.schemaName().get(),
+                                             config.entityTableName().get() ) );
+                connection.commit();
+            }
+        }
+        finally
+        {
+            uow.discard();
+            super.tearDown();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTestSuite.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTestSuite.java
new file mode 100644
index 0000000..f763238
--- /dev/null
+++ b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTestSuite.java
@@ -0,0 +1,56 @@
+/*
+ *  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.entitystore.sql;
+
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.sql.assembly.H2SQLEntityStoreAssembler;
+import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
+import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+
+public class H2SQLEntityStoreTestSuite extends EntityStoreTestSuite
+{
+    @Override
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        // DataSourceService
+        new DBCPDataSourceServiceAssembler()
+            .identifiedBy( "h2-datasource-service" )
+            .visibleIn( Visibility.module )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+
+        // DataSource
+        new DataSourceAssembler()
+            .withDataSourceServiceIdentity( "h2-datasource-service" )
+            .identifiedBy( "h2-datasource" )
+            .visibleIn( Visibility.module )
+            .withCircuitBreaker()
+            .assemble( module );
+
+        // SQL EntityStore
+        new H2SQLEntityStoreAssembler()
+            .visibleIn( Visibility.application )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MySQLEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MySQLEntityStoreTestSuite.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MySQLEntityStoreTestSuite.java
new file mode 100644
index 0000000..e2b0564
--- /dev/null
+++ b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MySQLEntityStoreTestSuite.java
@@ -0,0 +1,122 @@
+/*
+ *  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.entitystore.sql;
+
+import java.sql.Connection;
+import java.sql.Statement;
+import java.util.HashMap;
+import javax.sql.DataSource;
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.api.service.ServiceFinder;
+import org.apache.polygene.api.structure.Module;
+import org.apache.polygene.api.unitofwork.UnitOfWork;
+import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
+import org.apache.polygene.api.usecase.UsecaseBuilder;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.sql.assembly.MySQLEntityStoreAssembler;
+import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
+import org.apache.polygene.library.sql.datasource.DataSourceConfiguration;
+import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
+import org.apache.polygene.test.docker.DockerRule;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.junit.ClassRule;
+
+import static org.apache.polygene.entitystore.sql.assembly.MySQLEntityStoreAssembler.DEFAULT_ENTITYSTORE_IDENTITY;
+
+public class MySQLEntityStoreTestSuite extends EntityStoreTestSuite
+{
+    @ClassRule
+    public static final DockerRule DOCKER = new DockerRule(
+        "mysql",
+        new HashMap<String, String>()
+        {{
+            put( "MYSQL_ROOT_PASSWORD", "" );
+            put( "MYSQL_ALLOW_EMPTY_PASSWORD", "yes" );
+            put( "MYSQL_DATABASE", "jdbc_test_db" );
+            put( "MYSQL_ROOT_HOST", "172.17.0.1" );
+        }},
+        30000L
+//        , "mysqld: ready for connections"   TODO: add this after next release of tdomzal/junit-docker-rule
+    );
+
+    @Override
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        // DataSourceService
+        new DBCPDataSourceServiceAssembler()
+            .identifiedBy( "mysql-datasource-service" )
+            .visibleIn( Visibility.module )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+
+        // DataSource
+        new DataSourceAssembler()
+            .withDataSourceServiceIdentity( "mysql-datasource-service" )
+            .identifiedBy( "mysql-datasource" )
+            .visibleIn( Visibility.module )
+            .withCircuitBreaker()
+            .assemble( module );
+
+        // SQL EntityStore
+        new MySQLEntityStoreAssembler()
+            .visibleIn( Visibility.application )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+
+        String mysqlHost = DOCKER.getDockerHost();
+        int mysqlPort = DOCKER.getExposedContainerPort( "3306/tcp" );
+        configModule.forMixin( DataSourceConfiguration.class ).declareDefaults()
+                    .url().set( "jdbc:mysql://" + mysqlHost + ":" + mysqlPort
+                                + "/jdbc_test_db?profileSQL=false&useLegacyDatetimeCode=false&serverTimezone=UTC"
+                                + "&nullCatalogMeansCurrent=true&nullNamePatternMatchesAll=true" );
+    }
+
+    @Override
+    public void tearDown()
+        throws Exception
+    {
+        Module storageModule = application.findModule( "Infrastructure Layer", "Storage Module" );
+        UnitOfWorkFactory uowf = storageModule.unitOfWorkFactory();
+        ServiceFinder serviceFinder = storageModule.serviceFinder();
+        UnitOfWork uow = uowf.newUnitOfWork(
+            UsecaseBuilder.newUsecase( "Delete " + getClass().getSimpleName() + " test data" )
+                                                             );
+        try
+        {
+            Connection connection = serviceFinder.findService( DataSource.class ).get().getConnection();
+            SQLEntityStoreConfiguration configuration = uow.get( SQLEntityStoreConfiguration.class,
+                                                                 DEFAULT_ENTITYSTORE_IDENTITY );
+            connection.setAutoCommit( false );
+            try( Statement stmt = connection.createStatement() )
+            {
+                stmt.execute( String.format( "TRUNCATE %s.%s",
+                                             configuration.schemaName().get(),
+                                             configuration.entityTableName().get() ) );
+                connection.commit();
+            }
+        }
+        finally
+        {
+            uow.discard();
+            super.tearDown();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/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 d3342b8..daa9949 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
@@ -39,40 +39,6 @@ import org.junit.ClassRule;
 
 import static org.apache.polygene.entitystore.sql.assembly.PostgreSQLEntityStoreAssembler.DEFAULT_ENTITYSTORE_IDENTITY;
 
-/**
- * WARN This test run only if localhost:5432 is listening.
- *
- * To run it you need to have a user & database set up in postgresql. Here are two snippets to create and drop the
- * needed test environment.
- *
- * Use 'password' as password for the jdbc_test_login user.
- *
- * Eventually create a database cluster:
- *
- * <pre>
- * initdb -D /usr/local/pgsql/data
- * </pre>
- *
- * Start PostgreSQL. Then, create test user and database:
- *
- * <pre>
- * createuser -A -D -P -E -W jdbc_test_login
- * createdb -O jdbc_test_login -W jdbc_test_db
- * </pre>
- *
- * To clear the data:
- *
- * <pre>
- * dropdb -W jdbc_test_db
- * createdb -O jdbc_test_login -W jdbc_test_db
- * </pre>
- *
- * To remove the test user:
- *
- * <pre>
- * dropuser -W jdbc_test_login
- * </pre>
- */
 public class PostgreSQLEntityStoreTest
     extends AbstractEntityStoreTest
 {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTestSuite.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTestSuite.java
new file mode 100644
index 0000000..d1dd952
--- /dev/null
+++ b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTestSuite.java
@@ -0,0 +1,111 @@
+/*
+ *  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.entitystore.sql;
+
+import java.sql.Connection;
+import java.sql.Statement;
+import javax.sql.DataSource;
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.api.service.ServiceFinder;
+import org.apache.polygene.api.structure.Module;
+import org.apache.polygene.api.unitofwork.UnitOfWork;
+import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
+import org.apache.polygene.api.usecase.UsecaseBuilder;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.sql.assembly.PostgreSQLEntityStoreAssembler;
+import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
+import org.apache.polygene.library.sql.common.SQLConfiguration;
+import org.apache.polygene.library.sql.datasource.DataSourceConfiguration;
+import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
+import org.apache.polygene.test.docker.DockerRule;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.junit.ClassRule;
+
+import static org.apache.polygene.entitystore.sql.assembly.PostgreSQLEntityStoreAssembler.DEFAULT_ENTITYSTORE_IDENTITY;
+
+public class PostgreSQLEntityStoreTestSuite extends EntityStoreTestSuite
+{
+    @ClassRule
+    public static final DockerRule DOCKER = new DockerRule( "postgres",
+                                                            3000L,
+                                                            "PostgreSQL init process complete; ready for start up." );
+
+    @Override
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        // DataSourceService
+        new DBCPDataSourceServiceAssembler()
+            .identifiedBy( "postgresql-datasource-service" )
+            .visibleIn( Visibility.module )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+
+        // DataSource
+        new DataSourceAssembler()
+            .withDataSourceServiceIdentity( "postgresql-datasource-service" )
+            .identifiedBy( "postgresql-datasource" )
+            .visibleIn( Visibility.module )
+            .withCircuitBreaker()
+            .assemble( module );
+
+        // SQL EntityStore
+        new PostgreSQLEntityStoreAssembler()
+            .visibleIn( Visibility.application )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+
+        String host = DOCKER.getDockerHost();
+        int port = DOCKER.getExposedContainerPort( "5432/tcp" );
+        configModule.forMixin( DataSourceConfiguration.class ).declareDefaults()
+                    .url().set( "jdbc:postgresql://" + host + ":" + port + "/jdbc_test_db" );
+        // START SNIPPET: assembly
+    }
+    // END SNIPPET: assembly
+
+    @Override
+    public void tearDown()
+        throws Exception
+    {
+        Module storageModule = application.findModule( "Infrastructure Layer", "Storage Module" );
+        UnitOfWorkFactory uowf = storageModule.unitOfWorkFactory();
+        ServiceFinder serviceFinder = storageModule.serviceFinder();
+        UnitOfWork uow = uowf.newUnitOfWork(
+            UsecaseBuilder.newUsecase( "Delete " + getClass().getSimpleName() + " test data" )
+                                           );
+        try
+        {
+            SQLConfiguration config = uow.get( SQLConfiguration.class, DEFAULT_ENTITYSTORE_IDENTITY );
+            Connection connection = serviceFinder.findService( DataSource.class ).get().getConnection();
+            connection.setAutoCommit( false );
+            String schemaName = config.schemaName().get();
+            try( Statement stmt = connection.createStatement() )
+            {
+                stmt.execute( String.format( "DROP SCHEMA \"%s\" CASCADE", schemaName ) );
+                connection.commit();
+            }
+        }
+        finally
+        {
+            uow.discard();
+            super.tearDown();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/SQLiteEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/SQLiteEntityStoreTestSuite.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/SQLiteEntityStoreTestSuite.java
new file mode 100644
index 0000000..6dc5fbe
--- /dev/null
+++ b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/SQLiteEntityStoreTestSuite.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.entitystore.sql;
+
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.sql.assembly.SQLiteEntityStoreAssembler;
+import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
+import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.junit.BeforeClass;
+
+import static org.apache.polygene.test.util.Assume.assumeNoIbmJdk;
+
+public class SQLiteEntityStoreTestSuite extends EntityStoreTestSuite
+{
+    @BeforeClass
+    public static void beforeClass_IBMJDK()
+    {
+        assumeNoIbmJdk();
+    }
+
+    @Override
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        // DataSourceService
+        new DBCPDataSourceServiceAssembler()
+            .identifiedBy( "sqlite-datasource-service" )
+            .visibleIn( Visibility.module )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+
+        // DataSource
+        new DataSourceAssembler()
+            .withDataSourceServiceIdentity( "sqlite-datasource-service" )
+            .identifiedBy( "sqlite-datasource" )
+            .visibleIn( Visibility.module )
+            .withCircuitBreaker()
+            .assemble( module );
+
+        // SQL EntityStore
+        new SQLiteEntityStoreAssembler()
+            .visibleIn( Visibility.application )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/indexing-rdf/src/test/java/org/apache/polygene/index/rdf/RDFPerformanceTest.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-rdf/src/test/java/org/apache/polygene/index/rdf/RDFPerformanceTest.java b/extensions/indexing-rdf/src/test/java/org/apache/polygene/index/rdf/RDFPerformanceTest.java
index 08e1db4..86bd8e3 100644
--- a/extensions/indexing-rdf/src/test/java/org/apache/polygene/index/rdf/RDFPerformanceTest.java
+++ b/extensions/indexing-rdf/src/test/java/org/apache/polygene/index/rdf/RDFPerformanceTest.java
@@ -102,7 +102,7 @@ public class RDFPerformanceTest extends AbstractPolygeneTest
         List<ExampleEntity> entities = new ArrayList<ExampleEntity>();
         for (Integer x = 0; x < howMany; ++x)
         {
-            ExampleEntity exampleEntity = this.unitOfWorkFactory.currentUnitOfWork().newEntity( ExampleEntity.class, StringIdentity.identity( "entity" + x ) );
+            ExampleEntity exampleEntity = this.unitOfWorkFactory.currentUnitOfWork().newEntity( ExampleEntity.class, StringIdentity.identityOf( "entity" + x ) );
 
             for (ExampleEntity entity : entities)
             {
@@ -188,7 +188,7 @@ public class RDFPerformanceTest extends AbstractPolygeneTest
         UnitOfWork uow = this.unitOfWorkFactory.newUnitOfWork();
         for (int i = 0; i < 1000; i++)
         {
-            ExampleEntity entity50 = uow.get(ExampleEntity.class, StringIdentity.identity( "entity50" ) );
+            ExampleEntity entity50 = uow.get(ExampleEntity.class, StringIdentity.identityOf( "entity50" ) );
             Query<ExampleEntity> query = uow.newQuery( this.queryBuilderFactory.newQueryBuilder( ExampleEntity.class ).
                     where( QueryExpressions.contains( QueryExpressions.templateFor( ExampleEntity.class ).manyAssoc(), entity50) ));
             System.out.println(query.count());

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/assembly/AbstractSQLIndexQueryAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/assembly/AbstractSQLIndexQueryAssembler.java b/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/assembly/AbstractSQLIndexQueryAssembler.java
index 86790c9..b5e861c 100644
--- a/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/assembly/AbstractSQLIndexQueryAssembler.java
+++ b/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/assembly/AbstractSQLIndexQueryAssembler.java
@@ -35,7 +35,7 @@ import org.apache.polygene.library.sql.generator.vendor.SQLVendorProvider;
 
 public abstract class AbstractSQLIndexQueryAssembler<AssemblerType> extends Assemblers.VisibilityIdentityConfig<AssemblerType>
 {
-    public static final Identity DEFAULT_IDENTITY = StringIdentity.identity( "indexing-sql" );
+    public static final Identity DEFAULT_IDENTITY = StringIdentity.identityOf( "indexing-sql" );
 
     private Class<? extends ReindexingStrategy> reindexingStrategy = ReindexingStrategy.NeverNeed.class;
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/libraries/alarm/src/main/java/org/apache/polygene/library/alarm/AlarmSystem.java
----------------------------------------------------------------------
diff --git a/libraries/alarm/src/main/java/org/apache/polygene/library/alarm/AlarmSystem.java b/libraries/alarm/src/main/java/org/apache/polygene/library/alarm/AlarmSystem.java
index 1b42452..0b90143 100644
--- a/libraries/alarm/src/main/java/org/apache/polygene/library/alarm/AlarmSystem.java
+++ b/libraries/alarm/src/main/java/org/apache/polygene/library/alarm/AlarmSystem.java
@@ -214,7 +214,7 @@ public interface AlarmSystem
         public AlarmPoint createAlarm( String name, AlarmCategory category )
         {
             UnitOfWork uow = uowf.currentUnitOfWork();
-            EntityBuilder<AlarmPoint> builder = uow.newEntityBuilder( AlarmPoint.class, StringIdentity.identity( name ) );
+            EntityBuilder<AlarmPoint> builder = uow.newEntityBuilder( AlarmPoint.class, StringIdentity.identityOf( name ) );
             builder.instance().category().set( category );
             AlarmPoint.AlarmState state = builder.instanceFor( AlarmPoint.AlarmState.class );
             state.systemName().set( name );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmProxyTest.java
----------------------------------------------------------------------
diff --git a/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmProxyTest.java b/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmProxyTest.java
index 5ec2236..cd6c292 100644
--- a/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmProxyTest.java
+++ b/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmProxyTest.java
@@ -60,7 +60,7 @@ public class AlarmProxyTest extends AbstractPolygeneTest
         try
         {
 // START SNIPPET: documentation
-            myAlarmPoint = factory.create( StringIdentity.identity( "This Alarm Identity" ), "ProActiveCRM", "Sales", AlarmClass.B );
+            myAlarmPoint = factory.create( StringIdentity.identityOf( "This Alarm Identity" ), "ProActiveCRM", "Sales", AlarmClass.B );
             myAlarmPoint.history().maxSize().set( 20 );
 // END SNIPPET: documentation
 
@@ -71,7 +71,7 @@ public class AlarmProxyTest extends AbstractPolygeneTest
             assertThat( myAlarmPoint.history().activateCounter(), equalTo( 1 ) );
             AlarmEvent event = myAlarmPoint.history().firstEvent();
             assertThat( event, notNullValue() );
-            assertThat( event.identity().get(), equalTo( StringIdentity.identity( "This Alarm Identity" ) ) );
+            assertThat( event.identity().get(), equalTo( StringIdentity.identityOf( "This Alarm Identity" ) ) );
             assertThat( event.newStatus().get().name( null ), equalTo( "Activated" ) );
             assertThat( event.oldStatus().get().name( null ), equalTo( "Normal" ) );
         }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/libraries/jmx/src/main/java/org/apache/polygene/library/jmx/ConfigurationManagerService.java
----------------------------------------------------------------------
diff --git a/libraries/jmx/src/main/java/org/apache/polygene/library/jmx/ConfigurationManagerService.java b/libraries/jmx/src/main/java/org/apache/polygene/library/jmx/ConfigurationManagerService.java
index 91025f0..ed5964d 100644
--- a/libraries/jmx/src/main/java/org/apache/polygene/library/jmx/ConfigurationManagerService.java
+++ b/libraries/jmx/src/main/java/org/apache/polygene/library/jmx/ConfigurationManagerService.java
@@ -243,7 +243,7 @@ public interface ConfigurationManagerService
             EditableConfiguration( MBeanInfo info, String identity, Map<String, AccessibleObject> propertyNames )
             {
                 this.info = info;
-                this.identity = StringIdentity.identity( identity );
+                this.identity = StringIdentity.identityOf( identity );
                 this.propertyNames = propertyNames;
             }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntitySerializerTest.java
----------------------------------------------------------------------
diff --git a/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntitySerializerTest.java b/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntitySerializerTest.java
index a48e272..64512cb 100644
--- a/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntitySerializerTest.java
+++ b/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntitySerializerTest.java
@@ -109,14 +109,14 @@ public class EntitySerializerTest
             valueBuilder.prototype().test3().set( valueBuilder2.newInstance() );
             TestValue testValue = valueBuilder.newInstance();
 
-            EntityBuilder<TestEntity> builder = unitOfWork.newEntityBuilder( TestEntity.class, StringIdentity.identity( "test1" ) );
+            EntityBuilder<TestEntity> builder = unitOfWork.newEntityBuilder( TestEntity.class, StringIdentity.identityOf( "test1" ) );
             TestEntity rickardTemplate = builder.instance();
             rickardTemplate.name().set( "Rickard" );
             rickardTemplate.title().set( "Mr" );
             rickardTemplate.value().set( testValue );
             TestEntity testEntity = builder.newInstance();
 
-            EntityBuilder<TestEntity> builder2 = unitOfWork.newEntityBuilder( TestEntity.class, StringIdentity.identity( "test2" ) );
+            EntityBuilder<TestEntity> builder2 = unitOfWork.newEntityBuilder( TestEntity.class, StringIdentity.identityOf( "test2" ) );
             TestEntity niclasTemplate = builder2.instance();
             niclasTemplate.name().set( "Niclas" );
             niclasTemplate.title().set( "Mr" );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntityTypeSerializerTest.java
----------------------------------------------------------------------
diff --git a/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntityTypeSerializerTest.java b/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntityTypeSerializerTest.java
index ae4c56e..8e8d8d7 100644
--- a/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntityTypeSerializerTest.java
+++ b/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntityTypeSerializerTest.java
@@ -95,14 +95,14 @@ public class EntityTypeSerializerTest
             valueBuilder.prototype().test3().set( vb2.newInstance() );
             TestValue testValue = valueBuilder.newInstance();
 
-            EntityBuilder<TestEntity> builder = unitOfWork.newEntityBuilder(TestEntity.class, StringIdentity.identity( "test1" ) );
+            EntityBuilder<TestEntity> builder = unitOfWork.newEntityBuilder(TestEntity.class, StringIdentity.identityOf( "test1" ) );
             TestEntity rickardTemplate = builder.instance();
             rickardTemplate.name().set( "Rickard" );
             rickardTemplate.title().set( "Mr" );
             rickardTemplate.value().set( testValue );
             TestEntity testEntity = builder.newInstance();
 
-            EntityBuilder<TestEntity> builder2 = unitOfWork.newEntityBuilder(TestEntity.class, StringIdentity.identity( "test2" ) );
+            EntityBuilder<TestEntity> builder2 = unitOfWork.newEntityBuilder(TestEntity.class, StringIdentity.identityOf( "test2" ) );
             TestEntity niclasTemplate = builder2.instance();
             niclasTemplate.name().set( "Niclas" );
             niclasTemplate.title().set( "Mr" );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/RequestReaderDelegator.java
----------------------------------------------------------------------
diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/RequestReaderDelegator.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/RequestReaderDelegator.java
index 50db549..33b69b8 100644
--- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/RequestReaderDelegator.java
+++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/RequestReaderDelegator.java
@@ -51,7 +51,7 @@ public class RequestReaderDelegator
     public void init( @Service Iterable<ServiceReference<RequestReader>> requestReaderReferences )
     {
         Logger logger = LoggerFactory.getLogger( getClass() );
-        Identity requestreaderdelegator = StringIdentity.identity( "requestreaderdelegator" );
+        Identity requestreaderdelegator = StringIdentity.identityOf( "requestreaderdelegator" );
 
         // Add custom readers first
         for( ServiceReference<RequestReader> requestReader : requestReaderReferences )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/ResponseWriterDelegator.java
----------------------------------------------------------------------
diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/ResponseWriterDelegator.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/ResponseWriterDelegator.java
index 5809f66..29da261 100644
--- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/ResponseWriterDelegator.java
+++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/ResponseWriterDelegator.java
@@ -48,7 +48,7 @@ public class ResponseWriterDelegator
     public void init( @Service Iterable<ServiceReference<ResponseWriter>> resultWriters )
     {
         Logger logger = LoggerFactory.getLogger( getClass() );
-        Identity responsewriterdelegator = StringIdentity.identity( "responsewriterdelegator" );
+        Identity responsewriterdelegator = StringIdentity.identityOf( "responsewriterdelegator" );
 
         // Add custom writers first
         for( ServiceReference<ResponseWriter> resultWriter : resultWriters )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/requestreader/DefaultRequestReader.java
----------------------------------------------------------------------
diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/requestreader/DefaultRequestReader.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/requestreader/DefaultRequestReader.java
index 65b31af..60f26c8 100644
--- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/requestreader/DefaultRequestReader.java
+++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/requestreader/DefaultRequestReader.java
@@ -251,7 +251,7 @@ public class DefaultRequestReader
                         entityAsForm = new Form();
                     }
 
-                    Identity entityIdentity = StringIdentity.identity( getValue( "entity", queryAsForm, entityAsForm ) );
+                    Identity entityIdentity = StringIdentity.identityOf( getValue( "entity", queryAsForm, entityAsForm ) );
                     args[0] = uowf.currentUnitOfWork().get( method.getParameterTypes()[0], entityIdentity );
 
                     return args;
@@ -480,7 +480,7 @@ public class DefaultRequestReader
             }
             else if( parameterType.isInterface() )
             {
-                arg = uowf.currentUnitOfWork().get( parameterType, StringIdentity.identity( argString ) );
+                arg = uowf.currentUnitOfWork().get( parameterType, StringIdentity.identityOf( argString ) );
             }
             else
             {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntityResource.java
----------------------------------------------------------------------
diff --git a/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntityResource.java b/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntityResource.java
index a81e682..17d4ae1 100644
--- a/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntityResource.java
+++ b/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntityResource.java
@@ -106,7 +106,7 @@ public class EntityResource
     {
         // /entity/{reference}
         Map<String, Object> attributes = getRequest().getAttributes();
-        identity = StringIdentity.identity( (String) attributes.get( "reference" ) );
+        identity = StringIdentity.identityOf( (String) attributes.get( "reference" ) );
     }
 
     @Override
@@ -474,7 +474,6 @@ public class EntityResource
                             try
                             {
                                 unitOfWork.entityStateOf( module, reference );
-
                                 namedAssociation.remove( name );
                                 namedAssociation.put( name, reference );
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/DummyDataService.java
----------------------------------------------------------------------
diff --git a/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/DummyDataService.java b/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/DummyDataService.java
index 56004c4..1d5a2ad 100644
--- a/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/DummyDataService.java
+++ b/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/DummyDataService.java
@@ -77,13 +77,13 @@ public interface DummyDataService
                     valueBuilder.prototype().string().set( "Foo bar value" );
                     valueBuilder.prototype().map().set( new HashMap() );
 
-                    EntityBuilder<TestEntity> builder = unitOfWork.newEntityBuilder( TestEntity.class, StringIdentity.identity( "test1" ) );
+                    EntityBuilder<TestEntity> builder = unitOfWork.newEntityBuilder( TestEntity.class, StringIdentity.identityOf( "test1" ) );
                     builder.instance().name().set( "Foo bar" );
                     builder.instance().age().set( 42 );
                     builder.instance().value().set( valueBuilder.newInstance() );
                     TestEntity testEntity = builder.newInstance();
 
-                    EntityBuilder<TestEntity> builder2 = unitOfWork.newEntityBuilder( TestEntity.class, StringIdentity.identity( "test2" ) );
+                    EntityBuilder<TestEntity> builder2 = unitOfWork.newEntityBuilder( TestEntity.class, StringIdentity.identityOf( "test2" ) );
                     builder2.instance().name().set( "Xyzzy" );
                     builder2.instance().age().set( 12 );
                     builder2.instance().association().set( testEntity );
@@ -98,7 +98,7 @@ public interface DummyDataService
                 }
 
                 {
-                    EntityBuilder<TestEntity2> builder = unitOfWork.newEntityBuilder( TestEntity2.class, StringIdentity.identity( "test3" ) );
+                    EntityBuilder<TestEntity2> builder = unitOfWork.newEntityBuilder( TestEntity2.class, StringIdentity.identityOf( "test3" ) );
                     builder.instance().name().set( "Test3" );
                     builder.newInstance();
                 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/RestTest.java
----------------------------------------------------------------------
diff --git a/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/RestTest.java b/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/RestTest.java
index 206c0ef..db6db80 100644
--- a/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/RestTest.java
+++ b/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/RestTest.java
@@ -111,13 +111,13 @@ public class RestTest extends AbstractPolygeneTest
         UnitOfWork uow = unitOfWorkFactory.newUnitOfWork();
         try
         {
-            EntityBuilder<PersonEntity> builder1 = uow.newEntityBuilder( PersonEntity.class, StringIdentity.identity( "P2" ) );
+            EntityBuilder<PersonEntity> builder1 = uow.newEntityBuilder( PersonEntity.class, StringIdentity.identityOf( "P2" ) );
             PersonEntity maryDoe = builder1.instance();
             maryDoe.firstname().set( "Mary" );
             maryDoe.lastname().set( "Doe" );
             maryDoe = builder1.newInstance();
 
-            EntityBuilder<PersonEntity> builder2 = uow.newEntityBuilder( PersonEntity.class, StringIdentity.identity( "P1" ) );
+            EntityBuilder<PersonEntity> builder2 = uow.newEntityBuilder( PersonEntity.class, StringIdentity.identityOf( "P1" ) );
             PersonEntity joeDoe = builder2.instance();
             joeDoe.firstname().set( "Joe" );
             joeDoe.lastname().set( "Doe" );
@@ -162,7 +162,7 @@ public class RestTest extends AbstractPolygeneTest
         UnitOfWork work = unitOfWorkFactory.newUnitOfWork();
         try
         {
-            PersonEntity entity = work.get( PersonEntity.class, StringIdentity.identity( "P1" ) );
+            PersonEntity entity = work.get( PersonEntity.class, StringIdentity.identityOf( "P1" ) );
             assertEquals( "FirstName not changed.", "Jack", entity.firstname().get() );
             assertEquals( "LastName not changed.", "Doe", entity.lastname().get() );
             work.complete();
@@ -185,7 +185,7 @@ public class RestTest extends AbstractPolygeneTest
             PersonEntity entity = null;
             try
             {
-                entity = work.get( PersonEntity.class, StringIdentity.identity( "P1" ) );
+                entity = work.get( PersonEntity.class, StringIdentity.identityOf( "P1" ) );
             }
             catch( NoSuchEntityException expected )
             {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityResource.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityResource.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityResource.java
index c822892..965a33a 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityResource.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityResource.java
@@ -97,7 +97,7 @@ public interface EntityResource<T extends HasIdentity> extends ServerResource<T>
         {
             Class entityType = parameters.entityType().get();
             String idOfEntity = parameters.id().get();
-            locator.find( entityType ).delete( StringIdentity.identity( idOfEntity ) );
+            locator.find( entityType ).delete( StringIdentity.identityOf( idOfEntity ) );
         }
 
         @Override
@@ -137,7 +137,7 @@ public interface EntityResource<T extends HasIdentity> extends ServerResource<T>
                 throw new RuntimeException( message, e );
             }
             Reference base = parameters.request().get().getResourceRef();
-            return resourceBuilder.createRestLink( StringIdentity.identity( "" ), base, org.restlet.data.Method.GET );
+            return resourceBuilder.createRestLink( StringIdentity.identityOf( "" ), base, org.restlet.data.Method.GET );
         }
 
         private Object createParametersComposite( RestForm form, Class argType )


[22/50] polygene-java git commit: Merge branch 'develop' into es-jooq

Posted by ni...@apache.org.
Merge branch 'develop' into es-jooq


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

Branch: refs/heads/es-jooq
Commit: b9d03dc25dddd1a0db18575cef9ac0b5e8021322
Parents: 80a19d7 17a2079
Author: niclas <ni...@hedhman.org>
Authored: Sun Jun 25 10:18:37 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jun 25 10:18:37 2017 +0800

----------------------------------------------------------------------
 .../reports/AggregatedJacocoReportTask.groovy   |   2 +-
 .../tests/PerformanceTestsPlugin.groovy         |   2 +-
 .../api/association/ManyAssociation.java        |  41 +-
 .../api/association/NamedAssociation.java       |  13 +-
 .../api/composite/NoSuchCompositeException.java |  56 --
 .../composite/NoSuchCompositeTypeException.java | 143 +++++
 .../api/composite/NoSuchTransientException.java |  45 --
 .../composite/NoSuchTransientTypeException.java |  43 ++
 .../api/composite/TransientBuilderFactory.java  |   8 +-
 .../api/constraint/ConstraintViolation.java     |  56 --
 .../ConstraintViolationException.java           | 314 ++++++-----
 .../constraint/ValueConstraintViolation.java    |  79 +++
 .../polygene/api/entity/EntityReference.java    |   2 +-
 .../polygene/api/identity/StringIdentity.java   |   4 +-
 .../api/identity/UuidGeneratorMixin.java        |   2 +-
 .../api/object/NoSuchObjectException.java       |  57 --
 .../api/object/NoSuchObjectTypeException.java   |  57 ++
 .../polygene/api/object/ObjectFactory.java      |   4 +-
 .../api/service/NoSuchServiceException.java     |  58 --
 .../api/service/NoSuchServiceTypeException.java |  48 ++
 .../polygene/api/service/ServiceFinder.java     |   8 +-
 .../polygene/api/structure/LayerDescriptor.java |   3 +-
 .../unitofwork/NoSuchEntityTypeException.java   |  25 +-
 .../polygene/api/unitofwork/UnitOfWork.java     |   2 -
 .../api/value/NoSuchValueException.java         |  46 --
 .../api/value/NoSuchValueTypeException.java     |  45 ++
 .../polygene/api/value/ValueBuilderFactory.java |  14 +-
 .../org/apache/polygene/api/OperatorsTest.java  |   2 +-
 .../polygene/api/type/ValueTypeFactoryTest.java |   2 +-
 .../polygene/api/unitofwork/RemovalTest.java    |   6 +-
 .../api/unitofwork/ToEntityConversionTest.java  |   2 +-
 .../api/unitofwork/ToValueConversionTest.java   |  12 +-
 .../bootstrap/AssemblyReportException.java      |   5 +-
 .../association/AbstractAssociationModel.java   |  10 +-
 .../association/NamedAssociationInstance.java   |   9 +-
 .../bootstrap/CompositeAssemblyImpl.java        | 117 ++--
 .../bootstrap/ImportedServiceAssemblyImpl.java  |   6 +-
 .../runtime/bootstrap/ModuleAssemblyImpl.java   |   6 +-
 .../bootstrap/ServiceDeclarationImpl.java       |   2 +-
 .../runtime/composite/CompositeModel.java       |  11 +-
 .../runtime/composite/ConstraintsInstance.java  |  24 +-
 .../composite/FragmentInvocationHandler.java    |  15 +-
 .../runtime/composite/TransientModel.java       |  15 +-
 .../runtime/composite/UsesInstance.java         |  12 +-
 .../composite/ValueConstraintsInstance.java     |  33 +-
 .../composite/ValueConstraintsModel.java        |  14 +-
 .../polygene/runtime/entity/EntityInstance.java |  13 +-
 .../polygene/runtime/entity/EntityModel.java    |   6 +
 .../ServiceInjectionProviderFactory.java        |   4 +-
 .../provider/UsesInjectionProviderFactory.java  |   8 +-
 .../runtime/property/PropertyModel.java         |   9 +-
 .../runtime/query/QueryBuilderFactoryImpl.java  |   4 +-
 .../polygene/runtime/structure/LayerModel.java  |   5 +-
 .../runtime/structure/ModuleInstance.java       |  52 +-
 .../runtime/unitofwork/ModuleUnitOfWork.java    |   8 +-
 .../runtime/unitofwork/UnitOfWorkInstance.java  |   2 +-
 .../runtime/value/ValueBuilderInstance.java     |   4 +-
 .../polygene/runtime/value/ValueModel.java      | 100 +++-
 .../apache/polygene/api/common/RemovalTest.java |   6 +-
 .../constraints/PropertyConstraintTest.java     |   4 +-
 .../qi377/SetAssociationInSideEffectTest.java   |   8 +-
 ...alueCollisionWithRelatedReturnTypesTest.java |  10 +-
 .../polygene/regression/qi382/Qi382Test.java    |   4 +-
 .../polygene/regression/qi383/Qi383Test.java    |   6 +-
 .../ImportedServiceActivationTest.java          |   2 +-
 .../composite/CompositeFactoryImplTest.java     |   5 +-
 .../composite/InterfaceDefaultMethodsTest.java  |   7 +-
 .../runtime/composite/IsCompositeTest.java      |  55 --
 .../runtime/composite/UseCompositeTest.java     |  84 +++
 .../runtime/constraints/ConstraintsTest.java    |   6 +-
 .../polygene/runtime/entity/EntityTypeTest.java |  12 +-
 .../runtime/entity/EntityVisibilityTest.java    |   2 +-
 .../runtime/injection/ServiceInjectionTest.java |   2 +-
 .../injection/UnitOfWorkInjectionTest.java      |   6 +-
 .../runtime/mixin/AssemblyMixinTest.java        |  10 +-
 .../runtime/mixin/AssemblyRoleTest.java         |   8 +-
 .../polygene/runtime/mixin/JDKMixinTest.java    |   4 +-
 .../objects/ObjectBuilderFactoryTest.java       |   4 +-
 .../runtime/objects/ObjectVisibilityTest.java   |  64 +--
 .../runtime/query/IterableQuerySourceTest.java  |   2 +-
 .../apache/polygene/runtime/query/Network.java  |   4 +-
 .../runtime/service/ServiceVisibilityTest.java  |  64 +--
 .../runtime/structure/MixinVisibilityTest.java  |   4 +-
 .../NoSuchEntityTypeExceptionTest.java          |  95 ++++
 .../PrivateCompositeVisibilityTest.java         |   4 +-
 .../transients/TransientBuilderFactoryTest.java |   4 +-
 .../transients/TransientVisibilityTest.java     |  64 +--
 .../unitofwork/PrivateEntityUnitOfWorkTest.java |   2 +-
 .../runtime/unitofwork/RemovalTest.java         |   8 +-
 .../runtime/value/AssociationToValueTest.java   |   4 +-
 .../value/ValueSerializationRegressionTest.java |   2 +-
 .../runtime/value/ValueVisibilityTest.java      |  64 +--
 .../runtime/value/ValueWithAssociationTest.java |   6 +-
 .../visibility/VisibilityInUnitOfWorkTest.java  |   4 +-
 .../importer/ServiceInstanceImporterTest.java   |  10 +-
 .../helpers/DefaultManyAssociationState.java    |   5 -
 .../helpers/DefaultNamedAssociationState.java   |   6 +-
 .../helpers/JSONMapEntityStoreMixin.java        |   4 +-
 .../helpers/MapEntityStoreMixin.java            |   4 +-
 .../spi/serialization/BuiltInConverters.java    |   2 +-
 .../spi/entitystore/Polygene142Test.java        |   4 +-
 .../test/cache/AbstractCachePoolTest.java       |  11 +-
 .../test/entity/AbstractEntityStoreTest.java    |   1 -
 ...stractPolygeneMultiLayeredTestWithModel.java | 161 ++++++
 .../test/entity/model/EntityStoreTestSuite.java | 543 +++++++++++++++++++
 .../test/entity/model/legal/LegalService.java   | 142 +++++
 .../polygene/test/entity/model/legal/Will.java  |  40 ++
 .../test/entity/model/legal/WillAmount.java     |  29 +
 .../test/entity/model/legal/WillBenefit.java    |  37 ++
 .../test/entity/model/legal/WillItem.java       |  30 +
 .../test/entity/model/legal/WillPercentage.java |  27 +
 .../entity/model/monetary/CheckBookSlip.java    |  58 ++
 .../test/entity/model/monetary/Currency.java    |  60 ++
 .../test/entity/model/people/Address.java       |  37 ++
 .../polygene/test/entity/model/people/City.java |  28 +
 .../test/entity/model/people/Country.java       |  28 +
 .../entity/model/people/PeopleRepository.java   | 183 +++++++
 .../test/entity/model/people/Person.java        |  89 +++
 .../test/entity/model/people/PhoneNumber.java   |  55 ++
 .../polygene/test/entity/model/people/Rent.java |  53 ++
 .../test/indexing/AbstractQueryTest.java        |   6 +-
 .../apache/polygene/test/indexing/TestData.java |   8 +-
 .../metrics/AbstractPolygeneMetricsTest.java    |   4 +-
 ...AbstractValueCompositeSerializationTest.java |   8 +-
 .../polygene/test/cache/MemoryCacheTest.java    |   3 +-
 dependencies.gradle                             |   2 +-
 .../cassandra/CassandraEntityStoreMixin.java    |   4 +-
 .../CassandraEntityStoreTestSuite.java          |  80 +++
 .../file/FileEntityStoreTestSuite.java          |  50 ++
 .../geode/GeodeEntityStoreTestSuite.java        |  38 ++
 .../HazelcastEntityStoreTestSuite.java          |  48 ++
 .../jclouds/JCloudsFilesystemTestSuite.java     |  52 ++
 .../entitystore/jclouds/JCloudsS3TestSuite.java |  53 ++
 .../jclouds/JCloudsTransientTestSuite.java      |  39 ++
 .../jdbm/JdbmEntityStoreTestSuite.java          |  47 ++
 .../JavaLevelDBEntityStoreTestSuite.java        |  52 ++
 .../leveldb/JniLevelDBEntityStoreTest.java      |  21 +-
 .../memory/MemoryEntityStoreTestSuite.java      |  37 ++
 .../EmbedMongoDBMapEntityStoreTestSuite.java    |  84 +++
 .../mongodb/MongoDBEntityStoreTestSuite.java    |  77 +++
 .../PreferencesEntityStoreMixin.java            |   2 +-
 .../PreferencesEntityStoreAssembler.java        |   9 +-
 .../PreferencesEntityStoreTestSuite.java        |  56 ++
 .../redis/RedisEntityStoreTestSuite.java        |  74 +++
 .../riak/RiakEntityStoreTestSuite.java          |  70 +++
 .../AbstractSQLEntityStoreAssembler.java        |   2 +-
 .../sql/DerbySQLEntityStoreTestSuite.java       |  94 ++++
 .../sql/H2SQLEntityStoreTestSuite.java          |  56 ++
 .../sql/MySQLEntityStoreTestSuite.java          | 122 +++++
 .../sql/PostgreSQLEntityStoreTest.java          |  34 --
 .../sql/PostgreSQLEntityStoreTestSuite.java     | 111 ++++
 .../sql/SQLiteEntityStoreTestSuite.java         |  65 +++
 .../polygene/index/rdf/RDFPerformanceTest.java  |   4 +-
 .../AbstractSQLIndexQueryAssembler.java         |   2 +-
 gradle/wrapper/gradle-wrapper.jar               | Bin 54416 -> 54706 bytes
 gradle/wrapper/gradle-wrapper.properties        |   2 +-
 .../apache/polygene/test/docker/DockerRule.java |   2 +-
 .../polygene/library/alarm/AlarmSystem.java     |   2 +-
 .../polygene/library/alarm/AlarmProxyTest.java  |   6 +-
 .../library/constraints/ConstraintTest.java     |   3 +-
 libraries/http/build.gradle                     |   2 +-
 .../jmx/ConfigurationManagerService.java        |   2 +-
 .../rdf/entity/EntitySerializerTest.java        |   4 +-
 .../rdf/entity/EntityTypeSerializerTest.java    |  19 +-
 .../rest/server/api/ContextResource.java        |   4 +-
 .../restlet/ConstraintViolationMessages.java    |   4 +-
 .../restlet/InteractionConstraintsService.java  |   6 +-
 .../server/restlet/RequestReaderDelegator.java  |   2 +-
 .../server/restlet/ResponseWriterDelegator.java |   2 +-
 .../requestreader/DefaultRequestReader.java     |   4 +-
 .../library/rest/admin/EntityResource.java      |   3 +-
 .../library/rest/admin/DummyDataService.java    |   8 +-
 .../polygene/library/rest/admin/RestTest.java   |   8 +-
 .../library/restlet/crud/EntityResource.java    |   4 +-
 .../restlet/identity/IdentityManager.java       |   4 +-
 .../restlet/resource/EntryPointResource.java    |   6 +-
 .../restlet/resource/ResourceBuilder.java       |   2 +-
 .../sql/assembly/DataSourceAssembler.java       |   2 +-
 .../assembly/ExternalDataSourceAssembler.java   |   2 +-
 .../DataSourceConfigurationManagerService.java  |   2 +-
 .../ParameterViolationConcern.java              |   4 +-
 .../PhoneNumberParameterViolationConcern.java   |   6 +-
 .../moneytransfer/context/PayBillsContext.java  |   4 +-
 .../moneytransfer/context/PayBillsContext2.java |   4 +-
 .../dci/moneytransfer/test/AccountIds.java      |   8 +-
 .../sample/forum/data/entity/Forums.java        |   4 +-
 .../sample/forum/data/entity/Users.java         |   2 +-
 .../rest/resource/forum/BoardResource.java      |   2 +-
 .../rest/resource/forum/ForumResource.java      |   2 +-
 .../rest/resource/forum/ForumsResource.java     |   2 +-
 .../sample/rental/domain/dev/InitialData.java   |   2 +-
 .../polygene/sample/rental/web/BookingPage.java |   4 +-
 .../polygene/sample/rental/web/MainPage.java    |   2 +-
 .../AbstractEntityStorePerformanceTest.java     |   4 +-
 .../initialdata/SamplePersonInitialData.java    |   2 +-
 .../templates/RestAPIApplication/bootstrap.tmpl |   1 +
 .../templates/buildtool/gradle-bootstrap.tmpl   |   7 +
 tools/generator-polygene/test/generator_test.js |  39 +-
 .../polygene/tutorials/hello/HelloTest4.java    |   2 +-
 199 files changed, 4431 insertions(+), 1171 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b9d03dc2/core/runtime/src/main/java/org/apache/polygene/runtime/composite/FragmentInvocationHandler.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b9d03dc2/core/testsupport/src/main/java/org/apache/polygene/test/entity/AbstractEntityStoreTest.java
----------------------------------------------------------------------


[19/50] polygene-java git commit: Optimized Imports

Posted by ni...@apache.org.
Optimized Imports


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/8ad89e8e
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/8ad89e8e
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/8ad89e8e

Branch: refs/heads/es-jooq
Commit: 8ad89e8e24c3a67f1ef2d0de3e47dc7d8d9c66c3
Parents: a3e9acd
Author: niclas <ni...@hedhman.org>
Authored: Sat Jun 24 11:10:54 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sat Jun 24 11:10:54 2017 +0800

----------------------------------------------------------------------
 .../java/org/apache/polygene/runtime/composite/UsesInstance.java   | 2 --
 1 file changed, 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/8ad89e8e/core/runtime/src/main/java/org/apache/polygene/runtime/composite/UsesInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/UsesInstance.java b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/UsesInstance.java
index 79ce9fa..25cdefe 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/UsesInstance.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/UsesInstance.java
@@ -24,8 +24,6 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
-import org.apache.polygene.api.common.ConstructionException;
-import org.apache.polygene.runtime.PolygeneRuntimeImpl;
 
 /**
  * JAVADOC


[11/50] polygene-java git commit: POLYGENE-260 - Fixed the "duplicate should be allowed" for ManyAssociations. POLYGENE-261 - Documentation of "No order is defined" for NamedAssociation Changed StringIdentity creation to use static factory method, and ch

Posted by ni...@apache.org.
POLYGENE-260 - Fixed the "duplicate should be allowed" for ManyAssociations.
POLYGENE-261 - Documentation of "No order is defined" for NamedAssociation
Changed StringIdentity creation to use static factory method, and changing the name from "fromString" to "identityOf"

Signed-off-by: niclas <ni...@hedhman.org>


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/0d9e8a1b
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/0d9e8a1b
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/0d9e8a1b

Branch: refs/heads/es-jooq
Commit: 0d9e8a1b462790d23af235a43b374c58787fdf0b
Parents: 55ddd14
Author: niclas <ni...@hedhman.org>
Authored: Thu Jun 15 18:42:50 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Thu Jun 15 18:42:50 2017 +0800

----------------------------------------------------------------------
 .../api/association/ManyAssociation.java        |   5 +
 .../api/association/NamedAssociation.java       |  13 +-
 .../polygene/api/entity/EntityReference.java    |   2 +-
 .../polygene/api/identity/StringIdentity.java   |   2 +-
 .../api/identity/UuidGeneratorMixin.java        |   2 +-
 .../org/apache/polygene/api/OperatorsTest.java  |   2 +-
 .../polygene/api/type/ValueTypeFactoryTest.java |   2 +-
 .../polygene/api/unitofwork/RemovalTest.java    |   2 +-
 .../api/unitofwork/ToEntityConversionTest.java  |   2 +-
 .../api/unitofwork/ToValueConversionTest.java   |  12 +-
 .../bootstrap/ImportedServiceAssemblyImpl.java  |   6 +-
 .../runtime/bootstrap/ModuleAssemblyImpl.java   |   4 +-
 .../bootstrap/ServiceDeclarationImpl.java       |   2 +-
 .../runtime/unitofwork/ModuleUnitOfWork.java    |   2 +-
 .../apache/polygene/api/common/RemovalTest.java |   2 +-
 .../qi377/SetAssociationInSideEffectTest.java   |   4 +-
 ...alueCollisionWithRelatedReturnTypesTest.java |   2 +-
 .../polygene/regression/qi382/Qi382Test.java    |   4 +-
 .../polygene/regression/qi383/Qi383Test.java    |   6 +-
 .../ImportedServiceActivationTest.java          |   2 +-
 .../polygene/runtime/entity/EntityTypeTest.java |   6 +-
 .../runtime/entity/EntityVisibilityTest.java    |   2 +-
 .../runtime/injection/ServiceInjectionTest.java |   2 +-
 .../injection/UnitOfWorkInjectionTest.java      |   2 +-
 .../runtime/mixin/AssemblyMixinTest.java        |   4 +-
 .../runtime/mixin/AssemblyRoleTest.java         |   4 +-
 .../polygene/runtime/mixin/JDKMixinTest.java    |   4 +-
 .../runtime/objects/ObjectVisibilityTest.java   |   2 +-
 .../runtime/query/IterableQuerySourceTest.java  |   2 +-
 .../apache/polygene/runtime/query/Network.java  |   4 +-
 .../runtime/service/ServiceVisibilityTest.java  |   2 +-
 .../transients/TransientVisibilityTest.java     |   2 +-
 .../unitofwork/PrivateEntityUnitOfWorkTest.java |   2 +-
 .../runtime/unitofwork/RemovalTest.java         |   2 +-
 .../runtime/value/AssociationToValueTest.java   |   4 +-
 .../value/ValueSerializationRegressionTest.java |   2 +-
 .../runtime/value/ValueVisibilityTest.java      |   2 +-
 .../runtime/value/ValueWithAssociationTest.java |   6 +-
 .../visibility/VisibilityInUnitOfWorkTest.java  |   4 +-
 .../importer/ServiceInstanceImporterTest.java   |   2 +-
 .../helpers/DefaultNamedAssociationState.java   |   6 +-
 .../helpers/JSONMapEntityStoreMixin.java        |   2 +-
 .../helpers/MapEntityStoreMixin.java            |   2 +-
 .../spi/serialization/BuiltInConverters.java    |   2 +-
 .../spi/entitystore/Polygene142Test.java        |   2 +-
 .../test/entity/model/EntityStoreTestSuite.java |  20 ++-
 .../test/entity/model/legal/LegalService.java   |   2 +-
 .../entity/model/people/PeopleRepository.java   |  10 +-
 .../test/indexing/AbstractQueryTest.java        |   6 +-
 .../apache/polygene/test/indexing/TestData.java |   8 +-
 .../metrics/AbstractPolygeneMetricsTest.java    |   4 +-
 ...AbstractValueCompositeSerializationTest.java |   8 +-
 .../cassandra/CassandraEntityStoreMixin.java    |   2 +-
 .../CassandraEntityStoreTestSuite.java          |  80 ++++++++++++
 .../file/FileEntityStoreTestSuite.java          |  50 ++++++++
 .../geode/GeodeEntityStoreTestSuite.java        |  38 ++++++
 .../HazelcastEntityStoreTestSuite.java          |  48 ++++++++
 .../jclouds/JCloudsFilesystemTestSuite.java     |  52 ++++++++
 .../entitystore/jclouds/JCloudsS3TestSuite.java |  53 ++++++++
 .../jclouds/JCloudsTransientTestSuite.java      |  39 ++++++
 .../jdbm/JdbmEntityStoreTestSuite.java          |   8 --
 .../JavaLevelDBEntityStoreTestSuite.java        |  52 ++++++++
 .../leveldb/JniLevelDBEntityStoreTest.java      |  21 ++--
 .../memory/MemoryEntityStoreTestSuite.java      |  37 ++++++
 .../EmbedMongoDBMapEntityStoreTestSuite.java    |  84 +++++++++++++
 .../mongodb/MongoDBEntityStoreTestSuite.java    |  77 ++++++++++++
 .../PreferencesEntityStoreAssembler.java        |   9 +-
 .../PreferencesEntityStoreTestSuite.java        |  56 +++++++++
 .../redis/RedisEntityStoreTestSuite.java        |  74 +++++++++++
 .../riak/RiakEntityStoreTestSuite.java          |  70 +++++++++++
 .../AbstractSQLEntityStoreAssembler.java        |   2 +-
 .../sql/DerbySQLEntityStoreTestSuite.java       |  94 ++++++++++++++
 .../sql/H2SQLEntityStoreTestSuite.java          |  56 +++++++++
 .../sql/MySQLEntityStoreTestSuite.java          | 122 +++++++++++++++++++
 .../sql/PostgreSQLEntityStoreTest.java          |  34 ------
 .../sql/PostgreSQLEntityStoreTestSuite.java     | 111 +++++++++++++++++
 .../sql/SQLiteEntityStoreTestSuite.java         |  65 ++++++++++
 .../polygene/index/rdf/RDFPerformanceTest.java  |   4 +-
 .../AbstractSQLIndexQueryAssembler.java         |   2 +-
 .../polygene/library/alarm/AlarmSystem.java     |   2 +-
 .../polygene/library/alarm/AlarmProxyTest.java  |   4 +-
 .../jmx/ConfigurationManagerService.java        |   2 +-
 .../rdf/entity/EntitySerializerTest.java        |   4 +-
 .../rdf/entity/EntityTypeSerializerTest.java    |   4 +-
 .../server/restlet/RequestReaderDelegator.java  |   2 +-
 .../server/restlet/ResponseWriterDelegator.java |   2 +-
 .../requestreader/DefaultRequestReader.java     |   4 +-
 .../library/rest/admin/EntityResource.java      |   3 +-
 .../library/rest/admin/DummyDataService.java    |   6 +-
 .../polygene/library/rest/admin/RestTest.java   |   8 +-
 .../library/restlet/crud/EntityResource.java    |   4 +-
 .../restlet/identity/IdentityManager.java       |   4 +-
 .../restlet/resource/EntryPointResource.java    |   6 +-
 .../restlet/resource/ResourceBuilder.java       |   2 +-
 .../sql/assembly/DataSourceAssembler.java       |   2 +-
 .../assembly/ExternalDataSourceAssembler.java   |   2 +-
 .../DataSourceConfigurationManagerService.java  |   2 +-
 .../moneytransfer/context/PayBillsContext.java  |   4 +-
 .../moneytransfer/context/PayBillsContext2.java |   4 +-
 .../dci/moneytransfer/test/AccountIds.java      |   8 +-
 .../sample/forum/data/entity/Forums.java        |   2 +-
 .../sample/forum/data/entity/Users.java         |   2 +-
 .../rest/resource/forum/BoardResource.java      |   2 +-
 .../rest/resource/forum/ForumResource.java      |   2 +-
 .../rest/resource/forum/ForumsResource.java     |   2 +-
 .../sample/rental/domain/dev/InitialData.java   |   2 +-
 .../polygene/sample/rental/web/BookingPage.java |   4 +-
 .../polygene/sample/rental/web/MainPage.java    |   2 +-
 .../AbstractEntityStorePerformanceTest.java     |   4 +-
 .../initialdata/SamplePersonInitialData.java    |   2 +-
 .../polygene/tutorials/hello/HelloTest4.java    |   2 +-
 111 files changed, 1436 insertions(+), 219 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/api/src/main/java/org/apache/polygene/api/association/ManyAssociation.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/association/ManyAssociation.java b/core/api/src/main/java/org/apache/polygene/api/association/ManyAssociation.java
index 2471b94..98f7fcf 100644
--- a/core/api/src/main/java/org/apache/polygene/api/association/ManyAssociation.java
+++ b/core/api/src/main/java/org/apache/polygene/api/association/ManyAssociation.java
@@ -28,6 +28,11 @@ import org.apache.polygene.api.identity.Identity;
 
 /**
  * Association to a collection of entities.
+ *
+ * <p>
+ * Duplication of entities (defined as Identity equality) is allowed and for each add, there will be
+ * an additional item in the collection/iterator. If de-duplication is requested, see {@link #toSet()} method.
+ * </p>
  */
 public interface ManyAssociation<T> extends Iterable<T>, AbstractAssociation
 {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/api/src/main/java/org/apache/polygene/api/association/NamedAssociation.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/association/NamedAssociation.java b/core/api/src/main/java/org/apache/polygene/api/association/NamedAssociation.java
index b8a62da..8597ba0 100644
--- a/core/api/src/main/java/org/apache/polygene/api/association/NamedAssociation.java
+++ b/core/api/src/main/java/org/apache/polygene/api/association/NamedAssociation.java
@@ -24,8 +24,15 @@ import java.util.stream.Stream;
 import org.apache.polygene.api.entity.EntityReference;
 
 /**
- * Association to named Entities.
- * The Iterable&lt;String&gt; returns the names in the association set.
+ * Named Association to Entities.
+ * <p>
+ *     This works similar to a Map with a String key.
+ * </p>
+ * <p>
+ * The Iterable&lt;String&gt; returns the names in the association set. The order during iteration is random by
+ * definition, even if other behaviors can possibly be observed. The depends on the underlying entity store
+ * implementation.
+ * </p>
  * @param <T> Parameterized associatee type
  */
 public interface NamedAssociation<T>
@@ -47,7 +54,7 @@ public interface NamedAssociation<T>
      * Adds a named association.
      * @param name The name of the association.
      * @param entity The entity for this named association.
-     * @return true if putted, false otherwise
+     * @return true if value has been updated to a new value.
      */
     boolean put( String name, T entity );
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java b/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java
index 68e2232..c2a7327 100644
--- a/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java
+++ b/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java
@@ -41,7 +41,7 @@ public final class EntityReference
     public static EntityReference parseEntityReference(String identityString)
     {
         Objects.requireNonNull( identityString, "identityString must not be null" );
-        return new EntityReference( StringIdentity.identity( identityString ) );
+        return new EntityReference( StringIdentity.identityOf( identityString ) );
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/api/src/main/java/org/apache/polygene/api/identity/StringIdentity.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/identity/StringIdentity.java b/core/api/src/main/java/org/apache/polygene/api/identity/StringIdentity.java
index 3eba611..faacf25 100644
--- a/core/api/src/main/java/org/apache/polygene/api/identity/StringIdentity.java
+++ b/core/api/src/main/java/org/apache/polygene/api/identity/StringIdentity.java
@@ -55,7 +55,7 @@ public class StringIdentity
         return value;
     }
 
-    public static Identity identity( String serializedState )
+    public static Identity identityOf( String serializedState )
     {
         return new StringIdentity( serializedState );
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/api/src/main/java/org/apache/polygene/api/identity/UuidGeneratorMixin.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/identity/UuidGeneratorMixin.java b/core/api/src/main/java/org/apache/polygene/api/identity/UuidGeneratorMixin.java
index 6f85ca7..6e71bac 100644
--- a/core/api/src/main/java/org/apache/polygene/api/identity/UuidGeneratorMixin.java
+++ b/core/api/src/main/java/org/apache/polygene/api/identity/UuidGeneratorMixin.java
@@ -27,6 +27,6 @@ public class UuidGeneratorMixin
     @Override
     public Identity generate(Class<?> compositeType)
     {
-        return StringIdentity.identity( UUID.randomUUID().toString() );
+        return StringIdentity.identityOf( UUID.randomUUID().toString() );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/api/src/test/java/org/apache/polygene/api/OperatorsTest.java
----------------------------------------------------------------------
diff --git a/core/api/src/test/java/org/apache/polygene/api/OperatorsTest.java b/core/api/src/test/java/org/apache/polygene/api/OperatorsTest.java
index f018907..9f3be8e 100644
--- a/core/api/src/test/java/org/apache/polygene/api/OperatorsTest.java
+++ b/core/api/src/test/java/org/apache/polygene/api/OperatorsTest.java
@@ -63,7 +63,7 @@ public class OperatorsTest
 
         try
         {
-            EntityBuilder<TestEntity> entityBuilder = uow.newEntityBuilder( TestEntity.class, StringIdentity.identity( "123" ) );
+            EntityBuilder<TestEntity> entityBuilder = uow.newEntityBuilder( TestEntity.class, StringIdentity.identityOf( "123" ) );
             entityBuilder.instance().value().set( assembler.module().newValue( TestValue.class ) );
             TestEntity testEntity = entityBuilder.newInstance();
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/api/src/test/java/org/apache/polygene/api/type/ValueTypeFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/api/src/test/java/org/apache/polygene/api/type/ValueTypeFactoryTest.java b/core/api/src/test/java/org/apache/polygene/api/type/ValueTypeFactoryTest.java
index 48ac6a5..95d328a 100644
--- a/core/api/src/test/java/org/apache/polygene/api/type/ValueTypeFactoryTest.java
+++ b/core/api/src/test/java/org/apache/polygene/api/type/ValueTypeFactoryTest.java
@@ -125,7 +125,7 @@ public class ValueTypeFactoryTest extends AbstractPolygeneTest
         try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork() )
         {
             assertThat(
-                valueTypeFactory.valueTypeOf( module, uow.newEntity( SomeState.class, StringIdentity.identity( "abc" ) ) ),
+                valueTypeFactory.valueTypeOf( module, uow.newEntity( SomeState.class, StringIdentity.identityOf( "abc" ) ) ),
                 instanceOf( EntityCompositeType.class ) );
         }
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/api/src/test/java/org/apache/polygene/api/unitofwork/RemovalTest.java
----------------------------------------------------------------------
diff --git a/core/api/src/test/java/org/apache/polygene/api/unitofwork/RemovalTest.java b/core/api/src/test/java/org/apache/polygene/api/unitofwork/RemovalTest.java
index f3a01d9..c401167 100644
--- a/core/api/src/test/java/org/apache/polygene/api/unitofwork/RemovalTest.java
+++ b/core/api/src/test/java/org/apache/polygene/api/unitofwork/RemovalTest.java
@@ -49,7 +49,7 @@ public class RemovalTest
         UnitOfWork uow = unitOfWorkFactory.newUnitOfWork();
         try
         {
-            EntityBuilder<TestEntity> builder = uow.newEntityBuilder( TestEntity.class, StringIdentity.identity( "123" ) );
+            EntityBuilder<TestEntity> builder = uow.newEntityBuilder( TestEntity.class, StringIdentity.identityOf( "123" ) );
             builder.instance().test().set( "habba" );
             TestEntity test = builder.newInstance();
             uow.remove( test );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToEntityConversionTest.java
----------------------------------------------------------------------
diff --git a/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToEntityConversionTest.java b/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToEntityConversionTest.java
index 86ac547..52d4901 100644
--- a/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToEntityConversionTest.java
+++ b/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToEntityConversionTest.java
@@ -65,7 +65,7 @@ public class ToEntityConversionTest
     public void testPropertyConversionToEntity()
         throws Exception
     {
-        Identity identity = StringIdentity.identity( "Niclas" );
+        Identity identity = StringIdentity.identityOf( "Niclas" );
         ValueBuilder<SomeType> vb = valueBuilderFactory.newValueBuilder( SomeType.class );
         SomeType prototype = vb.prototype();
         prototype.identity().set( identity );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToValueConversionTest.java
----------------------------------------------------------------------
diff --git a/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToValueConversionTest.java b/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToValueConversionTest.java
index 910cf72..3b768bb 100644
--- a/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToValueConversionTest.java
+++ b/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToValueConversionTest.java
@@ -73,11 +73,11 @@ public class ToValueConversionTest
         SomeType value;
         try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork(usecase) )
         {
-            SomeType entity1 = createEntity( uow, StringIdentity.identity( "Niclas" ) );
-            SomeType entity2 = createEntity( uow, StringIdentity.identity( "Paul" ) );
-            SomeType entity3 = createEntity( uow, StringIdentity.identity( "Jiri" ) );
-            SomeType entity4 = createEntity( uow, StringIdentity.identity( "Kent" ) );
-            SomeType entity5 = createEntity( uow, StringIdentity.identity( "Stan" ) );
+            SomeType entity1 = createEntity( uow, StringIdentity.identityOf( "Niclas" ) );
+            SomeType entity2 = createEntity( uow, StringIdentity.identityOf( "Paul" ) );
+            SomeType entity3 = createEntity( uow, StringIdentity.identityOf( "Jiri" ) );
+            SomeType entity4 = createEntity( uow, StringIdentity.identityOf( "Kent" ) );
+            SomeType entity5 = createEntity( uow, StringIdentity.identityOf( "Stan" ) );
             entity1.assoc().set( entity2 );
             entity1.many().add( entity3 );
             entity1.named().put( "kent", entity4 );
@@ -89,7 +89,7 @@ public class ToValueConversionTest
         }
         try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork(usecase) )
         {
-            assertThat( value.identity().get(), equalTo( StringIdentity.identity( "Niclas" ) ) );
+            assertThat( value.identity().get(), equalTo( StringIdentity.identityOf( "Niclas" ) ) );
             assertThat( value.name().get(), equalTo( "[Niclas]" ) );
 
             assertThat( uow.toValue( SomeType.class, value.assoc().get()).name().get(), equalTo( "[Paul]" ));

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ImportedServiceAssemblyImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ImportedServiceAssemblyImpl.java b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ImportedServiceAssemblyImpl.java
index 614df0b..8319f32 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ImportedServiceAssemblyImpl.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ImportedServiceAssemblyImpl.java
@@ -78,7 +78,7 @@ public final class ImportedServiceAssemblyImpl
             }
             else
             {
-                id = StringIdentity.identity( identity );
+                id = StringIdentity.identityOf( identity );
             }
 
             ImportedServiceModel serviceModel = new ImportedServiceModel( module,
@@ -103,7 +103,7 @@ public final class ImportedServiceAssemblyImpl
     {
         // Find reference that is not yet used
         int idx = 0;
-        Identity id = StringIdentity.identity( serviceType.getSimpleName() );
+        Identity id = StringIdentity.identityOf( serviceType.getSimpleName() );
         boolean invalid;
         do
         {
@@ -113,7 +113,7 @@ public final class ImportedServiceAssemblyImpl
                 if( serviceModel.identity().equals( id ) )
                 {
                     idx++;
-                    id = StringIdentity.identity( serviceType.getSimpleName() + "_" + idx );
+                    id = StringIdentity.identityOf( serviceType.getSimpleName() + "_" + idx );
                     invalid = true;
                     break;
                 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ModuleAssemblyImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ModuleAssemblyImpl.java b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ModuleAssemblyImpl.java
index 225857d..5c30117 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ModuleAssemblyImpl.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ModuleAssemblyImpl.java
@@ -708,7 +708,7 @@ final class ModuleAssemblyImpl
         Class<?> serviceType = serviceTypes.findFirst()
                 .orElse(null); // Use the first, which *SHOULD* be the main serviceType
         int idx = 0;
-        Identity id = StringIdentity.identity( serviceType.getSimpleName() );
+        Identity id = StringIdentity.identityOf( serviceType.getSimpleName() );
         boolean invalid;
         do
         {
@@ -718,7 +718,7 @@ final class ModuleAssemblyImpl
                 if (serviceAssembly.identity() != null && serviceAssembly.identity().equals(id))
                 {
                     idx++;
-                    id = StringIdentity.identity( serviceType.getSimpleName() + "_" + idx );
+                    id = StringIdentity.identityOf( serviceType.getSimpleName() + "_" + idx );
                     invalid = true;
                     break;
                 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ServiceDeclarationImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ServiceDeclarationImpl.java b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ServiceDeclarationImpl.java
index 92db867..beb3480 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ServiceDeclarationImpl.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ServiceDeclarationImpl.java
@@ -59,7 +59,7 @@ public final class ServiceDeclarationImpl
         for( ServiceAssemblyImpl serviceAssembly : serviceAssemblies )
         {
             if( identity != null ) {
-                serviceAssembly.identity = StringIdentity.identity( identity );
+                serviceAssembly.identity = StringIdentity.identityOf( identity );
             }
         }
         return this;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java b/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
index 071d2c3..a863364 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
@@ -264,7 +264,7 @@ public class ModuleUnitOfWork
             }
             else
             {
-                identity = StringIdentity.identity( propertyState );
+                identity = StringIdentity.identityOf( propertyState );
             }
         }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/api/common/RemovalTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/api/common/RemovalTest.java b/core/runtime/src/test/java/org/apache/polygene/api/common/RemovalTest.java
index 6c514c9..b58c6c9 100644
--- a/core/runtime/src/test/java/org/apache/polygene/api/common/RemovalTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/api/common/RemovalTest.java
@@ -48,7 +48,7 @@ public class RemovalTest
         throws Exception
     {
         UnitOfWork uow = unitOfWorkFactory.newUnitOfWork();
-        EntityBuilder<TestEntity> builder = uow.newEntityBuilder( TestEntity.class, StringIdentity.identity( "123" ) );
+        EntityBuilder<TestEntity> builder = uow.newEntityBuilder( TestEntity.class, StringIdentity.identityOf( "123" ) );
         builder.instance().test().set( "habba" );
         TestEntity test = builder.newInstance();
         uow.remove( test );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/regression/qi377/SetAssociationInSideEffectTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/regression/qi377/SetAssociationInSideEffectTest.java b/core/runtime/src/test/java/org/apache/polygene/regression/qi377/SetAssociationInSideEffectTest.java
index 84b6aed..1a73631 100644
--- a/core/runtime/src/test/java/org/apache/polygene/regression/qi377/SetAssociationInSideEffectTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/regression/qi377/SetAssociationInSideEffectTest.java
@@ -61,8 +61,8 @@ public class SetAssociationInSideEffectTest
     {
         try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Purchase Steinway" ) ) )
         {
-            Pianist chris = uow.newEntity( Pianist.class, StringIdentity.identity( "Chris" ) );
-            Steinway modelD = uow.newEntity( Steinway.class, StringIdentity.identity( "ModelD-274" ) );
+            Pianist chris = uow.newEntity( Pianist.class, StringIdentity.identityOf( "Chris" ) );
+            Steinway modelD = uow.newEntity( Steinway.class, StringIdentity.identityOf( "ModelD-274" ) );
 
             assertThat( modelD.owner().get(), is( nullValue() ) );
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/regression/qi377/ValueCollisionWithRelatedReturnTypesTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/regression/qi377/ValueCollisionWithRelatedReturnTypesTest.java b/core/runtime/src/test/java/org/apache/polygene/regression/qi377/ValueCollisionWithRelatedReturnTypesTest.java
index 45e8658..6b6bb0a 100644
--- a/core/runtime/src/test/java/org/apache/polygene/regression/qi377/ValueCollisionWithRelatedReturnTypesTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/regression/qi377/ValueCollisionWithRelatedReturnTypesTest.java
@@ -36,7 +36,7 @@ public class ValueCollisionWithRelatedReturnTypesTest
     extends AbstractPolygeneTest
 {
 
-    public static final Identity NICLAS = StringIdentity.identity( "niclas" );
+    public static final Identity NICLAS = StringIdentity.identityOf( "niclas" );
 
     @Override
     public void assemble( ModuleAssembly module )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/regression/qi382/Qi382Test.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/regression/qi382/Qi382Test.java b/core/runtime/src/test/java/org/apache/polygene/regression/qi382/Qi382Test.java
index 140fd9d..d645308 100644
--- a/core/runtime/src/test/java/org/apache/polygene/regression/qi382/Qi382Test.java
+++ b/core/runtime/src/test/java/org/apache/polygene/regression/qi382/Qi382Test.java
@@ -44,8 +44,8 @@ import static org.junit.Assert.assertThat;
 public class Qi382Test extends AbstractPolygeneTest
 {
 
-    public static final Identity FERRARI = StringIdentity.identity( "Ferrari" );
-    public static final Identity NICLAS = StringIdentity.identity( "Niclas" );
+    public static final Identity FERRARI = StringIdentity.identityOf( "Ferrari" );
+    public static final Identity NICLAS = StringIdentity.identityOf( "Niclas" );
 
     @Override
     public void assemble( ModuleAssembly module )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/regression/qi383/Qi383Test.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/regression/qi383/Qi383Test.java b/core/runtime/src/test/java/org/apache/polygene/regression/qi383/Qi383Test.java
index 96f0cad..efa6bc0 100644
--- a/core/runtime/src/test/java/org/apache/polygene/regression/qi383/Qi383Test.java
+++ b/core/runtime/src/test/java/org/apache/polygene/regression/qi383/Qi383Test.java
@@ -47,9 +47,9 @@ public class Qi383Test extends AbstractPolygeneTest
     {
         try( UnitOfWork unitOfWork = unitOfWorkFactory.newUnitOfWork() )
         {
-            unitOfWork.newEntity( Car.class, StringIdentity.identity( "Ferrari" ) );
-            unitOfWork.newEntity( Car.class, StringIdentity.identity( "Ford" ) );
-            unitOfWork.newEntity( Car.class, StringIdentity.identity( "Ferrari" ) );
+            unitOfWork.newEntity( Car.class, StringIdentity.identityOf( "Ferrari" ) );
+            unitOfWork.newEntity( Car.class, StringIdentity.identityOf( "Ford" ) );
+            unitOfWork.newEntity( Car.class, StringIdentity.identityOf( "Ferrari" ) );
             unitOfWork.complete();
         }
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/runtime/activation/ImportedServiceActivationTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/activation/ImportedServiceActivationTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/activation/ImportedServiceActivationTest.java
index 07674f0..c13d019 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/activation/ImportedServiceActivationTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/activation/ImportedServiceActivationTest.java
@@ -179,7 +179,7 @@ public class ImportedServiceActivationTest
             module -> {
                 module.importedServices( TestedService.class ).
                     importedBy( ImportedServiceDeclaration.SERVICE_IMPORTER ).
-                          setMetaInfo( StringIdentity.identity( "testimporter" ) ).
+                          setMetaInfo( StringIdentity.identityOf( "testimporter" ) ).
                           withActivators( TestedActivator.class ).
                           importOnStartup();
                 module.services( TestedServiceImporterService.class ).identifiedBy( "testimporter" );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityTypeTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityTypeTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityTypeTest.java
index 1c63573..d814e50 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityTypeTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityTypeTest.java
@@ -40,9 +40,9 @@ public class EntityTypeTest
         UnitOfWork uow = unitOfWorkFactory.newUnitOfWork();
         try
         {
-            EntityBuilder<Rst> builder3 = uow.newEntityBuilder( Rst.class, StringIdentity.identity( "123" ) );
-            EntityBuilder<Def> builder2 = uow.newEntityBuilder( Def.class, StringIdentity.identity( "456" ) );
-            EntityBuilder<Abc> builder1 = uow.newEntityBuilder( Abc.class, StringIdentity.identity( "789" ) );
+            EntityBuilder<Rst> builder3 = uow.newEntityBuilder( Rst.class, StringIdentity.identityOf( "123" ) );
+            EntityBuilder<Def> builder2 = uow.newEntityBuilder( Def.class, StringIdentity.identityOf( "456" ) );
+            EntityBuilder<Abc> builder1 = uow.newEntityBuilder( Abc.class, StringIdentity.identityOf( "789" ) );
         }
         finally
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityVisibilityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityVisibilityTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityVisibilityTest.java
index 519d2a7..d1d510b 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityVisibilityTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityVisibilityTest.java
@@ -47,7 +47,7 @@ import org.junit.Test;
 public class EntityVisibilityTest
 {
 
-    public static final Identity TEST_IDENTITY = StringIdentity.identity( "123" );
+    public static final Identity TEST_IDENTITY = StringIdentity.identityOf( "123" );
 
     private Energy4Java polygene;
     private Module module;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/runtime/injection/ServiceInjectionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/injection/ServiceInjectionTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/injection/ServiceInjectionTest.java
index 637a141..c9cdd4e 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/injection/ServiceInjectionTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/injection/ServiceInjectionTest.java
@@ -82,7 +82,7 @@ public class ServiceInjectionTest
         ServiceUser user = factory.newObject( ServiceUser.class );
 
         assertEquals( "X", user.testSingle() );
-        assertThat( user.testIdentity(), equalTo( StringIdentity.identity( "Foo" ) ) );
+        assertThat( user.testIdentity(), equalTo( StringIdentity.identityOf( "Foo" ) ) );
         assertEquals( "FooX", user.testServiceReference() );
         assertEquals( "Bar", user.testQualifier() );
         assertEquals( "A", user.testStringIterable() );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/runtime/injection/UnitOfWorkInjectionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/injection/UnitOfWorkInjectionTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/injection/UnitOfWorkInjectionTest.java
index cd61437..4dd7111 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/injection/UnitOfWorkInjectionTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/injection/UnitOfWorkInjectionTest.java
@@ -53,7 +53,7 @@ public class UnitOfWorkInjectionTest
         UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( usecase );
         try
         {
-            Trial trial = uow.newEntity( Trial.class, StringIdentity.identity( "123" ) );
+            Trial trial = uow.newEntity( Trial.class, StringIdentity.identityOf( "123" ) );
             trial.doSomething();
             uow.complete();
             uow = unitOfWorkFactory.newUnitOfWork( usecase );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyMixinTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyMixinTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyMixinTest.java
index 2b3b6af..9e67af3 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyMixinTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyMixinTest.java
@@ -62,11 +62,11 @@ public class AssemblyMixinTest
         throws UnitOfWorkCompletionException
     {
         UnitOfWork uow = unitOfWorkFactory.newUnitOfWork();
-        FooEntity entity = uow.newEntity( FooEntity.class, StringIdentity.identity( "123" ) );
+        FooEntity entity = uow.newEntity( FooEntity.class, StringIdentity.identityOf( "123" ) );
         uow.complete();
 
         uow = unitOfWorkFactory.newUnitOfWork();
-        Foo foo = uow.get( Foo.class, StringIdentity.identity( "123" ) );
+        Foo foo = uow.get( Foo.class, StringIdentity.identityOf( "123" ) );
 
         try
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyRoleTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyRoleTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyRoleTest.java
index f051aec..ca15bc4 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyRoleTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyRoleTest.java
@@ -71,11 +71,11 @@ public class AssemblyRoleTest
         throws UnitOfWorkCompletionException
     {
         UnitOfWork uow = unitOfWorkFactory.newUnitOfWork();
-        uow.newEntity( FooEntity.class, StringIdentity.identity( "123" ) );
+        uow.newEntity( FooEntity.class, StringIdentity.identityOf( "123" ) );
         uow.complete();
 
         uow = unitOfWorkFactory.newUnitOfWork();
-        Foo foo = uow.get( Foo.class, StringIdentity.identity( "123" ) );
+        Foo foo = uow.get( Foo.class, StringIdentity.identityOf( "123" ) );
 
         try
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/JDKMixinTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/JDKMixinTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/JDKMixinTest.java
index 831babd..47e1203 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/JDKMixinTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/JDKMixinTest.java
@@ -98,8 +98,8 @@ public class JDKMixinTest extends AbstractPolygeneTest
         }
     }
 
-    private static final Identity EXTENDS_IDENTITY = StringIdentity.identity( ExtendsJDKMixin.class.getName() );
-    private static final Identity COMPOSE_IDENTITY = StringIdentity.identity( ComposeWithJDKMixin.class.getName() );
+    private static final Identity EXTENDS_IDENTITY = StringIdentity.identityOf( ExtendsJDKMixin.class.getName() );
+    private static final Identity COMPOSE_IDENTITY = StringIdentity.identityOf( ComposeWithJDKMixin.class.getName() );
     private static final Predicate<ServiceReference<?>> EXTENDS_IDENTITY_SPEC = new ServiceIdentitySpec(
         EXTENDS_IDENTITY );
     private static final Predicate<ServiceReference<?>> COMPOSE_IDENTITY_SPEC = new ServiceIdentitySpec(

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectVisibilityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectVisibilityTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectVisibilityTest.java
index d80d4e5..59c5a98 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectVisibilityTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectVisibilityTest.java
@@ -47,7 +47,7 @@ import org.junit.Test;
 public class ObjectVisibilityTest
 {
 
-    public static final Identity TEST_IDENTITY = StringIdentity.identity( "123" );
+    public static final Identity TEST_IDENTITY = StringIdentity.identityOf( "123" );
 
     private Energy4Java polygene;
     private Module module;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/runtime/query/IterableQuerySourceTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/query/IterableQuerySourceTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/query/IterableQuerySourceTest.java
index 9dbf52f..810eab2 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/query/IterableQuerySourceTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/query/IterableQuerySourceTest.java
@@ -214,7 +214,7 @@ public class IterableQuerySourceTest
     {
         QueryBuilder<Person> qb = qbf.newQueryBuilder( Person.class );
         Person person = templateFor( Person.class );
-        City kl = uow.get( City.class, StringIdentity.identity( "kualalumpur" ) );
+        City kl = uow.get( City.class, StringIdentity.identityOf( "kualalumpur" ) );
         Query<Person> query = qb.where(
             eq( person.mother().get().placeOfBirth(), kl )
         ).newQuery( Network.persons() );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/runtime/query/Network.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/query/Network.java b/core/runtime/src/test/java/org/apache/polygene/runtime/query/Network.java
index 727d168..dfd3253 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/query/Network.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/query/Network.java
@@ -44,8 +44,8 @@ import org.apache.polygene.runtime.query.model.values.ContactsValue;
  */
 class Network
 {
-    public static final Identity KUALALUMPUR = StringIdentity.identity( "kualalumpur" );
-    public static final Identity PENANG = StringIdentity.identity( "penang" );
+    public static final Identity KUALALUMPUR = StringIdentity.identityOf( "kualalumpur" );
+    public static final Identity PENANG = StringIdentity.identityOf( "penang" );
     private static List<Domain> domains;
     private static List<Person> persons;
     private static List<Male> males;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/runtime/service/ServiceVisibilityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/service/ServiceVisibilityTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/service/ServiceVisibilityTest.java
index 289be4b..e82a092 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/service/ServiceVisibilityTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/service/ServiceVisibilityTest.java
@@ -46,7 +46,7 @@ import org.junit.Test;
 
 public class ServiceVisibilityTest
 {
-    public static final Identity TEST_IDENTITY = StringIdentity.identity( "123" );
+    public static final Identity TEST_IDENTITY = StringIdentity.identityOf( "123" );
 
     private Energy4Java polygene;
     private Module module;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientVisibilityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientVisibilityTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientVisibilityTest.java
index 6e6abab..ba92bf1 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientVisibilityTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientVisibilityTest.java
@@ -47,7 +47,7 @@ import org.junit.Test;
 
 public class TransientVisibilityTest
 {
-    public static final Identity TEST_IDENTITY = StringIdentity.identity( "123" );
+    public static final Identity TEST_IDENTITY = StringIdentity.identityOf( "123" );
     private Energy4Java polygene;
     private Module module;
     private Application app;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/PrivateEntityUnitOfWorkTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/PrivateEntityUnitOfWorkTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/PrivateEntityUnitOfWorkTest.java
index 425ae18..c1a04f0 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/PrivateEntityUnitOfWorkTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/PrivateEntityUnitOfWorkTest.java
@@ -52,7 +52,7 @@ import static org.junit.Assert.fail;
  */
 public class PrivateEntityUnitOfWorkTest
 {
-    private static final Identity TEST_IDENTITY = StringIdentity.identity( "1" );
+    private static final Identity TEST_IDENTITY = StringIdentity.identityOf( "1" );
 
     @Structure
     private UnitOfWorkFactory uowf;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/RemovalTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/RemovalTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/RemovalTest.java
index 1a95f2f..617914a 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/RemovalTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/RemovalTest.java
@@ -40,7 +40,7 @@ public class RemovalTest
     extends AbstractPolygeneTest
 {
 
-    private static final Identity TEST_IDENTITY = StringIdentity.identity( "123" );
+    private static final Identity TEST_IDENTITY = StringIdentity.identityOf( "123" );
 
     public void assemble(ModuleAssembly module )
         throws AssemblyException

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/runtime/value/AssociationToValueTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/value/AssociationToValueTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/value/AssociationToValueTest.java
index ffbe234..d43cfc9 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/value/AssociationToValueTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/value/AssociationToValueTest.java
@@ -151,7 +151,7 @@ public class AssociationToValueTest extends AbstractPolygeneTest
         public Person findPersonByName( String name )
         {
             UnitOfWork uow = unitOfWorkFactory.currentUnitOfWork();
-            return uow.toValue( Person.class, uow.get( Person.class, StringIdentity.identity( name ) ) );
+            return uow.toValue( Person.class, uow.get( Person.class, StringIdentity.identityOf( name ) ) );
         }
     }
 
@@ -206,7 +206,7 @@ public class AssociationToValueTest extends AbstractPolygeneTest
         private Person createPerson( String name )
         {
             UnitOfWork uow = uowf.currentUnitOfWork();
-            return uow.newEntity( Person.class, StringIdentity.identity( name ) );
+            return uow.newEntity( Person.class, StringIdentity.identityOf( name ) );
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueSerializationRegressionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueSerializationRegressionTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueSerializationRegressionTest.java
index f48bfe3..2bb600a 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueSerializationRegressionTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueSerializationRegressionTest.java
@@ -50,7 +50,7 @@ public class ValueSerializationRegressionTest extends AbstractPolygeneTest
         throws UnitOfWorkCompletionException
     {
         ValueBuilder<DualFaced> builder = valueBuilderFactory.newValueBuilder( DualFaced.class );
-        builder.prototype().identity().set( StringIdentity.identity( "1234" ) );
+        builder.prototype().identity().set( StringIdentity.identityOf( "1234" ) );
         builder.prototype().name().set( "Hedhman" );
         DualFaced value = builder.newInstance();
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueVisibilityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueVisibilityTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueVisibilityTest.java
index 191808b..500d255 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueVisibilityTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueVisibilityTest.java
@@ -48,7 +48,7 @@ import org.junit.Test;
 public class ValueVisibilityTest
 {
 
-    public static final Identity TEST_IDENTIY = StringIdentity.identity( "123" );
+    public static final Identity TEST_IDENTIY = StringIdentity.identityOf( "123" );
     private Energy4Java polygene;
     private Module module;
     private Application app;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueWithAssociationTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueWithAssociationTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueWithAssociationTest.java
index 655505c..c53a1a5 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueWithAssociationTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueWithAssociationTest.java
@@ -113,7 +113,7 @@ public class ValueWithAssociationTest extends AbstractPolygeneTest
         throws UnitOfWorkCompletionException
     {
         ValueBuilder<DualFaced> builder = valueBuilderFactory.newValueBuilder( DualFaced.class );
-        builder.prototype().identity().set( StringIdentity.identity( "1234" ) );
+        builder.prototype().identity().set( StringIdentity.identityOf( "1234" ) );
         builder.prototype().name().set( "Hedhman" );
         DualFaced value = builder.newInstance();
 
@@ -125,8 +125,8 @@ public class ValueWithAssociationTest extends AbstractPolygeneTest
 
         try (UnitOfWork uow = unitOfWorkFactory.newUnitOfWork())
         {
-            DualFaced entity = uow.get( DualFaced.class, StringIdentity.identity( "1234" ) );
-            assertThat( entity.identity().get(), equalTo( StringIdentity.identity( "1234" ) ) );
+            DualFaced entity = uow.get( DualFaced.class, StringIdentity.identityOf( "1234" ) );
+            assertThat( entity.identity().get(), equalTo( StringIdentity.identityOf( "1234" ) ) );
             assertThat( entity.name().get(), equalTo( "Hedhman" ) );
             uow.complete();
         }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/runtime/visibility/VisibilityInUnitOfWorkTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/visibility/VisibilityInUnitOfWorkTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/visibility/VisibilityInUnitOfWorkTest.java
index ec9d072..239e7fe 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/visibility/VisibilityInUnitOfWorkTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/visibility/VisibilityInUnitOfWorkTest.java
@@ -41,8 +41,8 @@ import org.junit.Test;
 public class VisibilityInUnitOfWorkTest
 {
 
-    public static final Identity TEST_IDENTITY1 = StringIdentity.identity( "123" );
-    public static final Identity TEST_IDENTITY2 = StringIdentity.identity( "345" );
+    public static final Identity TEST_IDENTITY1 = StringIdentity.identityOf( "123" );
+    public static final Identity TEST_IDENTITY2 = StringIdentity.identityOf( "345" );
 
     @Test
     public void givenTwoModulesWithServiceAndEntityInOneAndEntityInOtherWhenOtherEntityAccessServiceWhichUsesItsEntityExpectServiceToHaveVisibility()

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/runtime/src/test/java/org/apache/polygene/spi/service/importer/ServiceInstanceImporterTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/spi/service/importer/ServiceInstanceImporterTest.java b/core/runtime/src/test/java/org/apache/polygene/spi/service/importer/ServiceInstanceImporterTest.java
index 237e8ab..b5f79a7 100644
--- a/core/runtime/src/test/java/org/apache/polygene/spi/service/importer/ServiceInstanceImporterTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/spi/service/importer/ServiceInstanceImporterTest.java
@@ -46,7 +46,7 @@ public class ServiceInstanceImporterTest
     {
         module.importedServices( TestService.class ).
             identifiedBy( "test" ).
-            setMetaInfo( StringIdentity.identity( "testimporter" ) ).
+            setMetaInfo( StringIdentity.identityOf( "testimporter" ) ).
             importedBy( ImportedServiceDeclaration.SERVICE_IMPORTER );
         module.services( TestImporterService.class ).identifiedBy( "testimporter" );
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/DefaultNamedAssociationState.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/DefaultNamedAssociationState.java b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/DefaultNamedAssociationState.java
index 94f30ca..c182180 100644
--- a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/DefaultNamedAssociationState.java
+++ b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/DefaultNamedAssociationState.java
@@ -21,6 +21,7 @@ package org.apache.polygene.spi.entitystore.helpers;
 
 import java.util.Iterator;
 import java.util.Map;
+import java.util.Objects;
 import org.apache.polygene.api.entity.EntityReference;
 import org.apache.polygene.spi.entity.NamedAssociationState;
 
@@ -55,7 +56,10 @@ public final class DefaultNamedAssociationState
     @Override
     public boolean put( String name, EntityReference entityReference )
     {
-        if( references.put( name, entityReference ) == null )
+        Objects.requireNonNull(name, "name");
+        Objects.requireNonNull(entityReference, "entityReference");
+        EntityReference oldReference = references.put( name, entityReference );
+        if( entityReference.equals( oldReference ) )
         {
             return false;
         }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/JSONMapEntityStoreMixin.java b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
index cedcedc..aa0bdc4 100644
--- a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
+++ b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
@@ -419,7 +419,7 @@ public class JSONMapEntityStoreMixin
 
             String version = parsedState.getString( JSONKeys.VERSION );
             Instant modified = Instant.ofEpochMilli( parsedState.getJsonNumber( JSONKeys.MODIFIED ).longValueExact() );
-            Identity identity = StringIdentity.identity( parsedState.getString( JSONKeys.IDENTITY ) );
+            Identity identity = StringIdentity.identityOf( parsedState.getString( JSONKeys.IDENTITY ) );
 
             // Check if version is correct
             JsonObject state;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java
index 2c98677..2dde5dc 100644
--- a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java
+++ b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java
@@ -382,7 +382,7 @@ public class MapEntityStoreMixin
 
             String version = parsedState.getString( JSONKeys.VERSION );
             Instant modified = Instant.ofEpochMilli( parsedState.getJsonNumber( JSONKeys.MODIFIED ).longValueExact() );
-            Identity identity = StringIdentity.identity( parsedState.getString( JSONKeys.IDENTITY ) );
+            Identity identity = StringIdentity.identityOf( parsedState.getString( JSONKeys.IDENTITY ) );
 
             // Check if version is correct
             JsonObject state;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/spi/src/main/java/org/apache/polygene/spi/serialization/BuiltInConverters.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/polygene/spi/serialization/BuiltInConverters.java b/core/spi/src/main/java/org/apache/polygene/spi/serialization/BuiltInConverters.java
index d86b81d..ab7448e 100644
--- a/core/spi/src/main/java/org/apache/polygene/spi/serialization/BuiltInConverters.java
+++ b/core/spi/src/main/java/org/apache/polygene/spi/serialization/BuiltInConverters.java
@@ -108,7 +108,7 @@ public interface BuiltInConverters
             @Override
             public Identity fromString( String string )
             {
-                return StringIdentity.identity( string );
+                return StringIdentity.identityOf( string );
             }
         }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/spi/src/test/java/org/apache/polygene/spi/entitystore/Polygene142Test.java
----------------------------------------------------------------------
diff --git a/core/spi/src/test/java/org/apache/polygene/spi/entitystore/Polygene142Test.java b/core/spi/src/test/java/org/apache/polygene/spi/entitystore/Polygene142Test.java
index b9030bd..b8af6ca 100644
--- a/core/spi/src/test/java/org/apache/polygene/spi/entitystore/Polygene142Test.java
+++ b/core/spi/src/test/java/org/apache/polygene/spi/entitystore/Polygene142Test.java
@@ -61,7 +61,7 @@ public class Polygene142Test extends AbstractPolygeneTest
             value = serialization.deserialize( module, Regression142Type.class, serialized ); // ok
         }
         {
-            Identity valueId = StringIdentity.identity( "abcdefg" );
+            Identity valueId = StringIdentity.identityOf( "abcdefg" );
             {
                 try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "create" ) ) )
                 {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java
index 507526d..8a004a7 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java
@@ -19,7 +19,6 @@
  */
 package org.apache.polygene.test.entity.model;
 
-import java.util.Iterator;
 import org.apache.polygene.api.association.NamedAssociation;
 import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.api.constraint.ConstraintViolationException;
@@ -56,7 +55,7 @@ import org.apache.polygene.test.entity.model.people.Rent;
 import org.junit.Before;
 import org.junit.Test;
 
-import static org.hamcrest.core.Is.is;
+import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder;
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.junit.Assert.assertThat;
 
@@ -65,6 +64,8 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
     private static final String FRIEND = "Friend";
     private static final String COLLEAGUE = "Colleague";
 
+    protected ModuleAssembly configModule;
+
     @Structure
     private ObjectFactory obf;
 
@@ -80,14 +81,14 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
     private Identity montpellierId;
     private Identity hannoverId;
     private Identity malmoId;
-    private Identity cherasId;
 
+    private Identity cherasId;
     private Identity unknown3Id;
     private Identity unknown2Id;
     private Identity unknown1Id;
     private Identity varnhemId;
-    private Identity canaryId;
 
+    private Identity canaryId;
     private Identity switzerlandId;
     private Identity franceId;
     private Identity denmarkId;
@@ -240,15 +241,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
         try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenIteratingNamedAssociationExpectIterationToSucceed" ) ) )
         {
             Person niclas = peopleRepository.findPersonByName( "Niclas" );
-            Iterator<String> numbers = niclas.phoneNumbers().iterator();
-            assertThat( numbers.hasNext(), is( true ) );
-            assertThat( numbers.next(), equalTo( "Home" ) );
-            assertThat( numbers.hasNext(), is( true ) );
-            assertThat( numbers.next(), equalTo( "Chinese" ) );
-            assertThat( numbers.hasNext(), is( true ) );
-            assertThat( numbers.next(), equalTo( "Swedish" ) );
-            assertThat( numbers.hasNext(), is( true ) );
-            assertThat( numbers.next(), equalTo( "German" ) );
+            assertThat( niclas.phoneNumbers(), containsInAnyOrder("Home", "Chinese", "Swedish", "German"));
         }
     }
 
@@ -542,5 +535,6 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
     {
         module.defaultServices();
         module.services( MemoryEntityStoreService.class ).visibleIn( Visibility.module );
+        configModule = module;
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/LegalService.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/LegalService.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/LegalService.java
index 925e500..c90a64c 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/LegalService.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/LegalService.java
@@ -52,7 +52,7 @@ public interface LegalService
         public Identity createWill( Person principal, Map<Person, BigDecimal> amounts, Map<Person, Float> percentages, Map<Person, String> specificItems )
         {
             UnitOfWork uow = uowf.currentUnitOfWork();
-            Identity identity = StringIdentity.identity( "will-" + principal.name().get() );
+            Identity identity = StringIdentity.identityOf( "will-" + principal.name().get() );
             EntityBuilder<Will> builder = uow.newEntityBuilder( Will.class, identity );
             Will instance = builder.instance();
             for( Map.Entry<Person, BigDecimal> entry : amounts.entrySet() )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/PeopleRepository.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/PeopleRepository.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/PeopleRepository.java
index 0aeb8ea..7e31aab9 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/PeopleRepository.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/PeopleRepository.java
@@ -27,7 +27,7 @@ import org.apache.polygene.api.mixin.Mixins;
 import org.apache.polygene.api.unitofwork.UnitOfWork;
 import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
 
-import static org.apache.polygene.api.identity.StringIdentity.identity;
+import static org.apache.polygene.api.identity.StringIdentity.identityOf;
 
 @Mixins( PeopleRepository.Mixin.class )
 public interface PeopleRepository
@@ -66,7 +66,7 @@ public interface PeopleRepository
         public Person createPerson( String name, Country nationality, Address address, Person spouse, PhoneNumber homeNumber )
         {
             UnitOfWork uow = uowf.currentUnitOfWork();
-            EntityBuilder<Person> builder = uow.newEntityBuilder( Person.class, identity( "person-" + name ) );
+            EntityBuilder<Person> builder = uow.newEntityBuilder( Person.class, identityOf( "person-" + name ) );
             Person instance = builder.instance();
             instance.name().set( name );
             instance.nationality().set( nationality );
@@ -89,14 +89,14 @@ public interface PeopleRepository
         public Person findPersonByName( String name )
         {
             UnitOfWork uow = uowf.currentUnitOfWork();
-            return uow.get( Person.class, identity( "person-" + name ) );
+            return uow.get( Person.class, identityOf( "person-" + name ) );
         }
 
         @Override
         public Country createCountry( String countryCode, String countryName )
         {
             UnitOfWork uow = uowf.currentUnitOfWork();
-            EntityBuilder<Country> builder = uow.newEntityBuilder( Country.class, identity( "country-" + countryCode ) );
+            EntityBuilder<Country> builder = uow.newEntityBuilder( Country.class, identityOf( "country-" + countryCode ) );
             builder.instance().name().set( countryName );
             return builder.newInstance();
         }
@@ -105,7 +105,7 @@ public interface PeopleRepository
         public Country findCountryByCountryCode( String countryCode )
         {
 
-            return findCountryByIdentity( identity( "country-" + countryCode ) );
+            return findCountryByIdentity( identityOf( "country-" + countryCode ) );
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractQueryTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractQueryTest.java b/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractQueryTest.java
index 0592b1d..c5d1d99 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractQueryTest.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractQueryTest.java
@@ -465,7 +465,7 @@ public abstract class AbstractQueryTest
     {
         QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
         Person person = templateFor( Person.class );
-        Domain gaming = unitOfWork.get( Domain.class, StringIdentity.identity( "Gaming" ) );
+        Domain gaming = unitOfWork.get( Domain.class, StringIdentity.identityOf( "Gaming" ) );
         Query<Person> query = unitOfWork.newQuery( qb.where( contains( person.interests(), gaming ) ) );
         System.out.println( "*** script33: " + query );
 
@@ -477,7 +477,7 @@ public abstract class AbstractQueryTest
     {
         QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
         Person person = templateFor( Person.class );
-        Female annDoe = unitOfWork.get( Female.class, StringIdentity.identity( "anndoe" ) );
+        Female annDoe = unitOfWork.get( Female.class, StringIdentity.identityOf( "anndoe" ) );
         Query<Person> query = unitOfWork.newQuery( qb.where( eq( person.mother(), annDoe ) ) );
         System.out.println( "*** script34: " + query );
 
@@ -500,7 +500,7 @@ public abstract class AbstractQueryTest
     {
         QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
         Person person = templateFor( Person.class );
-        Account anns = unitOfWork.get( Account.class, StringIdentity.identity( "accountOfAnnDoe" ) );
+        Account anns = unitOfWork.get( Account.class, StringIdentity.identityOf( "accountOfAnnDoe" ) );
         Query<Person> query = unitOfWork.newQuery( qb.where( contains( person.accounts(), anns ) ) );
         System.out.println( "*** script36: " + query );
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/testsupport/src/main/java/org/apache/polygene/test/indexing/TestData.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/indexing/TestData.java b/core/testsupport/src/main/java/org/apache/polygene/test/indexing/TestData.java
index 40df6ba..5434005 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/indexing/TestData.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/indexing/TestData.java
@@ -59,7 +59,7 @@ public class TestData
             NameableAssert.clear();
             Domain gaming;
             {
-                EntityBuilder<Domain> domainBuilder = unitOfWork.newEntityBuilder( Domain.class, StringIdentity.identity( "Gaming" ) );
+                EntityBuilder<Domain> domainBuilder = unitOfWork.newEntityBuilder( Domain.class, StringIdentity.identityOf( "Gaming" ) );
                 gaming = domainBuilder.instance();
                 gaming.name().set( "Gaming" );
                 gaming.description().set( "Gaming domain" );
@@ -121,7 +121,7 @@ public class TestData
 
             Account annsAccount;
             {
-                EntityBuilder<Account> accountBuilder = unitOfWork.newEntityBuilder( Account.class, StringIdentity.identity( "accountOfAnnDoe" ) );
+                EntityBuilder<Account> accountBuilder = unitOfWork.newEntityBuilder( Account.class, StringIdentity.identityOf( "accountOfAnnDoe" ) );
                 annsAccount = accountBuilder.instance();
                 annsAccount.number().set( "accountOfAnnDoe" );
                 annsAccount = accountBuilder.newInstance();
@@ -129,7 +129,7 @@ public class TestData
 
             Account jacksAccount;
             {
-                EntityBuilder<Account> accountBuilder = unitOfWork.newEntityBuilder( Account.class, StringIdentity.identity( "accountOfJackDoe" ) );
+                EntityBuilder<Account> accountBuilder = unitOfWork.newEntityBuilder( Account.class, StringIdentity.identityOf( "accountOfJackDoe" ) );
                 jacksAccount = accountBuilder.instance();
                 jacksAccount.number().set( "accountOfJackDoe" );
                 jacksAccount = accountBuilder.newInstance();
@@ -143,7 +143,7 @@ public class TestData
 
             Female annDoe;
             {
-                EntityBuilder<Female> femaleBuilder = unitOfWork.newEntityBuilder( Female.class, StringIdentity.identity( "anndoe" ) );
+                EntityBuilder<Female> femaleBuilder = unitOfWork.newEntityBuilder( Female.class, StringIdentity.identityOf( "anndoe" ) );
                 annDoe = femaleBuilder.instance();
                 annDoe.name().set( "Ann Doe" );
                 annDoe.title().set( Person.Title.MRS );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/testsupport/src/main/java/org/apache/polygene/test/metrics/AbstractPolygeneMetricsTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/metrics/AbstractPolygeneMetricsTest.java b/core/testsupport/src/main/java/org/apache/polygene/test/metrics/AbstractPolygeneMetricsTest.java
index f07a202..e9e0c1c 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/metrics/AbstractPolygeneMetricsTest.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/metrics/AbstractPolygeneMetricsTest.java
@@ -71,7 +71,7 @@ public abstract class AbstractPolygeneMetricsTest extends AbstractPolygeneBaseTe
 
     public interface PersonList
     {
-        Identity LIST_ID = StringIdentity.identity( "person-list" );
+        Identity LIST_ID = StringIdentity.identityOf( "person-list" );
 
         ManyAssociation<Person> all();
     }
@@ -274,7 +274,7 @@ public abstract class AbstractPolygeneMetricsTest extends AbstractPolygeneBaseTe
         Commands commands = services.findService( Commands.class ).get();
         Queries queries = services.findService( Queries.class ).get();
 
-        Identity identity = StringIdentity.identity( "1" );
+        Identity identity = StringIdentity.identityOf( "1" );
 
         try (UnitOfWork uow = services.unitOfWorkFactory().newUnitOfWork( newUsecase( "Step 1" ) ) )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/core/testsupport/src/main/java/org/apache/polygene/test/serialization/AbstractValueCompositeSerializationTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/serialization/AbstractValueCompositeSerializationTest.java b/core/testsupport/src/main/java/org/apache/polygene/test/serialization/AbstractValueCompositeSerializationTest.java
index ddea6d2..9f0d87c 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/serialization/AbstractValueCompositeSerializationTest.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/serialization/AbstractValueCompositeSerializationTest.java
@@ -253,7 +253,7 @@ public abstract class AbstractValueCompositeSerializationTest
     // JSONEntityState does not allow for polymorphic serialization
     public void valueAndEntityTypeEquality()
     {
-        Identity identity = StringIdentity.identity( "42" );
+        Identity identity = StringIdentity.identityOf( "42" );
         Some createdValue, loadedValue;
 
         try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( newUsecase( "create" ) ) )
@@ -301,7 +301,7 @@ public abstract class AbstractValueCompositeSerializationTest
     {
         EntityBuilder<Some> builder = uow.newEntityBuilder( Some.class );
         Some proto = builder.instance();
-        proto.identity().set( StringIdentity.identity( identity ) );
+        proto.identity().set( StringIdentity.identityOf( identity ) );
         setSomeValueState( module, uow, proto );
         return builder.newInstance();
     }
@@ -313,7 +313,7 @@ public abstract class AbstractValueCompositeSerializationTest
     {
         ValueBuilder<Some> builder = module.newValueBuilder( Some.class );
         Some proto = builder.prototype();
-        proto.identity().set( StringIdentity.identity( identity ) );
+        proto.identity().set( StringIdentity.identityOf( identity ) );
         setSomeValueState( module, uow, proto );
         return builder.newInstance();
     }
@@ -322,7 +322,7 @@ public abstract class AbstractValueCompositeSerializationTest
     {
         ValueBuilder<SomeExtended> builder = module.newValueBuilder( SomeExtended.class );
         SomeExtended proto = builder.prototype();
-        proto.identity().set( StringIdentity.identity( identity ) );
+        proto.identity().set( StringIdentity.identityOf( identity ) );
         setSomeValueState( module, uow, proto );
         proto.extraProperty().set( "extra property" );
         proto.extraAssociation().set( buildBarEntity( module, uow, "extra association" ) );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreMixin.java b/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreMixin.java
index 2895d53..549e0dc 100644
--- a/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreMixin.java
+++ b/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreMixin.java
@@ -427,7 +427,7 @@ public class CassandraEntityStoreMixin
         Identity newIdentity;
         if( idGenerator == null )
         {
-            newIdentity = StringIdentity.identity( UUID.randomUUID().toString() );
+            newIdentity = StringIdentity.identityOf( UUID.randomUUID().toString() );
         }
         else
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTestSuite.java b/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTestSuite.java
new file mode 100644
index 0000000..3908a73
--- /dev/null
+++ b/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTestSuite.java
@@ -0,0 +1,80 @@
+/*
+ *  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.entitystore.cassandra;
+
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.api.service.ServiceReference;
+import org.apache.polygene.api.structure.Module;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.cassandra.assembly.CassandraEntityStoreAssembler;
+import org.apache.polygene.test.docker.DockerRule;
+import org.apache.polygene.test.entity.CanRemoveAll;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.junit.ClassRule;
+
+/**
+ * Test the CassandraEntityStoreService.
+ * <p>Installing Cassandra and starting it should suffice as the test use Cassandra defaults: 127.0.0.1:3000</p>
+ */
+public class CassandraEntityStoreTestSuite extends EntityStoreTestSuite
+{
+    @ClassRule
+    public static final DockerRule DOCKER = new DockerRule( "cassandra", "Starting listening for CQL clients" );
+
+    @Override
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        new CassandraEntityStoreAssembler()
+            .visibleIn( Visibility.application )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+
+        module.services( CassandraEntityStoreService.class )
+              .withTypes( CanRemoveAll.class )
+              .withMixins( EmptyCassandraTableMixin.class )
+              .visibleIn( Visibility.application );
+
+
+        CassandraEntityStoreConfiguration cassandraDefaults = configModule.forMixin( CassandraEntityStoreConfiguration.class ).declareDefaults();
+        String host = DOCKER.getDockerHost();
+        int port = DOCKER.getExposedContainerPort( "9042/tcp" );
+        System.out.println("Cassandra: " + host + ":" + port);
+        cassandraDefaults.hostnames().set( host + ':' + port );
+        cassandraDefaults.createIfMissing().set( true );
+    }
+
+    @Override
+    public void tearDown()
+        throws Exception
+    {
+        Module module = application.findModule( "Infrastructure Layer", "Storage Module" );
+        ServiceReference<CanRemoveAll> cleaner = module.serviceFinder().findService( CanRemoveAll.class );
+        if( cleaner.isActive() && cleaner.isAvailable() )
+        {
+            cleaner.get().removeAll();
+        }
+        else
+        {
+            throw new IllegalStateException( "Clean up operation of Cassandra database was not availeble." );
+        }
+        super.tearDown();
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-file/src/test/java/org/apache/polygene/entitystore/file/FileEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-file/src/test/java/org/apache/polygene/entitystore/file/FileEntityStoreTestSuite.java b/extensions/entitystore-file/src/test/java/org/apache/polygene/entitystore/file/FileEntityStoreTestSuite.java
new file mode 100644
index 0000000..b28afff
--- /dev/null
+++ b/extensions/entitystore-file/src/test/java/org/apache/polygene/entitystore/file/FileEntityStoreTestSuite.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.entitystore.file;
+
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.file.assembly.FileEntityStoreAssembler;
+import org.apache.polygene.library.fileconfig.FileConfigurationAssembler;
+import org.apache.polygene.library.fileconfig.FileConfigurationOverride;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.junit.Rule;
+import org.junit.rules.TemporaryFolder;
+
+public class FileEntityStoreTestSuite
+    extends EntityStoreTestSuite
+{
+    @Rule
+    public final TemporaryFolder tmpDir = new TemporaryFolder();
+
+    @Override
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        new FileConfigurationAssembler()
+            .withOverride( new FileConfigurationOverride().withConventionalRoot( tmpDir.getRoot() ) )
+            .visibleIn( Visibility.application )
+            .assemble( module );
+        new FileEntityStoreAssembler()
+            .withConfig( configModule, Visibility.application )
+            .visibleIn( Visibility.application )
+            .assemble( module );
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/extensions/entitystore-geode/src/test/java/org/apache/polygene/entitystore/geode/GeodeEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-geode/src/test/java/org/apache/polygene/entitystore/geode/GeodeEntityStoreTestSuite.java b/extensions/entitystore-geode/src/test/java/org/apache/polygene/entitystore/geode/GeodeEntityStoreTestSuite.java
new file mode 100644
index 0000000..73dc13c
--- /dev/null
+++ b/extensions/entitystore-geode/src/test/java/org/apache/polygene/entitystore/geode/GeodeEntityStoreTestSuite.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.entitystore.geode;
+
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.geode.assembly.GeodeEntityStoreAssembler;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+
+public class GeodeEntityStoreTestSuite extends EntityStoreTestSuite
+{
+    @Override
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        new GeodeEntityStoreAssembler()
+            .visibleIn( Visibility.application )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+    }
+}


[29/50] polygene-java git commit: Fixing the restlet library in relation to the polygene generator to work.

Posted by ni...@apache.org.
Fixing the restlet library in relation to the polygene generator to work.


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

Branch: refs/heads/es-jooq
Commit: c6b89168f155bb55d8af892d088b8977d9e26834
Parents: ed6ae81
Author: niclas <ni...@hedhman.org>
Authored: Sun Jul 2 14:08:40 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jul 2 14:08:40 2017 +0800

----------------------------------------------------------------------
 .../polygene/runtime/value/ValueInstance.java   | 18 ++++-
 libraries/restlet/build.gradle                  |  5 +-
 .../library/restlet/PolygeneEntityRestlet.java  |  1 -
 .../restlet/PolygeneRestApplication.java        | 36 ++++++---
 .../library/restlet/PolygeneServerServlet.java  | 13 ++-
 .../restlet/assembly/GenericRestLayer.java      | 34 --------
 .../assembly/RestApplicationAssembler.java      | 85 --------------------
 .../RestletCrudConnectivityAssembler.java       |  3 +
 .../assembly/RestletCrudModuleAssembler.java    | 23 ++++--
 .../configuration/ConfigurationLayer.java       | 45 -----------
 .../configuration/ConfigurationModule.java      | 39 ---------
 .../connectivity/ConnectivityLayer.java         | 39 ---------
 .../assembly/connectivity/RestModule.java       | 40 ---------
 .../assembly/connectivity/SecurityModule.java   | 35 --------
 .../restlet/assembly/domain/CrudModule.java     | 38 ---------
 .../restlet/assembly/domain/DomainLayer.java    | 37 ---------
 .../infrastructue/FileStorageModule.java        | 50 ------------
 .../assembly/infrastructue/IndexingModule.java  | 54 -------------
 .../infrastructue/InfrastructureLayer.java      | 54 -------------
 .../infrastructue/SerializationModule.java      | 37 ---------
 .../assembly/resource/ResourceLayer.java        | 37 ---------
 .../restlet/crud/EntityListResource.java        |  5 +-
 .../library/restlet/crud/EntityResource.java    | 13 +--
 .../restlet/resource/CreationResource.java      |  8 +-
 .../restlet/resource/EntryPointResource.java    |  4 +-
 .../restlet/resource/ResourceBuilder.java       | 32 ++++----
 .../serialization/JsonRepresentation.java       |  7 +-
 .../library/restlet/TestApplication.java        | 10 +--
 .../assembly/RestApplicationAssembler.java      | 85 ++++++++++++++++++++
 .../configuration/ConfigurationLayer.java       | 45 +++++++++++
 .../configuration/ConfigurationModule.java      | 39 +++++++++
 .../connectivity/ConnectivityLayer.java         | 39 +++++++++
 .../assembly/connectivity/RestModule.java       | 40 +++++++++
 .../assembly/connectivity/SecurityModule.java   | 35 ++++++++
 .../restlet/assembly/domain/CrudModule.java     | 38 +++++++++
 .../restlet/assembly/domain/DomainLayer.java    | 37 +++++++++
 .../infrastructue/FileStorageModule.java        | 50 ++++++++++++
 .../assembly/infrastructue/IndexingModule.java  | 54 +++++++++++++
 .../infrastructue/InfrastructureLayer.java      | 54 +++++++++++++
 .../infrastructue/SerializationModule.java      | 37 +++++++++
 .../assembly/resource/ResourceLayer.java        | 37 +++++++++
 .../HttpServerModule/bootstrap.tmpl             |  7 +-
 .../RestApiModule/NullEnroler.tmpl              | 32 --------
 .../RestApiModule/NullVerifier.tmpl             | 34 --------
 .../RestApiModule/bootstrap.tmpl                | 10 +--
 .../ConnectivityLayer/RestApiModule/module.js   |  4 -
 .../DomainLayer/DomainModule/bootstrap.tmpl     |  8 +-
 .../RestAPIApplication/application.java.tmpl    | 32 +++++---
 .../app/templates/buildtool/gradle-app.tmpl     | 22 ++---
 .../app/templates/buildtool/gradle-root.tmpl    | 27 +++++++
 50 files changed, 761 insertions(+), 807 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueInstance.java b/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueInstance.java
index 5e678c5..8af2e08 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueInstance.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueInstance.java
@@ -20,6 +20,7 @@
 package org.apache.polygene.runtime.value;
 
 import java.lang.reflect.Proxy;
+import java.util.Arrays;
 import org.apache.polygene.api.composite.CompositeInstance;
 import org.apache.polygene.api.serialization.Serializer;
 import org.apache.polygene.runtime.composite.MixinsInstance;
@@ -144,10 +145,23 @@ public final class ValueInstance extends TransientInstance
         return hash + state.hashCode() * 5; // State
     }
 
+    public String toJsonString()
+    {
+        Serializer serialization = ( (ModuleSpi) module().instance() ).serialization();
+        if( serialization != null )
+        {
+            return serialization.serialize( Serializer.Options.NO_TYPE_INFO, proxy() );
+        }
+        return null;
+    }
+
     @Override
     public String toString()
     {
-        Serializer serialization = ( (ModuleSpi) module().instance() ).serialization();
-        return serialization.serialize( Serializer.Options.NO_TYPE_INFO, proxy() );
+        return "ValueInstance{" +
+               "mixins=" + Arrays.toString( mixins ) +
+               ", state=" + state +
+               ", compositeModel=" + compositeModel +
+               '}';
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/restlet/build.gradle b/libraries/restlet/build.gradle
index 95ab44b..7a8705c 100644
--- a/libraries/restlet/build.gradle
+++ b/libraries/restlet/build.gradle
@@ -30,8 +30,6 @@ dependencies {
 
   api polygene.core.bootstrap
 
-  implementation polygene.extension( 'entitystore-file' )
-  implementation polygene.extension( 'indexing-rdf' )
   implementation libraries.restlet
 
   runtimeOnly polygene.core.runtime
@@ -39,7 +37,8 @@ dependencies {
   testImplementation polygene.core.testsupport
   testImplementation polygene.library( 'http' )
   testImplementation libraries.http_client
-
+  testImplementation polygene.extension( 'entitystore-file' )
+  testImplementation polygene.extension( 'indexing-rdf' )
   testRuntimeOnly libraries.logback
 }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneEntityRestlet.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneEntityRestlet.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneEntityRestlet.java
index b76bfd3..da27d9e 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneEntityRestlet.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneEntityRestlet.java
@@ -152,7 +152,6 @@ public class PolygeneEntityRestlet<T extends HasIdentity> extends Restlet
                              }
                              Representation representation = converter.toRepresentation( result, new Variant(), null );
                              response.setEntity( representation );
-                             response.setEntity( representation );
                              response.setStatus( Status.SUCCESS_OK );
                          }
                          else

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneRestApplication.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneRestApplication.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneRestApplication.java
index 854592e..0bfd614 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneRestApplication.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneRestApplication.java
@@ -33,6 +33,7 @@ import org.apache.polygene.library.restlet.resource.EntryPointResource;
 import org.apache.polygene.library.restlet.resource.ResourceFactory;
 import org.apache.polygene.library.restlet.resource.ServerResource;
 import org.apache.polygene.library.restlet.serialization.PolygeneConverter;
+import org.restlet.Component;
 import org.restlet.Context;
 import org.restlet.Restlet;
 import org.restlet.data.ChallengeScheme;
@@ -59,10 +60,12 @@ public abstract class PolygeneRestApplication extends org.restlet.Application
     protected ObjectFactory objectFactory;
 
     protected Router router;
+    protected String basePath;
 
-    protected PolygeneRestApplication( Context context )
+    protected PolygeneRestApplication( String basePath, Context context )
     {
         super( context );
+        this.basePath = basePath;
     }
 
     protected void printRoutes( PrintStream out )
@@ -105,25 +108,34 @@ public abstract class PolygeneRestApplication extends org.restlet.Application
         router = new Router( context );
 
         addRoutes( router );
-        router.attach( "/", newPolygeneRestlet( EntryPointResource.class, EntryPoint.class ) );
-
-        ChallengeAuthenticator guard = new ChallengeAuthenticator( context, ChallengeScheme.HTTP_BASIC, getName() + " Realm" );
+        router.attach( basePath, newPolygeneRestlet( EntryPointResource.class, EntryPoint.class ) );
 
         Verifier verifier = createVerifier();
-        if( verifier != null )
+        Enroler enroler = createEnroler();
+        if( verifier == null && enroler == null )
         {
-            guard.setVerifier( verifier );
+            return createInterceptors(new Filter()
+                {
+                } );
         }
-
-        Enroler enroler = createEnroler();
-        if( enroler != null )
+        else
         {
-            guard.setEnroler( enroler );
+            ChallengeAuthenticator guard = new ChallengeAuthenticator( context, ChallengeScheme.HTTP_BASIC, getName() + " Realm" );
+
+            if( verifier != null )
+            {
+                guard.setVerifier( verifier );
+            }
+
+            if( enroler != null )
+            {
+                guard.setEnroler( enroler );
+            }
+            return createInterceptors( guard );
         }
-        return createInterceptors( guard );
     }
 
-    private Restlet createInterceptors( ChallengeAuthenticator guard )
+    private Restlet createInterceptors( Filter guard )
     {
         Filter inner = createInnerInterceptor();
         if( inner != null )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneServerServlet.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneServerServlet.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneServerServlet.java
index ce5cf03..4d2c125 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneServerServlet.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneServerServlet.java
@@ -19,12 +19,16 @@
  */
 package org.apache.polygene.library.restlet;
 
+import java.util.List;
 import javax.servlet.Servlet;
 import org.apache.polygene.api.injection.scope.Structure;
 import org.apache.polygene.api.mixin.Mixins;
+import org.apache.polygene.api.object.ObjectFactory;
 import org.apache.polygene.api.structure.Module;
 import org.restlet.Context;
 import org.restlet.ext.servlet.ServerServlet;
+import org.restlet.routing.VirtualHost;
+import org.restlet.util.ServerList;
 
 /**
  * Restlet ServerServlet backed by a org.restlet.Application object.
@@ -32,16 +36,17 @@ import org.restlet.ext.servlet.ServerServlet;
 @Mixins( PolygeneServerServlet.Mixin.class )
 public interface PolygeneServerServlet extends Servlet
 {
-    class Mixin
-        extends ServerServlet
+    class Mixin extends ServerServlet
     {
         @Structure
-        private Module module;
+        private ObjectFactory objectFactory;
 
         @Override
         protected org.restlet.Application createApplication( Context parentContext )
         {
-            return module.newObject( org.restlet.Application.class, parentContext.createChildContext() );
+            ServerList servers = getComponent().getServers();
+            System.out.println(servers);
+            return objectFactory.newObject( PolygeneRestApplication.class, parentContext.createChildContext() );
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/GenericRestLayer.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/GenericRestLayer.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/GenericRestLayer.java
deleted file mode 100644
index bbe10ab..0000000
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/GenericRestLayer.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-
-package org.apache.polygene.library.restlet.assembly;
-
-import org.apache.polygene.bootstrap.LayerAssembly;
-import org.apache.polygene.bootstrap.layered.LayeredLayerAssembler;
-
-public class GenericRestLayer extends LayeredLayerAssembler
-{
-
-    @Override
-    public LayerAssembly assemble( LayerAssembly layer )
-    {
-        return null;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestApplicationAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestApplicationAssembler.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestApplicationAssembler.java
deleted file mode 100644
index c520e75..0000000
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestApplicationAssembler.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-
-package org.apache.polygene.library.restlet.assembly;
-
-import java.util.LinkedHashMap;
-import java.util.function.BinaryOperator;
-import org.apache.polygene.api.activation.PassivationException;
-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.LayerAssembler;
-import org.apache.polygene.bootstrap.layered.LayeredApplicationAssembler;
-import org.apache.polygene.bootstrap.layered.ModuleAssembler;
-
-public class RestApplicationAssembler extends LayeredApplicationAssembler
-{
-    private final LinkedHashMap<Class<? extends LayerAssembler>, LayerAssembly> assemblies = new LinkedHashMap<>();
-    private Class<? extends LayerAssembler>[] layers;
-
-    @SafeVarargs
-    public RestApplicationAssembler( String name, String version, Application.Mode mode, Class<? extends LayerAssembler>... layers )
-        throws AssemblyException
-    {
-        super( name, version, mode );
-        this.layers = layers;
-    }
-
-    @Override
-    protected void assembleLayers( ApplicationAssembly assembly )
-    {
-        for( Class<? extends LayerAssembler> layer : layers )
-        {
-            LayerAssembly layerAssembly = createLayer( layer );
-            assemblies.put( layer, layerAssembly );
-        }
-    }
-
-    public void setupUses( BinaryOperator<LayerAssembly> uses )
-    {
-        assemblies.values().stream().reduce( uses );
-    }
-
-    public void setupUses()
-    {
-        assemblies.values().stream().reduce( LayerAssembly::uses );
-    }
-
-    public LayerAssembly layer( Class<? extends LayerAssembler> layerClass, ModuleAssembler... assemblers )
-    {
-        return assemblies.get( layerClass );
-    }
-
-    public void addShutdownHook()
-    {
-        Runtime.getRuntime().addShutdownHook( new Thread( () -> {
-            try
-            {
-                stop();
-            }
-            catch( PassivationException e )
-            {
-                e.printStackTrace();
-            }
-        } ) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestletCrudConnectivityAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestletCrudConnectivityAssembler.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestletCrudConnectivityAssembler.java
index 6da0361..0eb1d5e 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestletCrudConnectivityAssembler.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestletCrudConnectivityAssembler.java
@@ -38,6 +38,9 @@ import org.apache.polygene.library.restlet.resource.ResourceBuilder;
 import org.apache.polygene.library.restlet.serialization.FormRepresentation;
 import org.apache.polygene.library.restlet.serialization.JsonRepresentation;
 
+/** This assembler should go to a module in the layer of the {@link RestletCrudModuleAssembler}.
+ *
+ */
 public class RestletCrudConnectivityAssembler
     implements Assembler
 {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestletCrudModuleAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestletCrudModuleAssembler.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestletCrudModuleAssembler.java
index 562586f..490804b 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestletCrudModuleAssembler.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestletCrudModuleAssembler.java
@@ -22,14 +22,17 @@ package org.apache.polygene.library.restlet.assembly;
 
 import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.api.unitofwork.concern.UnitOfWorkConcern;
-import org.apache.polygene.bootstrap.Assembler;
+import org.apache.polygene.bootstrap.Assemblers;
 import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.bootstrap.ServiceDeclaration;
 import org.apache.polygene.library.restlet.repository.CrudRepository;
 import org.apache.polygene.library.restlet.repository.EntityTypeDescriptor;
 import org.apache.polygene.library.restlet.repository.SmallCrudRepositoryMixin;
 
-public class RestletCrudModuleAssembler
-    implements Assembler
+/**
+ * This assembler should be used for each module that has CRUD types, reachable by the REST API.
+ */
+public class RestletCrudModuleAssembler extends Assemblers.VisibilityIdentity<RestletCrudModuleAssembler>
 {
     private final Class type;
     private final Class repositoryType;
@@ -49,15 +52,21 @@ public class RestletCrudModuleAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
-        module
+        ServiceDeclaration declaration = module
             .addServices( repositoryType )
-            .identifiedBy( "repository_" + type.getSimpleName() )
             .visibleIn( Visibility.application )
             .withMixins( SmallCrudRepositoryMixin.class )
             .withConcerns( UnitOfWorkConcern.class )
             .taggedWith( type.getSimpleName() )
-            .setMetaInfo( new EntityTypeDescriptor( type ) )
-        ;
+            .setMetaInfo( new EntityTypeDescriptor( type ) );
+        if( hasIdentity() )
+        {
+            declaration.identifiedBy( identity() );
+        }
+        else
+        {
+            declaration.identifiedBy( "repository_" + type.getSimpleName() );
+        }
         module.entities( type ).visibleIn( Visibility.layer );
         module.values( type ).visibleIn( Visibility.layer );
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/configuration/ConfigurationLayer.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/configuration/ConfigurationLayer.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/configuration/ConfigurationLayer.java
deleted file mode 100644
index e615347..0000000
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/configuration/ConfigurationLayer.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-
-package org.apache.polygene.library.restlet.assembly.configuration;
-
-import org.apache.polygene.bootstrap.LayerAssembly;
-import org.apache.polygene.bootstrap.ModuleAssembly;
-import org.apache.polygene.bootstrap.layered.LayerAssembler;
-import org.apache.polygene.bootstrap.layered.LayeredLayerAssembler;
-
-public class ConfigurationLayer extends LayeredLayerAssembler
-    implements LayerAssembler
-{
-    public static final String NAME = "Configuration Layer";
-    private ModuleAssembly configModule;
-
-    @Override
-    public LayerAssembly assemble( LayerAssembly layer )
-    {
-        configModule = createModule( layer, ConfigurationModule.class );
-        return layer;
-    }
-
-    public ModuleAssembly configModule()
-    {
-        return configModule;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/configuration/ConfigurationModule.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/configuration/ConfigurationModule.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/configuration/ConfigurationModule.java
deleted file mode 100644
index dd65cfa..0000000
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/configuration/ConfigurationModule.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-
-package org.apache.polygene.library.restlet.assembly.configuration;
-
-import org.apache.polygene.api.common.Visibility;
-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;
-
-public class ConfigurationModule
-    implements ModuleAssembler
-{
-    public static final String NAME = "Configuration Module";
-    @Override
-    public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
-    {
-        module.services( MemoryEntityStoreService.class ).visibleIn( Visibility.layer );
-        return module;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/connectivity/ConnectivityLayer.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/connectivity/ConnectivityLayer.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/connectivity/ConnectivityLayer.java
deleted file mode 100644
index c0d45dc..0000000
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/connectivity/ConnectivityLayer.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-
-package org.apache.polygene.library.restlet.assembly.connectivity;
-
-import org.apache.polygene.bootstrap.LayerAssembly;
-import org.apache.polygene.bootstrap.layered.LayerAssembler;
-import org.apache.polygene.bootstrap.layered.LayeredLayerAssembler;
-
-public class ConnectivityLayer extends LayeredLayerAssembler
-    implements LayerAssembler
-{
-    public static final String NAME = "Connectivity Layer";
-
-    @Override
-    public LayerAssembly assemble( LayerAssembly layer )
-    {
-        createModule( layer, RestModule.class );
-        createModule( layer, SecurityModule.class );
-        return layer;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/connectivity/RestModule.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/connectivity/RestModule.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/connectivity/RestModule.java
deleted file mode 100644
index 29349f5..0000000
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/connectivity/RestModule.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.library.restlet.assembly.connectivity;
-
-import org.apache.polygene.bootstrap.LayerAssembly;
-import org.apache.polygene.bootstrap.ModuleAssembly;
-import org.apache.polygene.bootstrap.layered.ModuleAssembler;
-import org.apache.polygene.library.restlet.assembly.RestletCrudConnectivityAssembler;
-import org.apache.polygene.library.restlet.resource.EntryPoint;
-
-public class RestModule
-    implements ModuleAssembler
-{
-    public static final String NAME = "REST Module";
-
-    @Override
-    public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
-    {
-        new RestletCrudConnectivityAssembler().assemble( module );
-        module.values( EntryPoint.class );
-        return module;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/connectivity/SecurityModule.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/connectivity/SecurityModule.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/connectivity/SecurityModule.java
deleted file mode 100644
index 02ca63f..0000000
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/connectivity/SecurityModule.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-
-package org.apache.polygene.library.restlet.assembly.connectivity;
-
-import org.apache.polygene.bootstrap.LayerAssembly;
-import org.apache.polygene.bootstrap.ModuleAssembly;
-import org.apache.polygene.bootstrap.layered.ModuleAssembler;
-
-public class SecurityModule
-    implements ModuleAssembler
-{
-    @Override
-    public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
-    {
-        return module;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/domain/CrudModule.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/domain/CrudModule.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/domain/CrudModule.java
deleted file mode 100644
index 769390b..0000000
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/domain/CrudModule.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.library.restlet.assembly.domain;
-
-import org.apache.polygene.bootstrap.LayerAssembly;
-import org.apache.polygene.bootstrap.ModuleAssembly;
-import org.apache.polygene.bootstrap.layered.ModuleAssembler;
-import org.apache.polygene.library.restlet.assembly.CrudServiceAssembler;
-
-public class CrudModule
-    implements ModuleAssembler
-{
-    public static final String NAME = "CRUD Module";
-
-    @Override
-    public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
-    {
-        new CrudServiceAssembler().assemble( module );
-        return module;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/domain/DomainLayer.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/domain/DomainLayer.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/domain/DomainLayer.java
deleted file mode 100644
index 9fe73f3..0000000
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/domain/DomainLayer.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.library.restlet.assembly.domain;
-
-import org.apache.polygene.bootstrap.LayerAssembly;
-import org.apache.polygene.bootstrap.layered.LayerAssembler;
-import org.apache.polygene.bootstrap.layered.LayeredLayerAssembler;
-
-public class DomainLayer extends LayeredLayerAssembler
-    implements LayerAssembler
-{
-    public static final String NAME = "Domain Layer";
-
-    @Override
-    public LayerAssembly assemble( LayerAssembly layer )
-    {
-        createModule( layer, CrudModule.class );
-        return layer;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/infrastructue/FileStorageModule.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/infrastructue/FileStorageModule.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/infrastructue/FileStorageModule.java
deleted file mode 100644
index 4d410f7..0000000
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/infrastructue/FileStorageModule.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-
-package org.apache.polygene.library.restlet.assembly.infrastructue;
-
-import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.bootstrap.LayerAssembly;
-import org.apache.polygene.bootstrap.ModuleAssembly;
-import org.apache.polygene.bootstrap.layered.ModuleAssembler;
-import org.apache.polygene.entitystore.file.assembly.FileEntityStoreAssembler;
-
-public class FileStorageModule
-    implements ModuleAssembler
-{
-    public static final String NAME = "Storage Module";
-
-    private final ModuleAssembly configModule;
-
-    public FileStorageModule( ModuleAssembly configModule )
-    {
-        this.configModule = configModule;
-    }
-
-    @Override
-    public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
-    {
-        new FileEntityStoreAssembler()
-            .visibleIn( Visibility.application  )
-            .withConfig( configModule, Visibility.application )
-            .assemble( module );
-        return module;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/infrastructue/IndexingModule.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/infrastructue/IndexingModule.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/infrastructue/IndexingModule.java
deleted file mode 100644
index 9977b93..0000000
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/infrastructue/IndexingModule.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-
-package org.apache.polygene.library.restlet.assembly.infrastructue;
-
-import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.bootstrap.LayerAssembly;
-import org.apache.polygene.bootstrap.ModuleAssembly;
-import org.apache.polygene.bootstrap.layered.ModuleAssembler;
-import org.apache.polygene.index.rdf.assembly.RdfNativeSesameStoreAssembler;
-import org.apache.polygene.library.rdf.repository.NativeConfiguration;
-
-public class IndexingModule
-    implements ModuleAssembler
-{
-    public static final String NAME = "Indexing Module";
-    private final ModuleAssembly configModule;
-
-    public IndexingModule( ModuleAssembly configModule )
-    {
-        this.configModule = configModule;
-    }
-
-    @Override
-    public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
-    {
-//        new FileConfigurationAssembler().assemble( module );
-//        new ESFilesystemIndexQueryAssembler()
-//            .visibleIn( Visibility.application )
-//            .withConfig( configModule, Visibility.application )
-//            .assemble( module );
-
-        configModule.entities( NativeConfiguration.class ).visibleIn( Visibility.application );
-        new RdfNativeSesameStoreAssembler(Visibility.application, Visibility.module).assemble( module );
-        return module;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/infrastructue/InfrastructureLayer.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/infrastructue/InfrastructureLayer.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/infrastructue/InfrastructureLayer.java
deleted file mode 100644
index 7d98ff3..0000000
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/infrastructue/InfrastructureLayer.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-
-package org.apache.polygene.library.restlet.assembly.infrastructue;
-
-import org.apache.polygene.bootstrap.LayerAssembly;
-import org.apache.polygene.bootstrap.ModuleAssembly;
-import org.apache.polygene.bootstrap.layered.LayerAssembler;
-import org.apache.polygene.bootstrap.layered.LayeredLayerAssembler;
-import org.apache.polygene.library.restlet.assembly.configuration.ConfigurationLayer;
-import org.apache.polygene.library.restlet.assembly.configuration.ConfigurationModule;
-
-public class InfrastructureLayer extends LayeredLayerAssembler
-    implements LayerAssembler
-{
-    public static final String NAME = "Infrastructure Layer";
-    private final ModuleAssembly configModule;
-
-    public static InfrastructureLayer create( LayerAssembly layer )
-    {
-        ModuleAssembly config = layer.application().layer( ConfigurationLayer.NAME ).module( ConfigurationModule.NAME );
-        return new InfrastructureLayer( config );
-    }
-
-    public InfrastructureLayer( ModuleAssembly configModule )
-    {
-        this.configModule = configModule;
-    }
-
-    @Override
-    public LayerAssembly assemble( LayerAssembly layer )
-    {
-        new IndexingModule( configModule ).assemble( layer, layer.module( IndexingModule.NAME ) );
-        new SerializationModule().assemble( layer, layer.module( SerializationModule.NAME ) );
-        return layer;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/infrastructue/SerializationModule.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/infrastructue/SerializationModule.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/infrastructue/SerializationModule.java
deleted file mode 100644
index 85bb76d..0000000
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/infrastructue/SerializationModule.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-
-package org.apache.polygene.library.restlet.assembly.infrastructue;
-
-import org.apache.polygene.bootstrap.LayerAssembly;
-import org.apache.polygene.bootstrap.ModuleAssembly;
-import org.apache.polygene.bootstrap.layered.ModuleAssembler;
-
-public class SerializationModule
-    implements ModuleAssembler
-{
-    public static final String NAME = "Serialization Module";
-
-    @Override
-    public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
-    {
-        return module;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/resource/ResourceLayer.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/resource/ResourceLayer.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/resource/ResourceLayer.java
deleted file mode 100644
index a209315..0000000
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/resource/ResourceLayer.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-
-package org.apache.polygene.library.restlet.assembly.resource;
-
-import org.apache.polygene.bootstrap.LayerAssembly;
-import org.apache.polygene.bootstrap.layered.LayerAssembler;
-import org.apache.polygene.bootstrap.layered.LayeredLayerAssembler;
-
-public class ResourceLayer extends LayeredLayerAssembler
-    implements LayerAssembler
-{
-    public static final String NAME = "Resource Layer";
-
-    @Override
-    public LayerAssembly assemble( LayerAssembly layer )
-    {
-        return layer;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityListResource.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityListResource.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityListResource.java
index 6085c22..175ee7c 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityListResource.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityListResource.java
@@ -93,13 +93,10 @@ public interface EntityListResource<T extends HasIdentity> extends ServerResourc
                 name = nameField.value().get();
             }
             Reference base = parameters.request().get().getResourceRef();
-
-            //noinspection unchecked
             Class<T> entityType = parameters.entityType().get();
-
             Identity identity = identityManager.generate(entityType, name);
             locator.find( entityType ).create( identity );
-            return resourceBuilder.createRestLink( identity, base, Method.GET );
+            return resourceBuilder.createRestLink( identity.toString(), base, Method.GET );
         }
 
         @SuppressWarnings( "unchecked" )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityResource.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityResource.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityResource.java
index 965a33a..91b05ea 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityResource.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityResource.java
@@ -40,7 +40,6 @@ import org.apache.polygene.library.restlet.RestLink;
 import org.apache.polygene.library.restlet.repository.RepositoryLocator;
 import org.apache.polygene.library.restlet.resource.ResourceBuilder;
 import org.apache.polygene.library.restlet.resource.ServerResource;
-import org.apache.polygene.spi.PolygeneSPI;
 import org.restlet.data.Reference;
 
 @Mixins( EntityResource.Mixin.class )
@@ -57,15 +56,9 @@ public interface EntityResource<T extends HasIdentity> extends ServerResource<T>
     {
 
         @Structure
-        private PolygeneSPI spi;
-
-        @Structure
         private ValueBuilderFactory vbf;
 
         @This
-        private HasIdentity me;
-
-        @This
         private Parameters<T> parameters;
 
         @This
@@ -95,7 +88,7 @@ public interface EntityResource<T extends HasIdentity> extends ServerResource<T>
         @Override
         public void delete()
         {
-            Class entityType = parameters.entityType().get();
+            Class<? extends HasIdentity> entityType = parameters.entityType().get();
             String idOfEntity = parameters.id().get();
             locator.find( entityType ).delete( StringIdentity.identityOf( idOfEntity ) );
         }
@@ -137,10 +130,10 @@ public interface EntityResource<T extends HasIdentity> extends ServerResource<T>
                 throw new RuntimeException( message, e );
             }
             Reference base = parameters.request().get().getResourceRef();
-            return resourceBuilder.createRestLink( StringIdentity.identityOf( "" ), base, org.restlet.data.Method.GET );
+            return resourceBuilder.createRestLink( "", base, org.restlet.data.Method.GET );
         }
 
-        private Object createParametersComposite( RestForm form, Class argType )
+        private Object createParametersComposite( RestForm form, Class<?> argType )
         {
             ValueBuilder<?> vb = vbf.newValueBuilderWithState(
                 argType,

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/CreationResource.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/CreationResource.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/CreationResource.java
index fe86473..cee4b23 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/CreationResource.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/CreationResource.java
@@ -66,11 +66,11 @@ public interface CreationResource<T extends HasIdentity> extends ServerResource<
         public RestLink post( RestForm form )
         {
             String name = form.field( "name" ).value().get();
-            Class entityType = parameters.entityType().get();
+            Class<? extends HasIdentity> entityType = parameters.entityType().get();
             Identity identity = identityManager.generate( entityType, name );
             locator.find( entityType ).create( identity );
             doParameterization( form, entityType, identity );
-            return resourceBuilder.createRestLink( identity, parameters.request().get().getResourceRef(), Method.GET );
+            return resourceBuilder.createRestLink( identity.toString(), parameters.request().get().getResourceRef(), Method.GET );
         }
 
         private <P> void doParameterization( RestForm form, Class entityType, Identity identity )
@@ -79,7 +79,7 @@ public interface CreationResource<T extends HasIdentity> extends ServerResource<
             {
                 return;
             }
-            //noinspection unchecked
+            @SuppressWarnings( "unchecked" )
             CreationParameterized<P> created = (CreationParameterized<P>) locator.find( entityType ).get( identity );
             P parameterization = createParameterizationValue( form, created );
             created.parameterize( parameterization );
@@ -94,7 +94,7 @@ public interface CreationResource<T extends HasIdentity> extends ServerResource<
                 association -> null,
                 association -> null,
                 association -> null
-            );
+                                                             );
             return vb.newInstance();
         }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/EntryPointResource.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/EntryPointResource.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/EntryPointResource.java
index b497ebd..2e56c8a 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/EntryPointResource.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/EntryPointResource.java
@@ -80,11 +80,11 @@ public interface EntryPointResource extends ServerResource<EntryPoint>
                         RestLink link;
                         if( route.getDescription() == null )
                         {
-                            link = resourceBuilder.createRestLink( StringIdentity.identityOf( template.getPattern() ), hostRef, Method.GET );
+                            link = resourceBuilder.createRestLink( template.getPattern(), hostRef, Method.GET );
                         }
                         else
                         {
-                            link = resourceBuilder.createRestLink( StringIdentity.identityOf( template.getPattern() ), hostRef, Method.GET, route.getDescription() );
+                            link = resourceBuilder.createRestLink( template.getPattern(), hostRef, Method.GET, route.getDescription() );
                         }
                         entryPoints.put( route.getName(), link );
                     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/ResourceBuilder.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/ResourceBuilder.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/ResourceBuilder.java
index be851a6..fded105 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/ResourceBuilder.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/ResourceBuilder.java
@@ -24,7 +24,6 @@ import java.io.IOException;
 import java.util.Collections;
 import org.apache.polygene.api.identity.HasIdentity;
 import org.apache.polygene.api.identity.Identity;
-import org.apache.polygene.api.identity.StringIdentity;
 import org.apache.polygene.api.injection.scope.Service;
 import org.apache.polygene.api.injection.scope.Structure;
 import org.apache.polygene.api.mixin.Mixins;
@@ -48,13 +47,13 @@ import org.restlet.routing.Router;
 @Mixins( ResourceBuilder.Mixin.class )
 public interface ResourceBuilder
 {
-    EntityRef createEntityRef(Identity name, Reference base );
+    EntityRef createEntityRef( Identity name, Reference base );
 
     EntityRef createEntityRef( Identity name, RestLink get, RestLink put, RestLink delete );
 
-    RestLink createRestLink( Identity name, Reference base, Method method );
+    RestLink createRestLink( String name, Reference base, Method method );
 
-    RestLink createRestLink( Identity name, Reference base, Method method, String description );
+    RestLink createRestLink( String name, Reference base, Method method, String description );
 
     Command createCommand( Reference base );
 
@@ -62,9 +61,9 @@ public interface ResourceBuilder
 
     FormField createFormField( String name, String type );
 
-    <T extends HasIdentity> Representation toRepresentation(Class<T> type, T composite );
+    <T extends HasIdentity> Representation toRepresentation( Class<T> type, T composite );
 
-    <T extends HasIdentity> T toObject(Class<T> type, Representation representation )
+    <T extends HasIdentity> T toObject( Class<T> type, Representation representation )
         throws IOException;
 
     Route findRoute( String name, Router router );
@@ -88,9 +87,11 @@ public interface ResourceBuilder
         @Override
         public EntityRef createEntityRef( Identity identity, Reference base )
         {
-            RestLink get = createRestLink( identity, base, Method.GET );
-            RestLink put = createRestLink( identity, base, Method.PUT );
-            RestLink delete = createRestLink( identity, base, Method.DELETE );
+            String name = identityManager.extractName( identity );
+
+            RestLink get = createRestLink( name, base, Method.GET );
+            RestLink put = createRestLink( name, base, Method.PUT );
+            RestLink delete = createRestLink( name, base, Method.DELETE );
             return createEntityRef( identity, get, put, delete );
         }
 
@@ -107,10 +108,8 @@ public interface ResourceBuilder
         }
 
         @Override
-        public RestLink createRestLink( Identity identity, Reference base, Method method )
+        public RestLink createRestLink( String name, Reference base, Method method )
         {
-            String name = identityManager.extractName( identity );
-
             ValueBuilder<RestLink> builder = vbf.newValueBuilder( RestLink.class );
             RestLink prototype = builder.prototype();
             String path = base.toUri().resolve( name ).getPath();
@@ -120,9 +119,8 @@ public interface ResourceBuilder
         }
 
         @Override
-        public RestLink createRestLink( Identity identity, Reference base, Method method, String description )
+        public RestLink createRestLink( String name, Reference base, Method method, String description )
         {
-            String name = identityManager.extractName( identity );
             ValueBuilder<RestLink> builder = vbf.newValueBuilder( RestLink.class );
             RestLink prototype = builder.prototype();
             prototype.path().set( base.toUri().resolve( name ).getPath() + "/" );
@@ -143,7 +141,7 @@ public interface ResourceBuilder
         public RestForm createNameForm( Reference base )
         {
             ValueBuilder<RestForm> builder = vbf.newValueBuilder( RestForm.class );
-            builder.prototype().link().set( createRestLink( StringIdentity.identityOf( "form" ), base, Method.POST ) );
+            builder.prototype().link().set( createRestLink( "form", base, Method.POST ) );
             builder.prototype().fields().set( Collections.singletonList( createFormField( "name", FormField.TEXT ) ) );
             return builder.newInstance();
         }
@@ -157,13 +155,13 @@ public interface ResourceBuilder
         }
 
         @Override
-        public <T extends HasIdentity> Representation toRepresentation(Class<T> type, T composite )
+        public <T extends HasIdentity> Representation toRepresentation( Class<T> type, T composite )
         {
             return converter.toRepresentation( composite, new Variant(), null );
         }
 
         @Override
-        public <T extends HasIdentity> T toObject(Class<T> type, Representation representation )
+        public <T extends HasIdentity> T toObject( Class<T> type, Representation representation )
             throws IOException
         {
             return converter.toObject( representation, type, null );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/serialization/JsonRepresentation.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/serialization/JsonRepresentation.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/serialization/JsonRepresentation.java
index ea0929b..fafabe4 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/serialization/JsonRepresentation.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/serialization/JsonRepresentation.java
@@ -23,12 +23,12 @@ package org.apache.polygene.library.restlet.serialization;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
-import java.io.OutputStreamWriter;
 import org.apache.polygene.api.common.Optional;
 import org.apache.polygene.api.injection.scope.Service;
 import org.apache.polygene.api.injection.scope.Structure;
 import org.apache.polygene.api.injection.scope.Uses;
 import org.apache.polygene.api.serialization.Serialization;
+import org.apache.polygene.api.serialization.Serializer;
 import org.apache.polygene.api.structure.ModuleDescriptor;
 import org.apache.polygene.spi.PolygeneSPI;
 import org.restlet.data.MediaType;
@@ -84,7 +84,7 @@ public class JsonRepresentation<T> extends OutputRepresentation
      *
      * @return The wrapped object.
      *
-     * @throws IOException
+     * @throws IOException if there is an underlying I/O problem.
      */
     public T getObject()
         throws IOException
@@ -123,8 +123,7 @@ public class JsonRepresentation<T> extends OutputRepresentation
         }
         else if( object != null )
         {
-            // TODO was WITHOUT TYPE INFO
-            stateSerialization.serialize( new OutputStreamWriter( outputStream ), object );
+            stateSerialization.serialize( Serializer.Options.NO_TYPE_INFO, outputStream, object );
             outputStream.write( '\n' );
         }
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/TestApplication.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/TestApplication.java b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/TestApplication.java
index 6d21d05..3b8fb2b 100644
--- a/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/TestApplication.java
+++ b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/TestApplication.java
@@ -45,11 +45,11 @@ public class TestApplication
         throws Exception
     {
         RestApplicationAssembler assembler = new RestApplicationAssembler( NAME, VERSION, MODE,
-            ConfigurationLayer.class,
-            InfrastructureLayer.class,
-            DomainLayer.class,
-            ResourceLayer.class,
-            ConnectivityLayer.class
+                                                                           ConnectivityLayer.class,
+                                                                           ResourceLayer.class,
+                                                                           DomainLayer.class,
+                                                                           InfrastructureLayer.class,
+                                                                           ConfigurationLayer.class
         );
 
         assembler.initialize();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/RestApplicationAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/RestApplicationAssembler.java b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/RestApplicationAssembler.java
new file mode 100644
index 0000000..c520e75
--- /dev/null
+++ b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/RestApplicationAssembler.java
@@ -0,0 +1,85 @@
+/*
+ *  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.library.restlet.assembly;
+
+import java.util.LinkedHashMap;
+import java.util.function.BinaryOperator;
+import org.apache.polygene.api.activation.PassivationException;
+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.LayerAssembler;
+import org.apache.polygene.bootstrap.layered.LayeredApplicationAssembler;
+import org.apache.polygene.bootstrap.layered.ModuleAssembler;
+
+public class RestApplicationAssembler extends LayeredApplicationAssembler
+{
+    private final LinkedHashMap<Class<? extends LayerAssembler>, LayerAssembly> assemblies = new LinkedHashMap<>();
+    private Class<? extends LayerAssembler>[] layers;
+
+    @SafeVarargs
+    public RestApplicationAssembler( String name, String version, Application.Mode mode, Class<? extends LayerAssembler>... layers )
+        throws AssemblyException
+    {
+        super( name, version, mode );
+        this.layers = layers;
+    }
+
+    @Override
+    protected void assembleLayers( ApplicationAssembly assembly )
+    {
+        for( Class<? extends LayerAssembler> layer : layers )
+        {
+            LayerAssembly layerAssembly = createLayer( layer );
+            assemblies.put( layer, layerAssembly );
+        }
+    }
+
+    public void setupUses( BinaryOperator<LayerAssembly> uses )
+    {
+        assemblies.values().stream().reduce( uses );
+    }
+
+    public void setupUses()
+    {
+        assemblies.values().stream().reduce( LayerAssembly::uses );
+    }
+
+    public LayerAssembly layer( Class<? extends LayerAssembler> layerClass, ModuleAssembler... assemblers )
+    {
+        return assemblies.get( layerClass );
+    }
+
+    public void addShutdownHook()
+    {
+        Runtime.getRuntime().addShutdownHook( new Thread( () -> {
+            try
+            {
+                stop();
+            }
+            catch( PassivationException e )
+            {
+                e.printStackTrace();
+            }
+        } ) );
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/configuration/ConfigurationLayer.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/configuration/ConfigurationLayer.java b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/configuration/ConfigurationLayer.java
new file mode 100644
index 0000000..e615347
--- /dev/null
+++ b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/configuration/ConfigurationLayer.java
@@ -0,0 +1,45 @@
+/*
+ *  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.library.restlet.assembly.configuration;
+
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.bootstrap.layered.LayerAssembler;
+import org.apache.polygene.bootstrap.layered.LayeredLayerAssembler;
+
+public class ConfigurationLayer extends LayeredLayerAssembler
+    implements LayerAssembler
+{
+    public static final String NAME = "Configuration Layer";
+    private ModuleAssembly configModule;
+
+    @Override
+    public LayerAssembly assemble( LayerAssembly layer )
+    {
+        configModule = createModule( layer, ConfigurationModule.class );
+        return layer;
+    }
+
+    public ModuleAssembly configModule()
+    {
+        return configModule;
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/configuration/ConfigurationModule.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/configuration/ConfigurationModule.java b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/configuration/ConfigurationModule.java
new file mode 100644
index 0000000..dd65cfa
--- /dev/null
+++ b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/configuration/ConfigurationModule.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.library.restlet.assembly.configuration;
+
+import org.apache.polygene.api.common.Visibility;
+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;
+
+public class ConfigurationModule
+    implements ModuleAssembler
+{
+    public static final String NAME = "Configuration Module";
+    @Override
+    public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
+    {
+        module.services( MemoryEntityStoreService.class ).visibleIn( Visibility.layer );
+        return module;
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/connectivity/ConnectivityLayer.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/connectivity/ConnectivityLayer.java b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/connectivity/ConnectivityLayer.java
new file mode 100644
index 0000000..c0d45dc
--- /dev/null
+++ b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/connectivity/ConnectivityLayer.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.library.restlet.assembly.connectivity;
+
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.layered.LayerAssembler;
+import org.apache.polygene.bootstrap.layered.LayeredLayerAssembler;
+
+public class ConnectivityLayer extends LayeredLayerAssembler
+    implements LayerAssembler
+{
+    public static final String NAME = "Connectivity Layer";
+
+    @Override
+    public LayerAssembly assemble( LayerAssembly layer )
+    {
+        createModule( layer, RestModule.class );
+        createModule( layer, SecurityModule.class );
+        return layer;
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/connectivity/RestModule.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/connectivity/RestModule.java b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/connectivity/RestModule.java
new file mode 100644
index 0000000..29349f5
--- /dev/null
+++ b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/connectivity/RestModule.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.polygene.library.restlet.assembly.connectivity;
+
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.bootstrap.layered.ModuleAssembler;
+import org.apache.polygene.library.restlet.assembly.RestletCrudConnectivityAssembler;
+import org.apache.polygene.library.restlet.resource.EntryPoint;
+
+public class RestModule
+    implements ModuleAssembler
+{
+    public static final String NAME = "REST Module";
+
+    @Override
+    public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
+    {
+        new RestletCrudConnectivityAssembler().assemble( module );
+        module.values( EntryPoint.class );
+        return module;
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/connectivity/SecurityModule.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/connectivity/SecurityModule.java b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/connectivity/SecurityModule.java
new file mode 100644
index 0000000..02ca63f
--- /dev/null
+++ b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/connectivity/SecurityModule.java
@@ -0,0 +1,35 @@
+/*
+ *  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.library.restlet.assembly.connectivity;
+
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.bootstrap.layered.ModuleAssembler;
+
+public class SecurityModule
+    implements ModuleAssembler
+{
+    @Override
+    public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
+    {
+        return module;
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/domain/CrudModule.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/domain/CrudModule.java b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/domain/CrudModule.java
new file mode 100644
index 0000000..769390b
--- /dev/null
+++ b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/domain/CrudModule.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.library.restlet.assembly.domain;
+
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.bootstrap.layered.ModuleAssembler;
+import org.apache.polygene.library.restlet.assembly.CrudServiceAssembler;
+
+public class CrudModule
+    implements ModuleAssembler
+{
+    public static final String NAME = "CRUD Module";
+
+    @Override
+    public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
+    {
+        new CrudServiceAssembler().assemble( module );
+        return module;
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/domain/DomainLayer.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/domain/DomainLayer.java b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/domain/DomainLayer.java
new file mode 100644
index 0000000..9fe73f3
--- /dev/null
+++ b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/domain/DomainLayer.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.library.restlet.assembly.domain;
+
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.layered.LayerAssembler;
+import org.apache.polygene.bootstrap.layered.LayeredLayerAssembler;
+
+public class DomainLayer extends LayeredLayerAssembler
+    implements LayerAssembler
+{
+    public static final String NAME = "Domain Layer";
+
+    @Override
+    public LayerAssembly assemble( LayerAssembly layer )
+    {
+        createModule( layer, CrudModule.class );
+        return layer;
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/infrastructue/FileStorageModule.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/infrastructue/FileStorageModule.java b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/infrastructue/FileStorageModule.java
new file mode 100644
index 0000000..4d410f7
--- /dev/null
+++ b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/infrastructue/FileStorageModule.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.library.restlet.assembly.infrastructue;
+
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.bootstrap.layered.ModuleAssembler;
+import org.apache.polygene.entitystore.file.assembly.FileEntityStoreAssembler;
+
+public class FileStorageModule
+    implements ModuleAssembler
+{
+    public static final String NAME = "Storage Module";
+
+    private final ModuleAssembly configModule;
+
+    public FileStorageModule( ModuleAssembly configModule )
+    {
+        this.configModule = configModule;
+    }
+
+    @Override
+    public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
+    {
+        new FileEntityStoreAssembler()
+            .visibleIn( Visibility.application  )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+        return module;
+    }
+}


[21/50] polygene-java git commit: POLYGENE-263 - Missed some changes in the constructor signature.

Posted by ni...@apache.org.
POLYGENE-263 - Missed some changes in the constructor signature.


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/17a20799
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/17a20799
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/17a20799

Branch: refs/heads/es-jooq
Commit: 17a207993c8d01defefc8bc65c15a18d0d93bac0
Parents: 5704bb8
Author: niclas <ni...@hedhman.org>
Authored: Sun Jun 25 08:39:33 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jun 25 08:39:33 2017 +0800

----------------------------------------------------------------------
 .../spi/entitystore/helpers/JSONMapEntityStoreMixin.java        | 2 +-
 .../polygene/spi/entitystore/helpers/MapEntityStoreMixin.java   | 2 +-
 .../apache/polygene/test/entity/model/EntityStoreTestSuite.java | 2 +-
 .../java/org/apache/polygene/test/entity/model/people/Rent.java | 5 +++--
 4 files changed, 6 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/17a20799/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/JSONMapEntityStoreMixin.java b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
index aa0bdc4..2f6856b 100644
--- a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
+++ b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
@@ -449,7 +449,7 @@ public class JSONMapEntityStoreMixin
             EntityDescriptor entityDescriptor = module.entityDescriptor( type );
             if( entityDescriptor == null )
             {
-                throw new NoSuchEntityTypeException( type, module.name(), module.typeLookup() );
+                throw new NoSuchEntityTypeException( type, module );
             }
 
             return new JSONEntityState( entityDescriptor.module(), serialization, jsonFactories,

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/17a20799/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java
index 2dde5dc..78a95bc 100644
--- a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java
+++ b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java
@@ -412,7 +412,7 @@ public class MapEntityStoreMixin
             EntityDescriptor entityDescriptor = module.entityDescriptor( type );
             if( entityDescriptor == null )
             {
-                throw new NoSuchEntityTypeException( type, module.name(), module.typeLookup() );
+                throw new NoSuchEntityTypeException( type, module );
             }
 
             Map<QualifiedName, Object> properties = new HashMap<>();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/17a20799/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java
index 68b2b9a..169b93b 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java
@@ -421,7 +421,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneMultiLayeredT
     @Test
     public void givenEntityInheritanceWhenStoreRetrieveExpectSuccess()
     {
-        Currency.Builder currencyBuilder = objectFactory.newObject( Currency.Builder.class );
+        Currency.Builder currencyBuilder = transientBuilderFactory.newTransient( Currency.Builder.class );
         Identity willId;
         try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - givenEntityInheritanceWhenStoreRetrieveExpectSuccess" ) ) )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/17a20799/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Rent.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Rent.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Rent.java
index b05aec5..68999b6 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Rent.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Rent.java
@@ -19,6 +19,7 @@
  */
 package org.apache.polygene.test.entity.model.people;
 
+import org.apache.polygene.api.composite.TransientBuilderFactory;
 import org.apache.polygene.api.injection.scope.Structure;
 import org.apache.polygene.api.object.ObjectFactory;
 import org.apache.polygene.api.property.Property;
@@ -37,9 +38,9 @@ public interface Rent
         @Structure
         private ValueBuilderFactory vbf;
 
-        public Builder( @Structure ObjectFactory objectFactory)
+        public Builder( @Structure TransientBuilderFactory tbf )
         {
-            currencyBuilder = objectFactory.newObject( Currency.Builder.class );
+            currencyBuilder = tbf.newTransient( Currency.Builder.class );
         }
 
         public Rent create( int amount, String currency )


[28/50] polygene-java git commit: Fixing the restlet library in relation to the polygene generator to work.

Posted by ni...@apache.org.
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/infrastructue/IndexingModule.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/infrastructue/IndexingModule.java b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/infrastructue/IndexingModule.java
new file mode 100644
index 0000000..9977b93
--- /dev/null
+++ b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/infrastructue/IndexingModule.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.polygene.library.restlet.assembly.infrastructue;
+
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.bootstrap.layered.ModuleAssembler;
+import org.apache.polygene.index.rdf.assembly.RdfNativeSesameStoreAssembler;
+import org.apache.polygene.library.rdf.repository.NativeConfiguration;
+
+public class IndexingModule
+    implements ModuleAssembler
+{
+    public static final String NAME = "Indexing Module";
+    private final ModuleAssembly configModule;
+
+    public IndexingModule( ModuleAssembly configModule )
+    {
+        this.configModule = configModule;
+    }
+
+    @Override
+    public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
+    {
+//        new FileConfigurationAssembler().assemble( module );
+//        new ESFilesystemIndexQueryAssembler()
+//            .visibleIn( Visibility.application )
+//            .withConfig( configModule, Visibility.application )
+//            .assemble( module );
+
+        configModule.entities( NativeConfiguration.class ).visibleIn( Visibility.application );
+        new RdfNativeSesameStoreAssembler(Visibility.application, Visibility.module).assemble( module );
+        return module;
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/infrastructue/InfrastructureLayer.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/infrastructue/InfrastructureLayer.java b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/infrastructue/InfrastructureLayer.java
new file mode 100644
index 0000000..7d98ff3
--- /dev/null
+++ b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/infrastructue/InfrastructureLayer.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.polygene.library.restlet.assembly.infrastructue;
+
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.bootstrap.layered.LayerAssembler;
+import org.apache.polygene.bootstrap.layered.LayeredLayerAssembler;
+import org.apache.polygene.library.restlet.assembly.configuration.ConfigurationLayer;
+import org.apache.polygene.library.restlet.assembly.configuration.ConfigurationModule;
+
+public class InfrastructureLayer extends LayeredLayerAssembler
+    implements LayerAssembler
+{
+    public static final String NAME = "Infrastructure Layer";
+    private final ModuleAssembly configModule;
+
+    public static InfrastructureLayer create( LayerAssembly layer )
+    {
+        ModuleAssembly config = layer.application().layer( ConfigurationLayer.NAME ).module( ConfigurationModule.NAME );
+        return new InfrastructureLayer( config );
+    }
+
+    public InfrastructureLayer( ModuleAssembly configModule )
+    {
+        this.configModule = configModule;
+    }
+
+    @Override
+    public LayerAssembly assemble( LayerAssembly layer )
+    {
+        new IndexingModule( configModule ).assemble( layer, layer.module( IndexingModule.NAME ) );
+        new SerializationModule().assemble( layer, layer.module( SerializationModule.NAME ) );
+        return layer;
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/infrastructue/SerializationModule.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/infrastructue/SerializationModule.java b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/infrastructue/SerializationModule.java
new file mode 100644
index 0000000..85bb76d
--- /dev/null
+++ b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/infrastructue/SerializationModule.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.library.restlet.assembly.infrastructue;
+
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.bootstrap.layered.ModuleAssembler;
+
+public class SerializationModule
+    implements ModuleAssembler
+{
+    public static final String NAME = "Serialization Module";
+
+    @Override
+    public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
+    {
+        return module;
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/resource/ResourceLayer.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/resource/ResourceLayer.java b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/resource/ResourceLayer.java
new file mode 100644
index 0000000..a209315
--- /dev/null
+++ b/libraries/restlet/src/test/java/org/apache/polygene/library/restlet/assembly/resource/ResourceLayer.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.library.restlet.assembly.resource;
+
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.layered.LayerAssembler;
+import org.apache.polygene.bootstrap.layered.LayeredLayerAssembler;
+
+public class ResourceLayer extends LayeredLayerAssembler
+    implements LayerAssembler
+{
+    public static final String NAME = "Resource Layer";
+
+    @Override
+    public LayerAssembly assemble( LayerAssembly layer )
+    {
+        return layer;
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl b/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl
index d39b3c9..c7e161e 100644
--- a/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl
@@ -19,9 +19,7 @@
 -%>
 package <%= polygene.packageName %>.bootstrap.connectivity;
 
-import java.io.File;
 import java.util.HashMap;
-import javax.servlet.Servlet;
 <% if( hasFeature('security') ) { %>
 import org.apache.polygene.library.http.SecureJettyConfiguration;
 import org.apache.polygene.library.http.SecureJettyServiceAssembler;
@@ -36,7 +34,7 @@ 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.restlet.ext.servlet.ServerServlet;
+import org.apache.polygene.library.restlet.PolygeneServerServlet;
 
 import <%= polygene.packageName %>.rest.<%= polygene.name %>RestApplication;
 
@@ -61,7 +59,6 @@ public class HttpServerModule
     public ModuleAssembly assemble( LayerAssembly layer, ModuleAssembly module )
         throws AssemblyException
     {
-        module.services( Servlet.class ).withMixins( ServerServlet.class );
 <% if( hasFeature('security') ) {
 %>        new HttpShiroAssembler()
             .withConfig( module, Visibility.module );
@@ -89,7 +86,7 @@ public class HttpServerModule
         defaults.port().set( DEFAULT_PORT );
         HashMap<String, String> initParams = new HashMap<>();
         initParams.put("org.restlet.application", <%= polygene.name %>RestApplication.class.getName() );
-        addServlets( serve( "/" ).with(Servlet.class ).withInitParams( initParams ) ).to( module );
+        addServlets( serve( "/*" ).with(PolygeneServerServlet.class ).withInitParams( initParams ) ).to( module );
         return module;
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/NullEnroler.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/NullEnroler.tmpl b/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/NullEnroler.tmpl
deleted file mode 100644
index c24ddce..0000000
--- a/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/NullEnroler.tmpl
+++ /dev/null
@@ -1,32 +0,0 @@
-<%#
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
--%>
-package <%= polygene.packageName %>.rest.security;
-
-import org.restlet.data.ClientInfo;
-import org.restlet.security.Enroler;
-
-public class NullEnroler
-    implements Enroler
-{
-    @Override
-    public void enrole( ClientInfo clientInfo )
-    {
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/NullVerifier.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/NullVerifier.tmpl b/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/NullVerifier.tmpl
deleted file mode 100644
index 5d6b349..0000000
--- a/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/NullVerifier.tmpl
+++ /dev/null
@@ -1,34 +0,0 @@
-<%#
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
--%>
-package <%= polygene.packageName %>.rest.security;
-
-import org.restlet.security.SecretVerifier;
-import org.restlet.security.Verifier;
-
-public class NullVerifier extends SecretVerifier
-    implements Verifier
-{
-
-    @Override
-    public int verify( String user, char[] secret )
-    {
-        return RESULT_VALID;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/bootstrap.tmpl b/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/bootstrap.tmpl
index 0594546..daa6755 100644
--- a/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/bootstrap.tmpl
@@ -18,14 +18,12 @@
  *
 -%>
 package <%= polygene.packageName %>.bootstrap.connectivity;
-
 <% if( hasFeature('security') ) { %>
 import <%= polygene.packageName %>.rest.security.DefaultEnroler;
 import <%= polygene.packageName %>.rest.security.DefaultVerifier;
-<% } else { %>
-import <%= polygene.packageName %>.rest.security.NullEnroler;
-import <%= polygene.packageName %>.rest.security.NullVerifier;
 <% } %>
+import <%= polygene.packageName %>.rest.<%= polygene.name %>RestApplication;
+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;
@@ -44,10 +42,10 @@ public class RestApiModule
     {
 <% if( hasFeature('security') ) { %>
         module.objects( DefaultVerifier.class, DefaultEnroler.class);
-<% } else {%>
-        module.objects( NullVerifier.class, NullEnroler.class);
 <% } %>
         new RestletCrudConnectivityAssembler().assemble( module );
+        module.objects( <%= polygene.name %>RestApplication.class )
+              .visibleIn( Visibility.layer );
         module.values( EntryPoint.class );
         module.values( /* add value types */   );
         module.services(  /* add services */  );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/module.js
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/module.js b/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/module.js
index 8d4ad47..91e8104 100644
--- a/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/module.js
+++ b/tools/generator-polygene/app/templates/ConnectivityLayer/RestApiModule/module.js
@@ -27,10 +27,6 @@ module.exports = {
                 copyFile(p, "DefaultEnroler");
                 copyFile(p, "DefaultVerifier");
             }
-            else {
-                copyFile(p, "NullEnroler");
-                copyFile(p, "NullVerifier");
-            }
         }
     }
 };

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/tools/generator-polygene/app/templates/DomainLayer/DomainModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/bootstrap.tmpl b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/bootstrap.tmpl
index 5afbdd7..d23b640 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/bootstrap.tmpl
@@ -23,6 +23,7 @@ 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.library.restlet.assembly.RestletCrudModuleAssembler;
 
 <% for( var idx in polygene.current.cruds) {
 %><%= "import " + polygene.packageName + ".model." + polygene.current.name + "." + polygene.current.cruds[idx].name + ";" %>
@@ -54,8 +55,7 @@ for( var idx in polygene.current.services) {
 <%
 } %>
 
-import static org.apache.polygene.api.common.Visibility.layer;
-import static org.apache.polygene.api.common.Visibility.application;
+import static org.apache.polygene.api.common.Visibility.*;
 
 public class <%- firstUpper(polygene.current.name) %>Module
     implements ModuleAssembler
@@ -69,8 +69,8 @@ if( polygene.current.cruds ) {
     for( var value in polygene.current.cruds ) {
         var crud = polygene.current.cruds[value];
 %>
-        <%- "module.values( " + crud.name + ".class )" + (crud.visibility ? ".visibleIn( " + crud.visibility +" )" : "" ) %>;
-        <%- "module.entities( " + crud.name + ".class )" + (crud.visibility ? ".visibleIn( " + crud.visibility +" )" : "" ) %>;
+        new RestletCrudModuleAssembler( <%- crud.name %>.class )
+            .assemble( module );
 <%
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/tools/generator-polygene/app/templates/RestAPIApplication/application.java.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/RestAPIApplication/application.java.tmpl b/tools/generator-polygene/app/templates/RestAPIApplication/application.java.tmpl
index 8b38091..e188755 100644
--- a/tools/generator-polygene/app/templates/RestAPIApplication/application.java.tmpl
+++ b/tools/generator-polygene/app/templates/RestAPIApplication/application.java.tmpl
@@ -38,19 +38,13 @@ if( hasFeature('security') ) {
 %>import <%= polygene.packageName %>.rest.security.DefaultEnroler;
 import <%= polygene.packageName %>.rest.security.DefaultVerifier;
 <%
-} else {
-%>import <%= polygene.packageName %>.rest.security.NullEnroler;
-import <%= polygene.packageName %>.rest.security.NullVerifier;
-<%
 }
 %>
 public class <%= polygene.name %>RestApplication extends PolygeneRestApplication
 {
-    private static final String BASEPATH = "/<%= polygene.name.toLowerCase() %>/";
-
-    public <%= polygene.name %>RestApplication( Context context )
+    public <%= polygene.name %>RestApplication()
     {
-        super( context );
+        super( "/<%= polygene.name.toLowerCase() %>/", createContext() );
     }
 
     @Override
@@ -61,11 +55,18 @@ for( var moduleName in polygene.modules) {
     var module = polygene.modules[moduleName];
     for( var idx2 in module.cruds ) {
         var crud = module.cruds[idx2];
-%>        addResourcePath( "<%= crud.name.toLowerCase() %>", <%= crud.name %>.class, BASEPATH );
+%>        addResourcePath( "<%= crud.name.toLowerCase() %>", <%= crud.name %>.class, basePath );
 <%
     }
 }
-%>        System.out.println( "REST API defined;" );
+%>    }
+
+    @Override
+    public synchronized void start()
+        throws Exception
+    {
+        super.start();
+        System.out.println( "REST API defined;" );
         printRoutes( System.out );
     }
 
@@ -74,7 +75,8 @@ for( var moduleName in polygene.modules) {
 <% if( hasFeature('security') ) {
 %>        return objectFactory.newObject(DefaultVerifier.class, this);
 <% } else {
-%>        return objectFactory.newObject(NullVerifier.class, this);
+%>        // Security was not specified during generation, and Verifier is not needed.
+        return null;
 <% }
 %>    }
 
@@ -83,7 +85,13 @@ for( var moduleName in polygene.modules) {
 <% if( hasFeature('security') ) {
 %>        return objectFactory.newObject(DefaultEnroler.class, this);
 <% } else {
-%>        return objectFactory.newObject(NullEnroler.class, this);
+%>        // Security was not specified during generation, and Enroler is not needed.
+        return null;
 <% }
 %>    }
+
+    private static Context createContext()
+    {
+        return new Context("<%= polygene.packageName %>.rest");
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl b/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl
index ad707f2..697a2b0 100644
--- a/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl
+++ b/tools/generator-polygene/app/templates/buildtool/gradle-app.tmpl
@@ -43,6 +43,7 @@ dependencies {
 if( polygene.applicationtype === 'Rest API' ) {
 %>  implementation project( ":rest" )
   implementation "org.apache.polygene.libraries:org.apache.polygene.library.restlet:$polygeneVersion"
+  runtimeOnly "org.restlet.jee:org.restlet.ext.servlet:$restletVersion"
 <%
 }
 
@@ -70,38 +71,37 @@ if( hasFeature( 'envisage' ) ) {
 <%
 }
 if( polygene.entitystore == 'LevelDB'  ) {
-%>  implementation "org.fusesource.leveldbjni:leveldbjni-all:1.8"
+%>  implementation "org.fusesource.leveldbjni:leveldbjni-all:$levelDbVersion"
 <%
 }
 if( polygene.entitystore == 'DerbySQL'  ) {
-%>  implementation "org.apache.derby:derby:10.13.1.1"
+%>  implementation "org.apache.derby:derby:$derbyVersion"
 <%
 }
 if( polygene.entitystore == 'H2SQL'  ) {
-%>  implementation "com.h2database:h2:1.4.194"
+%>  implementation "com.h2database:h2:$h2Version"
 <%
 }
 if( polygene.entitystore == 'MySQL'  ) {
-%>  implementation "mysql:mysql-connector-java:6.0.6"
+%>  implementation "mysql:mysql-connector-java:$mysqlVersion"
 <%
 }
 if( polygene.entitystore == 'PostgreSQL'  ) {
-%>  implementation "org.postgresql:postgresql:42.0.0"
+%>  implementation "org.postgresql:postgresql:$postgresVersion"
 <%
 }
 if( polygene.entitystore == 'SQLite'  ) {
-%>  implementation "org.xerial:sqlite-jdbc:3.16.1"
+%>  implementation "org.xerial:sqlite-jdbc:$sqliteVersion"
 <%
 }
 %>
 
   runtimeOnly "org.apache.polygene.core:org.apache.polygene.core.runtime:$polygeneVersion"
-  runtimeOnly "org.restlet.jee:org.restlet.ext.servlet:2.3.4"
-  runtimeOnly "org.apache.johnzon:johnzon-core:1.1.0"
-  runtimeOnly "org.apache.johnzon:johnzon-mapper:1.1.0"
+  runtimeOnly "org.apache.johnzon:johnzon-core:$johnzonVersion"
+  runtimeOnly "org.apache.johnzon:johnzon-mapper:$johnzonVersion"
   runtimeOnly "org.apache.geronimo.specs:geronimo-json_1.1_spec:1.0"
-  implementation "ch.qos.logback:logback-classic:1.2.3"
-  implementation "ch.qos.logback:logback-core:1.2.3"
+  runtimeOnly "ch.qos.logback:logback-classic:$logbackVersion"
+  runtimeOnly "ch.qos.logback:logback-core:$logbackVersion"
 
   testImplementation "org.apache.polygene.tools:org.apache.polygene.tool.model-detail:$polygeneVersion"
   testImplementation "org.apache.polygene.core:org.apache.polygene.core.testsupport:$polygeneVersion"

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c6b89168/tools/generator-polygene/app/templates/buildtool/gradle-root.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/buildtool/gradle-root.tmpl b/tools/generator-polygene/app/templates/buildtool/gradle-root.tmpl
index 357b607..6ec2b7f 100644
--- a/tools/generator-polygene/app/templates/buildtool/gradle-root.tmpl
+++ b/tools/generator-polygene/app/templates/buildtool/gradle-root.tmpl
@@ -25,8 +25,35 @@ if( project.version == 'unspecified' )
 
 rootProject.ext {
   polygeneVersion = "<%= polygene.version %>"
+  logbackVersion = "1.2.3"
+  johnzonVersion = "1.1.0"
 <% if( polygene.applicationtype === "Rest API" ) {
 %>  jettyVersion = "9.2.17.v20160517"
+  restletVersion = "2.3.4"
+<%
+}
+if( polygene.entitystore == 'DerbySQL'  ) {
+%>  derbyVersion "10.13.1.1"
+<%
+}
+if( polygene.entitystore == 'H2SQL'  ) {
+%>  h2Version = "1.4.194"
+<%
+}
+if( polygene.entitystore == 'MySQL'  ) {
+%>  mysqlVersion = "6.0.6"
+<%
+}
+if( polygene.entitystore == 'PostgreSQL'  ) {
+%>  postgresVersion = "42.0.0"
+<%
+}
+if( polygene.entitystore == 'LevelDB'  ) {
+%>  levelDbVersion = "1.8"
+<%
+}
+if( polygene.entitystore == 'SQLite'  ) {
+%>  sqliteVersion = "3.16.1"
 <%
 }
 %>}


[23/50] polygene-java git commit: Small fixes in polygene generator.

Posted by ni...@apache.org.
Small fixes in polygene generator.


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

Branch: refs/heads/es-jooq
Commit: 5e494ff5376ec96c4c4a8faca0aea7b42d702f38
Parents: 17a2079
Author: niclas <ni...@hedhman.org>
Authored: Tue Jun 27 11:22:47 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Tue Jun 27 11:22:47 2017 +0800

----------------------------------------------------------------------
 tools/generator-polygene/app/index.js           | 28 ++++++++++++--------
 .../DomainLayer/DomainModule/Crud.tmpl          |  2 +-
 .../DomainLayer/DomainModule/Entity.tmpl        |  2 +-
 3 files changed, 19 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5e494ff5/tools/generator-polygene/app/index.js
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/index.js b/tools/generator-polygene/app/index.js
index 80feb55..f248eda 100644
--- a/tools/generator-polygene/app/index.js
+++ b/tools/generator-polygene/app/index.js
@@ -196,7 +196,13 @@ module.exports = generators.Base.extend(
                         this.log('Caching:', answers.caching);
                         this.log('Features:', answers.features);
                         answers.dbpool = answers.dbpool === undefined ? "DBCP" : answers.dbpool;
-                        polygene = answers;
+                        polygene.name = answers.name;
+                        polygene.packageName = answers.packageName;
+                        polygene.applicationtype = answers.applicationtype;
+                        polygene.features = answers.features;
+                        polygene.indexing = answers.indexing;
+                        polygene.entitystore = answers.entitystore;
+                        polygene.caching = answers.caching;
                     }.bind(this)
                 );
             }
@@ -353,7 +359,7 @@ function assignFunctions(polygene) {
         if (props) {
             imported["org.apache.polygene.api.property.Property"] = true;
             for (idx in props) {
-                if( props.hasOwnProperty(idx)) {
+                if (props.hasOwnProperty(idx)) {
                     var prop = props[idx];
                     state.push('Property' + '<' + polygene.typeNameOnly(prop.type) + "> " + prop.name + "();");
                     imported[prop.type] = true;
@@ -367,7 +373,7 @@ function assignFunctions(polygene) {
         if (assocs) {
             imported["org.apache.polygene.api.association.Association"] = true;
             for (idx in assocs) {
-                if( assocs.hasOwnProperty(idx)) {
+                if (assocs.hasOwnProperty(idx)) {
                     assoc = assocs[idx];
                     state.push("Association" + '<' + polygene.typeNameOnly(assoc.type) + "> " + assoc.name + "();");
                     imported[assoc.type] = true;
@@ -378,7 +384,7 @@ function assignFunctions(polygene) {
         if (assocs) {
             imported["org.apache.polygene.api.association.ManyAssociation"] = true;
             for (idx in assocs) {
-                if( assocs.hasOwnProperty(idx)) {
+                if (assocs.hasOwnProperty(idx)) {
                     assoc = assocs[idx];
                     state.push("ManyAssociation<" + polygene.typeNameOnly(assoc.type) + "> " + assoc.name + "();");
                     imported[assoc.type] = true;
@@ -389,7 +395,7 @@ function assignFunctions(polygene) {
         if (assocs) {
             imported["org.apache.polygene.api.association.NamedAssociation"] = true;
             for (idx in assocs) {
-                if( assocs.hasOwnProperty(idx)){
+                if (assocs.hasOwnProperty(idx)) {
                     assoc = assocs[idx];
                     state.push("NamedAssociation<" + polygene.typeNameOnly(assoc.type) + "> " + assoc.name + "();");
                     imported[assoc.type] = true;
@@ -438,15 +444,15 @@ function assignFunctions(polygene) {
                         }
                     }
                     state.push("/**");
-                    for( var idxDesc in prop.description ){
-                        if( prop.description.hasOwnProperty(idxDesc)){
+                    for (var idxDesc in prop.description) {
+                        if (prop.description.hasOwnProperty(idxDesc)) {
                             var desc = prop.description[idxDesc];
                             propertyFile.push("# " + desc);
-                            state.push(" * " + desc )
+                            state.push(" * " + desc)
                         }
                     }
                     state.push(" */");
-                    propertyFile.push(prop.name + "=" + propertyDefault +"\n");
+                    propertyFile.push(prop.name + "=" + propertyDefault + "\n");
                     state.push('Property' + '<' + polygene.typeNameOnly(prop.type) + "> " + prop.name + "();\n");
                 }
             }
@@ -455,8 +461,8 @@ function assignFunctions(polygene) {
             state.push('/** TODO: remove sample property');
             state.push(' */');
             state.push('Property<String> name();');
-            propertyFile.push("# This is just the sample configuration value. " );
-            propertyFile.push("# TODO: Remove this config value " );
+            propertyFile.push("# This is just the sample configuration value. ");
+            propertyFile.push("# TODO: Remove this config value ");
             propertyFile.push('name=sample config value');
         }
         currentModule.state = state;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5e494ff5/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Crud.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Crud.tmpl b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Crud.tmpl
index 51e508d..f77ec6d 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Crud.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Crud.tmpl
@@ -45,7 +45,7 @@ public interface <%= polygene.current.clazz.name %> extends HasIdentity
         implements <%= polygene.current.clazz.name %>
     {
         @This
-        private State state;        // Sample reference to hidden property
+        private State state;        // Reference to private State instance
 
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5e494ff5/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Entity.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Entity.tmpl b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Entity.tmpl
index 51e508d..f77ec6d 100644
--- a/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Entity.tmpl
+++ b/tools/generator-polygene/app/templates/DomainLayer/DomainModule/Entity.tmpl
@@ -45,7 +45,7 @@ public interface <%= polygene.current.clazz.name %> extends HasIdentity
         implements <%= polygene.current.clazz.name %>
     {
         @This
-        private State state;        // Sample reference to hidden property
+        private State state;        // Reference to private State instance
 
     }
 }


[46/50] polygene-java git commit: Better explanation in exceptions of RDF query execution.

Posted by ni...@apache.org.
Better explanation in exceptions of RDF query execution.


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/007d812c
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/007d812c
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/007d812c

Branch: refs/heads/es-jooq
Commit: 007d812ccfe84a9e290c759abe57549fed444d2f
Parents: 0dac97b
Author: niclas <ni...@hedhman.org>
Authored: Sun Jul 9 12:47:40 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jul 9 12:47:40 2017 +0800

----------------------------------------------------------------------
 .../polygene/index/rdf/query/TupleQueryExecutor.java    | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/007d812c/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/query/TupleQueryExecutor.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/query/TupleQueryExecutor.java b/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/query/TupleQueryExecutor.java
index 2d80bd8..a515f74 100644
--- a/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/query/TupleQueryExecutor.java
+++ b/extensions/indexing-rdf/src/main/java/org/apache/polygene/index/rdf/query/TupleQueryExecutor.java
@@ -90,19 +90,15 @@ public interface TupleQueryExecutor
             }
             catch( RepositoryException e )
             {
-                throw new EntityFinderException( e );
+                throw new EntityFinderException( "Exception when executing query: " + query + "\nwith bindings " + bindings, e );
             }
-            catch( MalformedQueryException e )
+            catch( QueryEvaluationException | MalformedQueryException e )
             {
-                throw new EntityFinderException( e );
-            }
-            catch( QueryEvaluationException e )
-            {
-                throw new EntityFinderException( e );
+                throw new EntityFinderException( "Query is invalid: " + query, e );
             }
             catch( Exception e )
             {
-                throw new EntityFinderException( e );
+                throw new EntityFinderException( "Unexpected Exception while executing: " + query, e );
             }
         }
 


[42/50] polygene-java git commit: Added IndexingException, since no organized exception hierarchy exists for that.

Posted by ni...@apache.org.
Added IndexingException, since no organized exception hierarchy exists for that.


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/9778ca0f
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/9778ca0f
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/9778ca0f

Branch: refs/heads/es-jooq
Commit: 9778ca0f13c9151591014a8d0facacf8e560ec46
Parents: 58b8174
Author: niclas <ni...@hedhman.org>
Authored: Sun Jul 9 12:37:44 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jul 9 12:37:44 2017 +0800

----------------------------------------------------------------------
 .../polygene/spi/query/IndexingException.java      | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/9778ca0f/core/spi/src/main/java/org/apache/polygene/spi/query/IndexingException.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/polygene/spi/query/IndexingException.java b/core/spi/src/main/java/org/apache/polygene/spi/query/IndexingException.java
new file mode 100644
index 0000000..6fc8124
--- /dev/null
+++ b/core/spi/src/main/java/org/apache/polygene/spi/query/IndexingException.java
@@ -0,0 +1,17 @@
+package org.apache.polygene.spi.query;
+
+/**
+ * This is the exception for Indexing problems. Subtypes should be created for specific problems.
+ *
+ */
+public abstract class IndexingException extends RuntimeException
+{
+    public IndexingException( String message )
+    {
+        super( message );
+    }
+    public IndexingException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
+}


[30/50] polygene-java git commit: Forgot to maintain the toString() proper.

Posted by ni...@apache.org.
Forgot to maintain the toString() proper.


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/3c7271c8
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/3c7271c8
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/3c7271c8

Branch: refs/heads/es-jooq
Commit: 3c7271c8c037a9a9ccc04ceb99bf7028816e6309
Parents: c6b8916
Author: niclas <ni...@hedhman.org>
Authored: Sun Jul 2 14:47:50 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jul 2 14:47:50 2017 +0800

----------------------------------------------------------------------
 .../java/org/apache/polygene/runtime/value/ValueInstance.java   | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/3c7271c8/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueInstance.java b/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueInstance.java
index 8af2e08..79deff9 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueInstance.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueInstance.java
@@ -158,6 +158,11 @@ public final class ValueInstance extends TransientInstance
     @Override
     public String toString()
     {
+        String json = toJsonString();
+        if( json != null )
+        {
+            return json;
+        }
         return "ValueInstance{" +
                "mixins=" + Arrays.toString( mixins ) +
                ", state=" + state +


[14/50] polygene-java git commit: POLYGENE-265 - method argument names are now used in Constraint Violations. POLYGENE-264 - Consolidated how the ConstraintViolationException works. POLYGENE-262 - NoSuchCompositeException and subtypes changed name to NoS

Posted by ni...@apache.org.
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueVisibilityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueVisibilityTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueVisibilityTest.java
index 500d255..35052b4 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueVisibilityTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueVisibilityTest.java
@@ -32,7 +32,7 @@ import org.apache.polygene.api.structure.Application;
 import org.apache.polygene.api.structure.Module;
 import org.apache.polygene.api.unitofwork.UnitOfWork;
 import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
-import org.apache.polygene.api.value.NoSuchValueException;
+import org.apache.polygene.api.value.NoSuchValueTypeException;
 import org.apache.polygene.api.value.ValueBuilder;
 import org.apache.polygene.api.value.ValueComposite;
 import org.apache.polygene.bootstrap.ApplicationAssemblerAdapter;
@@ -131,7 +131,7 @@ public class ValueVisibilityTest
         service.besideLayerVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromServiceWhenAccessingBesideModuleVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
@@ -145,35 +145,35 @@ public class ValueVisibilityTest
         service.belowApplicationVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromServiceWhenAccessingBelowLayerVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
         service.belowLayerVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromServiceWhenAccessingBelowModuleVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
         service.belowModuleVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromServiceWhenAccessingAboveApplicationVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
         service.aboveApplicationVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromServiceWhenAccessingAboveLayerVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
         service.aboveLayerVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromServiceWhenAccessingAboveModuleVisibleExpectException()
     {
         FromService service = module.findService( FromService.class ).get();
@@ -270,7 +270,7 @@ public class ValueVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromEntityWhenAccessingBesideModuleVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -306,7 +306,7 @@ public class ValueVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromEntityWhenAccessingBelowLayerVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -324,7 +324,7 @@ public class ValueVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromEntityWhenAccessingBelowModuleVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -342,7 +342,7 @@ public class ValueVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromEntityWhenAccessingAboveApplicationVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -360,7 +360,7 @@ public class ValueVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromEntityWhenAccessingAboveLayerVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -378,7 +378,7 @@ public class ValueVisibilityTest
         }
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromEntityWhenAccessingAboveModuleVisibleExpectException()
     {
         UnitOfWork unitOfWork = uowf.newUnitOfWork();
@@ -431,7 +431,7 @@ public class ValueVisibilityTest
         value.besideLayerVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromValueWhenAccessingBesideModuleVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
@@ -445,35 +445,35 @@ public class ValueVisibilityTest
         value.belowApplicationVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromValueWhenAccessingBelowLayerVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
         value.belowLayerVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromValueWhenAccessingBelowModuleVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
         value.belowModuleVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromValueWhenAccessingAboveApplicationVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
         value.aboveApplicationVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromValueWhenAccessingAboveLayerVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
         value.aboveLayerVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromValueWhenAccessingAboveModuleVisibleExpectException()
     {
         FromValue value = module.newValue( FromValue.class );
@@ -515,7 +515,7 @@ public class ValueVisibilityTest
         transientt.besideLayerVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromTransientWhenAccessingBesideModuleVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
@@ -529,35 +529,35 @@ public class ValueVisibilityTest
         transientt.belowApplicationVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromTransientWhenAccessingBelowLayerVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
         transientt.belowLayerVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromTransientWhenAccessingBelowModuleVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
         transientt.belowModuleVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromTransientWhenAccessingAboveApplicationVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
         transientt.aboveApplicationVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromTransientWhenAccessingAboveLayerVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
         transientt.aboveLayerVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromTransientWhenAccessingAboveModuleVisibleExpectException()
     {
         FromTransient transientt = module.newTransient( FromTransient.class );
@@ -599,7 +599,7 @@ public class ValueVisibilityTest
         object.besideLayerVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromObjectWhenAccessingBesideModuleVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );
@@ -613,35 +613,35 @@ public class ValueVisibilityTest
         object.belowApplicationVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromObjectWhenAccessingBelowLayerVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );
         object.belowLayerVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromObjectWhenAccessingBelowModuleVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );
         object.belowModuleVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromObjectWhenAccessingAboveApplicationVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );
         object.aboveApplicationVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromObjectWhenAccessingAboveLayerVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );
         object.aboveLayerVisible();
     }
 
-    @Test( expected = NoSuchValueException.class )
+    @Test( expected = NoSuchValueTypeException.class )
     public void givenFromObjectWhenAccessingAboveModuleVisibleExpectException()
     {
         FromObject object = module.newObject( FromObject.class );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/testsupport/src/main/java/org/apache/polygene/test/cache/AbstractCachePoolTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/cache/AbstractCachePoolTest.java b/core/testsupport/src/main/java/org/apache/polygene/test/cache/AbstractCachePoolTest.java
index 937c03a..358070d 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/cache/AbstractCachePoolTest.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/cache/AbstractCachePoolTest.java
@@ -21,15 +21,18 @@ package org.apache.polygene.test.cache;
 
 import java.util.Collection;
 import java.util.Random;
-import org.apache.polygene.api.constraint.ConstraintViolation;
+import org.apache.polygene.api.constraint.ValueConstraintViolation;
 import org.apache.polygene.api.constraint.ConstraintViolationException;
 import org.apache.polygene.spi.cache.Cache;
 import org.apache.polygene.spi.cache.CachePool;
 import org.apache.polygene.test.AbstractPolygeneTest;
 import org.junit.Test;
 
+import static org.hamcrest.core.AnyOf.anyOf;
+import static org.hamcrest.core.IsEqual.equalTo;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThat;
 import static org.junit.Assert.fail;
 
 /**
@@ -75,11 +78,11 @@ public abstract class AbstractCachePoolTest
         catch( ConstraintViolationException e )
         {
             // expected
-            Collection<ConstraintViolation> violations = e.constraintViolations();
+            Collection<ValueConstraintViolation> violations = e.constraintViolations();
             assertEquals( 1, violations.size() );
-            ConstraintViolation violation = violations.iterator().next();
+            ValueConstraintViolation violation = violations.iterator().next();
             assertEquals( "not optional", violation.constraint().toString() );
-            assertEquals( "param1", violation.name() );
+            assertThat( violation.name(), anyOf(equalTo("cacheId"), equalTo( "arg0" )) );  // depends on whether -parameters was given at compile time.
         }
     }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java
index 8a004a7..20f0b1f 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java
@@ -19,6 +19,9 @@
  */
 package org.apache.polygene.test.entity.model;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import org.apache.polygene.api.association.NamedAssociation;
 import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.api.constraint.ConstraintViolationException;
@@ -33,6 +36,8 @@ import org.apache.polygene.api.unitofwork.NoSuchEntityException;
 import org.apache.polygene.api.unitofwork.UnitOfWork;
 import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
 import org.apache.polygene.api.usecase.UsecaseBuilder;
+import org.apache.polygene.api.value.ValueBuilder;
+import org.apache.polygene.api.value.ValueBuilderFactory;
 import org.apache.polygene.bootstrap.ApplicationAssembly;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.LayerAssembly;
@@ -45,6 +50,7 @@ import org.apache.polygene.test.entity.model.legal.Will;
 import org.apache.polygene.test.entity.model.legal.WillAmount;
 import org.apache.polygene.test.entity.model.legal.WillItem;
 import org.apache.polygene.test.entity.model.legal.WillPercentage;
+import org.apache.polygene.test.entity.model.monetary.Currency;
 import org.apache.polygene.test.entity.model.people.Address;
 import org.apache.polygene.test.entity.model.people.City;
 import org.apache.polygene.test.entity.model.people.Country;
@@ -69,6 +75,9 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
     @Structure
     private ObjectFactory obf;
 
+    @Structure
+    private ValueBuilderFactory vbf;
+
     @Service
     private LegalService legalService;
 
@@ -77,18 +86,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
 
     @Structure
     private UnitOfWorkFactory uowf;
-    private Identity baselId;
-    private Identity montpellierId;
-    private Identity hannoverId;
-    private Identity malmoId;
 
-    private Identity cherasId;
-    private Identity unknown3Id;
-    private Identity unknown2Id;
-    private Identity unknown1Id;
-    private Identity varnhemId;
-
-    private Identity canaryId;
     private Identity switzerlandId;
     private Identity franceId;
     private Identity denmarkId;
@@ -97,6 +95,20 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
     private Identity usId;
     private Identity malaysiaId;
 
+    private Identity kualaLumpurId;
+    private Identity cherasId;
+    private Identity zurichId;
+    private Identity malmoId;
+    private Identity montpellierId;
+
+    private Identity hannoverId;
+    private Identity canaryId;
+    private Identity angkasaImpian4Id;
+    private Identity varnhemId;
+    private Identity unknown1Id;
+    private Identity unknown2Id;
+    private Identity unknown3Id;
+
     @Before
     public void setupTestData()
     {
@@ -127,17 +139,24 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
     {
         try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - validateAllCitiesPresent" ) ) )
         {
-            assertThat( peopleRepository.findCity( baselId ).name().get(), equalTo( "Basel" ) );
+            assertThat( peopleRepository.findCity( zurichId ).name().get(), equalTo( "Zurich" ) );
             assertThat( peopleRepository.findCity( malmoId ).name().get(), equalTo( "Malmo" ) );
             assertThat( peopleRepository.findCity( cherasId ).name().get(), equalTo( "Cheras" ) );
             assertThat( peopleRepository.findCity( hannoverId ).name().get(), equalTo( "Hannover" ) );
             assertThat( peopleRepository.findCity( montpellierId ).name().get(), equalTo( "Montpellier" ) );
+            assertThat( peopleRepository.findCity( kualaLumpurId ).name().get(), equalTo( "Kuala Lumpur" ) );
         }
     }
 
     @Test
     public void validateAllAddressesPresent()
     {
+        Currency.Builder currencyBuilder = obf.newObject( Currency.Builder.class );
+        Currency eur1000 = currencyBuilder.create( 1000, "EUR" );
+        Currency eur1500 = currencyBuilder.create( 1500, "EUR" );
+        Currency chf2000 = currencyBuilder.create( 2000, "CHF" );
+        Currency myr3000 = currencyBuilder.create( 3000, "MYR" );
+        Currency sek9000 = currencyBuilder.create( 9000, "SEK" );
         try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - validateAllAddressesPresent" ) ) )
         {
             Address canary = peopleRepository.findAddress( canaryId );
@@ -145,30 +164,42 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
             assertThat( canary.country().get().identity().get(), equalTo( malaysiaId ) );
             assertThat( canary.city().get().identity().get(), equalTo( cherasId ) );
             assertThat( canary.zipCode().get(), equalTo( "43200" ) );
+            assertThat( canary.rent().get().amount().get(), equalTo( myr3000 ) );
 
             Address varnhem = peopleRepository.findAddress( varnhemId );
             assertThat( varnhem.street().get(), equalTo( "Varnhemsgatan 25" ) );
             assertThat( varnhem.city().get().identity().get(), equalTo( malmoId ) );
             assertThat( varnhem.country().get().identity().get(), equalTo( swedenId ) );
             assertThat( varnhem.zipCode().get(), equalTo( "215 00" ) );
+            assertThat( varnhem.rent().get().amount().get(), equalTo( sek9000 ) );
+
+            Address angkasaImpian = peopleRepository.findAddress( angkasaImpian4Id );
+            assertThat( angkasaImpian.street().get(), equalTo( "B-19-4, Jalan Sehabat" ) );
+            assertThat( angkasaImpian.country().get().identity().get(), equalTo( malaysiaId ) );
+            assertThat( angkasaImpian.city().get().identity().get(), equalTo( kualaLumpurId ) );
+            assertThat( angkasaImpian.zipCode().get(), equalTo( "50200" ) );
+            assertThat( angkasaImpian.rent().get().amount().get(), equalTo( myr3000 ) );
 
             Address unknown = peopleRepository.findAddress( unknown1Id );
             assertThat( unknown.street().get(), equalTo( "" ) );
             assertThat( unknown.city().get().identity().get(), equalTo( montpellierId ) );
             assertThat( unknown.country().get().identity().get(), equalTo( franceId ) );
             assertThat( unknown.zipCode().get(), equalTo( "" ) );
+            assertThat( unknown.rent().get().amount().get(), equalTo( eur1000 ) );
 
             unknown = peopleRepository.findAddress( unknown2Id );
             assertThat( unknown.street().get(), equalTo( "" ) );
             assertThat( unknown.city().get().identity().get(), equalTo( hannoverId ) );
             assertThat( unknown.country().get().identity().get(), equalTo( germanyId ) );
             assertThat( unknown.zipCode().get(), equalTo( "" ) );
+            assertThat( unknown.rent().get().amount().get(), equalTo( eur1500 ) );
 
             unknown = peopleRepository.findAddress( unknown3Id );
             assertThat( unknown.street().get(), equalTo( "" ) );
-            assertThat( unknown.city().get().identity().get(), equalTo( baselId ) );
+            assertThat( unknown.city().get().identity().get(), equalTo( zurichId ) );
             assertThat( unknown.country().get().identity().get(), equalTo( switzerlandId ) );
             assertThat( unknown.zipCode().get(), equalTo( "" ) );
+            assertThat( unknown.rent().get().amount().get(), equalTo( chf2000 ) );
         }
     }
 
@@ -195,6 +226,10 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
             assertThat( kalle.name().get(), equalTo( "Kalle" ) );
             Person andreas = peopleRepository.findPersonByName( "Andreas" );
             assertThat( andreas.name().get(), equalTo( "Andreas" ) );
+            Person lars = peopleRepository.findPersonByName( "Lars" );
+            assertThat( lars.name().get(), equalTo( "Lars" ) );
+            Person mia = peopleRepository.findPersonByName( "Mia" );
+            assertThat( mia.name().get(), equalTo( "Mia" ) );
         }
     }
 
@@ -241,7 +276,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
         try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenIteratingNamedAssociationExpectIterationToSucceed" ) ) )
         {
             Person niclas = peopleRepository.findPersonByName( "Niclas" );
-            assertThat( niclas.phoneNumbers(), containsInAnyOrder("Home", "Chinese", "Swedish", "German"));
+            assertThat( niclas.phoneNumbers(), containsInAnyOrder( "Home", "Chinese", "Swedish", "German" ) );
         }
     }
 
@@ -314,9 +349,9 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
             chinesePhoneId = niclas.phoneNumbers().get( "Chinese" ).identity().get();
             germanPhoneId = niclas.phoneNumbers().get( "German" ).identity().get();
 
-            City basel = peopleRepository.findCity( baselId );
+            City zurich = peopleRepository.findCity( zurichId );
             Country switzerland = peopleRepository.findCountryByCountryCode( "ch" );
-            niclas.movedToNewAddress( "DespairStreet 12A", "43HQ21", basel, switzerland, obf.newObject( Rent.Builder.class ).create( 1000, "EUR" ) );
+            niclas.movedToNewAddress( "DespairStreet 12A", "43HQ21", zurich, switzerland, obf.newObject( Rent.Builder.class ).create( 1000, "EUR" ) );
             uow.complete();
         }
         try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
@@ -410,6 +445,58 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
         peopleRepository.findCountryByIdentity( switzerlandId );
     }
 
+    @Test
+    public void givenEntityInheritanceWhenStoreRetrieveExpectSuccess()
+    {
+        Currency.Builder currencyBuilder = obf.newObject( Currency.Builder.class );
+        Identity willId;
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - givenEntityInheritanceWhenStoreRetrieveExpectSuccess" ) ) )
+        {
+            Person peter = peopleRepository.findPersonByName( "Peter" );
+            Person kalle = peopleRepository.findPersonByName( "Kalle" );
+            Person oscar = peopleRepository.findPersonByName( "Oscar" );
+            Person niclas = peopleRepository.findPersonByName( "Niclas" );
+            Person andreas = peopleRepository.findPersonByName( "Andreas" );
+            Map<Person, Currency> amountsMap = new HashMap<>();
+            Map<Person, Float> percentagesMap = new HashMap<>();
+            Map<Person, String> specificItemsMap = new HashMap<>();
+            amountsMap.put( niclas, currencyBuilder.create( 10, "USD" ) );
+            percentagesMap.put( kalle, 50f );
+            percentagesMap.put( oscar, 50f );
+            specificItemsMap.put( niclas, "Toothpick Collection\n" );
+            specificItemsMap.put( andreas, "Black/Yellow Lederhosen\n" );
+            Will will = legalService.createWill( peter, amountsMap, percentagesMap, specificItemsMap );
+            willId = will.identity().get();
+            uow.complete();
+        }
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - givenEntityInheritanceWhenStoreRetrieveExpectSuccess" ) ) )
+        {
+            Person kalle = peopleRepository.findPersonByName( "Kalle" );
+            Person oscar = peopleRepository.findPersonByName( "Oscar" );
+            Person niclas = peopleRepository.findPersonByName( "Niclas" );
+            Person andreas = peopleRepository.findPersonByName( "Andreas" );
+
+            Will will = legalService.findWillById(willId);
+            List<WillAmount> amounts = will.amounts().get();
+            List<WillPercentage> percentages = will.percentages().get();
+            List<WillItem> items = will.items().get();
+            assertThat( amounts.size(), equalTo( 1 ) );
+            assertThat( percentages.size(), equalTo( 2 ) );
+            assertThat( items.size(), equalTo( 2 ) );
+
+            WillAmount willAmount = amounts.get( 0 );
+            assertThat( willAmount.amount().get(), equalTo( currencyBuilder.create( 10, "USD" ) ) );
+
+            WillPercentage kallePercentage = legalService.createPercentage( kalle, 50 );
+            WillPercentage oscarPercentage = legalService.createPercentage( oscar, 50 );
+            assertThat( percentages, containsInAnyOrder( kallePercentage, oscarPercentage ) );
+
+            WillItem niclasItem = legalService.createItem( niclas, "Toothpick Collection\n" );
+            WillItem andreasItem = legalService.createItem( andreas, "Black/Yellow Lederhosen\n" );
+            assertThat( items, containsInAnyOrder( niclasItem, andreasItem ) );
+        }
+    }
+
     private void testData()
     {
         Country malaysia = peopleRepository.createCountry( "my", "Malaysia" );
@@ -434,14 +521,16 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
         hannoverId = hannover.identity().get();
         City montpellier = peopleRepository.createCity( "Montpellier" );
         montpellierId = montpellier.identity().get();
-        City basel = peopleRepository.createCity( "Basel" );
-        baselId = basel.identity().get();
+        City kualalumpur = peopleRepository.createCity( "Kuala Lumpur" );
+        kualaLumpurId = kualalumpur.identity().get();
+        City zurich = peopleRepository.createCity( "Zurich" );
+        zurichId = zurich.identity().get();
         Rent.Builder rentBuilder = obf.newObject( Rent.Builder.class );
         Rent rentCanary = rentBuilder.create( 3000, "MYR" );
         Rent rentVarnhem = rentBuilder.create( 9000, "SEK" );
-        Rent rentUnknown1 = rentBuilder.create( 1200, "EUR" );
-        Rent rentUnknown2 = rentBuilder.create( 900, "EUR" );
-        Rent rentUnknown3 = rentBuilder.create( 2200, "EUR" );
+        Rent rentUnknown1 = rentBuilder.create( 1000, "EUR" );
+        Rent rentUnknown2 = rentBuilder.create( 1500, "EUR" );
+        Rent rentUnknown3 = rentBuilder.create( 2000, "CHF" );
         Address canaryResidence = peopleRepository.createAddress( "10, CH5A, Jalan Cheras Hartamas", "43200", cheras, malaysia, rentCanary );
         canaryId = canaryResidence.identity().get();
         Address varnhem = peopleRepository.createAddress( "Varnhemsgatan 25", "215 00", malmo, sweden, rentVarnhem );
@@ -450,8 +539,10 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
         unknown1Id = unknown1.identity().get();
         Address unknown2 = peopleRepository.createAddress( "", "", hannover, germany, rentUnknown2 );
         unknown2Id = unknown2.identity().get();
-        Address unknown3 = peopleRepository.createAddress( "", "", basel, switzerland, rentUnknown3 );
+        Address unknown3 = peopleRepository.createAddress( "", "", zurich, switzerland, rentUnknown3 );
         unknown3Id = unknown3.identity().get();
+        Address angkasaImpian = peopleRepository.createAddress( "B-19-4, Jalan Sehabat", "50200", kualalumpur, malaysia, rentCanary );
+        angkasaImpian4Id = angkasaImpian.identity().get();
         Person eric = peopleRepository.createPerson( "Eric", malaysia, canaryResidence, null, null );
         Person niclas = peopleRepository.createPerson( "Niclas", sweden, canaryResidence, null, peopleRepository.createPhoneNumber( "+60-16-7636344" ) );
         niclas.children().add( eric );
@@ -465,6 +556,9 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
         Person toni = peopleRepository.createPerson( "Toni", france, unknown2, janna, peopleRepository.createPhoneNumber( "+49-12-99887766" ) );
         janna.spouse().set( toni );
         Person andreas = peopleRepository.createPerson( "Andreas", germany, unknown3, null, peopleRepository.createPhoneNumber( "+41-98-1234567" ) );
+        Person mia = peopleRepository.createPerson( "Mia", malaysia, angkasaImpian, null, null );
+        Person lars = peopleRepository.createPerson( "Lars", denmark, angkasaImpian, mia, null );
+        mia.spouse().set( lars );
         NamedAssociation<Person> niclasRels = niclas.relationships();
         niclasRels.put( FRIEND, peter );
         niclasRels.put( FRIEND, toni );
@@ -486,6 +580,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
         defineConfigModule( configLayer.module( "Configuration Module" ) );
         defineSerializationModule( configLayer.module( "Serialization Module" ) );
         defineStorageModule( infrastructureLayer.module( "Storage Module" ) );
+        defineMonetaryModule( domainLayer.module( "Monetary Module" ) );
         definePeopleModule( domainLayer.module( "People Module" ) );
         defineLegalModule( domainLayer.module( "Legal Module" ) );
         defineTestModule( accessLayer.module( "TestCase Module" ) );
@@ -509,8 +604,8 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
     protected void definePeopleModule( ModuleAssembly module )
     {
         module.defaultServices();
-        module.entities( Address.class, City.class, PhoneNumber.class );
-        module.entities( Country.class, Person.class );
+        module.entities( Address.class, Country.class, City.class, PhoneNumber.class );
+        module.entities( Person.class ).visibleIn( Visibility.layer );
         module.services( PeopleRepository.class ).visibleIn( Visibility.application );
         module.values( Rent.class );
         module.objects( Rent.Builder.class ).visibleIn( Visibility.application );
@@ -520,7 +615,15 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
     {
         module.defaultServices();
         module.services( LegalService.class ).visibleIn( Visibility.application );
-        module.entities( Will.class, WillItem.class, WillPercentage.class, WillAmount.class );
+        module.entities( Will.class );
+        module.values( WillAmount.class, WillItem.class, WillPercentage.class );
+    }
+
+    protected void defineMonetaryModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        module.values( Currency.class ).visibleIn( Visibility.layer );
+        module.objects( Currency.Builder.class ).visibleIn( Visibility.application );
     }
 
     protected void defineSerializationModule( ModuleAssembly module )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/LegalService.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/LegalService.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/LegalService.java
index c90a64c..6079a2e 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/LegalService.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/LegalService.java
@@ -19,7 +19,8 @@
  */
 package org.apache.polygene.test.entity.model.legal;
 
-import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 import org.apache.polygene.api.entity.EntityBuilder;
 import org.apache.polygene.api.identity.Identity;
@@ -31,13 +32,21 @@ import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
 import org.apache.polygene.api.unitofwork.concern.UnitOfWorkPropagation;
 import org.apache.polygene.api.value.ValueBuilder;
 import org.apache.polygene.api.value.ValueBuilderFactory;
+import org.apache.polygene.test.entity.model.monetary.Currency;
 import org.apache.polygene.test.entity.model.people.Person;
 
 @Mixins( LegalService.Mixin.class )
 public interface LegalService
 {
     @UnitOfWorkPropagation
-    Identity createWill( Person principal, Map<Person, BigDecimal> amounts, Map<Person, Float> percentages, Map<Person, String> specificItems );
+    Will findWillById( Identity willId );
+
+    @UnitOfWorkPropagation
+    Will createWill( Person principal, Map<Person, Currency> amounts, Map<Person, Float> percentages, Map<Person, String> specificItems );
+
+    WillPercentage createPercentage( Person beneficiary, float percentage );
+
+    WillItem createItem( Person beneficiary, String item );
 
     class Mixin
         implements LegalService
@@ -49,36 +58,46 @@ public interface LegalService
         private UnitOfWorkFactory uowf;
 
         @Override
-        public Identity createWill( Person principal, Map<Person, BigDecimal> amounts, Map<Person, Float> percentages, Map<Person, String> specificItems )
+        public Will findWillById( Identity willId )
+        {
+            UnitOfWork uow = uowf.currentUnitOfWork();
+            return uow.get( Will.class, willId );
+        }
+
+        @Override
+        public Will createWill( Person principal, Map<Person, Currency> amounts, Map<Person, Float> percentages, Map<Person, String> specificItems )
         {
             UnitOfWork uow = uowf.currentUnitOfWork();
             Identity identity = StringIdentity.identityOf( "will-" + principal.name().get() );
             EntityBuilder<Will> builder = uow.newEntityBuilder( Will.class, identity );
-            Will instance = builder.instance();
-            for( Map.Entry<Person, BigDecimal> entry : amounts.entrySet() )
+            List<WillAmount> amountsList = new ArrayList<>();
+            for( Map.Entry<Person, Currency> entry : amounts.entrySet() )
             {
                 WillAmount amount = createAmount( entry.getKey(), entry.getValue() );
-                instance.amounts().add( amount );
+                amountsList.add( amount );
             }
+            List<WillPercentage> percentagesList = new ArrayList<>();
             for( Map.Entry<Person, Float> entry : percentages.entrySet() )
             {
                 WillPercentage amount = createPercentage( entry.getKey(), entry.getValue() );
-                instance.percentages().add( amount );
+                percentagesList.add( amount );
             }
+            List<WillItem> itemsList = new ArrayList<>();
             for( Map.Entry<Person, String> entry : specificItems.entrySet() )
             {
                 String value = entry.getValue();
-                int pos = value.indexOf( '\n' );
-                String item = value.substring( 0, pos );
-                String description = value.substring( pos + 1 );
-                WillItem amount = createItem( entry.getKey(), item, description );
-                instance.items().add( amount );
+                WillItem amount = createItem( entry.getKey(), value );
+                itemsList.add( amount );
             }
-            builder.newInstance();
-            return identity;
+            Will instance = builder.instance();
+            instance.principal().set(principal);
+            instance.percentages().set( percentagesList );
+            instance.amounts().set( amountsList );
+            instance.items().set( itemsList );
+            return builder.newInstance();
         }
 
-        private WillAmount createAmount( Person beneficiary, BigDecimal amount )
+        private WillAmount createAmount( Person beneficiary, Currency amount )
         {
             ValueBuilder<WillAmount> builder = vbf.newValueBuilder( WillAmount.class );
             builder.prototype().amount().set( amount );
@@ -98,9 +117,26 @@ public interface LegalService
         {
             ValueBuilder<WillItem> builder = vbf.newValueBuilder( WillItem.class );
             builder.prototype().item().set( item );
-            builder.prototype().item().set( description );
+            builder.prototype().description().set( description );
             builder.prototype().beneficiary().set( beneficiary );
             return builder.newInstance();
         }
+
+        public WillItem createItem( Person beneficiary, String value )
+        {
+            int pos = value.indexOf( '\n' );
+            String item = value.substring( 0, pos );
+            String description = value.substring( pos + 1 );
+            return createItem( beneficiary, item, description );
+        }
+
+        public WillPercentage createPercentage( Person beneficiary, float percentage )
+        {
+            ValueBuilder<WillPercentage> builder = vbf.newValueBuilder( WillPercentage.class );
+            builder.prototype().beneficiary().set( beneficiary );
+            builder.prototype().percentage().set( percentage );
+            return builder.newInstance();
+        }
+
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/Will.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/Will.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/Will.java
index 1c66efb..dd41bba 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/Will.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/Will.java
@@ -19,18 +19,22 @@
  */
 package org.apache.polygene.test.entity.model.legal;
 
+import java.util.List;
 import org.apache.polygene.api.association.Association;
 import org.apache.polygene.api.association.ManyAssociation;
+import org.apache.polygene.api.identity.HasIdentity;
+import org.apache.polygene.api.property.Property;
 import org.apache.polygene.test.entity.model.people.Person;
 
-public interface Will
+public interface Will extends HasIdentity
 {
-
     Association<Person> principal();
 
-    ManyAssociation<WillItem> items();
+    ManyAssociation<Person> witnesses();
+
+    Property<List<WillItem>> items();
 
-    ManyAssociation<WillPercentage> percentages();
+    Property<List<WillPercentage>> percentages();
 
-    ManyAssociation<WillAmount> amounts();
+    Property<List<WillAmount>> amounts();
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillAmount.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillAmount.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillAmount.java
index 6661375..52b4b58 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillAmount.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillAmount.java
@@ -21,8 +21,9 @@ package org.apache.polygene.test.entity.model.legal;
 
 import java.math.BigDecimal;
 import org.apache.polygene.api.property.Property;
+import org.apache.polygene.test.entity.model.monetary.Currency;
 
 public interface WillAmount extends WillBenefit
 {
-    Property<BigDecimal> amount();
+    Property<Currency> amount();
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillBenefit.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillBenefit.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillBenefit.java
index 0347a6c..3c44e7a 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillBenefit.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillBenefit.java
@@ -21,6 +21,7 @@ package org.apache.polygene.test.entity.model.legal;
 
 import org.apache.polygene.api.association.Association;
 import org.apache.polygene.api.common.Optional;
+import org.apache.polygene.api.identity.HasIdentity;
 import org.apache.polygene.api.property.Property;
 import org.apache.polygene.test.entity.model.people.Person;
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/monetary/Currency.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/monetary/Currency.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/monetary/Currency.java
new file mode 100644
index 0000000..6ca2c9b
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/monetary/Currency.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.entity.model.monetary;
+
+import java.math.BigDecimal;
+import org.apache.polygene.api.injection.scope.Structure;
+import org.apache.polygene.api.property.Property;
+import org.apache.polygene.api.value.ValueBuilder;
+import org.apache.polygene.api.value.ValueBuilderFactory;
+
+public interface Currency
+{
+    Property<BigDecimal> amount();
+    Property<String> name();
+
+    class Builder
+    {
+        @Structure
+        private ValueBuilderFactory vbf;
+
+        public Currency create( int amount, String currencyName )
+        {
+            return create( new BigDecimal( amount ), currencyName );
+        }
+
+        public Currency create( BigDecimal amount, String currencyName )
+        {
+            ValueBuilder<Currency> builder = vbf.newValueBuilder( Currency.class );
+            builder.prototype().name().set( currencyName );
+            builder.prototype().amount().set( amount );
+            return builder.newInstance();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Rent.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Rent.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Rent.java
index 576b3dc..b05aec5 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Rent.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Rent.java
@@ -19,29 +19,33 @@
  */
 package org.apache.polygene.test.entity.model.people;
 
-import java.math.BigDecimal;
 import org.apache.polygene.api.injection.scope.Structure;
+import org.apache.polygene.api.object.ObjectFactory;
 import org.apache.polygene.api.property.Property;
 import org.apache.polygene.api.value.ValueBuilder;
 import org.apache.polygene.api.value.ValueBuilderFactory;
+import org.apache.polygene.test.entity.model.monetary.Currency;
 
 public interface Rent
 {
-    Property<BigDecimal> amount();
-
-    Property<String> currency();
+    Property<Currency> amount();
 
     class Builder
     {
+        private final Currency.Builder currencyBuilder;
+
         @Structure
         private ValueBuilderFactory vbf;
 
-        public Rent create( Integer amount, String currency )
+        public Builder( @Structure ObjectFactory objectFactory)
+        {
+            currencyBuilder = objectFactory.newObject( Currency.Builder.class );
+        }
+
+        public Rent create( int amount, String currency )
         {
             ValueBuilder<Rent> builder = vbf.newValueBuilder( Rent.class );
-            Rent prototype = builder.prototype();
-            prototype.amount().set( new BigDecimal( amount ) );
-            prototype.currency().set( currency );
+            builder.prototype().amount().set( currencyBuilder.create( amount, currency ) );
             return builder.newInstance();
         }
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/core/testsupport/src/test/java/org/apache/polygene/test/cache/MemoryCacheTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/test/java/org/apache/polygene/test/cache/MemoryCacheTest.java b/core/testsupport/src/test/java/org/apache/polygene/test/cache/MemoryCacheTest.java
index c9e2fe1..d91c6c0 100644
--- a/core/testsupport/src/test/java/org/apache/polygene/test/cache/MemoryCacheTest.java
+++ b/core/testsupport/src/test/java/org/apache/polygene/test/cache/MemoryCacheTest.java
@@ -22,8 +22,7 @@ package org.apache.polygene.test.cache;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 
-public class MemoryCacheTest
-    extends AbstractCachePoolTest
+public class MemoryCacheTest extends AbstractCachePoolTest
 {
     @Override
     public void assemble( ModuleAssembly module )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/internals/testsupport-internal/src/main/java/org/apache/polygene/test/docker/DockerRule.java
----------------------------------------------------------------------
diff --git a/internals/testsupport-internal/src/main/java/org/apache/polygene/test/docker/DockerRule.java b/internals/testsupport-internal/src/main/java/org/apache/polygene/test/docker/DockerRule.java
index 18fab0f..07cf07a 100644
--- a/internals/testsupport-internal/src/main/java/org/apache/polygene/test/docker/DockerRule.java
+++ b/internals/testsupport-internal/src/main/java/org/apache/polygene/test/docker/DockerRule.java
@@ -86,7 +86,7 @@ public class DockerRule
                 .builder()
                 .imageName( "org.apache.polygene:org.apache.polygene.internal.docker-" + image )
                 .publishAllPorts( true )
-                .waitForTimeout( 120 )
+                .waitForTimeout( 180 )
                 .waitFor( rule -> new AndChecker( rule, waitFor ) );
             environment.forEach( builder::env );
             dockerRule = builder.build();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/libraries/constraints/src/test/java/org/apache/polygene/library/constraints/ConstraintTest.java
----------------------------------------------------------------------
diff --git a/libraries/constraints/src/test/java/org/apache/polygene/library/constraints/ConstraintTest.java b/libraries/constraints/src/test/java/org/apache/polygene/library/constraints/ConstraintTest.java
index 2c526b5..8b697b9 100644
--- a/libraries/constraints/src/test/java/org/apache/polygene/library/constraints/ConstraintTest.java
+++ b/libraries/constraints/src/test/java/org/apache/polygene/library/constraints/ConstraintTest.java
@@ -31,8 +31,7 @@ import org.junit.Test;
 
 import static org.junit.Assert.fail;
 
-public class ConstraintTest
-    extends AbstractPolygeneTest
+public class ConstraintTest extends AbstractPolygeneTest
 {
 
     @Override

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/api/ContextResource.java
----------------------------------------------------------------------
diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/api/ContextResource.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/api/ContextResource.java
index 4b701fb..2fb2fe1 100644
--- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/api/ContextResource.java
+++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/api/ContextResource.java
@@ -34,7 +34,7 @@ import java.util.stream.Stream;
 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.constraint.ConstraintViolation;
+import org.apache.polygene.api.constraint.ValueConstraintViolation;
 import org.apache.polygene.api.constraint.ConstraintViolationException;
 import org.apache.polygene.api.constraint.Name;
 import org.apache.polygene.api.entity.EntityComposite;
@@ -808,7 +808,7 @@ public class ContextResource
                 // CVE are considered client faults
                 String messages = "";
                 Locale locale = ObjectSelection.type( Locale.class );
-                for( ConstraintViolation constraintViolation : e.constraintViolations() )
+                for( ValueConstraintViolation constraintViolation : e.constraintViolations() )
                 {
                     if( !messages.isEmpty() )
                     {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/ConstraintViolationMessages.java
----------------------------------------------------------------------
diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/ConstraintViolationMessages.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/ConstraintViolationMessages.java
index 17b43d5..253284d 100644
--- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/ConstraintViolationMessages.java
+++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/ConstraintViolationMessages.java
@@ -24,14 +24,14 @@ import java.util.Locale;
 import java.util.ResourceBundle;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-import org.apache.polygene.api.constraint.ConstraintViolation;
+import org.apache.polygene.api.constraint.ValueConstraintViolation;
 
 /**
  * TODO
  */
 public class ConstraintViolationMessages
 {
-    public String getMessage( ConstraintViolation violation, Locale locale )
+    public String getMessage( ValueConstraintViolation violation, Locale locale )
         throws IllegalArgumentException
     {
         try

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/InteractionConstraintsService.java
----------------------------------------------------------------------
diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/InteractionConstraintsService.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/InteractionConstraintsService.java
index b04edef..03d70c3 100644
--- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/InteractionConstraintsService.java
+++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/InteractionConstraintsService.java
@@ -32,7 +32,7 @@ import org.apache.polygene.api.constraint.Constraint;
 import org.apache.polygene.api.constraint.ConstraintDeclaration;
 import org.apache.polygene.api.constraint.Constraints;
 import org.apache.polygene.api.injection.scope.Structure;
-import org.apache.polygene.api.object.NoSuchObjectException;
+import org.apache.polygene.api.object.NoSuchObjectTypeException;
 import org.apache.polygene.api.structure.Module;
 import org.apache.polygene.library.rest.server.api.ObjectSelection;
 import org.apache.polygene.library.rest.server.api.constraint.InteractionConstraint;
@@ -150,7 +150,7 @@ public class InteractionConstraintsService
                     {
                         constraint = module.newObject( constraintClass );
                     }
-                    catch( NoSuchObjectException e )
+                    catch( NoSuchObjectTypeException e )
                     {
                         constraint = constraintClass.newInstance();
                     }
@@ -214,7 +214,7 @@ public class InteractionConstraintsService
                     {
                         constraint = module.newObject( constraintClass );
                     }
-                    catch( NoSuchObjectException e )
+                    catch( NoSuchObjectTypeException e )
                     {
                         constraint = constraintClass.newInstance();
                     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/manual/src/main/java/org/apache/polygene/manual/recipes/createConstraint/ParameterViolationConcern.java
----------------------------------------------------------------------
diff --git a/manual/src/main/java/org/apache/polygene/manual/recipes/createConstraint/ParameterViolationConcern.java b/manual/src/main/java/org/apache/polygene/manual/recipes/createConstraint/ParameterViolationConcern.java
index a7dd18d..eb03280 100644
--- a/manual/src/main/java/org/apache/polygene/manual/recipes/createConstraint/ParameterViolationConcern.java
+++ b/manual/src/main/java/org/apache/polygene/manual/recipes/createConstraint/ParameterViolationConcern.java
@@ -23,7 +23,7 @@ import java.lang.annotation.Annotation;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
 import org.apache.polygene.api.concern.ConcernOf;
-import org.apache.polygene.api.constraint.ConstraintViolation;
+import org.apache.polygene.api.constraint.ValueConstraintViolation;
 import org.apache.polygene.api.constraint.ConstraintViolationException;
 
 // START SNIPPET: report
@@ -39,7 +39,7 @@ public class ParameterViolationConcern extends ConcernOf<InvocationHandler>
         }
         catch( ConstraintViolationException e )
         {
-            for( ConstraintViolation violation : e.constraintViolations() )
+            for( ValueConstraintViolation violation : e.constraintViolations() )
             {
                 String name = violation.name();
                 Object value = violation.value();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/559b38a5/manual/src/main/java/org/apache/polygene/manual/recipes/createConstraint/PhoneNumberParameterViolationConcern.java
----------------------------------------------------------------------
diff --git a/manual/src/main/java/org/apache/polygene/manual/recipes/createConstraint/PhoneNumberParameterViolationConcern.java b/manual/src/main/java/org/apache/polygene/manual/recipes/createConstraint/PhoneNumberParameterViolationConcern.java
index 92db8a2..82c27c0 100644
--- a/manual/src/main/java/org/apache/polygene/manual/recipes/createConstraint/PhoneNumberParameterViolationConcern.java
+++ b/manual/src/main/java/org/apache/polygene/manual/recipes/createConstraint/PhoneNumberParameterViolationConcern.java
@@ -22,7 +22,7 @@ package org.apache.polygene.manual.recipes.createConstraint;
 import java.util.Collection;
 import org.apache.polygene.api.concern.ConcernOf;
 import org.apache.polygene.api.concern.Concerns;
-import org.apache.polygene.api.constraint.ConstraintViolation;
+import org.apache.polygene.api.constraint.ValueConstraintViolation;
 import org.apache.polygene.api.constraint.ConstraintViolationException;
 import org.apache.polygene.api.property.Property;
 
@@ -44,7 +44,7 @@ public abstract class PhoneNumberParameterViolationConcern extends ConcernOf<Has
             }
             catch( ConstraintViolationException e )
             {
-                Collection<ConstraintViolation> violations = e.constraintViolations();
+                Collection<ValueConstraintViolation> violations = e.constraintViolations();
                 report( violations );
             }
         }
@@ -52,7 +52,7 @@ public abstract class PhoneNumberParameterViolationConcern extends ConcernOf<Has
 // END SNIPPET: property
 
 // START SNIPPET: property
-        private void report( Collection<ConstraintViolation> violations )
+        private void report( Collection<ValueConstraintViolation> violations )
         {
         }
     }


[09/50] polygene-java git commit: POLYGENE-260 - Fixed the "duplicate should be allowed" for ManyAssociations. POLYGENE-261 - Documentation of "No order is defined" for NamedAssociation Changed StringIdentity creation to use static factory method, and ch

Posted by ni...@apache.org.
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/identity/IdentityManager.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/identity/IdentityManager.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/identity/IdentityManager.java
index ec2a6c0..e7b66fa 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/identity/IdentityManager.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/identity/IdentityManager.java
@@ -80,10 +80,10 @@ public interface IdentityManager
             if( isIdentity( canonicalName ) )
             {
                 // This is already an ID, and we simply return it.
-                return StringIdentity.identity( canonicalName );
+                return StringIdentity.identityOf( canonicalName );
             }
             String prefix = findPrefix( type );
-            return StringIdentity.identity( prefix + SEPARATOR + canonicalName );
+            return StringIdentity.identityOf( prefix + SEPARATOR + canonicalName );
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/EntryPointResource.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/EntryPointResource.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/EntryPointResource.java
index 2204980..b497ebd 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/EntryPointResource.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/EntryPointResource.java
@@ -80,18 +80,18 @@ public interface EntryPointResource extends ServerResource<EntryPoint>
                         RestLink link;
                         if( route.getDescription() == null )
                         {
-                            link = resourceBuilder.createRestLink( StringIdentity.identity( template.getPattern() ), hostRef, Method.GET );
+                            link = resourceBuilder.createRestLink( StringIdentity.identityOf( template.getPattern() ), hostRef, Method.GET );
                         }
                         else
                         {
-                            link = resourceBuilder.createRestLink( StringIdentity.identity( template.getPattern() ), hostRef, Method.GET, route.getDescription() );
+                            link = resourceBuilder.createRestLink( StringIdentity.identityOf( template.getPattern() ), hostRef, Method.GET, route.getDescription() );
                         }
                         entryPoints.put( route.getName(), link );
                     }
                 }
             }
             ValueBuilder<EntryPoint> builder = vbf.newValueBuilder( EntryPoint.class );
-            builder.prototype().identity().set( StringIdentity.identity( "/" ) );
+            builder.prototype().identity().set( StringIdentity.identityOf( "/" ) );
             builder.prototype().api().set( entryPoints );
             return builder.newInstance();
         }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/ResourceBuilder.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/ResourceBuilder.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/ResourceBuilder.java
index b59aac8..be851a6 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/ResourceBuilder.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/ResourceBuilder.java
@@ -143,7 +143,7 @@ public interface ResourceBuilder
         public RestForm createNameForm( Reference base )
         {
             ValueBuilder<RestForm> builder = vbf.newValueBuilder( RestForm.class );
-            builder.prototype().link().set( createRestLink( StringIdentity.identity( "form" ), base, Method.POST ) );
+            builder.prototype().link().set( createRestLink( StringIdentity.identityOf( "form" ), base, Method.POST ) );
             builder.prototype().fields().set( Collections.singletonList( createFormField( "name", FormField.TEXT ) ) );
             return builder.newInstance();
         }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceAssembler.java b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceAssembler.java
index e3d8e73..1618cc0 100644
--- a/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceAssembler.java
+++ b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceAssembler.java
@@ -70,7 +70,7 @@ public class DataSourceAssembler
     {
         module.importedServices( DataSource.class ).
             importedBy( ServiceInstanceImporter.class ).
-            setMetaInfo( StringIdentity.identity( dataSourceServiceId ) ).
+            setMetaInfo( StringIdentity.identityOf( dataSourceServiceId ) ).
             identifiedBy( identity() ).
             visibleIn( visibility() );
         if( circuitBreaker != null )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/ExternalDataSourceAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/ExternalDataSourceAssembler.java b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/ExternalDataSourceAssembler.java
index 78cf765..2e833bb 100644
--- a/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/ExternalDataSourceAssembler.java
+++ b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/ExternalDataSourceAssembler.java
@@ -65,7 +65,7 @@ public class ExternalDataSourceAssembler
     {
         if( circuitBreaker != null )
         {
-            externalDataSource = DataSources.wrapWithCircuitBreaker( StringIdentity.identity( identity() ), externalDataSource, circuitBreaker );
+            externalDataSource = DataSources.wrapWithCircuitBreaker( StringIdentity.identityOf( identity() ), externalDataSource, circuitBreaker );
         }
         module.importedServices( DataSource.class ).
             identifiedBy( identity() ).

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/libraries/sql/src/main/java/org/apache/polygene/library/sql/jmx/DataSourceConfigurationManagerService.java
----------------------------------------------------------------------
diff --git a/libraries/sql/src/main/java/org/apache/polygene/library/sql/jmx/DataSourceConfigurationManagerService.java b/libraries/sql/src/main/java/org/apache/polygene/library/sql/jmx/DataSourceConfigurationManagerService.java
index ec49c23..fb279e1 100644
--- a/libraries/sql/src/main/java/org/apache/polygene/library/sql/jmx/DataSourceConfigurationManagerService.java
+++ b/libraries/sql/src/main/java/org/apache/polygene/library/sql/jmx/DataSourceConfigurationManagerService.java
@@ -175,7 +175,7 @@ public interface DataSourceConfigurationManagerService
             EditableConfiguration( MBeanInfo info, String identity, Map<String, AccessibleObject> propertyNames )
             {
                 this.info = info;
-                this.identity = StringIdentity.identity( identity );
+                this.identity = StringIdentity.identityOf( identity );
                 this.propertyNames = propertyNames;
             }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext.java
----------------------------------------------------------------------
diff --git a/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext.java b/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext.java
index 9bd5878..1ae3c2b 100644
--- a/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext.java
+++ b/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext.java
@@ -133,8 +133,8 @@ public class PayBillsContext
             {
                 // Creditor retrieval could be a use case in itself...
                 List<BalanceData> creditors = new ArrayList<BalanceData>();
-                creditors.add( uowf.currentUnitOfWork().get( CreditorRolemap.class, StringIdentity.identity( "BakerAccount" ) ) );
-                creditors.add( uowf.currentUnitOfWork().get( CreditorRolemap.class, StringIdentity.identity( "ButcherAccount" ) ) );
+                creditors.add( uowf.currentUnitOfWork().get( CreditorRolemap.class, StringIdentity.identityOf( "BakerAccount" ) ) );
+                creditors.add( uowf.currentUnitOfWork().get( CreditorRolemap.class, StringIdentity.identityOf( "ButcherAccount" ) ) );
                 return creditors;
             }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext2.java
----------------------------------------------------------------------
diff --git a/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext2.java b/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext2.java
index ba5a40d..3606713 100644
--- a/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext2.java
+++ b/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext2.java
@@ -126,8 +126,8 @@ public class PayBillsContext2
         {
             // Creditor retrieval could be a use case in itself...
             List<BalanceData> creditors = new ArrayList<>();
-            creditors.add( uowf.currentUnitOfWork().get( BalanceData.class, StringIdentity.identity( "BakerAccount" ) ) );
-            creditors.add( uowf.currentUnitOfWork().get( BalanceData.class, StringIdentity.identity( "ButcherAccount" ) ) );
+            creditors.add( uowf.currentUnitOfWork().get( BalanceData.class, StringIdentity.identityOf( "BakerAccount" ) ) );
+            creditors.add( uowf.currentUnitOfWork().get( BalanceData.class, StringIdentity.identityOf( "ButcherAccount" ) ) );
             return creditors;
         }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/samples/dci/src/test/java/org/apache/polygene/dci/moneytransfer/test/AccountIds.java
----------------------------------------------------------------------
diff --git a/samples/dci/src/test/java/org/apache/polygene/dci/moneytransfer/test/AccountIds.java b/samples/dci/src/test/java/org/apache/polygene/dci/moneytransfer/test/AccountIds.java
index 4456660..323335b 100644
--- a/samples/dci/src/test/java/org/apache/polygene/dci/moneytransfer/test/AccountIds.java
+++ b/samples/dci/src/test/java/org/apache/polygene/dci/moneytransfer/test/AccountIds.java
@@ -24,9 +24,9 @@ import org.apache.polygene.api.identity.StringIdentity;
 
 public interface AccountIds
 {
-    Identity SAVINGS_ACCOUNT_ID = StringIdentity.identity( "SavingsAccountId" );
-    Identity CHECKING_ACCOUNT_ID = StringIdentity.identity( "CheckingAccountId" );
-    Identity CREDITOR_ID1 = StringIdentity.identity( "BakerAccount" );
-    Identity CREDITOR_ID2 = StringIdentity.identity( "ButcherAccount" );
+    Identity SAVINGS_ACCOUNT_ID = StringIdentity.identityOf( "SavingsAccountId" );
+    Identity CHECKING_ACCOUNT_ID = StringIdentity.identityOf( "CheckingAccountId" );
+    Identity CREDITOR_ID1 = StringIdentity.identityOf( "BakerAccount" );
+    Identity CREDITOR_ID2 = StringIdentity.identityOf( "ButcherAccount" );
 
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Forums.java
----------------------------------------------------------------------
diff --git a/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Forums.java b/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Forums.java
index cc70100..3dea65a 100644
--- a/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Forums.java
+++ b/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Forums.java
@@ -38,7 +38,7 @@ import static org.apache.polygene.api.query.QueryExpressions.templateFor;
 public interface Forums
     extends Administrators, EntityComposite
 {
-    Identity FORUMS_ID = StringIdentity.identity( "forums" );
+    Identity FORUMS_ID = StringIdentity.identityOf( "forums" );
 
     Query<Forum> forums();
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Users.java
----------------------------------------------------------------------
diff --git a/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Users.java b/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Users.java
index aa16c40..41b9434 100644
--- a/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Users.java
+++ b/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Users.java
@@ -41,7 +41,7 @@ import static org.apache.polygene.api.query.QueryExpressions.templateFor;
 public interface Users
     extends EntityComposite, Events
 {
-    Identity USERS_ID = StringIdentity.identity( "users" );
+    Identity USERS_ID = StringIdentity.identityOf( "users" );
 
     Query<User> users();
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/BoardResource.java
----------------------------------------------------------------------
diff --git a/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/BoardResource.java b/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/BoardResource.java
index f748192..eac4823 100644
--- a/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/BoardResource.java
+++ b/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/BoardResource.java
@@ -37,7 +37,7 @@ public class BoardResource
     public void resource( String segment )
         throws ResourceException
     {
-        selectFromManyAssociation( ObjectSelection.current().get( Forum.class ).boards(),  StringIdentity.identity( segment ) );
+        selectFromManyAssociation( ObjectSelection.current().get( Forum.class ).boards(),  StringIdentity.identityOf( segment ) );
         subResource( BoardResource.class );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumResource.java
----------------------------------------------------------------------
diff --git a/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumResource.java b/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumResource.java
index abf7c18..3e1fac4 100644
--- a/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumResource.java
+++ b/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumResource.java
@@ -37,7 +37,7 @@ public class ForumResource
     public void resource( String segment )
         throws ResourceException
     {
-        selectFromManyAssociation( ObjectSelection.current().get( Forum.class ).boards(), StringIdentity.identity( segment ) );
+        selectFromManyAssociation( ObjectSelection.current().get( Forum.class ).boards(), StringIdentity.identityOf( segment ) );
         subResource( BoardResource.class );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumsResource.java
----------------------------------------------------------------------
diff --git a/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumsResource.java b/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumsResource.java
index 5c14ec2..1c1c60c 100644
--- a/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumsResource.java
+++ b/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumsResource.java
@@ -36,7 +36,7 @@ public class ForumsResource
     public void resource( String segment )
         throws ResourceException
     {
-        select( Forum.class, StringIdentity.identity( segment ) );
+        select( Forum.class, StringIdentity.identityOf( segment ) );
         subResource( ForumResource.class );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/samples/rental/src/main/java/org/apache/polygene/sample/rental/domain/dev/InitialData.java
----------------------------------------------------------------------
diff --git a/samples/rental/src/main/java/org/apache/polygene/sample/rental/domain/dev/InitialData.java b/samples/rental/src/main/java/org/apache/polygene/sample/rental/domain/dev/InitialData.java
index 0ac3450..db70f40 100644
--- a/samples/rental/src/main/java/org/apache/polygene/sample/rental/domain/dev/InitialData.java
+++ b/samples/rental/src/main/java/org/apache/polygene/sample/rental/domain/dev/InitialData.java
@@ -198,7 +198,7 @@ public interface InitialData
         private RentalShop createShop( UnitOfWork uow )
             throws UnitOfWorkCompletionException
         {
-            return uow.newEntity( RentalShop.class, StringIdentity.identity( "SHOP" ) );
+            return uow.newEntity( RentalShop.class, StringIdentity.identityOf( "SHOP" ) );
         }
 
         private void createCustomers( RentalShop shop )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/BookingPage.java
----------------------------------------------------------------------
diff --git a/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/BookingPage.java b/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/BookingPage.java
index 4c39f73..2aa0c98 100644
--- a/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/BookingPage.java
+++ b/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/BookingPage.java
@@ -52,7 +52,7 @@ public interface BookingPage
             Element result = dom.createElementNS( Page.XHTML, "div" );
             String bookingId = context.path();
             UnitOfWork uow = uowf.currentUnitOfWork();
-            Booking booking = uow.get( Booking.class, StringIdentity.identity( bookingId ) );
+            Booking booking = uow.get( Booking.class, StringIdentity.identityOf( bookingId ) );
             Car car = booking.car().get();
             createChildNode( dom, result, car.model().get() );
             createChildNode( dom, result, car.licensePlate().get() );
@@ -73,7 +73,7 @@ public interface BookingPage
             Element result = dom.createElementNS( Page.XHTML, "div" );
             String bookingId = context.path();
             UnitOfWork uow = uowf.currentUnitOfWork();
-            Booking booking = uow.get( Booking.class, StringIdentity.identity( bookingId ) );
+            Booking booking = uow.get( Booking.class, StringIdentity.identityOf( bookingId ) );
             Customer customer = booking.customer().get();
             createChildNode( dom, result, customer.name().get() );
             createChildNode( dom, result, customer.address().get().line1().get() );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/MainPage.java
----------------------------------------------------------------------
diff --git a/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/MainPage.java b/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/MainPage.java
index 328c41b..884f702 100644
--- a/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/MainPage.java
+++ b/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/MainPage.java
@@ -59,7 +59,7 @@ public interface MainPage
             ArrayList<Node> nodes = new ArrayList<Node>();
             Document dom = context.dom();
             UnitOfWork uow = uowf.currentUnitOfWork();
-            RentalShop shop = uow.get( RentalShop.class, StringIdentity.identity( "SHOP" ) );
+            RentalShop shop = uow.get( RentalShop.class, StringIdentity.identityOf( "SHOP" ) );
             for( Booking booking : shop.findAllBookings() )
             {
                 String plate = booking.car().get().licensePlate().get();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/tests/performance/src/main/java/org/apache/polygene/test/performance/entitystore/AbstractEntityStorePerformanceTest.java
----------------------------------------------------------------------
diff --git a/tests/performance/src/main/java/org/apache/polygene/test/performance/entitystore/AbstractEntityStorePerformanceTest.java b/tests/performance/src/main/java/org/apache/polygene/test/performance/entitystore/AbstractEntityStorePerformanceTest.java
index 61de7ed..43be59d 100644
--- a/tests/performance/src/main/java/org/apache/polygene/test/performance/entitystore/AbstractEntityStorePerformanceTest.java
+++ b/tests/performance/src/main/java/org/apache/polygene/test/performance/entitystore/AbstractEntityStorePerformanceTest.java
@@ -243,7 +243,7 @@ public abstract class AbstractEntityStorePerformanceTest
                 UnitOfWork uow = uowf.newUnitOfWork( newUsecase( "readEntityWithComplexType PREPARE " + bulk ) );
                 for( int i = 0; i < ITERATIONS; i++ )
                 {
-                    ComplexProduct product = uow.newEntity( ComplexProduct.class, StringIdentity.identity( "product" + i ) );
+                    ComplexProduct product = uow.newEntity( ComplexProduct.class, StringIdentity.identityOf( "product" + i ) );
                     product.name().set( "Product " + i );
 
                     if( i % 1000 == 0 )
@@ -265,7 +265,7 @@ public abstract class AbstractEntityStorePerformanceTest
                 String id = rnd.nextInt( ITERATIONS ) + "";
                 for( int i = 0; i < ITERATIONS; i++ )
                 {
-                    ComplexProduct product = uow.get( ComplexProduct.class, StringIdentity.identity( "product" + id ) );
+                    ComplexProduct product = uow.get( ComplexProduct.class, StringIdentity.identityOf( "product" + id ) );
                     product.name().get();
                     if( i % 100 == 0 )
                     {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/tools/envisage/src/test/java/org/apache/polygene/envisage/school/domain/person/initialdata/SamplePersonInitialData.java
----------------------------------------------------------------------
diff --git a/tools/envisage/src/test/java/org/apache/polygene/envisage/school/domain/person/initialdata/SamplePersonInitialData.java b/tools/envisage/src/test/java/org/apache/polygene/envisage/school/domain/person/initialdata/SamplePersonInitialData.java
index 626415e..10fa526 100644
--- a/tools/envisage/src/test/java/org/apache/polygene/envisage/school/domain/person/initialdata/SamplePersonInitialData.java
+++ b/tools/envisage/src/test/java/org/apache/polygene/envisage/school/domain/person/initialdata/SamplePersonInitialData.java
@@ -94,7 +94,7 @@ public interface SamplePersonInitialData
 
         private void createPerson( UnitOfWork uow, String personId, String firstName, String lastName )
         {
-            EntityBuilder<Person> person = uow.newEntityBuilder( Person.class, StringIdentity.identity( personId ) );
+            EntityBuilder<Person> person = uow.newEntityBuilder( Person.class, StringIdentity.identityOf( personId ) );
 
             PersonEntity.PersonState state = person.instanceFor( PersonEntity.PersonState.class );
             state.firstName().set( firstName );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0d9e8a1b/tutorials/hello/src/test/java/org/apache/polygene/tutorials/hello/HelloTest4.java
----------------------------------------------------------------------
diff --git a/tutorials/hello/src/test/java/org/apache/polygene/tutorials/hello/HelloTest4.java b/tutorials/hello/src/test/java/org/apache/polygene/tutorials/hello/HelloTest4.java
index dd103d8..908030f 100644
--- a/tutorials/hello/src/test/java/org/apache/polygene/tutorials/hello/HelloTest4.java
+++ b/tutorials/hello/src/test/java/org/apache/polygene/tutorials/hello/HelloTest4.java
@@ -35,7 +35,7 @@ import static org.junit.Assert.assertThat;
 public class HelloTest4 extends AbstractPolygeneTest
 {
 
-    public static final Identity TEST_IDENTITY = StringIdentity.identity( "123" );
+    public static final Identity TEST_IDENTITY = StringIdentity.identityOf( "123" );
 
     @Override
     public void assemble( ModuleAssembly module )


[50/50] polygene-java git commit: Merge branch 'develop' into es-jooq

Posted by ni...@apache.org.
Merge branch 'develop' into es-jooq


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/9e12cd7a
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/9e12cd7a
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/9e12cd7a

Branch: refs/heads/es-jooq
Commit: 9e12cd7a50f7b886bf9413607951f0fc78b9ecb6
Parents: b9d03dc cdec0e8
Author: niclas <ni...@hedhman.org>
Authored: Mon Jul 10 14:52:23 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Mon Jul 10 14:52:23 2017 +0800

----------------------------------------------------------------------
 .../distributions/DistributionsPlugin.groovy    |   3 +
 .../api/indexing/IndexingException.java         |  17 ++
 .../MissingIndexingSystemException.java         |  34 +++
 .../query/MissingIndexingSystemException.java   |  35 ---
 .../polygene/api/query/QueryBuilderFactory.java |   2 +
 .../apache/polygene/bootstrap/Assemblers.java   |  56 +++-
 .../bootstrap/CompositeAssemblyImpl.java        |   3 +-
 .../runtime/unitofwork/ModuleUnitOfWork.java    |   3 +-
 .../polygene/runtime/value/ValueInstance.java   |  23 +-
 .../polygene/test/EntityTestAssembler.java      |   1 +
 .../ehcache/assembly/EhCacheAssembler.java      |   1 +
 .../memcache/assembly/MemcacheAssembler.java    |   1 +
 .../assembly/CassandraEntityStoreAssembler.java |   1 +
 .../file/assembly/FileEntityStoreAssembler.java |   1 +
 .../assembly/GeodeEntityStoreAssembler.java     |   1 +
 .../assembly/HazelcastEntityStoreAssembler.java |   1 +
 .../assembly/JCloudsEntityStoreAssembler.java   |   1 +
 .../jdbm/assembly/JdbmEntityStoreAssembler.java |   1 +
 .../assembly/LevelDBEntityStoreAssembler.java   |   1 +
 .../assembly/MemoryEntityStoreAssembler.java    |   1 +
 .../assembly/MongoDBEntityStoreAssembler.java   |   1 +
 .../PreferencesEntityStoreAssembler.java        |   1 +
 .../assembly/RedisEntityStoreAssembler.java     |   1 +
 .../riak/assembly/RiakEntityStoreAssembler.java |   1 +
 .../AbstractSQLEntityStoreAssembler.java        |   1 +
 .../ElasticSearchIndexingException.java         |  13 +-
 .../assembly/ESClientIndexQueryAssembler.java   |   1 +
 .../assembly/ESClusterIndexQueryAssembler.java  |   1 +
 .../ESFilesystemIndexQueryAssembler.java        |   1 +
 .../index/rdf/UnsupportedLanguageException.java |   4 +-
 .../rdf/assembly/RdfMemoryStoreAssembler.java   |   1 +
 .../assembly/RdfNativeSesameStoreAssembler.java |   1 +
 .../assembly/RdfRdbmsSesameStoreAssembler.java  |   1 +
 .../index/rdf/indexing/RdfIndexExporter.java    |   1 +
 .../index/rdf/indexing/RdfIndexerService.java   |   2 +-
 .../index/rdf/query/TupleQueryExecutor.java     |  12 +-
 .../solr/assembly/SolrIndexingAssembler.java    |   1 +
 .../AbstractSQLIndexQueryAssembler.java         |   1 +
 .../support/skeletons/AbstractSQLIndexing.java  | 281 ++++++++++---------
 .../support/skeletons/AbstractSQLStartup.java   |   9 +-
 .../support/skeletons/SqlIndexingException.java |  17 ++
 .../assembly/CodahaleMetricsAssembler.java      |   1 +
 .../JavaxJsonSerializationAssembler.java        |   1 +
 .../JavaxXmlSerializationAssembler.java         |   1 +
 .../MessagePackSerializationAssembler.java      |   1 +
 .../library/alarm/AlarmSystemAssembler.java     |   1 +
 .../fileconfig/FileConfigurationAssembler.java  |   1 +
 .../library/http/JettyServiceAssembler.java     |   1 +
 .../library/rest/client/RssReaderTest.java      |  52 ++--
 .../library/rest/admin/RestAssembler.java       |   1 +
 libraries/restlet/build.gradle                  |   5 +-
 .../library/restlet/PolygeneEntityRestlet.java  |   1 -
 .../restlet/PolygeneRestApplication.java        |  38 ++-
 .../library/restlet/PolygeneServerServlet.java  |   9 +-
 .../restlet/assembly/GenericRestLayer.java      |  34 ---
 .../assembly/RestApplicationAssembler.java      |  85 ------
 .../RestletCrudConnectivityAssembler.java       |   3 +
 .../assembly/RestletCrudModuleAssembler.java    |  24 +-
 .../configuration/ConfigurationLayer.java       |  45 ---
 .../configuration/ConfigurationModule.java      |  39 ---
 .../connectivity/ConnectivityLayer.java         |  39 ---
 .../assembly/connectivity/RestModule.java       |  40 ---
 .../assembly/connectivity/SecurityModule.java   |  35 ---
 .../restlet/assembly/domain/CrudModule.java     |  38 ---
 .../restlet/assembly/domain/DomainLayer.java    |  37 ---
 .../infrastructue/FileStorageModule.java        |  50 ----
 .../assembly/infrastructue/IndexingModule.java  |  54 ----
 .../infrastructue/InfrastructureLayer.java      |  54 ----
 .../infrastructue/SerializationModule.java      |  37 ---
 .../assembly/resource/ResourceLayer.java        |  37 ---
 .../restlet/crud/EntityListResource.java        |   5 +-
 .../library/restlet/crud/EntityResource.java    |  13 +-
 .../restlet/resource/CreationResource.java      |   8 +-
 .../restlet/resource/EntryPointResource.java    |   4 +-
 .../restlet/resource/ResourceBuilder.java       |  32 +--
 .../serialization/JsonRepresentation.java       |   7 +-
 .../library/restlet/TestApplication.java        |  10 +-
 .../assembly/RestApplicationAssembler.java      |  85 ++++++
 .../configuration/ConfigurationLayer.java       |  45 +++
 .../configuration/ConfigurationModule.java      |  39 +++
 .../connectivity/ConnectivityLayer.java         |  39 +++
 .../assembly/connectivity/RestModule.java       |  40 +++
 .../assembly/connectivity/SecurityModule.java   |  35 +++
 .../restlet/assembly/domain/CrudModule.java     |  38 +++
 .../restlet/assembly/domain/DomainLayer.java    |  37 +++
 .../infrastructue/FileStorageModule.java        |  50 ++++
 .../assembly/infrastructue/IndexingModule.java  |  54 ++++
 .../infrastructue/InfrastructureLayer.java      |  54 ++++
 .../infrastructue/SerializationModule.java      |  37 +++
 .../assembly/resource/ResourceLayer.java        |  37 +++
 .../shiro/assembly/PasswordDomainAssembler.java |   1 +
 .../assembly/PermissionsDomainAssembler.java    |   1 +
 .../assembly/StandaloneShiroAssembler.java      |   1 +
 .../shiro/web/assembly/HttpShiroAssembler.java  |   1 +
 .../sql/liquibase/LiquibaseAssembler.java       |   1 +
 ...bstractPooledDataSourceServiceAssembler.java |   1 +
 .../sql/assembly/DataSourceAssembler.java       |   1 +
 .../sql/assembly/DataSourceJMXAssembler.java    |   1 +
 .../assembly/ExternalDataSourceAssembler.java   |   1 +
 .../assembly/PersistingSequencingAssembler.java |   1 +
 .../assembly/TransientSequencingAssembler.java  |   1 +
 .../uid/uuid/assembly/UuidServiceAssembler.java |   1 +
 .../uowfile/bootstrap/UoWFileAssembler.java     |   1 +
 tools/generator-polygene/app/index.js           |  44 +--
 .../HttpServerModule/bootstrap.tmpl             |  23 +-
 .../RestApiModule/NullEnroler.tmpl              |  32 ---
 .../RestApiModule/NullVerifier.tmpl             |  34 ---
 .../RestApiModule/bootstrap.tmpl                |  10 +-
 .../ConnectivityLayer/RestApiModule/module.js   |   4 -
 .../DomainLayer/DomainModule/Crud.tmpl          |   2 +-
 .../DomainLayer/DomainModule/Entity.tmpl        |   2 +-
 .../DomainLayer/DomainModule/bootstrap.tmpl     |   8 +-
 .../DomainLayer/DomainModule/module.js          |   4 +-
 .../indexing/ds-index-postgresql.properties     |   2 +-
 .../IndexingModule/module.js                    |  22 +-
 .../StorageModule/bootstrap.tmpl                |   4 +-
 .../InfrastructureLayer/StorageModule/module.js |   2 -
 .../storage/ds-es-postgresql.properties         |   2 +-
 .../storage/es-cassandra.properties             |  37 ++-
 .../RestAPIApplication/Launcher.java.tmpl       |  12 +-
 .../app/templates/RestAPIApplication/SETUP.tmpl |  41 +++
 .../app/templates/RestAPIApplication/app.js     |  14 +
 .../RestAPIApplication/application.java.tmpl    |  32 ++-
 .../customUnixStartScript.txt                   | 175 ++++++++++++
 .../customWindowsStartScript.txt                |  89 ++++++
 .../app/templates/buildtool/gradle-app.tmpl     |  79 +++---
 .../app/templates/buildtool/gradle-root.tmpl    |  27 ++
 127 files changed, 1550 insertions(+), 1136 deletions(-)
----------------------------------------------------------------------



[24/50] polygene-java git commit: NullPointerException fixed.

Posted by ni...@apache.org.
NullPointerException fixed.


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/41fbc549
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/41fbc549
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/41fbc549

Branch: refs/heads/es-jooq
Commit: 41fbc549fab5d92194be7c5d7cc208f4c1ca9c39
Parents: 5e494ff
Author: niclas <ni...@hedhman.org>
Authored: Thu Jun 29 15:00:51 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Thu Jun 29 15:00:51 2017 +0800

----------------------------------------------------------------------
 .../apache/polygene/library/restlet/PolygeneRestApplication.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/41fbc549/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneRestApplication.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneRestApplication.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneRestApplication.java
index d3f33d4..854592e 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneRestApplication.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneRestApplication.java
@@ -63,7 +63,6 @@ public abstract class PolygeneRestApplication extends org.restlet.Application
     protected PolygeneRestApplication( Context context )
     {
         super( context );
-        setName( polygeneApplication.name() );
     }
 
     protected void printRoutes( PrintStream out )
@@ -78,6 +77,7 @@ public abstract class PolygeneRestApplication extends org.restlet.Application
     public synchronized void start()
         throws Exception
     {
+        setName( polygeneApplication.name() );
         Series<Parameter> parameters = getContext().getParameters();
         String mode = parameters.getFirstValue( "org.apache.polygene.runtime.mode" );
         super.start();


[31/50] polygene-java git commit: Fixed a mistake in the larger refactoring.

Posted by ni...@apache.org.
Fixed a mistake in the larger refactoring.


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

Branch: refs/heads/es-jooq
Commit: cf12e4b892759b5c15911a96a7aa619084902c13
Parents: 3c7271c
Author: niclas <ni...@hedhman.org>
Authored: Sun Jul 2 16:19:48 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jul 2 16:19:48 2017 +0800

----------------------------------------------------------------------
 .../app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cf12e4b8/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl b/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl
index c7e161e..d30c1f3 100644
--- a/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl
+++ b/tools/generator-polygene/app/templates/ConnectivityLayer/HttpServerModule/bootstrap.tmpl
@@ -21,6 +21,7 @@ package <%= polygene.packageName %>.bootstrap.connectivity;
 
 import java.util.HashMap;
 <% if( hasFeature('security') ) { %>
+import java.io.File;
 import org.apache.polygene.library.http.SecureJettyConfiguration;
 import org.apache.polygene.library.http.SecureJettyServiceAssembler;
 import org.apache.polygene.library.shiro.web.assembly.HttpShiroAssembler;


[20/50] polygene-java git commit: POLYGENE-263 - NoSuchCompositeTypeException reports where invisible types of desired type is located.

Posted by ni...@apache.org.
POLYGENE-263 - NoSuchCompositeTypeException reports where invisible types of desired type is located.


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/5704bb82
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/5704bb82
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/5704bb82

Branch: refs/heads/es-jooq
Commit: 5704bb8204b3222879c469ce02a44dee629a17aa
Parents: 8ad89e8
Author: niclas <ni...@hedhman.org>
Authored: Sat Jun 24 14:10:43 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sat Jun 24 14:10:43 2017 +0800

----------------------------------------------------------------------
 .../composite/NoSuchCompositeTypeException.java |  37 +++--
 .../composite/NoSuchTransientTypeException.java |   5 +-
 .../api/service/NoSuchServiceTypeException.java |   5 +-
 .../polygene/api/structure/LayerDescriptor.java |   3 +-
 .../unitofwork/NoSuchEntityTypeException.java   |   8 +-
 .../api/value/NoSuchValueTypeException.java     |   8 +-
 .../polygene/runtime/structure/LayerModel.java  |   5 +-
 .../runtime/structure/ModuleInstance.java       |  18 +--
 .../runtime/unitofwork/ModuleUnitOfWork.java    |   6 +-
 .../runtime/unitofwork/UnitOfWorkInstance.java  |   2 +-
 .../runtime/value/ValueBuilderInstance.java     |   2 +-
 .../polygene/runtime/value/ValueModel.java      |   2 +-
 .../composite/CompositeFactoryImplTest.java     |   1 +
 .../NoSuchEntityTypeExceptionTest.java          |  95 +++++++++++
 ...stractPolygeneMultiLayeredTestWithModel.java | 161 ++++++++++++++++++
 .../test/entity/model/EntityStoreTestSuite.java | 162 ++++---------------
 .../entity/model/monetary/CheckBookSlip.java    |  58 +++++++
 .../test/entity/model/monetary/Currency.java    |  11 +-
 .../cassandra/CassandraEntityStoreMixin.java    |   2 +-
 .../PreferencesEntityStoreMixin.java            |   2 +-
 20 files changed, 413 insertions(+), 180 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5704bb82/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchCompositeTypeException.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchCompositeTypeException.java b/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchCompositeTypeException.java
index 64977ef..1d6f155 100644
--- a/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchCompositeTypeException.java
+++ b/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchCompositeTypeException.java
@@ -21,6 +21,8 @@ package org.apache.polygene.api.composite;
 
 import java.util.stream.Stream;
 import org.apache.polygene.api.common.InvalidApplicationException;
+import org.apache.polygene.api.structure.LayerDescriptor;
+import org.apache.polygene.api.structure.ModuleDescriptor;
 import org.apache.polygene.api.structure.TypeLookup;
 
 import static java.util.stream.Collectors.joining;
@@ -36,14 +38,14 @@ public abstract class NoSuchCompositeTypeException extends InvalidApplicationExc
     private final String metaType;
     private final String candidateTypes;
 
-    protected NoSuchCompositeTypeException( String metaType, String compositeType, String moduleName, TypeLookup typeLookup )
+    protected NoSuchCompositeTypeException( String metaType, String compositeType, ModuleDescriptor module )
     {
-        super( "\n\tCould not find any visible " + metaType + " of type [" + compositeType + "] in module [" + moduleName + "]." );
+        super( "\n\tCould not find any visible " + metaType + " of type [" + compositeType + "] in module [" + module.name() + "]." );
         this.metaType = metaType;
         this.compositeType = compositeType;
-        this.moduleName = moduleName;
-        visibleTypes = formatVisibleTypes( typeLookup );
-        candidateTypes = findCandidateTypes( typeLookup );
+        this.moduleName = module.name();
+        visibleTypes = formatVisibleTypes( module.typeLookup() );
+        candidateTypes = findCandidateTypes( module );
     }
 
     public String compositeType()
@@ -86,18 +88,21 @@ public abstract class NoSuchCompositeTypeException extends InvalidApplicationExc
             .collect( joining( "\n", "\tVisible " + metaType + " types are:\n", "" ) );
     }
 
-    private String findCandidateTypes( TypeLookup typeLookup )
+    private String findCandidateTypes( ModuleDescriptor module )
     {
-        return "";
-//        return descriptors( typeLookup )
-//            .filter( type -> compositeType.equals( type.primaryType().getName() ) )
-//            .map( descriptor ->
-//                  {
-//                      Class<?> primarytype = descriptor.primaryType();
-//                      String typeName = primarytype.getName();
-//                      return "\t\t[ " + typeName + "] in [" + descriptor.module().name() + "] with visibility " + descriptor.visibility();
-//                  } )
-//            .collect( joining( "\n", "\tInvisible " + metaType + " types are:\n", "" ) );
+        return Stream.concat( Stream.of( module.layer() ), module.layer().usedLayers().layers() )
+                     .flatMap( LayerDescriptor::modules )
+                     .map( ModuleDescriptor::typeLookup )
+                     .flatMap( this::descriptors )
+                     .filter( type -> compositeType.equals( type.primaryType().getName() ) )
+                     .map( descriptor ->
+                           {
+                               Class<?> primarytype = descriptor.primaryType();
+                               String typeName = primarytype.getName();
+                               return "\t\t[ " + typeName + "] in [" + descriptor.module().name() + "] with visibility " + descriptor.visibility();
+                           } )
+                     .distinct()
+                     .collect( joining( "\n", "\tInvisible " + metaType + " types are:\n", "" ) );
     }
 
     protected abstract Stream<? extends CompositeDescriptor> descriptors( TypeLookup typeLookup );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5704bb82/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchTransientTypeException.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchTransientTypeException.java b/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchTransientTypeException.java
index 45ecd17..8bc188c 100644
--- a/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchTransientTypeException.java
+++ b/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchTransientTypeException.java
@@ -21,6 +21,7 @@
 package org.apache.polygene.api.composite;
 
 import java.util.stream.Stream;
+import org.apache.polygene.api.structure.ModuleDescriptor;
 import org.apache.polygene.api.structure.TypeLookup;
 
 import static java.util.stream.Collectors.joining;
@@ -30,9 +31,9 @@ import static java.util.stream.Collectors.joining;
  */
 public class NoSuchTransientTypeException extends NoSuchCompositeTypeException
 {
-    public NoSuchTransientTypeException( String typeName, String moduleName, TypeLookup typeLookup )
+    public NoSuchTransientTypeException( String typeName, ModuleDescriptor module )
     {
-        super( "TransientComposite", typeName, moduleName, typeLookup );
+        super( "TransientComposite", typeName, module );
     }
 
     protected Stream<? extends CompositeDescriptor> descriptors( TypeLookup typeLookup )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5704bb82/core/api/src/main/java/org/apache/polygene/api/service/NoSuchServiceTypeException.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/service/NoSuchServiceTypeException.java b/core/api/src/main/java/org/apache/polygene/api/service/NoSuchServiceTypeException.java
index cc43627..b55270c 100644
--- a/core/api/src/main/java/org/apache/polygene/api/service/NoSuchServiceTypeException.java
+++ b/core/api/src/main/java/org/apache/polygene/api/service/NoSuchServiceTypeException.java
@@ -25,6 +25,7 @@ import java.util.stream.Stream;
 import org.apache.polygene.api.composite.CompositeDescriptor;
 import org.apache.polygene.api.composite.ModelDescriptor;
 import org.apache.polygene.api.composite.NoSuchCompositeTypeException;
+import org.apache.polygene.api.structure.ModuleDescriptor;
 import org.apache.polygene.api.structure.TypeLookup;
 
 /**
@@ -32,9 +33,9 @@ import org.apache.polygene.api.structure.TypeLookup;
  */
 public class NoSuchServiceTypeException extends NoSuchCompositeTypeException
 {
-    public NoSuchServiceTypeException( String typeName, String moduleName, TypeLookup typeLookup )
+    public NoSuchServiceTypeException( String typeName, ModuleDescriptor module )
     {
-        super( "ServiceComposite", typeName, moduleName, typeLookup );
+        super( "ServiceComposite", typeName, module );
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5704bb82/core/api/src/main/java/org/apache/polygene/api/structure/LayerDescriptor.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/structure/LayerDescriptor.java b/core/api/src/main/java/org/apache/polygene/api/structure/LayerDescriptor.java
index e8270ae..c68e02f 100644
--- a/core/api/src/main/java/org/apache/polygene/api/structure/LayerDescriptor.java
+++ b/core/api/src/main/java/org/apache/polygene/api/structure/LayerDescriptor.java
@@ -32,7 +32,6 @@ import org.apache.polygene.api.value.ValueDescriptor;
  */
 public interface LayerDescriptor
 {
-
     /**
      * @return the Layer's name
      */
@@ -45,6 +44,8 @@ public interface LayerDescriptor
      */
     UsedLayersDescriptor usedLayers();
 
+    Stream<? extends ModuleDescriptor> modules();
+
     Stream<? extends ObjectDescriptor> visibleObjects( Visibility visibility );
 
     Stream<? extends TransientDescriptor> visibleTransients( Visibility visibility );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5704bb82/core/api/src/main/java/org/apache/polygene/api/unitofwork/NoSuchEntityTypeException.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/unitofwork/NoSuchEntityTypeException.java b/core/api/src/main/java/org/apache/polygene/api/unitofwork/NoSuchEntityTypeException.java
index a020c6e..8dd5668 100644
--- a/core/api/src/main/java/org/apache/polygene/api/unitofwork/NoSuchEntityTypeException.java
+++ b/core/api/src/main/java/org/apache/polygene/api/unitofwork/NoSuchEntityTypeException.java
@@ -22,6 +22,7 @@ package org.apache.polygene.api.unitofwork;
 import java.util.stream.Stream;
 import org.apache.polygene.api.composite.CompositeDescriptor;
 import org.apache.polygene.api.composite.NoSuchCompositeTypeException;
+import org.apache.polygene.api.structure.ModuleDescriptor;
 import org.apache.polygene.api.structure.TypeLookup;
 
 import static java.util.stream.Collectors.joining;
@@ -30,12 +31,11 @@ import static java.util.stream.Collectors.joining;
  * Polygene exception to be thrown in case that an entity composite
  * was not found during a lookup call.
  */
-public class NoSuchEntityTypeException
-    extends NoSuchCompositeTypeException
+public class NoSuchEntityTypeException extends NoSuchCompositeTypeException
 {
-    public NoSuchEntityTypeException( String typeName, String moduleName, TypeLookup typeLookup )
+    public NoSuchEntityTypeException( String typeName, ModuleDescriptor module )
     {
-        super( "EntityComposite", typeName, moduleName, typeLookup  );
+        super( "EntityComposite", typeName, module );
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5704bb82/core/api/src/main/java/org/apache/polygene/api/value/NoSuchValueTypeException.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/value/NoSuchValueTypeException.java b/core/api/src/main/java/org/apache/polygene/api/value/NoSuchValueTypeException.java
index 77d2dc5..6538a31 100644
--- a/core/api/src/main/java/org/apache/polygene/api/value/NoSuchValueTypeException.java
+++ b/core/api/src/main/java/org/apache/polygene/api/value/NoSuchValueTypeException.java
@@ -22,6 +22,7 @@ package org.apache.polygene.api.value;
 import java.util.stream.Stream;
 import org.apache.polygene.api.composite.CompositeDescriptor;
 import org.apache.polygene.api.composite.NoSuchCompositeTypeException;
+import org.apache.polygene.api.structure.ModuleDescriptor;
 import org.apache.polygene.api.structure.TypeLookup;
 
 import static java.util.stream.Collectors.joining;
@@ -29,12 +30,11 @@ import static java.util.stream.Collectors.joining;
 /**
  * Thrown when no visible value of the requested type is found.
  */
-public class NoSuchValueTypeException
-    extends NoSuchCompositeTypeException
+public class NoSuchValueTypeException extends NoSuchCompositeTypeException
 {
-    public NoSuchValueTypeException( String valueType, String moduleName, TypeLookup typeLookup )
+    public NoSuchValueTypeException( String valueType, ModuleDescriptor module )
     {
-        super( "ValueComposite", valueType, moduleName, typeLookup );
+        super( "ValueComposite", valueType, module );
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5704bb82/core/runtime/src/main/java/org/apache/polygene/runtime/structure/LayerModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/structure/LayerModel.java b/core/runtime/src/main/java/org/apache/polygene/runtime/structure/LayerModel.java
index 59cf733..488283b 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/structure/LayerModel.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/structure/LayerModel.java
@@ -30,6 +30,7 @@ import org.apache.polygene.api.entity.EntityDescriptor;
 import org.apache.polygene.api.object.ObjectDescriptor;
 import org.apache.polygene.api.structure.Layer;
 import org.apache.polygene.api.structure.LayerDescriptor;
+import org.apache.polygene.api.structure.ModuleDescriptor;
 import org.apache.polygene.api.util.HierarchicalVisitor;
 import org.apache.polygene.api.util.VisitableHierarchy;
 import org.apache.polygene.api.value.ValueDescriptor;
@@ -75,9 +76,9 @@ public final class LayerModel
         return metaInfo.get( infoType );
     }
 
-    public Iterable<ModuleModel> modules()
+    public Stream<? extends ModuleDescriptor> modules()
     {
-        return modules;
+        return modules.stream();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5704bb82/core/runtime/src/main/java/org/apache/polygene/runtime/structure/ModuleInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/structure/ModuleInstance.java b/core/runtime/src/main/java/org/apache/polygene/runtime/structure/ModuleInstance.java
index 9422816..969ae18 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/structure/ModuleInstance.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/structure/ModuleInstance.java
@@ -118,8 +118,8 @@ public class ModuleInstance
 
     @SuppressWarnings( "LeakingThisInConstructor" )
     ModuleInstance( ModuleModel moduleModel, LayerDescriptor layer, TypeLookup typeLookup,
-                           ServicesModel servicesModel, ImportedServicesModel importedServicesModel
-    )
+                    ServicesModel servicesModel, ImportedServicesModel importedServicesModel
+                  )
     {
         // Constructor parameters
         model = moduleModel;
@@ -208,7 +208,7 @@ public class ModuleInstance
 
         if( model == null )
         {
-            throw new NoSuchTransientTypeException( mixinType.getName(), name(), typeLookup );
+            throw new NoSuchTransientTypeException( mixinType.getName(), descriptor() );
         }
 
         Map<AccessibleObject, Property<?>> properties = new HashMap<>();
@@ -250,7 +250,7 @@ public class ModuleInstance
 
         if( compositeModelModule == null )
         {
-            throw new NoSuchValueTypeException( mixinType.getName(), name(), typeLookup );
+            throw new NoSuchValueTypeException( mixinType.getName(), descriptor() );
         }
 
         StateResolver stateResolver = new InitialStateResolver( compositeModelModule.module() );
@@ -263,7 +263,7 @@ public class ModuleInstance
                                                          Function<AssociationDescriptor, EntityReference> associationFunction,
                                                          Function<AssociationDescriptor, Stream<EntityReference>> manyAssociationFunction,
                                                          Function<AssociationDescriptor, Stream<Map.Entry<String, EntityReference>>> namedAssociationFunction
-    )
+                                                       )
     {
         Objects.requireNonNull( propertyFunction, "propertyFunction" );
         Objects.requireNonNull( associationFunction, "associationFunction" );
@@ -274,7 +274,7 @@ public class ModuleInstance
 
         if( compositeModelModule == null )
         {
-            throw new NoSuchValueTypeException( mixinType.getName(), name(), typeLookup );
+            throw new NoSuchValueTypeException( mixinType.getName(), descriptor() );
         }
 
         StateResolver stateResolver = new FunctionStateResolver(
@@ -332,7 +332,7 @@ public class ModuleInstance
 
         if( model == null )
         {
-            throw new NoSuchValueTypeException( valueType.getName(), name(), typeLookup );
+            throw new NoSuchValueTypeException( valueType.getName(), descriptor() );
         }
 
         return new ValueBuilderWithPrototype<>( model, this, prototype );
@@ -347,7 +347,7 @@ public class ModuleInstance
 
         if( model == null )
         {
-            throw new NoSuchValueTypeException( mixinType.getName(), name(), typeLookup );
+            throw new NoSuchValueTypeException( mixinType.getName(), descriptor() );
         }
 
         try
@@ -380,7 +380,7 @@ public class ModuleInstance
         ModelDescriptor serviceModel = typeLookup.lookupServiceModel( serviceType );
         if( serviceModel == null )
         {
-            throw new NoSuchServiceTypeException( serviceType.getTypeName(), name(), typeLookup );
+            throw new NoSuchServiceTypeException( serviceType.getTypeName(), descriptor() );
         }
         return findServiceReferenceInstance( serviceModel );
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5704bb82/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java b/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
index a863364..0cf26f0 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
@@ -181,7 +181,7 @@ public class ModuleUnitOfWork
 
         if( model == null )
         {
-            throw new NoSuchEntityTypeException( type.getName(), module.name(), module.typeLookup() );
+            throw new NoSuchEntityTypeException( type.getName(), module );
         }
 
         ModuleDescriptor modelModule = model.module();
@@ -238,7 +238,7 @@ public class ModuleUnitOfWork
 
         if( model == null )
         {
-            throw new NoSuchEntityTypeException( type.getName(), module.name(), module.typeLookup() );
+            throw new NoSuchEntityTypeException( type.getName(), module );
         }
 
         ModuleDescriptor modelModule = model.module();
@@ -283,7 +283,7 @@ public class ModuleUnitOfWork
 
         if( !models.iterator().hasNext() )
         {
-            throw new NoSuchEntityTypeException( type.getName(), module.name(), module.typeLookup() );
+            throw new NoSuchEntityTypeException( type.getName(), module );
         }
 
         return uow.get( EntityReference.create( identity ), this, models, type );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5704bb82/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/UnitOfWorkInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/UnitOfWorkInstance.java b/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/UnitOfWorkInstance.java
index 927f04b..33745f7 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/UnitOfWorkInstance.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/UnitOfWorkInstance.java
@@ -157,7 +157,7 @@ public final class UnitOfWorkInstance
                 }
                 else
                 {
-                    throw new NoSuchEntityTypeException( mixinType.getName(), module.name(), module.typeLookup() );
+                    throw new NoSuchEntityTypeException( mixinType.getName(), module );
                 }
             }
             // Create instance

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5704bb82/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueBuilderInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueBuilderInstance.java b/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueBuilderInstance.java
index d92ad72..6789d95 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueBuilderInstance.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueBuilderInstance.java
@@ -86,7 +86,7 @@ public final class ValueBuilderInstance<T>
 
         if( valueModel == null )
         {
-            throw new NoSuchValueTypeException( valueType.getName(), currentModule.name(), currentModule.typeLookup() );
+            throw new NoSuchValueTypeException( valueType.getName(), currentModule.descriptor() );
         }
         return new ValueBuilderWithPrototype<>( valueModel, currentModule, prototype() ).newInstance();
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5704bb82/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueModel.java b/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueModel.java
index 496e503..3f9703e 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueModel.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueModel.java
@@ -203,7 +203,7 @@ public final class ValueModel extends CompositeModel
         List<EntityDescriptor> descriptors = lookup.lookupEntityModels( rawClass );
         if( descriptors.size() == 0 )
         {
-            throw new NoSuchEntityTypeException( rawClass.getName(), module.name(), lookup );
+            throw new NoSuchEntityTypeException( rawClass.getName(), module );
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5704bb82/core/runtime/src/test/java/org/apache/polygene/runtime/composite/CompositeFactoryImplTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/composite/CompositeFactoryImplTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/composite/CompositeFactoryImplTest.java
index adb0ccb..fd557e2 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/composite/CompositeFactoryImplTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/composite/CompositeFactoryImplTest.java
@@ -22,6 +22,7 @@ package org.apache.polygene.runtime.composite;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
 import java.util.Properties;
+import org.apache.polygene.api.common.ConstructionException;
 import org.apache.polygene.test.AbstractPolygeneTest;
 import org.junit.Test;
 import org.apache.polygene.api.common.AppliesTo;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5704bb82/core/runtime/src/test/java/org/apache/polygene/runtime/structure/NoSuchEntityTypeExceptionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/structure/NoSuchEntityTypeExceptionTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/structure/NoSuchEntityTypeExceptionTest.java
new file mode 100644
index 0000000..a65802b
--- /dev/null
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/structure/NoSuchEntityTypeExceptionTest.java
@@ -0,0 +1,95 @@
+/*
+ *  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.runtime.structure;
+
+import org.apache.polygene.api.composite.NoSuchTransientTypeException;
+import org.apache.polygene.api.unitofwork.NoSuchEntityTypeException;
+import org.apache.polygene.api.unitofwork.UnitOfWork;
+import org.apache.polygene.api.value.NoSuchValueTypeException;
+import org.apache.polygene.api.value.ValueBuilder;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.memory.MemoryEntityStoreService;
+import org.apache.polygene.test.entity.model.AbstractPolygeneMultiLayeredTestWithModel;
+import org.apache.polygene.test.entity.model.monetary.CheckBookSlip;
+import org.apache.polygene.test.entity.model.monetary.Currency;
+import org.apache.polygene.test.entity.model.people.Person;
+import org.apache.polygene.test.entity.model.people.Rent;
+import org.junit.Test;
+
+import static org.hamcrest.core.StringContains.containsString;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.fail;
+
+public class NoSuchEntityTypeExceptionTest extends AbstractPolygeneMultiLayeredTestWithModel
+{
+    @Test
+    public void givenNoVisibilityWhenCreatingValueExpectClearException()
+    {
+        try
+        {
+            ValueBuilder<Rent> builder = valueBuilderFactory.newValueBuilder( Rent.class );
+            fail( NoSuchValueTypeException.class.getSimpleName() + " should have been thrown." );
+        }
+        catch( NoSuchValueTypeException e )
+        {
+            String expectedString = "\tInvisible ValueComposite types are:" + System.getProperty( "line.separator" )
+                                    + "\t\t[ org.apache.polygene.test.entity.model.people.Rent] in [People Module] with visibility module";
+            assertThat( e.getMessage(), containsString( expectedString ) );
+        }
+    }
+
+    @Test
+    public void givenNoVisibilityWhenCreatingTransientExpectClearException()
+    {
+        try
+        {
+            CheckBookSlip slip = transientBuilderFactory.newTransient( CheckBookSlip.class );
+            fail( NoSuchTransientTypeException.class.getSimpleName() + " should have been thrown." );
+        }
+        catch( NoSuchTransientTypeException e )
+        {
+            String expectedString = "\tInvisible TransientComposite types are:" + System.getProperty( "line.separator" )
+                                    + "\t\t[ org.apache.polygene.test.entity.model.monetary.CheckBookSlip] in [Monetary Module] with visibility module";
+            assertThat( e.getMessage(), containsString( expectedString ) );
+        }
+    }
+
+    @Test
+    public void givenNoVisibilityWhenCreatingEntityExpectClearException()
+    {
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork() )
+        {
+            Person p = uow.newEntity( Person.class );
+            fail( NoSuchEntityTypeException.class.getSimpleName() + " should have been thrown." );
+        }
+        catch( NoSuchEntityTypeException e )
+        {
+            String expectedString = "\tInvisible EntityComposite types are:" + System.getProperty( "line.separator" )
+                                    + "\t\t[ org.apache.polygene.test.entity.model.people.Person] in [People Module] with visibility layer";
+            assertThat( e.getMessage(), containsString( expectedString ) );
+        }
+    }
+
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        module.services( MemoryEntityStoreService.class ).instantiateOnStartup();
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5704bb82/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/AbstractPolygeneMultiLayeredTestWithModel.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/AbstractPolygeneMultiLayeredTestWithModel.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/AbstractPolygeneMultiLayeredTestWithModel.java
new file mode 100644
index 0000000..0c0500d
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/AbstractPolygeneMultiLayeredTestWithModel.java
@@ -0,0 +1,161 @@
+/*
+ *  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.entity.model;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.apache.polygene.api.association.NamedAssociation;
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.api.composite.TransientBuilderFactory;
+import org.apache.polygene.api.constraint.ConstraintViolationException;
+import org.apache.polygene.api.identity.Identity;
+import org.apache.polygene.api.injection.scope.Service;
+import org.apache.polygene.api.injection.scope.Structure;
+import org.apache.polygene.api.object.ObjectFactory;
+import org.apache.polygene.api.structure.Application;
+import org.apache.polygene.api.structure.ApplicationDescriptor;
+import org.apache.polygene.api.structure.Module;
+import org.apache.polygene.api.unitofwork.NoSuchEntityException;
+import org.apache.polygene.api.unitofwork.UnitOfWork;
+import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
+import org.apache.polygene.api.usecase.UsecaseBuilder;
+import org.apache.polygene.api.value.ValueBuilderFactory;
+import org.apache.polygene.bootstrap.ApplicationAssembly;
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.memory.MemoryEntityStoreService;
+import org.apache.polygene.spi.serialization.JsonSerialization;
+import org.apache.polygene.test.AbstractPolygeneBaseTest;
+import org.apache.polygene.test.entity.model.legal.LegalService;
+import org.apache.polygene.test.entity.model.legal.Will;
+import org.apache.polygene.test.entity.model.legal.WillAmount;
+import org.apache.polygene.test.entity.model.legal.WillItem;
+import org.apache.polygene.test.entity.model.legal.WillPercentage;
+import org.apache.polygene.test.entity.model.monetary.CheckBookSlip;
+import org.apache.polygene.test.entity.model.monetary.Currency;
+import org.apache.polygene.test.entity.model.people.Address;
+import org.apache.polygene.test.entity.model.people.City;
+import org.apache.polygene.test.entity.model.people.Country;
+import org.apache.polygene.test.entity.model.people.PeopleRepository;
+import org.apache.polygene.test.entity.model.people.Person;
+import org.apache.polygene.test.entity.model.people.PhoneNumber;
+import org.apache.polygene.test.entity.model.people.Rent;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder;
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.junit.Assert.assertThat;
+
+public abstract class AbstractPolygeneMultiLayeredTestWithModel extends AbstractPolygeneBaseTest
+{
+    private static final String FRIEND = "Friend";
+    private static final String COLLEAGUE = "Colleague";
+
+    protected ModuleAssembly configModule;
+
+    @Structure
+    protected ValueBuilderFactory valueBuilderFactory;
+
+    @Structure
+    protected TransientBuilderFactory transientBuilderFactory;
+
+    @Structure
+    protected UnitOfWorkFactory unitOfWorkFactory;
+
+    @Structure
+    protected ObjectFactory objectFactory;
+
+    @Override
+    protected void defineApplication( ApplicationAssembly applicationAssembly )
+        throws AssemblyException
+    {
+        LayerAssembly accessLayer = applicationAssembly.layer( "Access Layer" );
+        LayerAssembly domainLayer = applicationAssembly.layer( "Domain Layer" );
+        LayerAssembly infrastructureLayer = applicationAssembly.layer( "Infrastructure Layer" );
+        LayerAssembly configLayer = applicationAssembly.layer( "Configuration Layer" );
+        accessLayer.uses( domainLayer.uses( infrastructureLayer.uses( configLayer ) ) );
+        defineConfigModule( configLayer.module( "Configuration Module" ) );
+        defineSerializationModule( configLayer.module( "Serialization Module" ) );
+        defineStorageModule( infrastructureLayer.module( "Storage Module" ) );
+        defineMonetaryModule( domainLayer.module( "Monetary Module" ) );
+        definePeopleModule( domainLayer.module( "People Module" ) );
+        defineLegalModule( domainLayer.module( "Legal Module" ) );
+        defineTestModule( accessLayer.module( "TestCase Module" ) );
+    }
+
+    @Override
+    protected Application newApplicationInstance( ApplicationDescriptor applicationModel )
+    {
+        Application application = super.newApplicationInstance( applicationModel );
+        Module module = application.findModule( "Access Layer", "TestCase Module" );
+        module.injectTo( this );
+        return application;
+    }
+
+    protected void defineTestModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        module.objects( this.getClass() );
+    }
+
+    protected void definePeopleModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        module.entities( Address.class, Country.class, City.class, PhoneNumber.class );
+        module.entities( Person.class ).visibleIn( Visibility.layer );
+        module.services( PeopleRepository.class ).visibleIn( Visibility.application );
+        module.values( Rent.class );
+        module.objects( Rent.Builder.class ).visibleIn( Visibility.application );
+    }
+
+    protected void defineLegalModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        module.services( LegalService.class ).visibleIn( Visibility.application );
+        module.entities( Will.class );
+        module.values( WillAmount.class, WillItem.class, WillPercentage.class );
+    }
+
+    protected void defineMonetaryModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        module.values( Currency.class ).visibleIn( Visibility.layer );
+        module.transients( CheckBookSlip.class );
+        module.transients( Currency.Builder.class ).visibleIn( Visibility.application );
+    }
+
+    protected void defineSerializationModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        module.services( JsonSerialization.class ).visibleIn( Visibility.application );
+    }
+
+    protected abstract void defineStorageModule( ModuleAssembly module );
+
+    protected void defineConfigModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        module.services( MemoryEntityStoreService.class ).visibleIn( Visibility.module );
+        configModule = module;
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5704bb82/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java
index 20f0b1f..68b2b9a 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java
@@ -23,28 +23,12 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import org.apache.polygene.api.association.NamedAssociation;
-import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.api.constraint.ConstraintViolationException;
 import org.apache.polygene.api.identity.Identity;
 import org.apache.polygene.api.injection.scope.Service;
-import org.apache.polygene.api.injection.scope.Structure;
-import org.apache.polygene.api.object.ObjectFactory;
-import org.apache.polygene.api.structure.Application;
-import org.apache.polygene.api.structure.ApplicationDescriptor;
-import org.apache.polygene.api.structure.Module;
 import org.apache.polygene.api.unitofwork.NoSuchEntityException;
 import org.apache.polygene.api.unitofwork.UnitOfWork;
-import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
 import org.apache.polygene.api.usecase.UsecaseBuilder;
-import org.apache.polygene.api.value.ValueBuilder;
-import org.apache.polygene.api.value.ValueBuilderFactory;
-import org.apache.polygene.bootstrap.ApplicationAssembly;
-import org.apache.polygene.bootstrap.AssemblyException;
-import org.apache.polygene.bootstrap.LayerAssembly;
-import org.apache.polygene.bootstrap.ModuleAssembly;
-import org.apache.polygene.entitystore.memory.MemoryEntityStoreService;
-import org.apache.polygene.spi.serialization.JsonSerialization;
-import org.apache.polygene.test.AbstractPolygeneBaseTest;
 import org.apache.polygene.test.entity.model.legal.LegalService;
 import org.apache.polygene.test.entity.model.legal.Will;
 import org.apache.polygene.test.entity.model.legal.WillAmount;
@@ -65,28 +49,17 @@ import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInA
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.junit.Assert.assertThat;
 
-public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
+public abstract class EntityStoreTestSuite extends AbstractPolygeneMultiLayeredTestWithModel
 {
     private static final String FRIEND = "Friend";
     private static final String COLLEAGUE = "Colleague";
 
-    protected ModuleAssembly configModule;
-
-    @Structure
-    private ObjectFactory obf;
-
-    @Structure
-    private ValueBuilderFactory vbf;
-
     @Service
     private LegalService legalService;
 
     @Service
     private PeopleRepository peopleRepository;
 
-    @Structure
-    private UnitOfWorkFactory uowf;
-
     private Identity switzerlandId;
     private Identity franceId;
     private Identity denmarkId;
@@ -112,7 +85,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
     @Before
     public void setupTestData()
     {
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "TestData Generation" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "TestData Generation" ) ) )
         {
             testData();
             uow.complete();
@@ -122,7 +95,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
     @Test
     public void validateAllCountriesPresent()
     {
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - validateAllCountriesPresent" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - validateAllCountriesPresent" ) ) )
         {
             assertThat( peopleRepository.findCountryByCountryCode( "my" ).name().get(), equalTo( "Malaysia" ) );
             assertThat( peopleRepository.findCountryByCountryCode( "us" ).name().get(), equalTo( "United States" ) );
@@ -137,7 +110,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
     @Test
     public void validateAllCitiesPresent()
     {
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - validateAllCitiesPresent" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - validateAllCitiesPresent" ) ) )
         {
             assertThat( peopleRepository.findCity( zurichId ).name().get(), equalTo( "Zurich" ) );
             assertThat( peopleRepository.findCity( malmoId ).name().get(), equalTo( "Malmo" ) );
@@ -151,13 +124,13 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
     @Test
     public void validateAllAddressesPresent()
     {
-        Currency.Builder currencyBuilder = obf.newObject( Currency.Builder.class );
+        Currency.Builder currencyBuilder = transientBuilderFactory.newTransient( Currency.Builder.class );
         Currency eur1000 = currencyBuilder.create( 1000, "EUR" );
         Currency eur1500 = currencyBuilder.create( 1500, "EUR" );
         Currency chf2000 = currencyBuilder.create( 2000, "CHF" );
         Currency myr3000 = currencyBuilder.create( 3000, "MYR" );
         Currency sek9000 = currencyBuilder.create( 9000, "SEK" );
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - validateAllAddressesPresent" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - validateAllAddressesPresent" ) ) )
         {
             Address canary = peopleRepository.findAddress( canaryId );
             assertThat( canary.street().get(), equalTo( "10, CH5A, Jalan Cheras Hartamas" ) );
@@ -206,7 +179,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
     @Test
     public void validateAllPersonsPresent()
     {
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - validateAllPersonsPresent" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - validateAllPersonsPresent" ) ) )
         {
             Person niclas = peopleRepository.findPersonByName( "Niclas" );
             assertThat( niclas.name().get(), equalTo( "Niclas" ) );
@@ -236,14 +209,14 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
     @Test
     public void givenTestDataWhenAddingNewNamedAssociationExpectAssociationAdded()
     {
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - givenTestDataWhenAddingNewNamedAssociationExpectAssociationAdded" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - givenTestDataWhenAddingNewNamedAssociationExpectAssociationAdded" ) ) )
         {
             Person niclas = peopleRepository.findPersonByName( "Niclas" );
             PhoneNumber newNumber = peopleRepository.createPhoneNumber( "+86-185-21320803" );
             niclas.phoneNumbers().put( "Mobile", newNumber );
             uow.complete();
         }
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - givenTestDataWhenAddingNewNamedAssociationExpectAssociationAdded" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - givenTestDataWhenAddingNewNamedAssociationExpectAssociationAdded" ) ) )
         {
             Person niclas = peopleRepository.findPersonByName( "Niclas" );
             NamedAssociation<PhoneNumber> numbers = niclas.phoneNumbers();
@@ -262,7 +235,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
     @Test
     public void whenIteratingNamedAssociationExpectIterationInOrder()
     {
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenIteratingNamedAssociationExpectIterationToSucceed" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenIteratingNamedAssociationExpectIterationToSucceed" ) ) )
         {
             Person niclas = peopleRepository.findPersonByName( "Niclas" );
             PhoneNumber newNumber1 = peopleRepository.createPhoneNumber( "+86-185-21320803" );
@@ -273,7 +246,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
             niclas.phoneNumbers().put( "German", newNumber3 );
             uow.complete();
         }
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenIteratingNamedAssociationExpectIterationToSucceed" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenIteratingNamedAssociationExpectIterationToSucceed" ) ) )
         {
             Person niclas = peopleRepository.findPersonByName( "Niclas" );
             assertThat( niclas.phoneNumbers(), containsInAnyOrder( "Home", "Chinese", "Swedish", "German" ) );
@@ -283,14 +256,14 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
     @Test
     public void givenTestDataWhenAddingSameNamedAssociationExpectAssociationModified()
     {
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - givenTestDataWhenAddingSameNamedAssociationExpectAssociationModified" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - givenTestDataWhenAddingSameNamedAssociationExpectAssociationModified" ) ) )
         {
             Person niclas = peopleRepository.findPersonByName( "Niclas" );
             PhoneNumber newNumber = peopleRepository.createPhoneNumber( "+86-185-21320803" );
             niclas.phoneNumbers().put( "Home", newNumber );
             uow.complete();
         }
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - givenTestDataWhenAddingSameNamedAssociationExpectAssociationModified" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - givenTestDataWhenAddingSameNamedAssociationExpectAssociationModified" ) ) )
         {
             Person niclas = peopleRepository.findPersonByName( "Niclas" );
             NamedAssociation<PhoneNumber> numbers = niclas.phoneNumbers();
@@ -305,7 +278,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
     @Test
     public void whenNullingOptionalAssociationExpectSuccess()
     {
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenNullingOptionalAssociationExpectSuccess" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenNullingOptionalAssociationExpectSuccess" ) ) )
         {
             Person toni = peopleRepository.findPersonByName( "Toni" );
             toni.spouse().set( null );
@@ -316,7 +289,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
     @Test( expected = ConstraintViolationException.class )
     public void whenNullingNonOptionalAssociationExpectFailure()
     {
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenNullingOptionalAssociationExpectSuccess" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenNullingOptionalAssociationExpectSuccess" ) ) )
         {
             Person toni = peopleRepository.findPersonByName( "Toni" );
             toni.nationality().set( null );
@@ -335,7 +308,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
         Identity malaysiaId;
         Identity canaryId;
         Identity despairStId;
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
         {
             Person niclas = peopleRepository.findPersonByName( "Niclas" );
             PhoneNumber newNumber1 = peopleRepository.createPhoneNumber( "+86-185-21320803" );
@@ -351,10 +324,10 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
 
             City zurich = peopleRepository.findCity( zurichId );
             Country switzerland = peopleRepository.findCountryByCountryCode( "ch" );
-            niclas.movedToNewAddress( "DespairStreet 12A", "43HQ21", zurich, switzerland, obf.newObject( Rent.Builder.class ).create( 1000, "EUR" ) );
+            niclas.movedToNewAddress( "DespairStreet 12A", "43HQ21", zurich, switzerland, objectFactory.newObject( Rent.Builder.class ).create( 1000, "EUR" ) );
             uow.complete();
         }
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
         {
             Person niclas = peopleRepository.findPersonByName( "Niclas" );
             assertThat( niclas.nationality().get().name().get(), equalTo( "Sweden" ) );
@@ -365,13 +338,13 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
             malaysiaId = niclas.oldAddresses().get( 0 ).country().get().identity().get();
             switzerlandId = niclas.address().get().country().get().identity().get();
         }
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
         {
             Person niclas = peopleRepository.findPersonByName( "Niclas" );
             uow.remove( niclas );
             uow.complete();
         }
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
         {
             Person niclas = peopleRepository.findPersonByName( "Niclas" );
         }
@@ -379,7 +352,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
         {
             // expected
         }
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
         {
             peopleRepository.findPhoneNumberById( homePhoneId );
         }
@@ -387,7 +360,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
         {
             // expected
         }
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
         {
             peopleRepository.findPhoneNumberById( chinesePhoneId );
         }
@@ -395,7 +368,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
         {
             // expected
         }
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
         {
             peopleRepository.findPhoneNumberById( swedishPhoneId );
         }
@@ -403,7 +376,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
         {
             // expected
         }
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
         {
             peopleRepository.findPhoneNumberById( germanPhoneId );
         }
@@ -411,7 +384,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
         {
             // expected
         }
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
         {
             peopleRepository.findAddress( canaryId );
         }
@@ -419,7 +392,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
         {
             // expected
         }
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
         {
             peopleRepository.findAddress( despairStId );
         }
@@ -427,7 +400,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
         {
             // expected
         }
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
         {
             peopleRepository.findCountryByIdentity( switzerlandId );
             peopleRepository.findCountryByIdentity( malaysiaId );
@@ -448,9 +421,9 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
     @Test
     public void givenEntityInheritanceWhenStoreRetrieveExpectSuccess()
     {
-        Currency.Builder currencyBuilder = obf.newObject( Currency.Builder.class );
+        Currency.Builder currencyBuilder = objectFactory.newObject( Currency.Builder.class );
         Identity willId;
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - givenEntityInheritanceWhenStoreRetrieveExpectSuccess" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - givenEntityInheritanceWhenStoreRetrieveExpectSuccess" ) ) )
         {
             Person peter = peopleRepository.findPersonByName( "Peter" );
             Person kalle = peopleRepository.findPersonByName( "Kalle" );
@@ -469,7 +442,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
             willId = will.identity().get();
             uow.complete();
         }
-        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - givenEntityInheritanceWhenStoreRetrieveExpectSuccess" ) ) )
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - givenEntityInheritanceWhenStoreRetrieveExpectSuccess" ) ) )
         {
             Person kalle = peopleRepository.findPersonByName( "Kalle" );
             Person oscar = peopleRepository.findPersonByName( "Oscar" );
@@ -525,7 +498,7 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
         kualaLumpurId = kualalumpur.identity().get();
         City zurich = peopleRepository.createCity( "Zurich" );
         zurichId = zurich.identity().get();
-        Rent.Builder rentBuilder = obf.newObject( Rent.Builder.class );
+        Rent.Builder rentBuilder = objectFactory.newObject( Rent.Builder.class );
         Rent rentCanary = rentBuilder.create( 3000, "MYR" );
         Rent rentVarnhem = rentBuilder.create( 9000, "SEK" );
         Rent rentUnknown1 = rentBuilder.create( 1000, "EUR" );
@@ -567,77 +540,4 @@ public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
         niclasRels.put( COLLEAGUE, toni );
         niclasRels.put( COLLEAGUE, andreas );
     }
-
-    @Override
-    protected void defineApplication( ApplicationAssembly applicationAssembly )
-        throws AssemblyException
-    {
-        LayerAssembly accessLayer = applicationAssembly.layer( "Access Layer" );
-        LayerAssembly domainLayer = applicationAssembly.layer( "Domain Layer" );
-        LayerAssembly infrastructureLayer = applicationAssembly.layer( "Infrastructure Layer" );
-        LayerAssembly configLayer = applicationAssembly.layer( "Configuration Layer" );
-        accessLayer.uses( domainLayer.uses( infrastructureLayer.uses( configLayer ) ) );
-        defineConfigModule( configLayer.module( "Configuration Module" ) );
-        defineSerializationModule( configLayer.module( "Serialization Module" ) );
-        defineStorageModule( infrastructureLayer.module( "Storage Module" ) );
-        defineMonetaryModule( domainLayer.module( "Monetary Module" ) );
-        definePeopleModule( domainLayer.module( "People Module" ) );
-        defineLegalModule( domainLayer.module( "Legal Module" ) );
-        defineTestModule( accessLayer.module( "TestCase Module" ) );
-    }
-
-    @Override
-    protected Application newApplicationInstance( ApplicationDescriptor applicationModel )
-    {
-        Application application = super.newApplicationInstance( applicationModel );
-        Module module = application.findModule( "Access Layer", "TestCase Module" );
-        module.injectTo( this );
-        return application;
-    }
-
-    protected void defineTestModule( ModuleAssembly module )
-    {
-        module.defaultServices();
-        module.objects( this.getClass() );
-    }
-
-    protected void definePeopleModule( ModuleAssembly module )
-    {
-        module.defaultServices();
-        module.entities( Address.class, Country.class, City.class, PhoneNumber.class );
-        module.entities( Person.class ).visibleIn( Visibility.layer );
-        module.services( PeopleRepository.class ).visibleIn( Visibility.application );
-        module.values( Rent.class );
-        module.objects( Rent.Builder.class ).visibleIn( Visibility.application );
-    }
-
-    protected void defineLegalModule( ModuleAssembly module )
-    {
-        module.defaultServices();
-        module.services( LegalService.class ).visibleIn( Visibility.application );
-        module.entities( Will.class );
-        module.values( WillAmount.class, WillItem.class, WillPercentage.class );
-    }
-
-    protected void defineMonetaryModule( ModuleAssembly module )
-    {
-        module.defaultServices();
-        module.values( Currency.class ).visibleIn( Visibility.layer );
-        module.objects( Currency.Builder.class ).visibleIn( Visibility.application );
-    }
-
-    protected void defineSerializationModule( ModuleAssembly module )
-    {
-        module.defaultServices();
-        module.services( JsonSerialization.class ).visibleIn( Visibility.application );
-    }
-
-    protected abstract void defineStorageModule( ModuleAssembly module );
-
-    protected void defineConfigModule( ModuleAssembly module )
-    {
-        module.defaultServices();
-        module.services( MemoryEntityStoreService.class ).visibleIn( Visibility.module );
-        configModule = module;
-    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5704bb82/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/monetary/CheckBookSlip.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/monetary/CheckBookSlip.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/monetary/CheckBookSlip.java
new file mode 100644
index 0000000..956b01d
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/monetary/CheckBookSlip.java
@@ -0,0 +1,58 @@
+/*
+ *  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.entity.model.monetary;
+
+import org.apache.polygene.api.injection.scope.This;
+import org.apache.polygene.api.mixin.Mixins;
+import org.apache.polygene.api.property.Property;
+
+@Mixins( CheckBookSlip.CheckBookSlipMixin.class )
+public interface CheckBookSlip
+{
+    String name();
+
+    Currency amount();
+
+    interface State
+    {
+        Property<String> name();
+
+        Property<Currency> amount();
+    }
+
+    class CheckBookSlipMixin
+        implements CheckBookSlip
+    {
+        @This
+        private State state;
+
+        @Override
+        public String name()
+        {
+            return state.name().get();
+        }
+
+        @Override
+        public Currency amount()
+        {
+            return state.amount().get();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5704bb82/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/monetary/Currency.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/monetary/Currency.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/monetary/Currency.java
index 6ca2c9b..88a1c31 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/monetary/Currency.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/monetary/Currency.java
@@ -21,6 +21,7 @@ package org.apache.polygene.test.entity.model.monetary;
 
 import java.math.BigDecimal;
 import org.apache.polygene.api.injection.scope.Structure;
+import org.apache.polygene.api.mixin.Mixins;
 import org.apache.polygene.api.property.Property;
 import org.apache.polygene.api.value.ValueBuilder;
 import org.apache.polygene.api.value.ValueBuilderFactory;
@@ -30,7 +31,15 @@ public interface Currency
     Property<BigDecimal> amount();
     Property<String> name();
 
-    class Builder
+    @Mixins( Currency.BuilderImpl.class)
+    interface Builder
+    {
+        Currency create( int amount, String currencyName );
+        Currency create( BigDecimal amount, String currencyName );
+    }
+
+    class BuilderImpl
+        implements Builder
     {
         @Structure
         private ValueBuilderFactory vbf;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5704bb82/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreMixin.java b/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreMixin.java
index 549e0dc..7ee85f8 100644
--- a/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreMixin.java
+++ b/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreMixin.java
@@ -153,7 +153,7 @@ public class CassandraEntityStoreMixin
         EntityDescriptor entityDescriptor = module.entityDescriptor( type );
         if( entityDescriptor == null )
         {
-            throw new NoSuchEntityTypeException( type, module.name(), module.typeLookup() );
+            throw new NoSuchEntityTypeException( type, module );
         }
         Map<String, String> storedProperties = row.getMap( PROPERTIES_COLUMN, String.class, String.class );
         Map<String, String> storedAssociations = row.getMap( ASSOCIATIONS_COLUMN, String.class, String.class );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5704bb82/extensions/entitystore-preferences/src/main/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-preferences/src/main/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreMixin.java b/extensions/entitystore-preferences/src/main/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreMixin.java
index 5bf1597..9c61b50 100644
--- a/extensions/entitystore-preferences/src/main/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreMixin.java
+++ b/extensions/entitystore-preferences/src/main/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreMixin.java
@@ -213,7 +213,7 @@ public class PreferencesEntityStoreMixin
             EntityDescriptor entityDescriptor = module.entityDescriptor( type );
             if( entityDescriptor == null )
             {
-                throw new NoSuchEntityTypeException( type, module.name(), module.typeLookup() );
+                throw new NoSuchEntityTypeException( type, module );
             }
 
             Map<QualifiedName, Object> properties = new HashMap<>();


[26/50] polygene-java git commit: Fixed another bug that caused some polygene generator build failures.. Is those disabled in Jenkins, or why didn't it show up in the CI?

Posted by ni...@apache.org.
Fixed another bug that caused some polygene generator build failures.. Is those disabled in Jenkins, or why didn't it show up in the CI?


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

Branch: refs/heads/es-jooq
Commit: d22dc29edd7b66fec9c9eff5628061e6b52b0d95
Parents: 52f36f3
Author: niclas <ni...@hedhman.org>
Authored: Fri Jun 30 13:53:00 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Fri Jun 30 13:53:00 2017 +0800

----------------------------------------------------------------------
 tools/generator-polygene/app/index.js | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/d22dc29e/tools/generator-polygene/app/index.js
----------------------------------------------------------------------
diff --git a/tools/generator-polygene/app/index.js b/tools/generator-polygene/app/index.js
index 8cbd9fd..bcb7453 100644
--- a/tools/generator-polygene/app/index.js
+++ b/tools/generator-polygene/app/index.js
@@ -203,6 +203,7 @@ module.exports = generators.Base.extend(
                         polygene.features = answers.features;
                         polygene.indexing = answers.indexing;
                         polygene.entitystore = answers.entitystore;
+                        polygene.dbpool = answers.dbpool;
                         polygene.metrics = answers.metrics;
                         polygene.caching = answers.caching;
                     }.bind(this)


[03/50] polygene-java git commit: Adding a new test suite for persistence, that is somewhat understandable and not totally non-sense. Also, it is a multi-layered application, to ensure that Type Lookups are handled correctly. JDBM was first victim to get

Posted by ni...@apache.org.
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumResource.java
----------------------------------------------------------------------
diff --git a/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumResource.java b/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumResource.java
index a5c5977..abf7c18 100644
--- a/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumResource.java
+++ b/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumResource.java
@@ -37,7 +37,7 @@ public class ForumResource
     public void resource( String segment )
         throws ResourceException
     {
-        selectFromManyAssociation( ObjectSelection.current().get( Forum.class ).boards(), StringIdentity.fromString( segment ) );
+        selectFromManyAssociation( ObjectSelection.current().get( Forum.class ).boards(), StringIdentity.identity( segment ) );
         subResource( BoardResource.class );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumsResource.java
----------------------------------------------------------------------
diff --git a/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumsResource.java b/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumsResource.java
index 931e5a2..5c14ec2 100644
--- a/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumsResource.java
+++ b/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/ForumsResource.java
@@ -36,7 +36,7 @@ public class ForumsResource
     public void resource( String segment )
         throws ResourceException
     {
-        select( Forum.class, StringIdentity.fromString( segment ) );
+        select( Forum.class, StringIdentity.identity( segment ) );
         subResource( ForumResource.class );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/samples/rental/src/main/java/org/apache/polygene/sample/rental/domain/dev/InitialData.java
----------------------------------------------------------------------
diff --git a/samples/rental/src/main/java/org/apache/polygene/sample/rental/domain/dev/InitialData.java b/samples/rental/src/main/java/org/apache/polygene/sample/rental/domain/dev/InitialData.java
index 1db4d19..0ac3450 100644
--- a/samples/rental/src/main/java/org/apache/polygene/sample/rental/domain/dev/InitialData.java
+++ b/samples/rental/src/main/java/org/apache/polygene/sample/rental/domain/dev/InitialData.java
@@ -198,7 +198,7 @@ public interface InitialData
         private RentalShop createShop( UnitOfWork uow )
             throws UnitOfWorkCompletionException
         {
-            return uow.newEntity( RentalShop.class, StringIdentity.fromString( "SHOP" ) );
+            return uow.newEntity( RentalShop.class, StringIdentity.identity( "SHOP" ) );
         }
 
         private void createCustomers( RentalShop shop )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/BookingPage.java
----------------------------------------------------------------------
diff --git a/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/BookingPage.java b/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/BookingPage.java
index 78815b8..4c39f73 100644
--- a/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/BookingPage.java
+++ b/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/BookingPage.java
@@ -52,7 +52,7 @@ public interface BookingPage
             Element result = dom.createElementNS( Page.XHTML, "div" );
             String bookingId = context.path();
             UnitOfWork uow = uowf.currentUnitOfWork();
-            Booking booking = uow.get( Booking.class, StringIdentity.fromString( bookingId ) );
+            Booking booking = uow.get( Booking.class, StringIdentity.identity( bookingId ) );
             Car car = booking.car().get();
             createChildNode( dom, result, car.model().get() );
             createChildNode( dom, result, car.licensePlate().get() );
@@ -73,7 +73,7 @@ public interface BookingPage
             Element result = dom.createElementNS( Page.XHTML, "div" );
             String bookingId = context.path();
             UnitOfWork uow = uowf.currentUnitOfWork();
-            Booking booking = uow.get( Booking.class, StringIdentity.fromString( bookingId ) );
+            Booking booking = uow.get( Booking.class, StringIdentity.identity( bookingId ) );
             Customer customer = booking.customer().get();
             createChildNode( dom, result, customer.name().get() );
             createChildNode( dom, result, customer.address().get().line1().get() );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/MainPage.java
----------------------------------------------------------------------
diff --git a/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/MainPage.java b/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/MainPage.java
index ebe24e6..328c41b 100644
--- a/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/MainPage.java
+++ b/samples/rental/src/main/java/org/apache/polygene/sample/rental/web/MainPage.java
@@ -59,7 +59,7 @@ public interface MainPage
             ArrayList<Node> nodes = new ArrayList<Node>();
             Document dom = context.dom();
             UnitOfWork uow = uowf.currentUnitOfWork();
-            RentalShop shop = uow.get( RentalShop.class, StringIdentity.fromString( "SHOP" ) );
+            RentalShop shop = uow.get( RentalShop.class, StringIdentity.identity( "SHOP" ) );
             for( Booking booking : shop.findAllBookings() )
             {
                 String plate = booking.car().get().licensePlate().get();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/tests/performance/src/main/java/org/apache/polygene/test/performance/entitystore/AbstractEntityStorePerformanceTest.java
----------------------------------------------------------------------
diff --git a/tests/performance/src/main/java/org/apache/polygene/test/performance/entitystore/AbstractEntityStorePerformanceTest.java b/tests/performance/src/main/java/org/apache/polygene/test/performance/entitystore/AbstractEntityStorePerformanceTest.java
index fcb9524..61de7ed 100644
--- a/tests/performance/src/main/java/org/apache/polygene/test/performance/entitystore/AbstractEntityStorePerformanceTest.java
+++ b/tests/performance/src/main/java/org/apache/polygene/test/performance/entitystore/AbstractEntityStorePerformanceTest.java
@@ -243,7 +243,7 @@ public abstract class AbstractEntityStorePerformanceTest
                 UnitOfWork uow = uowf.newUnitOfWork( newUsecase( "readEntityWithComplexType PREPARE " + bulk ) );
                 for( int i = 0; i < ITERATIONS; i++ )
                 {
-                    ComplexProduct product = uow.newEntity( ComplexProduct.class, StringIdentity.fromString( "product" + i ) );
+                    ComplexProduct product = uow.newEntity( ComplexProduct.class, StringIdentity.identity( "product" + i ) );
                     product.name().set( "Product " + i );
 
                     if( i % 1000 == 0 )
@@ -265,7 +265,7 @@ public abstract class AbstractEntityStorePerformanceTest
                 String id = rnd.nextInt( ITERATIONS ) + "";
                 for( int i = 0; i < ITERATIONS; i++ )
                 {
-                    ComplexProduct product = uow.get( ComplexProduct.class, StringIdentity.fromString( "product" + id ) );
+                    ComplexProduct product = uow.get( ComplexProduct.class, StringIdentity.identity( "product" + id ) );
                     product.name().get();
                     if( i % 100 == 0 )
                     {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/tools/envisage/src/test/java/org/apache/polygene/envisage/school/domain/person/initialdata/SamplePersonInitialData.java
----------------------------------------------------------------------
diff --git a/tools/envisage/src/test/java/org/apache/polygene/envisage/school/domain/person/initialdata/SamplePersonInitialData.java b/tools/envisage/src/test/java/org/apache/polygene/envisage/school/domain/person/initialdata/SamplePersonInitialData.java
index c150d2e..626415e 100644
--- a/tools/envisage/src/test/java/org/apache/polygene/envisage/school/domain/person/initialdata/SamplePersonInitialData.java
+++ b/tools/envisage/src/test/java/org/apache/polygene/envisage/school/domain/person/initialdata/SamplePersonInitialData.java
@@ -94,7 +94,7 @@ public interface SamplePersonInitialData
 
         private void createPerson( UnitOfWork uow, String personId, String firstName, String lastName )
         {
-            EntityBuilder<Person> person = uow.newEntityBuilder( Person.class, StringIdentity.fromString( personId ) );
+            EntityBuilder<Person> person = uow.newEntityBuilder( Person.class, StringIdentity.identity( personId ) );
 
             PersonEntity.PersonState state = person.instanceFor( PersonEntity.PersonState.class );
             state.firstName().set( firstName );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/tutorials/hello/src/test/java/org/apache/polygene/tutorials/hello/HelloTest4.java
----------------------------------------------------------------------
diff --git a/tutorials/hello/src/test/java/org/apache/polygene/tutorials/hello/HelloTest4.java b/tutorials/hello/src/test/java/org/apache/polygene/tutorials/hello/HelloTest4.java
index 1608c96..dd103d8 100644
--- a/tutorials/hello/src/test/java/org/apache/polygene/tutorials/hello/HelloTest4.java
+++ b/tutorials/hello/src/test/java/org/apache/polygene/tutorials/hello/HelloTest4.java
@@ -35,7 +35,7 @@ import static org.junit.Assert.assertThat;
 public class HelloTest4 extends AbstractPolygeneTest
 {
 
-    public static final Identity TEST_IDENTITY = StringIdentity.fromString( "123" );
+    public static final Identity TEST_IDENTITY = StringIdentity.identity( "123" );
 
     @Override
     public void assemble( ModuleAssembly module )


[39/50] polygene-java git commit: Maybe more generic form of RAT exclusion.

Posted by ni...@apache.org.
Maybe more generic form of RAT exclusion.


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

Branch: refs/heads/es-jooq
Commit: f8380359bfe3a82ee07894f40cedac0a0d497981
Parents: 0665d56
Author: niclas <ni...@hedhman.org>
Authored: Sun Jul 9 11:05:30 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jul 9 11:05:30 2017 +0800

----------------------------------------------------------------------
 .../gradle/structure/distributions/DistributionsPlugin.groovy     | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f8380359/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/distributions/DistributionsPlugin.groovy
----------------------------------------------------------------------
diff --git a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/distributions/DistributionsPlugin.groovy b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/distributions/DistributionsPlugin.groovy
index 1fa7936..bc6e796 100644
--- a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/distributions/DistributionsPlugin.groovy
+++ b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/distributions/DistributionsPlugin.groovy
@@ -166,8 +166,7 @@ class DistributionsPlugin implements Plugin<Project>
       spec.exclude '**/.nb-gradle*'          // Netbeans files
 
       // Polygene Generator files
-      spec.exclude '**/customUnixStartScript.txt'
-      spec.exclude '**/customWindowsStartScript.txt'
+      spec.exclude 'tools/generator-polygene/app/templates/**/*.txt'
 
       spec.into '.'
     }


[37/50] polygene-java git commit: Removing unused imports.

Posted by ni...@apache.org.
Removing unused imports.


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

Branch: refs/heads/es-jooq
Commit: bc0a510fbf201a8ae562724e5b8f77268f858fdf
Parents: f08fd79
Author: niclas <ni...@hedhman.org>
Authored: Sun Jul 9 10:59:20 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jul 9 10:59:20 2017 +0800

----------------------------------------------------------------------
 .../apache/polygene/library/restlet/PolygeneServerServlet.java   | 4 ----
 1 file changed, 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/bc0a510f/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneServerServlet.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneServerServlet.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneServerServlet.java
index 1505e00..834dd33 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneServerServlet.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/PolygeneServerServlet.java
@@ -19,16 +19,12 @@
  */
 package org.apache.polygene.library.restlet;
 
-import java.util.List;
 import javax.servlet.Servlet;
 import org.apache.polygene.api.injection.scope.Structure;
 import org.apache.polygene.api.mixin.Mixins;
 import org.apache.polygene.api.object.ObjectFactory;
-import org.apache.polygene.api.structure.Module;
 import org.restlet.Context;
 import org.restlet.ext.servlet.ServerServlet;
-import org.restlet.routing.VirtualHost;
-import org.restlet.util.ServerList;
 
 /**
  * Restlet ServerServlet backed by a org.restlet.Application object.


[44/50] polygene-java git commit: Move IndexingException to API

Posted by ni...@apache.org.
Move IndexingException to API


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/5462924e
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/5462924e
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/5462924e

Branch: refs/heads/es-jooq
Commit: 5462924e3a65192dbe31a96f04f08f884e2bf721
Parents: c7d66e1
Author: niclas <ni...@hedhman.org>
Authored: Sun Jul 9 12:40:03 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jul 9 12:40:03 2017 +0800

----------------------------------------------------------------------
 .../api/indexing/IndexingException.java         | 17 ++++++++++
 .../MissingIndexingSystemException.java         | 34 +++++++++++++++++++
 .../query/MissingIndexingSystemException.java   | 35 --------------------
 .../polygene/spi/query/IndexingException.java   | 17 ----------
 .../support/skeletons/SqlIndexingException.java |  2 +-
 5 files changed, 52 insertions(+), 53 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5462924e/core/api/src/main/java/org/apache/polygene/api/indexing/IndexingException.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/indexing/IndexingException.java b/core/api/src/main/java/org/apache/polygene/api/indexing/IndexingException.java
new file mode 100644
index 0000000..59bacdb
--- /dev/null
+++ b/core/api/src/main/java/org/apache/polygene/api/indexing/IndexingException.java
@@ -0,0 +1,17 @@
+package org.apache.polygene.api.indexing;
+
+/**
+ * This is the exception for Indexing problems. Subtypes should be created for specific problems.
+ *
+ */
+public abstract class IndexingException extends RuntimeException
+{
+    public IndexingException( String message )
+    {
+        super( message );
+    }
+    public IndexingException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5462924e/core/api/src/main/java/org/apache/polygene/api/indexing/MissingIndexingSystemException.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/indexing/MissingIndexingSystemException.java b/core/api/src/main/java/org/apache/polygene/api/indexing/MissingIndexingSystemException.java
new file mode 100644
index 0000000..cf0fd00
--- /dev/null
+++ b/core/api/src/main/java/org/apache/polygene/api/indexing/MissingIndexingSystemException.java
@@ -0,0 +1,34 @@
+/*
+ *  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.api.indexing;
+
+import org.apache.polygene.api.query.QueryException;
+
+/**
+ * This Exception is thrown in <code>QueryBuilderFactory.newQueryBuilder()</code> method if
+ * no indexing subsystem has been declared in the assembly.
+ */
+public final class MissingIndexingSystemException extends IndexingException
+{
+    public MissingIndexingSystemException()
+    {
+        super( "No EntityFinder has been declared in the assembly of the application." );
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5462924e/core/api/src/main/java/org/apache/polygene/api/query/MissingIndexingSystemException.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/query/MissingIndexingSystemException.java b/core/api/src/main/java/org/apache/polygene/api/query/MissingIndexingSystemException.java
deleted file mode 100644
index e15cbee..0000000
--- a/core/api/src/main/java/org/apache/polygene/api/query/MissingIndexingSystemException.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.api.query;
-
-/**
- * This Exception is thrown in <code>QueryBuilderFactory.newQueryBuilder()</code> method if
- * no indexing subsystem has been declared in the assembly.
- */
-public final class MissingIndexingSystemException
-    extends QueryException
-{
-    private static final long serialVersionUID = 5147421865890379209L;
-
-    public MissingIndexingSystemException()
-    {
-        super( "No EntityFinder has been declared in the assembly of the application." );
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5462924e/core/spi/src/main/java/org/apache/polygene/spi/query/IndexingException.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/polygene/spi/query/IndexingException.java b/core/spi/src/main/java/org/apache/polygene/spi/query/IndexingException.java
deleted file mode 100644
index 6fc8124..0000000
--- a/core/spi/src/main/java/org/apache/polygene/spi/query/IndexingException.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.apache.polygene.spi.query;
-
-/**
- * This is the exception for Indexing problems. Subtypes should be created for specific problems.
- *
- */
-public abstract class IndexingException extends RuntimeException
-{
-    public IndexingException( String message )
-    {
-        super( message );
-    }
-    public IndexingException( String message, Throwable cause )
-    {
-        super( message, cause );
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/5462924e/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/SqlIndexingException.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/SqlIndexingException.java b/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/SqlIndexingException.java
index cfa3b80..7970590 100644
--- a/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/SqlIndexingException.java
+++ b/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/SqlIndexingException.java
@@ -1,6 +1,6 @@
 package org.apache.polygene.index.sql.support.skeletons;
 
-import org.apache.polygene.spi.query.IndexingException;
+import org.apache.polygene.api.indexing.IndexingException;
 
 @SuppressWarnings( "WeakerAccess" )
 public class SqlIndexingException extends IndexingException


[05/50] polygene-java git commit: Adding a new test suite for persistence, that is somewhat understandable and not totally non-sense. Also, it is a multi-layered application, to ensure that Type Lookups are handled correctly. JDBM was first victim to get

Posted by ni...@apache.org.
Adding a new test suite for persistence, that is somewhat understandable and not totally non-sense. Also, it is a multi-layered application, to ensure that Type Lookups are handled correctly.
JDBM was first victim to get this new tests.

Signed-off-by: niclas <ni...@hedhman.org>


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

Branch: refs/heads/es-jooq
Commit: df5fd8af1499e7b0d2531116bed03c8bd17f0c95
Parents: 24fe603
Author: niclas <ni...@hedhman.org>
Authored: Thu Jun 15 13:48:35 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Thu Jun 15 13:48:36 2017 +0800

----------------------------------------------------------------------
 .../polygene/api/entity/EntityReference.java    |   2 +-
 .../polygene/api/identity/StringIdentity.java   |   2 +-
 .../api/identity/UuidGeneratorMixin.java        |   2 +-
 .../org/apache/polygene/api/OperatorsTest.java  |   2 +-
 .../polygene/api/type/ValueTypeFactoryTest.java |   2 +-
 .../polygene/api/unitofwork/RemovalTest.java    |   2 +-
 .../api/unitofwork/ToEntityConversionTest.java  |   2 +-
 .../api/unitofwork/ToValueConversionTest.java   |  12 +-
 .../association/NamedAssociationInstance.java   |   9 +-
 .../bootstrap/ImportedServiceAssemblyImpl.java  |   6 +-
 .../runtime/bootstrap/ModuleAssemblyImpl.java   |   4 +-
 .../bootstrap/ServiceDeclarationImpl.java       |   2 +-
 .../runtime/unitofwork/ModuleUnitOfWork.java    |   2 +-
 .../apache/polygene/api/common/RemovalTest.java |   2 +-
 .../qi377/SetAssociationInSideEffectTest.java   |   4 +-
 ...alueCollisionWithRelatedReturnTypesTest.java |   2 +-
 .../polygene/regression/qi382/Qi382Test.java    |   4 +-
 .../polygene/regression/qi383/Qi383Test.java    |   6 +-
 .../ImportedServiceActivationTest.java          |   2 +-
 .../polygene/runtime/entity/EntityTypeTest.java |   6 +-
 .../runtime/entity/EntityVisibilityTest.java    |   2 +-
 .../runtime/injection/ServiceInjectionTest.java |   2 +-
 .../injection/UnitOfWorkInjectionTest.java      |   2 +-
 .../runtime/mixin/AssemblyMixinTest.java        |   4 +-
 .../runtime/mixin/AssemblyRoleTest.java         |   4 +-
 .../polygene/runtime/mixin/JDKMixinTest.java    |   4 +-
 .../runtime/objects/ObjectVisibilityTest.java   |   2 +-
 .../runtime/query/IterableQuerySourceTest.java  |   2 +-
 .../apache/polygene/runtime/query/Network.java  |   4 +-
 .../runtime/service/ServiceVisibilityTest.java  |   2 +-
 .../transients/TransientVisibilityTest.java     |   2 +-
 .../unitofwork/PrivateEntityUnitOfWorkTest.java |   2 +-
 .../runtime/unitofwork/RemovalTest.java         |   2 +-
 .../runtime/value/AssociationToValueTest.java   |   4 +-
 .../value/ValueSerializationRegressionTest.java |   2 +-
 .../runtime/value/ValueVisibilityTest.java      |   2 +-
 .../runtime/value/ValueWithAssociationTest.java |   6 +-
 .../visibility/VisibilityInUnitOfWorkTest.java  |   4 +-
 .../importer/ServiceInstanceImporterTest.java   |   2 +-
 .../helpers/JSONMapEntityStoreMixin.java        |   2 +-
 .../helpers/MapEntityStoreMixin.java            |   2 +-
 .../spi/serialization/BuiltInConverters.java    |   2 +-
 .../spi/entitystore/Polygene142Test.java        |   2 +-
 .../test/entity/model/EntityStoreTestSuite.java | 546 +++++++++++++++++++
 .../test/entity/model/legal/LegalService.java   | 106 ++++
 .../polygene/test/entity/model/legal/Will.java  |  36 ++
 .../test/entity/model/legal/WillAmount.java     |  28 +
 .../test/entity/model/legal/WillBenefit.java    |  36 ++
 .../test/entity/model/legal/WillItem.java       |  30 +
 .../test/entity/model/legal/WillPercentage.java |  27 +
 .../test/entity/model/people/Address.java       |  37 ++
 .../polygene/test/entity/model/people/City.java |  28 +
 .../test/entity/model/people/Country.java       |  28 +
 .../entity/model/people/PeopleRepository.java   | 183 +++++++
 .../test/entity/model/people/Person.java        |  89 +++
 .../test/entity/model/people/PhoneNumber.java   |  55 ++
 .../polygene/test/entity/model/people/Rent.java |  48 ++
 .../test/indexing/AbstractQueryTest.java        |   6 +-
 .../apache/polygene/test/indexing/TestData.java |   8 +-
 .../metrics/AbstractPolygeneMetricsTest.java    |   4 +-
 ...AbstractValueCompositeSerializationTest.java |   8 +-
 .../cassandra/CassandraEntityStoreMixin.java    |   2 +-
 .../jdbm/JdbmEntityStoreTestSuite.java          |  55 ++
 .../AbstractSQLEntityStoreAssembler.java        |   2 +-
 .../polygene/index/rdf/RDFPerformanceTest.java  |   4 +-
 .../AbstractSQLIndexQueryAssembler.java         |   2 +-
 .../polygene/library/alarm/AlarmSystem.java     |   2 +-
 .../polygene/library/alarm/AlarmProxyTest.java  |   4 +-
 .../jmx/ConfigurationManagerService.java        |   2 +-
 .../rdf/entity/EntitySerializerTest.java        |   4 +-
 .../rdf/entity/EntityTypeSerializerTest.java    |   4 +-
 .../server/restlet/RequestReaderDelegator.java  |   2 +-
 .../server/restlet/ResponseWriterDelegator.java |   2 +-
 .../requestreader/DefaultRequestReader.java     |   4 +-
 .../library/rest/admin/EntityResource.java      |   2 +-
 .../library/rest/admin/DummyDataService.java    |   6 +-
 .../polygene/library/rest/admin/RestTest.java   |   8 +-
 .../library/restlet/crud/EntityResource.java    |   4 +-
 .../restlet/identity/IdentityManager.java       |   4 +-
 .../restlet/resource/EntryPointResource.java    |   6 +-
 .../restlet/resource/ResourceBuilder.java       |   2 +-
 .../sql/assembly/DataSourceAssembler.java       |   2 +-
 .../assembly/ExternalDataSourceAssembler.java   |   2 +-
 .../DataSourceConfigurationManagerService.java  |   2 +-
 .../moneytransfer/context/PayBillsContext.java  |   4 +-
 .../moneytransfer/context/PayBillsContext2.java |   4 +-
 .../dci/moneytransfer/test/AccountIds.java      |   8 +-
 .../sample/forum/data/entity/Forums.java        |   2 +-
 .../sample/forum/data/entity/Users.java         |   2 +-
 .../rest/resource/forum/BoardResource.java      |   2 +-
 .../rest/resource/forum/ForumResource.java      |   2 +-
 .../rest/resource/forum/ForumsResource.java     |   2 +-
 .../sample/rental/domain/dev/InitialData.java   |   2 +-
 .../polygene/sample/rental/web/BookingPage.java |   4 +-
 .../polygene/sample/rental/web/MainPage.java    |   2 +-
 .../AbstractEntityStorePerformanceTest.java     |   4 +-
 .../initialdata/SamplePersonInitialData.java    |   2 +-
 .../polygene/tutorials/hello/HelloTest4.java    |   2 +-
 98 files changed, 1474 insertions(+), 135 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java b/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java
index 9952994..68e2232 100644
--- a/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java
+++ b/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java
@@ -41,7 +41,7 @@ public final class EntityReference
     public static EntityReference parseEntityReference(String identityString)
     {
         Objects.requireNonNull( identityString, "identityString must not be null" );
-        return new EntityReference( StringIdentity.fromString( identityString ) );
+        return new EntityReference( StringIdentity.identity( identityString ) );
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/api/src/main/java/org/apache/polygene/api/identity/StringIdentity.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/identity/StringIdentity.java b/core/api/src/main/java/org/apache/polygene/api/identity/StringIdentity.java
index 7d85381..3eba611 100644
--- a/core/api/src/main/java/org/apache/polygene/api/identity/StringIdentity.java
+++ b/core/api/src/main/java/org/apache/polygene/api/identity/StringIdentity.java
@@ -55,7 +55,7 @@ public class StringIdentity
         return value;
     }
 
-    public static Identity fromString(String serializedState)
+    public static Identity identity( String serializedState )
     {
         return new StringIdentity( serializedState );
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/api/src/main/java/org/apache/polygene/api/identity/UuidGeneratorMixin.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/identity/UuidGeneratorMixin.java b/core/api/src/main/java/org/apache/polygene/api/identity/UuidGeneratorMixin.java
index 0add4c6..6f85ca7 100644
--- a/core/api/src/main/java/org/apache/polygene/api/identity/UuidGeneratorMixin.java
+++ b/core/api/src/main/java/org/apache/polygene/api/identity/UuidGeneratorMixin.java
@@ -27,6 +27,6 @@ public class UuidGeneratorMixin
     @Override
     public Identity generate(Class<?> compositeType)
     {
-        return StringIdentity.fromString(UUID.randomUUID().toString());
+        return StringIdentity.identity( UUID.randomUUID().toString() );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/api/src/test/java/org/apache/polygene/api/OperatorsTest.java
----------------------------------------------------------------------
diff --git a/core/api/src/test/java/org/apache/polygene/api/OperatorsTest.java b/core/api/src/test/java/org/apache/polygene/api/OperatorsTest.java
index 72f8c7f..f018907 100644
--- a/core/api/src/test/java/org/apache/polygene/api/OperatorsTest.java
+++ b/core/api/src/test/java/org/apache/polygene/api/OperatorsTest.java
@@ -63,7 +63,7 @@ public class OperatorsTest
 
         try
         {
-            EntityBuilder<TestEntity> entityBuilder = uow.newEntityBuilder( TestEntity.class, StringIdentity.fromString( "123" ) );
+            EntityBuilder<TestEntity> entityBuilder = uow.newEntityBuilder( TestEntity.class, StringIdentity.identity( "123" ) );
             entityBuilder.instance().value().set( assembler.module().newValue( TestValue.class ) );
             TestEntity testEntity = entityBuilder.newInstance();
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/api/src/test/java/org/apache/polygene/api/type/ValueTypeFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/api/src/test/java/org/apache/polygene/api/type/ValueTypeFactoryTest.java b/core/api/src/test/java/org/apache/polygene/api/type/ValueTypeFactoryTest.java
index bd9ce3b..48ac6a5 100644
--- a/core/api/src/test/java/org/apache/polygene/api/type/ValueTypeFactoryTest.java
+++ b/core/api/src/test/java/org/apache/polygene/api/type/ValueTypeFactoryTest.java
@@ -125,7 +125,7 @@ public class ValueTypeFactoryTest extends AbstractPolygeneTest
         try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork() )
         {
             assertThat(
-                valueTypeFactory.valueTypeOf( module, uow.newEntity( SomeState.class, StringIdentity.fromString( "abc" ) ) ),
+                valueTypeFactory.valueTypeOf( module, uow.newEntity( SomeState.class, StringIdentity.identity( "abc" ) ) ),
                 instanceOf( EntityCompositeType.class ) );
         }
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/api/src/test/java/org/apache/polygene/api/unitofwork/RemovalTest.java
----------------------------------------------------------------------
diff --git a/core/api/src/test/java/org/apache/polygene/api/unitofwork/RemovalTest.java b/core/api/src/test/java/org/apache/polygene/api/unitofwork/RemovalTest.java
index 97b78db..f3a01d9 100644
--- a/core/api/src/test/java/org/apache/polygene/api/unitofwork/RemovalTest.java
+++ b/core/api/src/test/java/org/apache/polygene/api/unitofwork/RemovalTest.java
@@ -49,7 +49,7 @@ public class RemovalTest
         UnitOfWork uow = unitOfWorkFactory.newUnitOfWork();
         try
         {
-            EntityBuilder<TestEntity> builder = uow.newEntityBuilder( TestEntity.class, StringIdentity.fromString( "123" ) );
+            EntityBuilder<TestEntity> builder = uow.newEntityBuilder( TestEntity.class, StringIdentity.identity( "123" ) );
             builder.instance().test().set( "habba" );
             TestEntity test = builder.newInstance();
             uow.remove( test );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToEntityConversionTest.java
----------------------------------------------------------------------
diff --git a/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToEntityConversionTest.java b/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToEntityConversionTest.java
index 055a1db..86ac547 100644
--- a/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToEntityConversionTest.java
+++ b/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToEntityConversionTest.java
@@ -65,7 +65,7 @@ public class ToEntityConversionTest
     public void testPropertyConversionToEntity()
         throws Exception
     {
-        Identity identity = StringIdentity.fromString( "Niclas" );
+        Identity identity = StringIdentity.identity( "Niclas" );
         ValueBuilder<SomeType> vb = valueBuilderFactory.newValueBuilder( SomeType.class );
         SomeType prototype = vb.prototype();
         prototype.identity().set( identity );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToValueConversionTest.java
----------------------------------------------------------------------
diff --git a/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToValueConversionTest.java b/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToValueConversionTest.java
index ae9c7c2..910cf72 100644
--- a/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToValueConversionTest.java
+++ b/core/api/src/test/java/org/apache/polygene/api/unitofwork/ToValueConversionTest.java
@@ -73,11 +73,11 @@ public class ToValueConversionTest
         SomeType value;
         try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork(usecase) )
         {
-            SomeType entity1 = createEntity( uow, StringIdentity.fromString( "Niclas" ) );
-            SomeType entity2 = createEntity( uow, StringIdentity.fromString( "Paul" ) );
-            SomeType entity3 = createEntity( uow, StringIdentity.fromString( "Jiri" ) );
-            SomeType entity4 = createEntity( uow, StringIdentity.fromString( "Kent" ) );
-            SomeType entity5 = createEntity( uow, StringIdentity.fromString( "Stan" ) );
+            SomeType entity1 = createEntity( uow, StringIdentity.identity( "Niclas" ) );
+            SomeType entity2 = createEntity( uow, StringIdentity.identity( "Paul" ) );
+            SomeType entity3 = createEntity( uow, StringIdentity.identity( "Jiri" ) );
+            SomeType entity4 = createEntity( uow, StringIdentity.identity( "Kent" ) );
+            SomeType entity5 = createEntity( uow, StringIdentity.identity( "Stan" ) );
             entity1.assoc().set( entity2 );
             entity1.many().add( entity3 );
             entity1.named().put( "kent", entity4 );
@@ -89,7 +89,7 @@ public class ToValueConversionTest
         }
         try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork(usecase) )
         {
-            assertThat( value.identity().get(), equalTo( StringIdentity.fromString( "Niclas" ) ) );
+            assertThat( value.identity().get(), equalTo( StringIdentity.identity( "Niclas" ) ) );
             assertThat( value.name().get(), equalTo( "[Niclas]" ) );
 
             assertThat( uow.toValue( SomeType.class, value.assoc().get()).name().get(), equalTo( "[Paul]" ));

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/main/java/org/apache/polygene/runtime/association/NamedAssociationInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/association/NamedAssociationInstance.java b/core/runtime/src/main/java/org/apache/polygene/runtime/association/NamedAssociationInstance.java
index e855c57..fffc760 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/association/NamedAssociationInstance.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/association/NamedAssociationInstance.java
@@ -74,7 +74,14 @@ public class NamedAssociationInstance<T> extends AbstractAssociationInstance<T>
     {
         Objects.requireNonNull( entity, "entity" );
         checkImmutable();
-        checkType( entity );
+        try
+        {
+            checkType( entity );
+        }
+        catch( IllegalArgumentException e )
+        {
+            throw new IllegalArgumentException( "Named association [" + name +"] must have Identity: " + entity );
+        }
         associationInfo.checkConstraints( entity );
         return namedAssociationState.put( name, EntityReference.create( ( (HasIdentity) entity ).identity().get() ) );
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ImportedServiceAssemblyImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ImportedServiceAssemblyImpl.java b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ImportedServiceAssemblyImpl.java
index 2c7905b..614df0b 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ImportedServiceAssemblyImpl.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ImportedServiceAssemblyImpl.java
@@ -78,7 +78,7 @@ public final class ImportedServiceAssemblyImpl
             }
             else
             {
-                id = StringIdentity.fromString( identity );
+                id = StringIdentity.identity( identity );
             }
 
             ImportedServiceModel serviceModel = new ImportedServiceModel( module,
@@ -103,7 +103,7 @@ public final class ImportedServiceAssemblyImpl
     {
         // Find reference that is not yet used
         int idx = 0;
-        Identity id = StringIdentity.fromString( serviceType.getSimpleName() );
+        Identity id = StringIdentity.identity( serviceType.getSimpleName() );
         boolean invalid;
         do
         {
@@ -113,7 +113,7 @@ public final class ImportedServiceAssemblyImpl
                 if( serviceModel.identity().equals( id ) )
                 {
                     idx++;
-                    id = StringIdentity.fromString( serviceType.getSimpleName() + "_" + idx );
+                    id = StringIdentity.identity( serviceType.getSimpleName() + "_" + idx );
                     invalid = true;
                     break;
                 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ModuleAssemblyImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ModuleAssemblyImpl.java b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ModuleAssemblyImpl.java
index f69fe9f..225857d 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ModuleAssemblyImpl.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ModuleAssemblyImpl.java
@@ -708,7 +708,7 @@ final class ModuleAssemblyImpl
         Class<?> serviceType = serviceTypes.findFirst()
                 .orElse(null); // Use the first, which *SHOULD* be the main serviceType
         int idx = 0;
-        Identity id = StringIdentity.fromString(serviceType.getSimpleName());
+        Identity id = StringIdentity.identity( serviceType.getSimpleName() );
         boolean invalid;
         do
         {
@@ -718,7 +718,7 @@ final class ModuleAssemblyImpl
                 if (serviceAssembly.identity() != null && serviceAssembly.identity().equals(id))
                 {
                     idx++;
-                    id = StringIdentity.fromString(serviceType.getSimpleName() + "_" + idx);
+                    id = StringIdentity.identity( serviceType.getSimpleName() + "_" + idx );
                     invalid = true;
                     break;
                 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ServiceDeclarationImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ServiceDeclarationImpl.java b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ServiceDeclarationImpl.java
index e5e17bb..92db867 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ServiceDeclarationImpl.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/ServiceDeclarationImpl.java
@@ -59,7 +59,7 @@ public final class ServiceDeclarationImpl
         for( ServiceAssemblyImpl serviceAssembly : serviceAssemblies )
         {
             if( identity != null ) {
-                serviceAssembly.identity = StringIdentity.fromString( identity );
+                serviceAssembly.identity = StringIdentity.identity( identity );
             }
         }
         return this;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java b/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
index b836f67..071d2c3 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
@@ -264,7 +264,7 @@ public class ModuleUnitOfWork
             }
             else
             {
-                identity = StringIdentity.fromString( propertyState );
+                identity = StringIdentity.identity( propertyState );
             }
         }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/api/common/RemovalTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/api/common/RemovalTest.java b/core/runtime/src/test/java/org/apache/polygene/api/common/RemovalTest.java
index 0c67baa..6c514c9 100644
--- a/core/runtime/src/test/java/org/apache/polygene/api/common/RemovalTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/api/common/RemovalTest.java
@@ -48,7 +48,7 @@ public class RemovalTest
         throws Exception
     {
         UnitOfWork uow = unitOfWorkFactory.newUnitOfWork();
-        EntityBuilder<TestEntity> builder = uow.newEntityBuilder( TestEntity.class, StringIdentity.fromString( "123" ) );
+        EntityBuilder<TestEntity> builder = uow.newEntityBuilder( TestEntity.class, StringIdentity.identity( "123" ) );
         builder.instance().test().set( "habba" );
         TestEntity test = builder.newInstance();
         uow.remove( test );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/regression/qi377/SetAssociationInSideEffectTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/regression/qi377/SetAssociationInSideEffectTest.java b/core/runtime/src/test/java/org/apache/polygene/regression/qi377/SetAssociationInSideEffectTest.java
index 941099b..84b6aed 100644
--- a/core/runtime/src/test/java/org/apache/polygene/regression/qi377/SetAssociationInSideEffectTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/regression/qi377/SetAssociationInSideEffectTest.java
@@ -61,8 +61,8 @@ public class SetAssociationInSideEffectTest
     {
         try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Purchase Steinway" ) ) )
         {
-            Pianist chris = uow.newEntity( Pianist.class, StringIdentity.fromString( "Chris" ) );
-            Steinway modelD = uow.newEntity( Steinway.class, StringIdentity.fromString( "ModelD-274" ) );
+            Pianist chris = uow.newEntity( Pianist.class, StringIdentity.identity( "Chris" ) );
+            Steinway modelD = uow.newEntity( Steinway.class, StringIdentity.identity( "ModelD-274" ) );
 
             assertThat( modelD.owner().get(), is( nullValue() ) );
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/regression/qi377/ValueCollisionWithRelatedReturnTypesTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/regression/qi377/ValueCollisionWithRelatedReturnTypesTest.java b/core/runtime/src/test/java/org/apache/polygene/regression/qi377/ValueCollisionWithRelatedReturnTypesTest.java
index 5e49acf..45e8658 100644
--- a/core/runtime/src/test/java/org/apache/polygene/regression/qi377/ValueCollisionWithRelatedReturnTypesTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/regression/qi377/ValueCollisionWithRelatedReturnTypesTest.java
@@ -36,7 +36,7 @@ public class ValueCollisionWithRelatedReturnTypesTest
     extends AbstractPolygeneTest
 {
 
-    public static final Identity NICLAS = StringIdentity.fromString( "niclas" );
+    public static final Identity NICLAS = StringIdentity.identity( "niclas" );
 
     @Override
     public void assemble( ModuleAssembly module )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/regression/qi382/Qi382Test.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/regression/qi382/Qi382Test.java b/core/runtime/src/test/java/org/apache/polygene/regression/qi382/Qi382Test.java
index dd818f9..140fd9d 100644
--- a/core/runtime/src/test/java/org/apache/polygene/regression/qi382/Qi382Test.java
+++ b/core/runtime/src/test/java/org/apache/polygene/regression/qi382/Qi382Test.java
@@ -44,8 +44,8 @@ import static org.junit.Assert.assertThat;
 public class Qi382Test extends AbstractPolygeneTest
 {
 
-    public static final Identity FERRARI = StringIdentity.fromString( "Ferrari" );
-    public static final Identity NICLAS = StringIdentity.fromString( "Niclas" );
+    public static final Identity FERRARI = StringIdentity.identity( "Ferrari" );
+    public static final Identity NICLAS = StringIdentity.identity( "Niclas" );
 
     @Override
     public void assemble( ModuleAssembly module )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/regression/qi383/Qi383Test.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/regression/qi383/Qi383Test.java b/core/runtime/src/test/java/org/apache/polygene/regression/qi383/Qi383Test.java
index ea15a4f..96f0cad 100644
--- a/core/runtime/src/test/java/org/apache/polygene/regression/qi383/Qi383Test.java
+++ b/core/runtime/src/test/java/org/apache/polygene/regression/qi383/Qi383Test.java
@@ -47,9 +47,9 @@ public class Qi383Test extends AbstractPolygeneTest
     {
         try( UnitOfWork unitOfWork = unitOfWorkFactory.newUnitOfWork() )
         {
-            unitOfWork.newEntity( Car.class, StringIdentity.fromString( "Ferrari" ) );
-            unitOfWork.newEntity( Car.class, StringIdentity.fromString( "Ford" ) );
-            unitOfWork.newEntity( Car.class, StringIdentity.fromString( "Ferrari" ) );
+            unitOfWork.newEntity( Car.class, StringIdentity.identity( "Ferrari" ) );
+            unitOfWork.newEntity( Car.class, StringIdentity.identity( "Ford" ) );
+            unitOfWork.newEntity( Car.class, StringIdentity.identity( "Ferrari" ) );
             unitOfWork.complete();
         }
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/runtime/activation/ImportedServiceActivationTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/activation/ImportedServiceActivationTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/activation/ImportedServiceActivationTest.java
index db3cca8..07674f0 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/activation/ImportedServiceActivationTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/activation/ImportedServiceActivationTest.java
@@ -179,7 +179,7 @@ public class ImportedServiceActivationTest
             module -> {
                 module.importedServices( TestedService.class ).
                     importedBy( ImportedServiceDeclaration.SERVICE_IMPORTER ).
-                          setMetaInfo( StringIdentity.fromString( "testimporter" ) ).
+                          setMetaInfo( StringIdentity.identity( "testimporter" ) ).
                           withActivators( TestedActivator.class ).
                           importOnStartup();
                 module.services( TestedServiceImporterService.class ).identifiedBy( "testimporter" );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityTypeTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityTypeTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityTypeTest.java
index ab7bf79..1c63573 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityTypeTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityTypeTest.java
@@ -40,9 +40,9 @@ public class EntityTypeTest
         UnitOfWork uow = unitOfWorkFactory.newUnitOfWork();
         try
         {
-            EntityBuilder<Rst> builder3 = uow.newEntityBuilder( Rst.class, StringIdentity.fromString( "123" ) );
-            EntityBuilder<Def> builder2 = uow.newEntityBuilder( Def.class, StringIdentity.fromString( "456" ) );
-            EntityBuilder<Abc> builder1 = uow.newEntityBuilder( Abc.class, StringIdentity.fromString( "789" ) );
+            EntityBuilder<Rst> builder3 = uow.newEntityBuilder( Rst.class, StringIdentity.identity( "123" ) );
+            EntityBuilder<Def> builder2 = uow.newEntityBuilder( Def.class, StringIdentity.identity( "456" ) );
+            EntityBuilder<Abc> builder1 = uow.newEntityBuilder( Abc.class, StringIdentity.identity( "789" ) );
         }
         finally
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityVisibilityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityVisibilityTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityVisibilityTest.java
index 908e8f2..519d2a7 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityVisibilityTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/entity/EntityVisibilityTest.java
@@ -47,7 +47,7 @@ import org.junit.Test;
 public class EntityVisibilityTest
 {
 
-    public static final Identity TEST_IDENTITY = StringIdentity.fromString( "123" );
+    public static final Identity TEST_IDENTITY = StringIdentity.identity( "123" );
 
     private Energy4Java polygene;
     private Module module;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/runtime/injection/ServiceInjectionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/injection/ServiceInjectionTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/injection/ServiceInjectionTest.java
index 9fa6411..637a141 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/injection/ServiceInjectionTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/injection/ServiceInjectionTest.java
@@ -82,7 +82,7 @@ public class ServiceInjectionTest
         ServiceUser user = factory.newObject( ServiceUser.class );
 
         assertEquals( "X", user.testSingle() );
-        assertThat( user.testIdentity(), equalTo( StringIdentity.fromString( "Foo" ) ) );
+        assertThat( user.testIdentity(), equalTo( StringIdentity.identity( "Foo" ) ) );
         assertEquals( "FooX", user.testServiceReference() );
         assertEquals( "Bar", user.testQualifier() );
         assertEquals( "A", user.testStringIterable() );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/runtime/injection/UnitOfWorkInjectionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/injection/UnitOfWorkInjectionTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/injection/UnitOfWorkInjectionTest.java
index 105a698..cd61437 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/injection/UnitOfWorkInjectionTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/injection/UnitOfWorkInjectionTest.java
@@ -53,7 +53,7 @@ public class UnitOfWorkInjectionTest
         UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( usecase );
         try
         {
-            Trial trial = uow.newEntity( Trial.class, StringIdentity.fromString( "123" ) );
+            Trial trial = uow.newEntity( Trial.class, StringIdentity.identity( "123" ) );
             trial.doSomething();
             uow.complete();
             uow = unitOfWorkFactory.newUnitOfWork( usecase );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyMixinTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyMixinTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyMixinTest.java
index 6432ccb..2b3b6af 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyMixinTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyMixinTest.java
@@ -62,11 +62,11 @@ public class AssemblyMixinTest
         throws UnitOfWorkCompletionException
     {
         UnitOfWork uow = unitOfWorkFactory.newUnitOfWork();
-        FooEntity entity = uow.newEntity( FooEntity.class, StringIdentity.fromString( "123" ) );
+        FooEntity entity = uow.newEntity( FooEntity.class, StringIdentity.identity( "123" ) );
         uow.complete();
 
         uow = unitOfWorkFactory.newUnitOfWork();
-        Foo foo = uow.get( Foo.class, StringIdentity.fromString( "123" ) );
+        Foo foo = uow.get( Foo.class, StringIdentity.identity( "123" ) );
 
         try
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyRoleTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyRoleTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyRoleTest.java
index 965d8a8..f051aec 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyRoleTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/AssemblyRoleTest.java
@@ -71,11 +71,11 @@ public class AssemblyRoleTest
         throws UnitOfWorkCompletionException
     {
         UnitOfWork uow = unitOfWorkFactory.newUnitOfWork();
-        uow.newEntity( FooEntity.class, StringIdentity.fromString( "123" ) );
+        uow.newEntity( FooEntity.class, StringIdentity.identity( "123" ) );
         uow.complete();
 
         uow = unitOfWorkFactory.newUnitOfWork();
-        Foo foo = uow.get( Foo.class, StringIdentity.fromString( "123" ) );
+        Foo foo = uow.get( Foo.class, StringIdentity.identity( "123" ) );
 
         try
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/JDKMixinTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/JDKMixinTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/JDKMixinTest.java
index 8bf7e41..831babd 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/JDKMixinTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/JDKMixinTest.java
@@ -98,8 +98,8 @@ public class JDKMixinTest extends AbstractPolygeneTest
         }
     }
 
-    private static final Identity EXTENDS_IDENTITY = StringIdentity.fromString( ExtendsJDKMixin.class.getName() );
-    private static final Identity COMPOSE_IDENTITY = StringIdentity.fromString( ComposeWithJDKMixin.class.getName() );
+    private static final Identity EXTENDS_IDENTITY = StringIdentity.identity( ExtendsJDKMixin.class.getName() );
+    private static final Identity COMPOSE_IDENTITY = StringIdentity.identity( ComposeWithJDKMixin.class.getName() );
     private static final Predicate<ServiceReference<?>> EXTENDS_IDENTITY_SPEC = new ServiceIdentitySpec(
         EXTENDS_IDENTITY );
     private static final Predicate<ServiceReference<?>> COMPOSE_IDENTITY_SPEC = new ServiceIdentitySpec(

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectVisibilityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectVisibilityTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectVisibilityTest.java
index 33785ea..d80d4e5 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectVisibilityTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/objects/ObjectVisibilityTest.java
@@ -47,7 +47,7 @@ import org.junit.Test;
 public class ObjectVisibilityTest
 {
 
-    public static final Identity TEST_IDENTITY = StringIdentity.fromString( "123" );
+    public static final Identity TEST_IDENTITY = StringIdentity.identity( "123" );
 
     private Energy4Java polygene;
     private Module module;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/runtime/query/IterableQuerySourceTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/query/IterableQuerySourceTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/query/IterableQuerySourceTest.java
index 9f93dbd..9dbf52f 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/query/IterableQuerySourceTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/query/IterableQuerySourceTest.java
@@ -214,7 +214,7 @@ public class IterableQuerySourceTest
     {
         QueryBuilder<Person> qb = qbf.newQueryBuilder( Person.class );
         Person person = templateFor( Person.class );
-        City kl = uow.get( City.class, StringIdentity.fromString( "kualalumpur" ));
+        City kl = uow.get( City.class, StringIdentity.identity( "kualalumpur" ) );
         Query<Person> query = qb.where(
             eq( person.mother().get().placeOfBirth(), kl )
         ).newQuery( Network.persons() );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/runtime/query/Network.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/query/Network.java b/core/runtime/src/test/java/org/apache/polygene/runtime/query/Network.java
index a84aca2..727d168 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/query/Network.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/query/Network.java
@@ -44,8 +44,8 @@ import org.apache.polygene.runtime.query.model.values.ContactsValue;
  */
 class Network
 {
-    public static final Identity KUALALUMPUR = StringIdentity.fromString( "kualalumpur" );
-    public static final Identity PENANG = StringIdentity.fromString( "penang" );
+    public static final Identity KUALALUMPUR = StringIdentity.identity( "kualalumpur" );
+    public static final Identity PENANG = StringIdentity.identity( "penang" );
     private static List<Domain> domains;
     private static List<Person> persons;
     private static List<Male> males;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/runtime/service/ServiceVisibilityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/service/ServiceVisibilityTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/service/ServiceVisibilityTest.java
index f1d2f5c..289be4b 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/service/ServiceVisibilityTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/service/ServiceVisibilityTest.java
@@ -46,7 +46,7 @@ import org.junit.Test;
 
 public class ServiceVisibilityTest
 {
-    public static final Identity TEST_IDENTITY = StringIdentity.fromString( "123" );
+    public static final Identity TEST_IDENTITY = StringIdentity.identity( "123" );
 
     private Energy4Java polygene;
     private Module module;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientVisibilityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientVisibilityTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientVisibilityTest.java
index 2a80ff1..6e6abab 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientVisibilityTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/transients/TransientVisibilityTest.java
@@ -47,7 +47,7 @@ import org.junit.Test;
 
 public class TransientVisibilityTest
 {
-    public static final Identity TEST_IDENTITY = StringIdentity.fromString( "123" );
+    public static final Identity TEST_IDENTITY = StringIdentity.identity( "123" );
     private Energy4Java polygene;
     private Module module;
     private Application app;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/PrivateEntityUnitOfWorkTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/PrivateEntityUnitOfWorkTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/PrivateEntityUnitOfWorkTest.java
index 8ee0fb0..425ae18 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/PrivateEntityUnitOfWorkTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/PrivateEntityUnitOfWorkTest.java
@@ -52,7 +52,7 @@ import static org.junit.Assert.fail;
  */
 public class PrivateEntityUnitOfWorkTest
 {
-    private static final Identity TEST_IDENTITY = StringIdentity.fromString( "1" );
+    private static final Identity TEST_IDENTITY = StringIdentity.identity( "1" );
 
     @Structure
     private UnitOfWorkFactory uowf;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/RemovalTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/RemovalTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/RemovalTest.java
index 765fe6a..1a95f2f 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/RemovalTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/unitofwork/RemovalTest.java
@@ -40,7 +40,7 @@ public class RemovalTest
     extends AbstractPolygeneTest
 {
 
-    private static final Identity TEST_IDENTITY = StringIdentity.fromString( "123" );
+    private static final Identity TEST_IDENTITY = StringIdentity.identity( "123" );
 
     public void assemble(ModuleAssembly module )
         throws AssemblyException

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/runtime/value/AssociationToValueTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/value/AssociationToValueTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/value/AssociationToValueTest.java
index 2966ea5..ffbe234 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/value/AssociationToValueTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/value/AssociationToValueTest.java
@@ -151,7 +151,7 @@ public class AssociationToValueTest extends AbstractPolygeneTest
         public Person findPersonByName( String name )
         {
             UnitOfWork uow = unitOfWorkFactory.currentUnitOfWork();
-            return uow.toValue( Person.class, uow.get( Person.class, StringIdentity.fromString( name ) ) );
+            return uow.toValue( Person.class, uow.get( Person.class, StringIdentity.identity( name ) ) );
         }
     }
 
@@ -206,7 +206,7 @@ public class AssociationToValueTest extends AbstractPolygeneTest
         private Person createPerson( String name )
         {
             UnitOfWork uow = uowf.currentUnitOfWork();
-            return uow.newEntity( Person.class, StringIdentity.fromString( name ) );
+            return uow.newEntity( Person.class, StringIdentity.identity( name ) );
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueSerializationRegressionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueSerializationRegressionTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueSerializationRegressionTest.java
index f29895d..f48bfe3 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueSerializationRegressionTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueSerializationRegressionTest.java
@@ -50,7 +50,7 @@ public class ValueSerializationRegressionTest extends AbstractPolygeneTest
         throws UnitOfWorkCompletionException
     {
         ValueBuilder<DualFaced> builder = valueBuilderFactory.newValueBuilder( DualFaced.class );
-        builder.prototype().identity().set( StringIdentity.fromString( "1234" ) );
+        builder.prototype().identity().set( StringIdentity.identity( "1234" ) );
         builder.prototype().name().set( "Hedhman" );
         DualFaced value = builder.newInstance();
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueVisibilityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueVisibilityTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueVisibilityTest.java
index b0d7336..191808b 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueVisibilityTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueVisibilityTest.java
@@ -48,7 +48,7 @@ import org.junit.Test;
 public class ValueVisibilityTest
 {
 
-    public static final Identity TEST_IDENTIY = StringIdentity.fromString( "123" );
+    public static final Identity TEST_IDENTIY = StringIdentity.identity( "123" );
     private Energy4Java polygene;
     private Module module;
     private Application app;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueWithAssociationTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueWithAssociationTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueWithAssociationTest.java
index 02067e5..655505c 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueWithAssociationTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/value/ValueWithAssociationTest.java
@@ -113,7 +113,7 @@ public class ValueWithAssociationTest extends AbstractPolygeneTest
         throws UnitOfWorkCompletionException
     {
         ValueBuilder<DualFaced> builder = valueBuilderFactory.newValueBuilder( DualFaced.class );
-        builder.prototype().identity().set( StringIdentity.fromString( "1234" ) );
+        builder.prototype().identity().set( StringIdentity.identity( "1234" ) );
         builder.prototype().name().set( "Hedhman" );
         DualFaced value = builder.newInstance();
 
@@ -125,8 +125,8 @@ public class ValueWithAssociationTest extends AbstractPolygeneTest
 
         try (UnitOfWork uow = unitOfWorkFactory.newUnitOfWork())
         {
-            DualFaced entity = uow.get( DualFaced.class, StringIdentity.fromString( "1234" ) );
-            assertThat( entity.identity().get(), equalTo( StringIdentity.fromString( "1234" ) ) );
+            DualFaced entity = uow.get( DualFaced.class, StringIdentity.identity( "1234" ) );
+            assertThat( entity.identity().get(), equalTo( StringIdentity.identity( "1234" ) ) );
             assertThat( entity.name().get(), equalTo( "Hedhman" ) );
             uow.complete();
         }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/runtime/visibility/VisibilityInUnitOfWorkTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/visibility/VisibilityInUnitOfWorkTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/visibility/VisibilityInUnitOfWorkTest.java
index 559605f..ec9d072 100644
--- a/core/runtime/src/test/java/org/apache/polygene/runtime/visibility/VisibilityInUnitOfWorkTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/visibility/VisibilityInUnitOfWorkTest.java
@@ -41,8 +41,8 @@ import org.junit.Test;
 public class VisibilityInUnitOfWorkTest
 {
 
-    public static final Identity TEST_IDENTITY1 = StringIdentity.fromString( "123" );
-    public static final Identity TEST_IDENTITY2 = StringIdentity.fromString( "345" );
+    public static final Identity TEST_IDENTITY1 = StringIdentity.identity( "123" );
+    public static final Identity TEST_IDENTITY2 = StringIdentity.identity( "345" );
 
     @Test
     public void givenTwoModulesWithServiceAndEntityInOneAndEntityInOtherWhenOtherEntityAccessServiceWhichUsesItsEntityExpectServiceToHaveVisibility()

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/runtime/src/test/java/org/apache/polygene/spi/service/importer/ServiceInstanceImporterTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/spi/service/importer/ServiceInstanceImporterTest.java b/core/runtime/src/test/java/org/apache/polygene/spi/service/importer/ServiceInstanceImporterTest.java
index 2c566b4..237e8ab 100644
--- a/core/runtime/src/test/java/org/apache/polygene/spi/service/importer/ServiceInstanceImporterTest.java
+++ b/core/runtime/src/test/java/org/apache/polygene/spi/service/importer/ServiceInstanceImporterTest.java
@@ -46,7 +46,7 @@ public class ServiceInstanceImporterTest
     {
         module.importedServices( TestService.class ).
             identifiedBy( "test" ).
-            setMetaInfo( StringIdentity.fromString( "testimporter" ) ).
+            setMetaInfo( StringIdentity.identity( "testimporter" ) ).
             importedBy( ImportedServiceDeclaration.SERVICE_IMPORTER );
         module.services( TestImporterService.class ).identifiedBy( "testimporter" );
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/JSONMapEntityStoreMixin.java b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
index b88c189..cedcedc 100644
--- a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
+++ b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
@@ -419,7 +419,7 @@ public class JSONMapEntityStoreMixin
 
             String version = parsedState.getString( JSONKeys.VERSION );
             Instant modified = Instant.ofEpochMilli( parsedState.getJsonNumber( JSONKeys.MODIFIED ).longValueExact() );
-            Identity identity = StringIdentity.fromString( parsedState.getString( JSONKeys.IDENTITY ) );
+            Identity identity = StringIdentity.identity( parsedState.getString( JSONKeys.IDENTITY ) );
 
             // Check if version is correct
             JsonObject state;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java
index 5e784f7..2c98677 100644
--- a/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java
+++ b/core/spi/src/main/java/org/apache/polygene/spi/entitystore/helpers/MapEntityStoreMixin.java
@@ -382,7 +382,7 @@ public class MapEntityStoreMixin
 
             String version = parsedState.getString( JSONKeys.VERSION );
             Instant modified = Instant.ofEpochMilli( parsedState.getJsonNumber( JSONKeys.MODIFIED ).longValueExact() );
-            Identity identity = StringIdentity.fromString( parsedState.getString( JSONKeys.IDENTITY ) );
+            Identity identity = StringIdentity.identity( parsedState.getString( JSONKeys.IDENTITY ) );
 
             // Check if version is correct
             JsonObject state;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/spi/src/main/java/org/apache/polygene/spi/serialization/BuiltInConverters.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/polygene/spi/serialization/BuiltInConverters.java b/core/spi/src/main/java/org/apache/polygene/spi/serialization/BuiltInConverters.java
index 0c1b774..d86b81d 100644
--- a/core/spi/src/main/java/org/apache/polygene/spi/serialization/BuiltInConverters.java
+++ b/core/spi/src/main/java/org/apache/polygene/spi/serialization/BuiltInConverters.java
@@ -108,7 +108,7 @@ public interface BuiltInConverters
             @Override
             public Identity fromString( String string )
             {
-                return StringIdentity.fromString( string );
+                return StringIdentity.identity( string );
             }
         }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/spi/src/test/java/org/apache/polygene/spi/entitystore/Polygene142Test.java
----------------------------------------------------------------------
diff --git a/core/spi/src/test/java/org/apache/polygene/spi/entitystore/Polygene142Test.java b/core/spi/src/test/java/org/apache/polygene/spi/entitystore/Polygene142Test.java
index 85bc744..b9030bd 100644
--- a/core/spi/src/test/java/org/apache/polygene/spi/entitystore/Polygene142Test.java
+++ b/core/spi/src/test/java/org/apache/polygene/spi/entitystore/Polygene142Test.java
@@ -61,7 +61,7 @@ public class Polygene142Test extends AbstractPolygeneTest
             value = serialization.deserialize( module, Regression142Type.class, serialized ); // ok
         }
         {
-            Identity valueId = StringIdentity.fromString( "abcdefg" );
+            Identity valueId = StringIdentity.identity( "abcdefg" );
             {
                 try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "create" ) ) )
                 {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java
new file mode 100644
index 0000000..507526d
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/EntityStoreTestSuite.java
@@ -0,0 +1,546 @@
+/*
+ *  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.entity.model;
+
+import java.util.Iterator;
+import org.apache.polygene.api.association.NamedAssociation;
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.api.constraint.ConstraintViolationException;
+import org.apache.polygene.api.identity.Identity;
+import org.apache.polygene.api.injection.scope.Service;
+import org.apache.polygene.api.injection.scope.Structure;
+import org.apache.polygene.api.object.ObjectFactory;
+import org.apache.polygene.api.structure.Application;
+import org.apache.polygene.api.structure.ApplicationDescriptor;
+import org.apache.polygene.api.structure.Module;
+import org.apache.polygene.api.unitofwork.NoSuchEntityException;
+import org.apache.polygene.api.unitofwork.UnitOfWork;
+import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
+import org.apache.polygene.api.usecase.UsecaseBuilder;
+import org.apache.polygene.bootstrap.ApplicationAssembly;
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.memory.MemoryEntityStoreService;
+import org.apache.polygene.spi.serialization.JsonSerialization;
+import org.apache.polygene.test.AbstractPolygeneBaseTest;
+import org.apache.polygene.test.entity.model.legal.LegalService;
+import org.apache.polygene.test.entity.model.legal.Will;
+import org.apache.polygene.test.entity.model.legal.WillAmount;
+import org.apache.polygene.test.entity.model.legal.WillItem;
+import org.apache.polygene.test.entity.model.legal.WillPercentage;
+import org.apache.polygene.test.entity.model.people.Address;
+import org.apache.polygene.test.entity.model.people.City;
+import org.apache.polygene.test.entity.model.people.Country;
+import org.apache.polygene.test.entity.model.people.PeopleRepository;
+import org.apache.polygene.test.entity.model.people.Person;
+import org.apache.polygene.test.entity.model.people.PhoneNumber;
+import org.apache.polygene.test.entity.model.people.Rent;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.hamcrest.core.Is.is;
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.junit.Assert.assertThat;
+
+public abstract class EntityStoreTestSuite extends AbstractPolygeneBaseTest
+{
+    private static final String FRIEND = "Friend";
+    private static final String COLLEAGUE = "Colleague";
+
+    @Structure
+    private ObjectFactory obf;
+
+    @Service
+    private LegalService legalService;
+
+    @Service
+    private PeopleRepository peopleRepository;
+
+    @Structure
+    private UnitOfWorkFactory uowf;
+    private Identity baselId;
+    private Identity montpellierId;
+    private Identity hannoverId;
+    private Identity malmoId;
+    private Identity cherasId;
+
+    private Identity unknown3Id;
+    private Identity unknown2Id;
+    private Identity unknown1Id;
+    private Identity varnhemId;
+    private Identity canaryId;
+
+    private Identity switzerlandId;
+    private Identity franceId;
+    private Identity denmarkId;
+    private Identity germanyId;
+    private Identity swedenId;
+    private Identity usId;
+    private Identity malaysiaId;
+
+    @Before
+    public void setupTestData()
+    {
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "TestData Generation" ) ) )
+        {
+            testData();
+            uow.complete();
+        }
+    }
+
+    @Test
+    public void validateAllCountriesPresent()
+    {
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - validateAllCountriesPresent" ) ) )
+        {
+            assertThat( peopleRepository.findCountryByCountryCode( "my" ).name().get(), equalTo( "Malaysia" ) );
+            assertThat( peopleRepository.findCountryByCountryCode( "us" ).name().get(), equalTo( "United States" ) );
+            assertThat( peopleRepository.findCountryByCountryCode( "se" ).name().get(), equalTo( "Sweden" ) );
+            assertThat( peopleRepository.findCountryByCountryCode( "de" ).name().get(), equalTo( "Germany" ) );
+            assertThat( peopleRepository.findCountryByCountryCode( "dk" ).name().get(), equalTo( "Denmark" ) );
+            assertThat( peopleRepository.findCountryByCountryCode( "fr" ).name().get(), equalTo( "France" ) );
+            assertThat( peopleRepository.findCountryByCountryCode( "ch" ).name().get(), equalTo( "Switzerland" ) );
+        }
+    }
+
+    @Test
+    public void validateAllCitiesPresent()
+    {
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - validateAllCitiesPresent" ) ) )
+        {
+            assertThat( peopleRepository.findCity( baselId ).name().get(), equalTo( "Basel" ) );
+            assertThat( peopleRepository.findCity( malmoId ).name().get(), equalTo( "Malmo" ) );
+            assertThat( peopleRepository.findCity( cherasId ).name().get(), equalTo( "Cheras" ) );
+            assertThat( peopleRepository.findCity( hannoverId ).name().get(), equalTo( "Hannover" ) );
+            assertThat( peopleRepository.findCity( montpellierId ).name().get(), equalTo( "Montpellier" ) );
+        }
+    }
+
+    @Test
+    public void validateAllAddressesPresent()
+    {
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - validateAllAddressesPresent" ) ) )
+        {
+            Address canary = peopleRepository.findAddress( canaryId );
+            assertThat( canary.street().get(), equalTo( "10, CH5A, Jalan Cheras Hartamas" ) );
+            assertThat( canary.country().get().identity().get(), equalTo( malaysiaId ) );
+            assertThat( canary.city().get().identity().get(), equalTo( cherasId ) );
+            assertThat( canary.zipCode().get(), equalTo( "43200" ) );
+
+            Address varnhem = peopleRepository.findAddress( varnhemId );
+            assertThat( varnhem.street().get(), equalTo( "Varnhemsgatan 25" ) );
+            assertThat( varnhem.city().get().identity().get(), equalTo( malmoId ) );
+            assertThat( varnhem.country().get().identity().get(), equalTo( swedenId ) );
+            assertThat( varnhem.zipCode().get(), equalTo( "215 00" ) );
+
+            Address unknown = peopleRepository.findAddress( unknown1Id );
+            assertThat( unknown.street().get(), equalTo( "" ) );
+            assertThat( unknown.city().get().identity().get(), equalTo( montpellierId ) );
+            assertThat( unknown.country().get().identity().get(), equalTo( franceId ) );
+            assertThat( unknown.zipCode().get(), equalTo( "" ) );
+
+            unknown = peopleRepository.findAddress( unknown2Id );
+            assertThat( unknown.street().get(), equalTo( "" ) );
+            assertThat( unknown.city().get().identity().get(), equalTo( hannoverId ) );
+            assertThat( unknown.country().get().identity().get(), equalTo( germanyId ) );
+            assertThat( unknown.zipCode().get(), equalTo( "" ) );
+
+            unknown = peopleRepository.findAddress( unknown3Id );
+            assertThat( unknown.street().get(), equalTo( "" ) );
+            assertThat( unknown.city().get().identity().get(), equalTo( baselId ) );
+            assertThat( unknown.country().get().identity().get(), equalTo( switzerlandId ) );
+            assertThat( unknown.zipCode().get(), equalTo( "" ) );
+        }
+    }
+
+    @Test
+    public void validateAllPersonsPresent()
+    {
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - validateAllPersonsPresent" ) ) )
+        {
+            Person niclas = peopleRepository.findPersonByName( "Niclas" );
+            assertThat( niclas.name().get(), equalTo( "Niclas" ) );
+            Person eric = peopleRepository.findPersonByName( "Eric" );
+            assertThat( eric.name().get(), equalTo( "Eric" ) );
+            Person paul = peopleRepository.findPersonByName( "Paul" );
+            assertThat( paul.name().get(), equalTo( "Paul" ) );
+            Person toni = peopleRepository.findPersonByName( "Toni" );
+            assertThat( toni.name().get(), equalTo( "Toni" ) );
+            Person janna = peopleRepository.findPersonByName( "Janna" );
+            assertThat( janna.name().get(), equalTo( "Janna" ) );
+            Person peter = peopleRepository.findPersonByName( "Peter" );
+            assertThat( peter.name().get(), equalTo( "Peter" ) );
+            Person oscar = peopleRepository.findPersonByName( "Oscar" );
+            assertThat( oscar.name().get(), equalTo( "Oscar" ) );
+            Person kalle = peopleRepository.findPersonByName( "Kalle" );
+            assertThat( kalle.name().get(), equalTo( "Kalle" ) );
+            Person andreas = peopleRepository.findPersonByName( "Andreas" );
+            assertThat( andreas.name().get(), equalTo( "Andreas" ) );
+        }
+    }
+
+    @Test
+    public void givenTestDataWhenAddingNewNamedAssociationExpectAssociationAdded()
+    {
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - givenTestDataWhenAddingNewNamedAssociationExpectAssociationAdded" ) ) )
+        {
+            Person niclas = peopleRepository.findPersonByName( "Niclas" );
+            PhoneNumber newNumber = peopleRepository.createPhoneNumber( "+86-185-21320803" );
+            niclas.phoneNumbers().put( "Mobile", newNumber );
+            uow.complete();
+        }
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - givenTestDataWhenAddingNewNamedAssociationExpectAssociationAdded" ) ) )
+        {
+            Person niclas = peopleRepository.findPersonByName( "Niclas" );
+            NamedAssociation<PhoneNumber> numbers = niclas.phoneNumbers();
+            assertThat( numbers.count(), equalTo( 2 ) );
+            PhoneNumber mobile = numbers.get( "Mobile" );
+            assertThat( mobile.countryCode().get(), equalTo( 86 ) );
+            assertThat( mobile.areaCode().get(), equalTo( 185 ) );
+            assertThat( mobile.number().get(), equalTo( "21320803" ) );
+            PhoneNumber home = numbers.get( "Home" );
+            assertThat( home.countryCode().get(), equalTo( 60 ) );
+            assertThat( home.areaCode().get(), equalTo( 16 ) );
+            assertThat( home.number().get(), equalTo( "7636344" ) );
+        }
+    }
+
+    @Test
+    public void whenIteratingNamedAssociationExpectIterationInOrder()
+    {
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenIteratingNamedAssociationExpectIterationToSucceed" ) ) )
+        {
+            Person niclas = peopleRepository.findPersonByName( "Niclas" );
+            PhoneNumber newNumber1 = peopleRepository.createPhoneNumber( "+86-185-21320803" );
+            niclas.phoneNumbers().put( "Chinese", newNumber1 );
+            PhoneNumber newNumber2 = peopleRepository.createPhoneNumber( "+46-70-9876543" );
+            niclas.phoneNumbers().put( "Swedish", newNumber2 );
+            PhoneNumber newNumber3 = peopleRepository.createPhoneNumber( "+49-444-2832989823" );
+            niclas.phoneNumbers().put( "German", newNumber3 );
+            uow.complete();
+        }
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenIteratingNamedAssociationExpectIterationToSucceed" ) ) )
+        {
+            Person niclas = peopleRepository.findPersonByName( "Niclas" );
+            Iterator<String> numbers = niclas.phoneNumbers().iterator();
+            assertThat( numbers.hasNext(), is( true ) );
+            assertThat( numbers.next(), equalTo( "Home" ) );
+            assertThat( numbers.hasNext(), is( true ) );
+            assertThat( numbers.next(), equalTo( "Chinese" ) );
+            assertThat( numbers.hasNext(), is( true ) );
+            assertThat( numbers.next(), equalTo( "Swedish" ) );
+            assertThat( numbers.hasNext(), is( true ) );
+            assertThat( numbers.next(), equalTo( "German" ) );
+        }
+    }
+
+    @Test
+    public void givenTestDataWhenAddingSameNamedAssociationExpectAssociationModified()
+    {
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - givenTestDataWhenAddingSameNamedAssociationExpectAssociationModified" ) ) )
+        {
+            Person niclas = peopleRepository.findPersonByName( "Niclas" );
+            PhoneNumber newNumber = peopleRepository.createPhoneNumber( "+86-185-21320803" );
+            niclas.phoneNumbers().put( "Home", newNumber );
+            uow.complete();
+        }
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - givenTestDataWhenAddingSameNamedAssociationExpectAssociationModified" ) ) )
+        {
+            Person niclas = peopleRepository.findPersonByName( "Niclas" );
+            NamedAssociation<PhoneNumber> numbers = niclas.phoneNumbers();
+            assertThat( numbers.count(), equalTo( 1 ) );
+            PhoneNumber home = numbers.get( "Home" );
+            assertThat( home.countryCode().get(), equalTo( 86 ) );
+            assertThat( home.areaCode().get(), equalTo( 185 ) );
+            assertThat( home.number().get(), equalTo( "21320803" ) );
+        }
+    }
+
+    @Test
+    public void whenNullingOptionalAssociationExpectSuccess()
+    {
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenNullingOptionalAssociationExpectSuccess" ) ) )
+        {
+            Person toni = peopleRepository.findPersonByName( "Toni" );
+            toni.spouse().set( null );
+            uow.complete();
+        }
+    }
+
+    @Test( expected = ConstraintViolationException.class )
+    public void whenNullingNonOptionalAssociationExpectFailure()
+    {
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenNullingOptionalAssociationExpectSuccess" ) ) )
+        {
+            Person toni = peopleRepository.findPersonByName( "Toni" );
+            toni.nationality().set( null );
+            uow.complete();
+        }
+    }
+
+    @Test
+    public void whenRemovingEntityExpectAggregatedEntitiesToBeRemoved()
+    {
+        Identity homePhoneId;
+        Identity chinesePhoneId;
+        Identity germanPhoneId;
+        Identity swedishPhoneId;
+        Identity switzerlandId;
+        Identity malaysiaId;
+        Identity canaryId;
+        Identity despairStId;
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        {
+            Person niclas = peopleRepository.findPersonByName( "Niclas" );
+            PhoneNumber newNumber1 = peopleRepository.createPhoneNumber( "+86-185-21320803" );
+            niclas.phoneNumbers().put( "Chinese", newNumber1 );
+            PhoneNumber newNumber2 = peopleRepository.createPhoneNumber( "+46-70-9876543" );
+            niclas.phoneNumbers().put( "Swedish", newNumber2 );
+            PhoneNumber newNumber3 = peopleRepository.createPhoneNumber( "+49-444-2832989823" );
+            niclas.phoneNumbers().put( "German", newNumber3 );
+            homePhoneId = niclas.phoneNumbers().get( "Home" ).identity().get();
+            swedishPhoneId = niclas.phoneNumbers().get( "Swedish" ).identity().get();
+            chinesePhoneId = niclas.phoneNumbers().get( "Chinese" ).identity().get();
+            germanPhoneId = niclas.phoneNumbers().get( "German" ).identity().get();
+
+            City basel = peopleRepository.findCity( baselId );
+            Country switzerland = peopleRepository.findCountryByCountryCode( "ch" );
+            niclas.movedToNewAddress( "DespairStreet 12A", "43HQ21", basel, switzerland, obf.newObject( Rent.Builder.class ).create( 1000, "EUR" ) );
+            uow.complete();
+        }
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        {
+            Person niclas = peopleRepository.findPersonByName( "Niclas" );
+            assertThat( niclas.nationality().get().name().get(), equalTo( "Sweden" ) );
+            assertThat( niclas.oldAddresses().count(), equalTo( 1 ) );
+            assertThat( niclas.address().get().country().get().name().get(), equalTo( "Switzerland" ) );
+            canaryId = niclas.oldAddresses().get( 0 ).identity().get();
+            despairStId = niclas.address().get().identity().get();
+            malaysiaId = niclas.oldAddresses().get( 0 ).country().get().identity().get();
+            switzerlandId = niclas.address().get().country().get().identity().get();
+        }
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        {
+            Person niclas = peopleRepository.findPersonByName( "Niclas" );
+            uow.remove( niclas );
+            uow.complete();
+        }
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        {
+            Person niclas = peopleRepository.findPersonByName( "Niclas" );
+        }
+        catch( NoSuchEntityException e )
+        {
+            // expected
+        }
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        {
+            peopleRepository.findPhoneNumberById( homePhoneId );
+        }
+        catch( NoSuchEntityException e )
+        {
+            // expected
+        }
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        {
+            peopleRepository.findPhoneNumberById( chinesePhoneId );
+        }
+        catch( NoSuchEntityException e )
+        {
+            // expected
+        }
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        {
+            peopleRepository.findPhoneNumberById( swedishPhoneId );
+        }
+        catch( NoSuchEntityException e )
+        {
+            // expected
+        }
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        {
+            peopleRepository.findPhoneNumberById( germanPhoneId );
+        }
+        catch( NoSuchEntityException e )
+        {
+            // expected
+        }
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        {
+            peopleRepository.findAddress( canaryId );
+        }
+        catch( NoSuchEntityException e )
+        {
+            // expected
+        }
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        {
+            peopleRepository.findAddress( despairStId );
+        }
+        catch( NoSuchEntityException e )
+        {
+            // expected
+        }
+        try( UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Test - whenRemovingEntityExpectAggregatedEntitiesToBeRemoved" ) ) )
+        {
+            peopleRepository.findCountryByIdentity( switzerlandId );
+            peopleRepository.findCountryByIdentity( malaysiaId );
+
+            peopleRepository.findPersonByName( "Peter" );
+            peopleRepository.findPersonByName( "Andreas" );
+            peopleRepository.findPersonByName( "Toni" );
+            peopleRepository.findPersonByName( "Paul" );
+        }
+    }
+
+    @Test( expected = IllegalStateException.class )
+    public void whenNoActiveUnitOfWorkExpectIllegalStateException()
+    {
+        peopleRepository.findCountryByIdentity( switzerlandId );
+    }
+
+    private void testData()
+    {
+        Country malaysia = peopleRepository.createCountry( "my", "Malaysia" );
+        malaysiaId = malaysia.identity().get();
+        Country us = peopleRepository.createCountry( "us", "United States" );
+        usId = us.identity().get();
+        Country sweden = peopleRepository.createCountry( "se", "Sweden" );
+        swedenId = sweden.identity().get();
+        Country germany = peopleRepository.createCountry( "de", "Germany" );
+        germanyId = germany.identity().get();
+        Country denmark = peopleRepository.createCountry( "dk", "Denmark" );
+        denmarkId = denmark.identity().get();
+        Country france = peopleRepository.createCountry( "fr", "France" );
+        franceId = france.identity().get();
+        Country switzerland = peopleRepository.createCountry( "ch", "Switzerland" );
+        switzerlandId = switzerland.identity().get();
+        City cheras = peopleRepository.createCity( "Cheras" );
+        cherasId = cheras.identity().get();
+        City malmo = peopleRepository.createCity( "Malmo" );
+        malmoId = malmo.identity().get();
+        City hannover = peopleRepository.createCity( "Hannover" );
+        hannoverId = hannover.identity().get();
+        City montpellier = peopleRepository.createCity( "Montpellier" );
+        montpellierId = montpellier.identity().get();
+        City basel = peopleRepository.createCity( "Basel" );
+        baselId = basel.identity().get();
+        Rent.Builder rentBuilder = obf.newObject( Rent.Builder.class );
+        Rent rentCanary = rentBuilder.create( 3000, "MYR" );
+        Rent rentVarnhem = rentBuilder.create( 9000, "SEK" );
+        Rent rentUnknown1 = rentBuilder.create( 1200, "EUR" );
+        Rent rentUnknown2 = rentBuilder.create( 900, "EUR" );
+        Rent rentUnknown3 = rentBuilder.create( 2200, "EUR" );
+        Address canaryResidence = peopleRepository.createAddress( "10, CH5A, Jalan Cheras Hartamas", "43200", cheras, malaysia, rentCanary );
+        canaryId = canaryResidence.identity().get();
+        Address varnhem = peopleRepository.createAddress( "Varnhemsgatan 25", "215 00", malmo, sweden, rentVarnhem );
+        varnhemId = varnhem.identity().get();
+        Address unknown1 = peopleRepository.createAddress( "", "", montpellier, france, rentUnknown1 );
+        unknown1Id = unknown1.identity().get();
+        Address unknown2 = peopleRepository.createAddress( "", "", hannover, germany, rentUnknown2 );
+        unknown2Id = unknown2.identity().get();
+        Address unknown3 = peopleRepository.createAddress( "", "", basel, switzerland, rentUnknown3 );
+        unknown3Id = unknown3.identity().get();
+        Person eric = peopleRepository.createPerson( "Eric", malaysia, canaryResidence, null, null );
+        Person niclas = peopleRepository.createPerson( "Niclas", sweden, canaryResidence, null, peopleRepository.createPhoneNumber( "+60-16-7636344" ) );
+        niclas.children().add( eric );
+        Person kalle = peopleRepository.createPerson( "Kalle", sweden, varnhem, null, null );
+        Person oscar = peopleRepository.createPerson( "Oscar", sweden, varnhem, null, null );
+        Person peter = peopleRepository.createPerson( "Peter", germany, varnhem, null, peopleRepository.createPhoneNumber( "+46-70-1234567" ) );
+        peter.children().add( kalle );
+        peter.children().add( oscar );
+        Person paul = peopleRepository.createPerson( "Paul", france, unknown1, null, peopleRepository.createPhoneNumber( "+33-88-333666999" ) );
+        Person janna = peopleRepository.createPerson( "Janna", france, unknown2, null, peopleRepository.createPhoneNumber( "+49-11-22334455" ) );
+        Person toni = peopleRepository.createPerson( "Toni", france, unknown2, janna, peopleRepository.createPhoneNumber( "+49-12-99887766" ) );
+        janna.spouse().set( toni );
+        Person andreas = peopleRepository.createPerson( "Andreas", germany, unknown3, null, peopleRepository.createPhoneNumber( "+41-98-1234567" ) );
+        NamedAssociation<Person> niclasRels = niclas.relationships();
+        niclasRels.put( FRIEND, peter );
+        niclasRels.put( FRIEND, toni );
+        niclasRels.put( FRIEND, andreas );
+        niclasRels.put( FRIEND, paul );
+        niclasRels.put( COLLEAGUE, toni );
+        niclasRels.put( COLLEAGUE, andreas );
+    }
+
+    @Override
+    protected void defineApplication( ApplicationAssembly applicationAssembly )
+        throws AssemblyException
+    {
+        LayerAssembly accessLayer = applicationAssembly.layer( "Access Layer" );
+        LayerAssembly domainLayer = applicationAssembly.layer( "Domain Layer" );
+        LayerAssembly infrastructureLayer = applicationAssembly.layer( "Infrastructure Layer" );
+        LayerAssembly configLayer = applicationAssembly.layer( "Configuration Layer" );
+        accessLayer.uses( domainLayer.uses( infrastructureLayer.uses( configLayer ) ) );
+        defineConfigModule( configLayer.module( "Configuration Module" ) );
+        defineSerializationModule( configLayer.module( "Serialization Module" ) );
+        defineStorageModule( infrastructureLayer.module( "Storage Module" ) );
+        definePeopleModule( domainLayer.module( "People Module" ) );
+        defineLegalModule( domainLayer.module( "Legal Module" ) );
+        defineTestModule( accessLayer.module( "TestCase Module" ) );
+    }
+
+    @Override
+    protected Application newApplicationInstance( ApplicationDescriptor applicationModel )
+    {
+        Application application = super.newApplicationInstance( applicationModel );
+        Module module = application.findModule( "Access Layer", "TestCase Module" );
+        module.injectTo( this );
+        return application;
+    }
+
+    protected void defineTestModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        module.objects( this.getClass() );
+    }
+
+    protected void definePeopleModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        module.entities( Address.class, City.class, PhoneNumber.class );
+        module.entities( Country.class, Person.class );
+        module.services( PeopleRepository.class ).visibleIn( Visibility.application );
+        module.values( Rent.class );
+        module.objects( Rent.Builder.class ).visibleIn( Visibility.application );
+    }
+
+    protected void defineLegalModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        module.services( LegalService.class ).visibleIn( Visibility.application );
+        module.entities( Will.class, WillItem.class, WillPercentage.class, WillAmount.class );
+    }
+
+    protected void defineSerializationModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        module.services( JsonSerialization.class ).visibleIn( Visibility.application );
+    }
+
+    protected abstract void defineStorageModule( ModuleAssembly module );
+
+    protected void defineConfigModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        module.services( MemoryEntityStoreService.class ).visibleIn( Visibility.module );
+    }
+}


[45/50] polygene-java git commit: Making ElasticSearchIndexingException extend from IndexingException

Posted by ni...@apache.org.
Making ElasticSearchIndexingException extend from IndexingException


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/0dac97bf
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/0dac97bf
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/0dac97bf

Branch: refs/heads/es-jooq
Commit: 0dac97bff2b82a34162c53ac9d403f19f066aca1
Parents: 5462924
Author: niclas <ni...@hedhman.org>
Authored: Sun Jul 9 12:41:27 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jul 9 12:41:27 2017 +0800

----------------------------------------------------------------------
 .../elasticsearch/ElasticSearchIndexingException.java  | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0dac97bf/extensions/indexing-elasticsearch/src/main/java/org/apache/polygene/index/elasticsearch/ElasticSearchIndexingException.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-elasticsearch/src/main/java/org/apache/polygene/index/elasticsearch/ElasticSearchIndexingException.java b/extensions/indexing-elasticsearch/src/main/java/org/apache/polygene/index/elasticsearch/ElasticSearchIndexingException.java
index b578c6a..27b6a19 100644
--- a/extensions/indexing-elasticsearch/src/main/java/org/apache/polygene/index/elasticsearch/ElasticSearchIndexingException.java
+++ b/extensions/indexing-elasticsearch/src/main/java/org/apache/polygene/index/elasticsearch/ElasticSearchIndexingException.java
@@ -19,17 +19,18 @@
  */
 package org.apache.polygene.index.elasticsearch;
 
-public class ElasticSearchIndexingException extends RuntimeException
+import org.apache.polygene.api.indexing.IndexingException;
+
+public class ElasticSearchIndexingException extends IndexingException
 {
 
-    public ElasticSearchIndexingException( String string )
+    public ElasticSearchIndexingException( String message )
     {
-        super( string );
+        super( message );
     }
 
-    public ElasticSearchIndexingException( String string, Throwable thrwbl )
+    public ElasticSearchIndexingException( String message, Throwable cause )
     {
-        super( string, thrwbl );
+        super( message, cause );
     }
-
 }


[27/50] polygene-java git commit: Constraint check is incorrect. Was introduced when better reporting was attempted.

Posted by ni...@apache.org.
Constraint check is incorrect. Was introduced when better reporting was attempted.


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

Branch: refs/heads/es-jooq
Commit: ed6ae8140f51f12f41946d09b561cac973e1260d
Parents: d22dc29
Author: niclas <ni...@hedhman.org>
Authored: Fri Jun 30 16:03:23 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Fri Jun 30 16:03:23 2017 +0800

----------------------------------------------------------------------
 .../apache/polygene/runtime/bootstrap/CompositeAssemblyImpl.java  | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/ed6ae814/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/CompositeAssemblyImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/CompositeAssemblyImpl.java b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/CompositeAssemblyImpl.java
index cb1c751..7f69916 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/CompositeAssemblyImpl.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/CompositeAssemblyImpl.java
@@ -596,8 +596,7 @@ public abstract class CompositeAssemblyImpl
 
             // No implementation found!
             // Check if if it's a composite constraints
-            if( Arrays.stream( annotationType.getAnnotations() )
-                      .anyMatch( typeHasAnnotation( ConstraintDeclaration.class ) ) )
+            if( typeHasAnnotation( ConstraintDeclaration.class ).test( constraintAnnotation ) )
             {
                 ValueConstraintsModel valueConstraintsModel = constraintsFor(
                     Arrays.stream( annotationType.getAnnotations() ),


[04/50] polygene-java git commit: Adding a new test suite for persistence, that is somewhat understandable and not totally non-sense. Also, it is a multi-layered application, to ensure that Type Lookups are handled correctly. JDBM was first victim to get

Posted by ni...@apache.org.
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/LegalService.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/LegalService.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/LegalService.java
new file mode 100644
index 0000000..925e500
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/LegalService.java
@@ -0,0 +1,106 @@
+/*
+ *  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.entity.model.legal;
+
+import java.math.BigDecimal;
+import java.util.Map;
+import org.apache.polygene.api.entity.EntityBuilder;
+import org.apache.polygene.api.identity.Identity;
+import org.apache.polygene.api.identity.StringIdentity;
+import org.apache.polygene.api.injection.scope.Structure;
+import org.apache.polygene.api.mixin.Mixins;
+import org.apache.polygene.api.unitofwork.UnitOfWork;
+import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
+import org.apache.polygene.api.unitofwork.concern.UnitOfWorkPropagation;
+import org.apache.polygene.api.value.ValueBuilder;
+import org.apache.polygene.api.value.ValueBuilderFactory;
+import org.apache.polygene.test.entity.model.people.Person;
+
+@Mixins( LegalService.Mixin.class )
+public interface LegalService
+{
+    @UnitOfWorkPropagation
+    Identity createWill( Person principal, Map<Person, BigDecimal> amounts, Map<Person, Float> percentages, Map<Person, String> specificItems );
+
+    class Mixin
+        implements LegalService
+    {
+        @Structure
+        private ValueBuilderFactory vbf;
+
+        @Structure
+        private UnitOfWorkFactory uowf;
+
+        @Override
+        public Identity createWill( Person principal, Map<Person, BigDecimal> amounts, Map<Person, Float> percentages, Map<Person, String> specificItems )
+        {
+            UnitOfWork uow = uowf.currentUnitOfWork();
+            Identity identity = StringIdentity.identity( "will-" + principal.name().get() );
+            EntityBuilder<Will> builder = uow.newEntityBuilder( Will.class, identity );
+            Will instance = builder.instance();
+            for( Map.Entry<Person, BigDecimal> entry : amounts.entrySet() )
+            {
+                WillAmount amount = createAmount( entry.getKey(), entry.getValue() );
+                instance.amounts().add( amount );
+            }
+            for( Map.Entry<Person, Float> entry : percentages.entrySet() )
+            {
+                WillPercentage amount = createPercentage( entry.getKey(), entry.getValue() );
+                instance.percentages().add( amount );
+            }
+            for( Map.Entry<Person, String> entry : specificItems.entrySet() )
+            {
+                String value = entry.getValue();
+                int pos = value.indexOf( '\n' );
+                String item = value.substring( 0, pos );
+                String description = value.substring( pos + 1 );
+                WillItem amount = createItem( entry.getKey(), item, description );
+                instance.items().add( amount );
+            }
+            builder.newInstance();
+            return identity;
+        }
+
+        private WillAmount createAmount( Person beneficiary, BigDecimal amount )
+        {
+            ValueBuilder<WillAmount> builder = vbf.newValueBuilder( WillAmount.class );
+            builder.prototype().amount().set( amount );
+            builder.prototype().beneficiary().set( beneficiary );
+            return builder.newInstance();
+        }
+
+        private WillPercentage createPercentage( Person beneficiary, Float percentage )
+        {
+            ValueBuilder<WillPercentage> builder = vbf.newValueBuilder( WillPercentage.class );
+            builder.prototype().percentage().set( percentage );
+            builder.prototype().beneficiary().set( beneficiary );
+            return builder.newInstance();
+        }
+
+        private WillItem createItem( Person beneficiary, String item, String description )
+        {
+            ValueBuilder<WillItem> builder = vbf.newValueBuilder( WillItem.class );
+            builder.prototype().item().set( item );
+            builder.prototype().item().set( description );
+            builder.prototype().beneficiary().set( beneficiary );
+            return builder.newInstance();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/Will.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/Will.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/Will.java
new file mode 100644
index 0000000..1c66efb
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/Will.java
@@ -0,0 +1,36 @@
+/*
+ *  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.entity.model.legal;
+
+import org.apache.polygene.api.association.Association;
+import org.apache.polygene.api.association.ManyAssociation;
+import org.apache.polygene.test.entity.model.people.Person;
+
+public interface Will
+{
+
+    Association<Person> principal();
+
+    ManyAssociation<WillItem> items();
+
+    ManyAssociation<WillPercentage> percentages();
+
+    ManyAssociation<WillAmount> amounts();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillAmount.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillAmount.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillAmount.java
new file mode 100644
index 0000000..6661375
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillAmount.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.entity.model.legal;
+
+import java.math.BigDecimal;
+import org.apache.polygene.api.property.Property;
+
+public interface WillAmount extends WillBenefit
+{
+    Property<BigDecimal> amount();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillBenefit.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillBenefit.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillBenefit.java
new file mode 100644
index 0000000..0347a6c
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillBenefit.java
@@ -0,0 +1,36 @@
+/*
+ *  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.entity.model.legal;
+
+import org.apache.polygene.api.association.Association;
+import org.apache.polygene.api.common.Optional;
+import org.apache.polygene.api.property.Property;
+import org.apache.polygene.test.entity.model.people.Person;
+
+public interface WillBenefit
+{
+    Association<Person> beneficiary();
+
+    @Optional
+    Property<String> condition();
+
+    @Optional
+    Association<Person> alternateBeneficiary();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillItem.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillItem.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillItem.java
new file mode 100644
index 0000000..abcafe3
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillItem.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.entity.model.legal;
+
+import org.apache.polygene.api.property.Property;
+
+public interface WillItem extends WillBenefit
+{
+    Property<String> item();
+
+    Property<String> description();
+
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillPercentage.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillPercentage.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillPercentage.java
new file mode 100644
index 0000000..dc34dd2
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/legal/WillPercentage.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.entity.model.legal;
+
+import org.apache.polygene.api.property.Property;
+
+public interface WillPercentage extends WillBenefit
+{
+    Property<Float> percentage();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Address.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Address.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Address.java
new file mode 100644
index 0000000..cc6a426
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Address.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.entity.model.people;
+
+import org.apache.polygene.api.association.Association;
+import org.apache.polygene.api.identity.HasIdentity;
+import org.apache.polygene.api.property.Property;
+
+public interface Address extends HasIdentity
+{
+    Property<Rent> rent();
+
+    Property<String> street();
+
+    Association<City> city();
+
+    Property<String> zipCode();
+
+    Association<Country> country();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/City.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/City.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/City.java
new file mode 100644
index 0000000..25078c0
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/City.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.entity.model.people;
+
+import org.apache.polygene.api.identity.HasIdentity;
+import org.apache.polygene.api.property.Property;
+
+public interface City extends HasIdentity
+{
+    Property<String> name();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Country.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Country.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Country.java
new file mode 100644
index 0000000..cc0800b
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Country.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.entity.model.people;
+
+import org.apache.polygene.api.identity.HasIdentity;
+import org.apache.polygene.api.property.Property;
+
+public interface Country extends HasIdentity
+{
+    Property<String> name();
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/PeopleRepository.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/PeopleRepository.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/PeopleRepository.java
new file mode 100644
index 0000000..0aeb8ea
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/PeopleRepository.java
@@ -0,0 +1,183 @@
+/*
+ *  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.entity.model.people;
+
+import org.apache.polygene.api.common.Optional;
+import org.apache.polygene.api.entity.EntityBuilder;
+import org.apache.polygene.api.identity.Identity;
+import org.apache.polygene.api.injection.scope.Structure;
+import org.apache.polygene.api.mixin.Mixins;
+import org.apache.polygene.api.unitofwork.UnitOfWork;
+import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
+
+import static org.apache.polygene.api.identity.StringIdentity.identity;
+
+@Mixins( PeopleRepository.Mixin.class )
+public interface PeopleRepository
+{
+    Person createPerson( String name, Country nationality, @Optional Address address, @Optional Person spouse, @Optional PhoneNumber homeNumber );
+
+    void addChild( Person parent, Person child );
+
+    Person findPersonByName( String name );
+
+    Country createCountry( String countryCode, String countryName );
+
+    Country findCountryByCountryCode( String countryCode );
+
+    Country findCountryByIdentity( Identity countryId );
+
+    Address createAddress( String street, String zipCode, City city, Country country, Rent rent );
+
+    Address findAddress( Identity addressId );
+
+    City createCity( String cityName );
+
+    City findCity( Identity cityId );
+
+    PhoneNumber createPhoneNumber( String phoneNumberString );
+
+    PhoneNumber findPhoneNumberById( Identity phoneNumberId );
+
+    class Mixin
+        implements PeopleRepository
+    {
+        @Structure
+        private UnitOfWorkFactory uowf;
+
+        @Override
+        public Person createPerson( String name, Country nationality, Address address, Person spouse, PhoneNumber homeNumber )
+        {
+            UnitOfWork uow = uowf.currentUnitOfWork();
+            EntityBuilder<Person> builder = uow.newEntityBuilder( Person.class, identity( "person-" + name ) );
+            Person instance = builder.instance();
+            instance.name().set( name );
+            instance.nationality().set( nationality );
+            instance.address().set( address );
+            instance.spouse().set( spouse );
+            if( homeNumber != null )
+            {
+                instance.phoneNumbers().put( "Home", homeNumber );
+            }
+            return builder.newInstance();
+        }
+
+        @Override
+        public void addChild( Person parent, Person child )
+        {
+            parent.children().add( child );
+        }
+
+        @Override
+        public Person findPersonByName( String name )
+        {
+            UnitOfWork uow = uowf.currentUnitOfWork();
+            return uow.get( Person.class, identity( "person-" + name ) );
+        }
+
+        @Override
+        public Country createCountry( String countryCode, String countryName )
+        {
+            UnitOfWork uow = uowf.currentUnitOfWork();
+            EntityBuilder<Country> builder = uow.newEntityBuilder( Country.class, identity( "country-" + countryCode ) );
+            builder.instance().name().set( countryName );
+            return builder.newInstance();
+        }
+
+        @Override
+        public Country findCountryByCountryCode( String countryCode )
+        {
+
+            return findCountryByIdentity( identity( "country-" + countryCode ) );
+        }
+
+        @Override
+        public Country findCountryByIdentity( Identity countryId )
+        {
+            UnitOfWork uow = uowf.currentUnitOfWork();
+            return uow.get( Country.class, countryId );
+        }
+
+        @Override
+        public Address createAddress( String street, String zipCode, City city, Country country, Rent rent )
+        {
+            UnitOfWork uow = uowf.currentUnitOfWork();
+            EntityBuilder<Address> builder = uow.newEntityBuilder( Address.class );
+            Address prototype = builder.instance();
+            prototype.street().set( street );
+            prototype.zipCode().set( zipCode );
+            prototype.city().set( city );
+            prototype.country().set( country );
+            prototype.rent().set( rent );
+            return builder.newInstance();
+        }
+
+        @Override
+        public Address findAddress( Identity addressId )
+        {
+            UnitOfWork uow = uowf.currentUnitOfWork();
+            return uow.get( Address.class, addressId );
+        }
+
+        @Override
+        public City createCity( String cityName )
+        {
+            UnitOfWork uow = uowf.currentUnitOfWork();
+            EntityBuilder<City> builder = uow.newEntityBuilder( City.class );
+            builder.instance().name().set( cityName );
+            return builder.newInstance();
+        }
+
+        @Override
+        public City findCity( Identity cityId )
+        {
+            UnitOfWork uow = uowf.currentUnitOfWork();
+            return uow.get( City.class, cityId );
+        }
+
+        @Override
+        public PhoneNumber createPhoneNumber( String phoneNumberString )
+        {
+            UnitOfWork uow = uowf.currentUnitOfWork();
+            EntityBuilder<PhoneNumber> builder = uow.newEntityBuilder( PhoneNumber.class );
+            PhoneNumber prototype = builder.instance();
+
+            // Of course better parsing should be done for a real application.
+            int pos1 = phoneNumberString.indexOf( '-' );
+            int pos2 = phoneNumberString.indexOf( '-', pos1 + 1 );
+            String countryCode = phoneNumberString.substring( 1, pos1 );
+            String areaCode = phoneNumberString.substring( pos1 + 1, pos2 );
+            String number = phoneNumberString.substring( pos2 + 1 );
+
+            prototype.countryCode().set( Integer.parseInt( countryCode ) );
+            prototype.areaCode().set( Integer.parseInt( areaCode ) );
+            prototype.number().set( number );
+
+            return builder.newInstance();
+        }
+
+        @Override
+        public PhoneNumber findPhoneNumberById( Identity phoneNumberId )
+        {
+            UnitOfWork uow = uowf.currentUnitOfWork();
+            return uow.get( PhoneNumber.class, phoneNumberId );
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Person.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Person.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Person.java
new file mode 100644
index 0000000..ac110a0
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Person.java
@@ -0,0 +1,89 @@
+/*
+ *  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.entity.model.people;
+
+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.Aggregated;
+import org.apache.polygene.api.identity.HasIdentity;
+import org.apache.polygene.api.injection.scope.Service;
+import org.apache.polygene.api.injection.scope.Structure;
+import org.apache.polygene.api.mixin.Mixins;
+import org.apache.polygene.api.property.Property;
+import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
+import org.apache.polygene.api.unitofwork.concern.UnitOfWorkPropagation;
+
+@Mixins( Person.Mixin.class )
+public interface Person extends HasIdentity
+{
+    @UnitOfWorkPropagation( UnitOfWorkPropagation.Propagation.MANDATORY )
+    void movedToNewAddress( String street, String zipCode, City city, Country country, Rent rent );
+
+    @UnitOfWorkPropagation( UnitOfWorkPropagation.Propagation.MANDATORY )
+    void amendAddress( String street, String zipCode, City city, Country country );
+
+    Property<String> name();
+
+    Association<Country> nationality();
+
+    @Aggregated
+    Association<Address> address();
+
+    @Optional
+    Association<Person> spouse();
+
+    ManyAssociation<Person> children();
+
+    @Aggregated
+    ManyAssociation<Address> oldAddresses();
+
+    NamedAssociation<Person> relationships();
+
+    @Aggregated
+    NamedAssociation<PhoneNumber> phoneNumbers();
+
+    abstract class Mixin
+        implements Person
+    {
+        @Structure
+        private UnitOfWorkFactory uowf;
+
+        @Service
+        private PeopleRepository repository;
+
+        @Override
+        public void movedToNewAddress( String street, String zipCode, City city, Country country, Rent rent )
+        {
+            Address newAddress = repository.createAddress( street, zipCode, city, country, rent );
+            Address oldAddress = address().get();
+            oldAddresses().add( oldAddress );
+            address().set( newAddress );
+        }
+
+        @Override
+        public void amendAddress( String street, String zipCode, City city, Country country )
+        {
+            Address newAddress = repository.createAddress( street, zipCode, city, country, address().get().rent().get() );
+            address().set( newAddress );
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/PhoneNumber.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/PhoneNumber.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/PhoneNumber.java
new file mode 100644
index 0000000..c711eab
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/PhoneNumber.java
@@ -0,0 +1,55 @@
+/*
+ *  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.entity.model.people;
+
+import org.apache.polygene.api.identity.HasIdentity;
+import org.apache.polygene.api.injection.scope.Structure;
+import org.apache.polygene.api.property.Property;
+import org.apache.polygene.api.value.ValueBuilder;
+import org.apache.polygene.api.value.ValueBuilderFactory;
+
+public interface PhoneNumber extends HasIdentity
+{
+    Property<Integer> countryCode();
+
+    Property<Integer> areaCode();
+
+    Property<String> number();
+
+    class Builder
+    {
+        private final ValueBuilder<PhoneNumber> valueBuilder;
+        private final PhoneNumber prototype;
+
+        public Builder( @Structure ValueBuilderFactory vbf )
+        {
+            valueBuilder = vbf.newValueBuilder( PhoneNumber.class );
+            prototype = valueBuilder.prototype();
+        }
+
+        PhoneNumber create( int countryCode, int areaCode, String number )
+        {
+            prototype.countryCode().set( countryCode );
+            prototype.areaCode().set( areaCode );
+            prototype.number().set( number );
+            return valueBuilder.newInstance();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Rent.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Rent.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Rent.java
new file mode 100644
index 0000000..576b3dc
--- /dev/null
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/people/Rent.java
@@ -0,0 +1,48 @@
+/*
+ *  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.entity.model.people;
+
+import java.math.BigDecimal;
+import org.apache.polygene.api.injection.scope.Structure;
+import org.apache.polygene.api.property.Property;
+import org.apache.polygene.api.value.ValueBuilder;
+import org.apache.polygene.api.value.ValueBuilderFactory;
+
+public interface Rent
+{
+    Property<BigDecimal> amount();
+
+    Property<String> currency();
+
+    class Builder
+    {
+        @Structure
+        private ValueBuilderFactory vbf;
+
+        public Rent create( Integer amount, String currency )
+        {
+            ValueBuilder<Rent> builder = vbf.newValueBuilder( Rent.class );
+            Rent prototype = builder.prototype();
+            prototype.amount().set( new BigDecimal( amount ) );
+            prototype.currency().set( currency );
+            return builder.newInstance();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractQueryTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractQueryTest.java b/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractQueryTest.java
index 08abae0..0592b1d 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractQueryTest.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractQueryTest.java
@@ -465,7 +465,7 @@ public abstract class AbstractQueryTest
     {
         QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
         Person person = templateFor( Person.class );
-        Domain gaming = unitOfWork.get( Domain.class, StringIdentity.fromString( "Gaming" ) );
+        Domain gaming = unitOfWork.get( Domain.class, StringIdentity.identity( "Gaming" ) );
         Query<Person> query = unitOfWork.newQuery( qb.where( contains( person.interests(), gaming ) ) );
         System.out.println( "*** script33: " + query );
 
@@ -477,7 +477,7 @@ public abstract class AbstractQueryTest
     {
         QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
         Person person = templateFor( Person.class );
-        Female annDoe = unitOfWork.get( Female.class, StringIdentity.fromString( "anndoe" ) );
+        Female annDoe = unitOfWork.get( Female.class, StringIdentity.identity( "anndoe" ) );
         Query<Person> query = unitOfWork.newQuery( qb.where( eq( person.mother(), annDoe ) ) );
         System.out.println( "*** script34: " + query );
 
@@ -500,7 +500,7 @@ public abstract class AbstractQueryTest
     {
         QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
         Person person = templateFor( Person.class );
-        Account anns = unitOfWork.get( Account.class, StringIdentity.fromString( "accountOfAnnDoe" ) );
+        Account anns = unitOfWork.get( Account.class, StringIdentity.identity( "accountOfAnnDoe" ) );
         Query<Person> query = unitOfWork.newQuery( qb.where( contains( person.accounts(), anns ) ) );
         System.out.println( "*** script36: " + query );
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/testsupport/src/main/java/org/apache/polygene/test/indexing/TestData.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/indexing/TestData.java b/core/testsupport/src/main/java/org/apache/polygene/test/indexing/TestData.java
index bc275bb..40df6ba 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/indexing/TestData.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/indexing/TestData.java
@@ -59,7 +59,7 @@ public class TestData
             NameableAssert.clear();
             Domain gaming;
             {
-                EntityBuilder<Domain> domainBuilder = unitOfWork.newEntityBuilder( Domain.class, StringIdentity.fromString( "Gaming" ) );
+                EntityBuilder<Domain> domainBuilder = unitOfWork.newEntityBuilder( Domain.class, StringIdentity.identity( "Gaming" ) );
                 gaming = domainBuilder.instance();
                 gaming.name().set( "Gaming" );
                 gaming.description().set( "Gaming domain" );
@@ -121,7 +121,7 @@ public class TestData
 
             Account annsAccount;
             {
-                EntityBuilder<Account> accountBuilder = unitOfWork.newEntityBuilder( Account.class, StringIdentity.fromString( "accountOfAnnDoe" ) );
+                EntityBuilder<Account> accountBuilder = unitOfWork.newEntityBuilder( Account.class, StringIdentity.identity( "accountOfAnnDoe" ) );
                 annsAccount = accountBuilder.instance();
                 annsAccount.number().set( "accountOfAnnDoe" );
                 annsAccount = accountBuilder.newInstance();
@@ -129,7 +129,7 @@ public class TestData
 
             Account jacksAccount;
             {
-                EntityBuilder<Account> accountBuilder = unitOfWork.newEntityBuilder( Account.class, StringIdentity.fromString( "accountOfJackDoe" ) );
+                EntityBuilder<Account> accountBuilder = unitOfWork.newEntityBuilder( Account.class, StringIdentity.identity( "accountOfJackDoe" ) );
                 jacksAccount = accountBuilder.instance();
                 jacksAccount.number().set( "accountOfJackDoe" );
                 jacksAccount = accountBuilder.newInstance();
@@ -143,7 +143,7 @@ public class TestData
 
             Female annDoe;
             {
-                EntityBuilder<Female> femaleBuilder = unitOfWork.newEntityBuilder( Female.class, StringIdentity.fromString( "anndoe" ) );
+                EntityBuilder<Female> femaleBuilder = unitOfWork.newEntityBuilder( Female.class, StringIdentity.identity( "anndoe" ) );
                 annDoe = femaleBuilder.instance();
                 annDoe.name().set( "Ann Doe" );
                 annDoe.title().set( Person.Title.MRS );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/testsupport/src/main/java/org/apache/polygene/test/metrics/AbstractPolygeneMetricsTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/metrics/AbstractPolygeneMetricsTest.java b/core/testsupport/src/main/java/org/apache/polygene/test/metrics/AbstractPolygeneMetricsTest.java
index 74c9e8c..f07a202 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/metrics/AbstractPolygeneMetricsTest.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/metrics/AbstractPolygeneMetricsTest.java
@@ -71,7 +71,7 @@ public abstract class AbstractPolygeneMetricsTest extends AbstractPolygeneBaseTe
 
     public interface PersonList
     {
-        Identity LIST_ID = StringIdentity.fromString( "person-list" );
+        Identity LIST_ID = StringIdentity.identity( "person-list" );
 
         ManyAssociation<Person> all();
     }
@@ -274,7 +274,7 @@ public abstract class AbstractPolygeneMetricsTest extends AbstractPolygeneBaseTe
         Commands commands = services.findService( Commands.class ).get();
         Queries queries = services.findService( Queries.class ).get();
 
-        Identity identity = StringIdentity.fromString( "1" );
+        Identity identity = StringIdentity.identity( "1" );
 
         try (UnitOfWork uow = services.unitOfWorkFactory().newUnitOfWork( newUsecase( "Step 1" ) ) )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/core/testsupport/src/main/java/org/apache/polygene/test/serialization/AbstractValueCompositeSerializationTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/serialization/AbstractValueCompositeSerializationTest.java b/core/testsupport/src/main/java/org/apache/polygene/test/serialization/AbstractValueCompositeSerializationTest.java
index 3741fd2..ddea6d2 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/serialization/AbstractValueCompositeSerializationTest.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/serialization/AbstractValueCompositeSerializationTest.java
@@ -253,7 +253,7 @@ public abstract class AbstractValueCompositeSerializationTest
     // JSONEntityState does not allow for polymorphic serialization
     public void valueAndEntityTypeEquality()
     {
-        Identity identity = StringIdentity.fromString( "42" );
+        Identity identity = StringIdentity.identity( "42" );
         Some createdValue, loadedValue;
 
         try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( newUsecase( "create" ) ) )
@@ -301,7 +301,7 @@ public abstract class AbstractValueCompositeSerializationTest
     {
         EntityBuilder<Some> builder = uow.newEntityBuilder( Some.class );
         Some proto = builder.instance();
-        proto.identity().set( StringIdentity.fromString( identity ) );
+        proto.identity().set( StringIdentity.identity( identity ) );
         setSomeValueState( module, uow, proto );
         return builder.newInstance();
     }
@@ -313,7 +313,7 @@ public abstract class AbstractValueCompositeSerializationTest
     {
         ValueBuilder<Some> builder = module.newValueBuilder( Some.class );
         Some proto = builder.prototype();
-        proto.identity().set( StringIdentity.fromString( identity ) );
+        proto.identity().set( StringIdentity.identity( identity ) );
         setSomeValueState( module, uow, proto );
         return builder.newInstance();
     }
@@ -322,7 +322,7 @@ public abstract class AbstractValueCompositeSerializationTest
     {
         ValueBuilder<SomeExtended> builder = module.newValueBuilder( SomeExtended.class );
         SomeExtended proto = builder.prototype();
-        proto.identity().set( StringIdentity.fromString( identity ) );
+        proto.identity().set( StringIdentity.identity( identity ) );
         setSomeValueState( module, uow, proto );
         proto.extraProperty().set( "extra property" );
         proto.extraAssociation().set( buildBarEntity( module, uow, "extra association" ) );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreMixin.java b/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreMixin.java
index cde443c..2895d53 100644
--- a/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreMixin.java
+++ b/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreMixin.java
@@ -427,7 +427,7 @@ public class CassandraEntityStoreMixin
         Identity newIdentity;
         if( idGenerator == null )
         {
-            newIdentity = StringIdentity.fromString( UUID.randomUUID().toString() );
+            newIdentity = StringIdentity.identity( UUID.randomUUID().toString() );
         }
         else
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreTestSuite.java b/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreTestSuite.java
new file mode 100644
index 0000000..597bfe3
--- /dev/null
+++ b/extensions/entitystore-jdbm/src/test/java/org/apache/polygene/entitystore/jdbm/JdbmEntityStoreTestSuite.java
@@ -0,0 +1,55 @@
+/*
+ *  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.entitystore.jdbm;
+
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.jdbm.assembly.JdbmEntityStoreAssembler;
+import org.apache.polygene.library.fileconfig.FileConfigurationAssembler;
+import org.apache.polygene.library.fileconfig.FileConfigurationOverride;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.junit.Rule;
+import org.junit.rules.TemporaryFolder;
+
+public class JdbmEntityStoreTestSuite extends EntityStoreTestSuite
+{
+    @Rule
+    public final TemporaryFolder tmpDir = new TemporaryFolder();
+    private ModuleAssembly configModule;
+
+    @Override
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        new FileConfigurationAssembler()
+            .withOverride( new FileConfigurationOverride().withConventionalRoot( tmpDir.getRoot() ) )
+            .assemble( module );
+        new JdbmEntityStoreAssembler().visibleIn( Visibility.application )
+                                      .withConfig( configModule, Visibility.application )
+                                      .assemble( module );
+    }
+
+    @Override
+    protected void defineConfigModule( ModuleAssembly module )
+    {
+        configModule = module;
+        super.defineConfigModule( module );
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java b/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java
index 36fe4ee..6a41cea 100644
--- a/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java
+++ b/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java
@@ -36,7 +36,7 @@ import org.jooq.conf.Settings;
 public abstract class AbstractSQLEntityStoreAssembler<AssemblerType>
     extends Assemblers.VisibilityIdentityConfig<AssemblerType>
 {
-    public static final Identity DEFAULT_ENTITYSTORE_IDENTITY = StringIdentity.fromString( "entitystore-sql" );
+    public static final Identity DEFAULT_ENTITYSTORE_IDENTITY = StringIdentity.identity( "entitystore-sql" );
     private static final String DEFAULT_CHANGELOG_PATH = "org/apache/polygene/entitystore/sql/changelog.xml";
 
     private String changelogPath = DEFAULT_CHANGELOG_PATH;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/extensions/indexing-rdf/src/test/java/org/apache/polygene/index/rdf/RDFPerformanceTest.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-rdf/src/test/java/org/apache/polygene/index/rdf/RDFPerformanceTest.java b/extensions/indexing-rdf/src/test/java/org/apache/polygene/index/rdf/RDFPerformanceTest.java
index 96abf69..08e1db4 100644
--- a/extensions/indexing-rdf/src/test/java/org/apache/polygene/index/rdf/RDFPerformanceTest.java
+++ b/extensions/indexing-rdf/src/test/java/org/apache/polygene/index/rdf/RDFPerformanceTest.java
@@ -102,7 +102,7 @@ public class RDFPerformanceTest extends AbstractPolygeneTest
         List<ExampleEntity> entities = new ArrayList<ExampleEntity>();
         for (Integer x = 0; x < howMany; ++x)
         {
-            ExampleEntity exampleEntity = this.unitOfWorkFactory.currentUnitOfWork().newEntity( ExampleEntity.class, StringIdentity.fromString( "entity" + x ) );
+            ExampleEntity exampleEntity = this.unitOfWorkFactory.currentUnitOfWork().newEntity( ExampleEntity.class, StringIdentity.identity( "entity" + x ) );
 
             for (ExampleEntity entity : entities)
             {
@@ -188,7 +188,7 @@ public class RDFPerformanceTest extends AbstractPolygeneTest
         UnitOfWork uow = this.unitOfWorkFactory.newUnitOfWork();
         for (int i = 0; i < 1000; i++)
         {
-            ExampleEntity entity50 = uow.get(ExampleEntity.class, StringIdentity.fromString( "entity50" ) );
+            ExampleEntity entity50 = uow.get(ExampleEntity.class, StringIdentity.identity( "entity50" ) );
             Query<ExampleEntity> query = uow.newQuery( this.queryBuilderFactory.newQueryBuilder( ExampleEntity.class ).
                     where( QueryExpressions.contains( QueryExpressions.templateFor( ExampleEntity.class ).manyAssoc(), entity50) ));
             System.out.println(query.count());

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/assembly/AbstractSQLIndexQueryAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/assembly/AbstractSQLIndexQueryAssembler.java b/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/assembly/AbstractSQLIndexQueryAssembler.java
index d3675a3..86790c9 100644
--- a/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/assembly/AbstractSQLIndexQueryAssembler.java
+++ b/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/assembly/AbstractSQLIndexQueryAssembler.java
@@ -35,7 +35,7 @@ import org.apache.polygene.library.sql.generator.vendor.SQLVendorProvider;
 
 public abstract class AbstractSQLIndexQueryAssembler<AssemblerType> extends Assemblers.VisibilityIdentityConfig<AssemblerType>
 {
-    public static final Identity DEFAULT_IDENTITY = StringIdentity.fromString( "indexing-sql" );
+    public static final Identity DEFAULT_IDENTITY = StringIdentity.identity( "indexing-sql" );
 
     private Class<? extends ReindexingStrategy> reindexingStrategy = ReindexingStrategy.NeverNeed.class;
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/libraries/alarm/src/main/java/org/apache/polygene/library/alarm/AlarmSystem.java
----------------------------------------------------------------------
diff --git a/libraries/alarm/src/main/java/org/apache/polygene/library/alarm/AlarmSystem.java b/libraries/alarm/src/main/java/org/apache/polygene/library/alarm/AlarmSystem.java
index b275943..1b42452 100644
--- a/libraries/alarm/src/main/java/org/apache/polygene/library/alarm/AlarmSystem.java
+++ b/libraries/alarm/src/main/java/org/apache/polygene/library/alarm/AlarmSystem.java
@@ -214,7 +214,7 @@ public interface AlarmSystem
         public AlarmPoint createAlarm( String name, AlarmCategory category )
         {
             UnitOfWork uow = uowf.currentUnitOfWork();
-            EntityBuilder<AlarmPoint> builder = uow.newEntityBuilder( AlarmPoint.class, StringIdentity.fromString( name ) );
+            EntityBuilder<AlarmPoint> builder = uow.newEntityBuilder( AlarmPoint.class, StringIdentity.identity( name ) );
             builder.instance().category().set( category );
             AlarmPoint.AlarmState state = builder.instanceFor( AlarmPoint.AlarmState.class );
             state.systemName().set( name );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmProxyTest.java
----------------------------------------------------------------------
diff --git a/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmProxyTest.java b/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmProxyTest.java
index 30e9c35..5ec2236 100644
--- a/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmProxyTest.java
+++ b/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmProxyTest.java
@@ -60,7 +60,7 @@ public class AlarmProxyTest extends AbstractPolygeneTest
         try
         {
 // START SNIPPET: documentation
-            myAlarmPoint = factory.create( StringIdentity.fromString( "This Alarm Identity" ), "ProActiveCRM", "Sales", AlarmClass.B );
+            myAlarmPoint = factory.create( StringIdentity.identity( "This Alarm Identity" ), "ProActiveCRM", "Sales", AlarmClass.B );
             myAlarmPoint.history().maxSize().set( 20 );
 // END SNIPPET: documentation
 
@@ -71,7 +71,7 @@ public class AlarmProxyTest extends AbstractPolygeneTest
             assertThat( myAlarmPoint.history().activateCounter(), equalTo( 1 ) );
             AlarmEvent event = myAlarmPoint.history().firstEvent();
             assertThat( event, notNullValue() );
-            assertThat( event.identity().get(), equalTo( StringIdentity.fromString( "This Alarm Identity" ) ) );
+            assertThat( event.identity().get(), equalTo( StringIdentity.identity( "This Alarm Identity" ) ) );
             assertThat( event.newStatus().get().name( null ), equalTo( "Activated" ) );
             assertThat( event.oldStatus().get().name( null ), equalTo( "Normal" ) );
         }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/libraries/jmx/src/main/java/org/apache/polygene/library/jmx/ConfigurationManagerService.java
----------------------------------------------------------------------
diff --git a/libraries/jmx/src/main/java/org/apache/polygene/library/jmx/ConfigurationManagerService.java b/libraries/jmx/src/main/java/org/apache/polygene/library/jmx/ConfigurationManagerService.java
index a8ce3bf..91025f0 100644
--- a/libraries/jmx/src/main/java/org/apache/polygene/library/jmx/ConfigurationManagerService.java
+++ b/libraries/jmx/src/main/java/org/apache/polygene/library/jmx/ConfigurationManagerService.java
@@ -243,7 +243,7 @@ public interface ConfigurationManagerService
             EditableConfiguration( MBeanInfo info, String identity, Map<String, AccessibleObject> propertyNames )
             {
                 this.info = info;
-                this.identity = StringIdentity.fromString(identity);
+                this.identity = StringIdentity.identity( identity );
                 this.propertyNames = propertyNames;
             }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntitySerializerTest.java
----------------------------------------------------------------------
diff --git a/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntitySerializerTest.java b/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntitySerializerTest.java
index 59528e2..a48e272 100644
--- a/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntitySerializerTest.java
+++ b/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntitySerializerTest.java
@@ -109,14 +109,14 @@ public class EntitySerializerTest
             valueBuilder.prototype().test3().set( valueBuilder2.newInstance() );
             TestValue testValue = valueBuilder.newInstance();
 
-            EntityBuilder<TestEntity> builder = unitOfWork.newEntityBuilder( TestEntity.class, StringIdentity.fromString( "test1" ) );
+            EntityBuilder<TestEntity> builder = unitOfWork.newEntityBuilder( TestEntity.class, StringIdentity.identity( "test1" ) );
             TestEntity rickardTemplate = builder.instance();
             rickardTemplate.name().set( "Rickard" );
             rickardTemplate.title().set( "Mr" );
             rickardTemplate.value().set( testValue );
             TestEntity testEntity = builder.newInstance();
 
-            EntityBuilder<TestEntity> builder2 = unitOfWork.newEntityBuilder( TestEntity.class, StringIdentity.fromString( "test2" ) );
+            EntityBuilder<TestEntity> builder2 = unitOfWork.newEntityBuilder( TestEntity.class, StringIdentity.identity( "test2" ) );
             TestEntity niclasTemplate = builder2.instance();
             niclasTemplate.name().set( "Niclas" );
             niclasTemplate.title().set( "Mr" );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntityTypeSerializerTest.java
----------------------------------------------------------------------
diff --git a/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntityTypeSerializerTest.java b/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntityTypeSerializerTest.java
index e4a7efe..ae4c56e 100644
--- a/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntityTypeSerializerTest.java
+++ b/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntityTypeSerializerTest.java
@@ -95,14 +95,14 @@ public class EntityTypeSerializerTest
             valueBuilder.prototype().test3().set( vb2.newInstance() );
             TestValue testValue = valueBuilder.newInstance();
 
-            EntityBuilder<TestEntity> builder = unitOfWork.newEntityBuilder(TestEntity.class, StringIdentity.fromString( "test1") );
+            EntityBuilder<TestEntity> builder = unitOfWork.newEntityBuilder(TestEntity.class, StringIdentity.identity( "test1" ) );
             TestEntity rickardTemplate = builder.instance();
             rickardTemplate.name().set( "Rickard" );
             rickardTemplate.title().set( "Mr" );
             rickardTemplate.value().set( testValue );
             TestEntity testEntity = builder.newInstance();
 
-            EntityBuilder<TestEntity> builder2 = unitOfWork.newEntityBuilder(TestEntity.class, StringIdentity.fromString( "test2") );
+            EntityBuilder<TestEntity> builder2 = unitOfWork.newEntityBuilder(TestEntity.class, StringIdentity.identity( "test2" ) );
             TestEntity niclasTemplate = builder2.instance();
             niclasTemplate.name().set( "Niclas" );
             niclasTemplate.title().set( "Mr" );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/RequestReaderDelegator.java
----------------------------------------------------------------------
diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/RequestReaderDelegator.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/RequestReaderDelegator.java
index 7bfc77b..50db549 100644
--- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/RequestReaderDelegator.java
+++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/RequestReaderDelegator.java
@@ -51,7 +51,7 @@ public class RequestReaderDelegator
     public void init( @Service Iterable<ServiceReference<RequestReader>> requestReaderReferences )
     {
         Logger logger = LoggerFactory.getLogger( getClass() );
-        Identity requestreaderdelegator = StringIdentity.fromString("requestreaderdelegator");
+        Identity requestreaderdelegator = StringIdentity.identity( "requestreaderdelegator" );
 
         // Add custom readers first
         for( ServiceReference<RequestReader> requestReader : requestReaderReferences )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/ResponseWriterDelegator.java
----------------------------------------------------------------------
diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/ResponseWriterDelegator.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/ResponseWriterDelegator.java
index 14279c8..5809f66 100644
--- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/ResponseWriterDelegator.java
+++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/ResponseWriterDelegator.java
@@ -48,7 +48,7 @@ public class ResponseWriterDelegator
     public void init( @Service Iterable<ServiceReference<ResponseWriter>> resultWriters )
     {
         Logger logger = LoggerFactory.getLogger( getClass() );
-        Identity responsewriterdelegator = StringIdentity.fromString( "responsewriterdelegator" );
+        Identity responsewriterdelegator = StringIdentity.identity( "responsewriterdelegator" );
 
         // Add custom writers first
         for( ServiceReference<ResponseWriter> resultWriter : resultWriters )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/requestreader/DefaultRequestReader.java
----------------------------------------------------------------------
diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/requestreader/DefaultRequestReader.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/requestreader/DefaultRequestReader.java
index 8ed1666..65b31af 100644
--- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/requestreader/DefaultRequestReader.java
+++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/requestreader/DefaultRequestReader.java
@@ -251,7 +251,7 @@ public class DefaultRequestReader
                         entityAsForm = new Form();
                     }
 
-                    Identity entityIdentity = StringIdentity.fromString( getValue( "entity", queryAsForm, entityAsForm ) );
+                    Identity entityIdentity = StringIdentity.identity( getValue( "entity", queryAsForm, entityAsForm ) );
                     args[0] = uowf.currentUnitOfWork().get( method.getParameterTypes()[0], entityIdentity );
 
                     return args;
@@ -480,7 +480,7 @@ public class DefaultRequestReader
             }
             else if( parameterType.isInterface() )
             {
-                arg = uowf.currentUnitOfWork().get( parameterType, StringIdentity.fromString( argString ) );
+                arg = uowf.currentUnitOfWork().get( parameterType, StringIdentity.identity( argString ) );
             }
             else
             {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntityResource.java
----------------------------------------------------------------------
diff --git a/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntityResource.java b/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntityResource.java
index 5401a54..a81e682 100644
--- a/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntityResource.java
+++ b/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntityResource.java
@@ -106,7 +106,7 @@ public class EntityResource
     {
         // /entity/{reference}
         Map<String, Object> attributes = getRequest().getAttributes();
-        identity = StringIdentity.fromString( (String) attributes.get( "reference" ) );
+        identity = StringIdentity.identity( (String) attributes.get( "reference" ) );
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/DummyDataService.java
----------------------------------------------------------------------
diff --git a/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/DummyDataService.java b/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/DummyDataService.java
index 14387d1..56004c4 100644
--- a/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/DummyDataService.java
+++ b/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/DummyDataService.java
@@ -77,13 +77,13 @@ public interface DummyDataService
                     valueBuilder.prototype().string().set( "Foo bar value" );
                     valueBuilder.prototype().map().set( new HashMap() );
 
-                    EntityBuilder<TestEntity> builder = unitOfWork.newEntityBuilder( TestEntity.class, StringIdentity.fromString( "test1" ) );
+                    EntityBuilder<TestEntity> builder = unitOfWork.newEntityBuilder( TestEntity.class, StringIdentity.identity( "test1" ) );
                     builder.instance().name().set( "Foo bar" );
                     builder.instance().age().set( 42 );
                     builder.instance().value().set( valueBuilder.newInstance() );
                     TestEntity testEntity = builder.newInstance();
 
-                    EntityBuilder<TestEntity> builder2 = unitOfWork.newEntityBuilder( TestEntity.class, StringIdentity.fromString( "test2" ) );
+                    EntityBuilder<TestEntity> builder2 = unitOfWork.newEntityBuilder( TestEntity.class, StringIdentity.identity( "test2" ) );
                     builder2.instance().name().set( "Xyzzy" );
                     builder2.instance().age().set( 12 );
                     builder2.instance().association().set( testEntity );
@@ -98,7 +98,7 @@ public interface DummyDataService
                 }
 
                 {
-                    EntityBuilder<TestEntity2> builder = unitOfWork.newEntityBuilder( TestEntity2.class, StringIdentity.fromString( "test3" ) );
+                    EntityBuilder<TestEntity2> builder = unitOfWork.newEntityBuilder( TestEntity2.class, StringIdentity.identity( "test3" ) );
                     builder.instance().name().set( "Test3" );
                     builder.newInstance();
                 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/RestTest.java
----------------------------------------------------------------------
diff --git a/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/RestTest.java b/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/RestTest.java
index 0364d18..206c0ef 100644
--- a/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/RestTest.java
+++ b/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/RestTest.java
@@ -111,13 +111,13 @@ public class RestTest extends AbstractPolygeneTest
         UnitOfWork uow = unitOfWorkFactory.newUnitOfWork();
         try
         {
-            EntityBuilder<PersonEntity> builder1 = uow.newEntityBuilder( PersonEntity.class, StringIdentity.fromString( "P2" ) );
+            EntityBuilder<PersonEntity> builder1 = uow.newEntityBuilder( PersonEntity.class, StringIdentity.identity( "P2" ) );
             PersonEntity maryDoe = builder1.instance();
             maryDoe.firstname().set( "Mary" );
             maryDoe.lastname().set( "Doe" );
             maryDoe = builder1.newInstance();
 
-            EntityBuilder<PersonEntity> builder2 = uow.newEntityBuilder( PersonEntity.class, StringIdentity.fromString( "P1" ) );
+            EntityBuilder<PersonEntity> builder2 = uow.newEntityBuilder( PersonEntity.class, StringIdentity.identity( "P1" ) );
             PersonEntity joeDoe = builder2.instance();
             joeDoe.firstname().set( "Joe" );
             joeDoe.lastname().set( "Doe" );
@@ -162,7 +162,7 @@ public class RestTest extends AbstractPolygeneTest
         UnitOfWork work = unitOfWorkFactory.newUnitOfWork();
         try
         {
-            PersonEntity entity = work.get( PersonEntity.class, StringIdentity.fromString( "P1" ) );
+            PersonEntity entity = work.get( PersonEntity.class, StringIdentity.identity( "P1" ) );
             assertEquals( "FirstName not changed.", "Jack", entity.firstname().get() );
             assertEquals( "LastName not changed.", "Doe", entity.lastname().get() );
             work.complete();
@@ -185,7 +185,7 @@ public class RestTest extends AbstractPolygeneTest
             PersonEntity entity = null;
             try
             {
-                entity = work.get( PersonEntity.class, StringIdentity.fromString( "P1" ) );
+                entity = work.get( PersonEntity.class, StringIdentity.identity( "P1" ) );
             }
             catch( NoSuchEntityException expected )
             {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityResource.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityResource.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityResource.java
index 8ed6fb1..c822892 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityResource.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/crud/EntityResource.java
@@ -97,7 +97,7 @@ public interface EntityResource<T extends HasIdentity> extends ServerResource<T>
         {
             Class entityType = parameters.entityType().get();
             String idOfEntity = parameters.id().get();
-            locator.find( entityType ).delete( StringIdentity.fromString( idOfEntity ) );
+            locator.find( entityType ).delete( StringIdentity.identity( idOfEntity ) );
         }
 
         @Override
@@ -137,7 +137,7 @@ public interface EntityResource<T extends HasIdentity> extends ServerResource<T>
                 throw new RuntimeException( message, e );
             }
             Reference base = parameters.request().get().getResourceRef();
-            return resourceBuilder.createRestLink( StringIdentity.fromString( "" ), base, org.restlet.data.Method.GET );
+            return resourceBuilder.createRestLink( StringIdentity.identity( "" ), base, org.restlet.data.Method.GET );
         }
 
         private Object createParametersComposite( RestForm form, Class argType )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/identity/IdentityManager.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/identity/IdentityManager.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/identity/IdentityManager.java
index b41df0c..ec2a6c0 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/identity/IdentityManager.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/identity/IdentityManager.java
@@ -80,10 +80,10 @@ public interface IdentityManager
             if( isIdentity( canonicalName ) )
             {
                 // This is already an ID, and we simply return it.
-                return StringIdentity.fromString( canonicalName );
+                return StringIdentity.identity( canonicalName );
             }
             String prefix = findPrefix( type );
-            return StringIdentity.fromString( prefix + SEPARATOR + canonicalName );
+            return StringIdentity.identity( prefix + SEPARATOR + canonicalName );
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/EntryPointResource.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/EntryPointResource.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/EntryPointResource.java
index 274ea9e..2204980 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/EntryPointResource.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/EntryPointResource.java
@@ -80,18 +80,18 @@ public interface EntryPointResource extends ServerResource<EntryPoint>
                         RestLink link;
                         if( route.getDescription() == null )
                         {
-                            link = resourceBuilder.createRestLink( StringIdentity.fromString( template.getPattern() ), hostRef, Method.GET );
+                            link = resourceBuilder.createRestLink( StringIdentity.identity( template.getPattern() ), hostRef, Method.GET );
                         }
                         else
                         {
-                            link = resourceBuilder.createRestLink( StringIdentity.fromString( template.getPattern() ), hostRef, Method.GET, route.getDescription() );
+                            link = resourceBuilder.createRestLink( StringIdentity.identity( template.getPattern() ), hostRef, Method.GET, route.getDescription() );
                         }
                         entryPoints.put( route.getName(), link );
                     }
                 }
             }
             ValueBuilder<EntryPoint> builder = vbf.newValueBuilder( EntryPoint.class );
-            builder.prototype().identity().set( StringIdentity.fromString( "/" ) );
+            builder.prototype().identity().set( StringIdentity.identity( "/" ) );
             builder.prototype().api().set( entryPoints );
             return builder.newInstance();
         }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/ResourceBuilder.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/ResourceBuilder.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/ResourceBuilder.java
index eb46bac..b59aac8 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/ResourceBuilder.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/resource/ResourceBuilder.java
@@ -143,7 +143,7 @@ public interface ResourceBuilder
         public RestForm createNameForm( Reference base )
         {
             ValueBuilder<RestForm> builder = vbf.newValueBuilder( RestForm.class );
-            builder.prototype().link().set( createRestLink( StringIdentity.fromString( "form" ), base, Method.POST ) );
+            builder.prototype().link().set( createRestLink( StringIdentity.identity( "form" ), base, Method.POST ) );
             builder.prototype().fields().set( Collections.singletonList( createFormField( "name", FormField.TEXT ) ) );
             return builder.newInstance();
         }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceAssembler.java b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceAssembler.java
index 31cb4bc..e3d8e73 100644
--- a/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceAssembler.java
+++ b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceAssembler.java
@@ -70,7 +70,7 @@ public class DataSourceAssembler
     {
         module.importedServices( DataSource.class ).
             importedBy( ServiceInstanceImporter.class ).
-            setMetaInfo( StringIdentity.fromString( dataSourceServiceId ) ).
+            setMetaInfo( StringIdentity.identity( dataSourceServiceId ) ).
             identifiedBy( identity() ).
             visibleIn( visibility() );
         if( circuitBreaker != null )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/ExternalDataSourceAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/ExternalDataSourceAssembler.java b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/ExternalDataSourceAssembler.java
index ef6b93d..78cf765 100644
--- a/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/ExternalDataSourceAssembler.java
+++ b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/ExternalDataSourceAssembler.java
@@ -65,7 +65,7 @@ public class ExternalDataSourceAssembler
     {
         if( circuitBreaker != null )
         {
-            externalDataSource = DataSources.wrapWithCircuitBreaker( StringIdentity.fromString(identity()), externalDataSource, circuitBreaker );
+            externalDataSource = DataSources.wrapWithCircuitBreaker( StringIdentity.identity( identity() ), externalDataSource, circuitBreaker );
         }
         module.importedServices( DataSource.class ).
             identifiedBy( identity() ).

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/libraries/sql/src/main/java/org/apache/polygene/library/sql/jmx/DataSourceConfigurationManagerService.java
----------------------------------------------------------------------
diff --git a/libraries/sql/src/main/java/org/apache/polygene/library/sql/jmx/DataSourceConfigurationManagerService.java b/libraries/sql/src/main/java/org/apache/polygene/library/sql/jmx/DataSourceConfigurationManagerService.java
index e008589..ec49c23 100644
--- a/libraries/sql/src/main/java/org/apache/polygene/library/sql/jmx/DataSourceConfigurationManagerService.java
+++ b/libraries/sql/src/main/java/org/apache/polygene/library/sql/jmx/DataSourceConfigurationManagerService.java
@@ -175,7 +175,7 @@ public interface DataSourceConfigurationManagerService
             EditableConfiguration( MBeanInfo info, String identity, Map<String, AccessibleObject> propertyNames )
             {
                 this.info = info;
-                this.identity = StringIdentity.fromString( identity );
+                this.identity = StringIdentity.identity( identity );
                 this.propertyNames = propertyNames;
             }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext.java
----------------------------------------------------------------------
diff --git a/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext.java b/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext.java
index 5e7043f..9bd5878 100644
--- a/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext.java
+++ b/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext.java
@@ -133,8 +133,8 @@ public class PayBillsContext
             {
                 // Creditor retrieval could be a use case in itself...
                 List<BalanceData> creditors = new ArrayList<BalanceData>();
-                creditors.add( uowf.currentUnitOfWork().get( CreditorRolemap.class, StringIdentity.fromString( "BakerAccount" ) ) );
-                creditors.add( uowf.currentUnitOfWork().get( CreditorRolemap.class, StringIdentity.fromString( "ButcherAccount" ) ) );
+                creditors.add( uowf.currentUnitOfWork().get( CreditorRolemap.class, StringIdentity.identity( "BakerAccount" ) ) );
+                creditors.add( uowf.currentUnitOfWork().get( CreditorRolemap.class, StringIdentity.identity( "ButcherAccount" ) ) );
                 return creditors;
             }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext2.java
----------------------------------------------------------------------
diff --git a/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext2.java b/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext2.java
index 9a4fe3e..ba5a40d 100644
--- a/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext2.java
+++ b/samples/dci/src/main/java/org/apache/polygene/dci/moneytransfer/context/PayBillsContext2.java
@@ -126,8 +126,8 @@ public class PayBillsContext2
         {
             // Creditor retrieval could be a use case in itself...
             List<BalanceData> creditors = new ArrayList<>();
-            creditors.add( uowf.currentUnitOfWork().get( BalanceData.class, StringIdentity.fromString( "BakerAccount" ) ) );
-            creditors.add( uowf.currentUnitOfWork().get( BalanceData.class, StringIdentity.fromString( "ButcherAccount" ) ) );
+            creditors.add( uowf.currentUnitOfWork().get( BalanceData.class, StringIdentity.identity( "BakerAccount" ) ) );
+            creditors.add( uowf.currentUnitOfWork().get( BalanceData.class, StringIdentity.identity( "ButcherAccount" ) ) );
             return creditors;
         }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/samples/dci/src/test/java/org/apache/polygene/dci/moneytransfer/test/AccountIds.java
----------------------------------------------------------------------
diff --git a/samples/dci/src/test/java/org/apache/polygene/dci/moneytransfer/test/AccountIds.java b/samples/dci/src/test/java/org/apache/polygene/dci/moneytransfer/test/AccountIds.java
index 1e69a86..4456660 100644
--- a/samples/dci/src/test/java/org/apache/polygene/dci/moneytransfer/test/AccountIds.java
+++ b/samples/dci/src/test/java/org/apache/polygene/dci/moneytransfer/test/AccountIds.java
@@ -24,9 +24,9 @@ import org.apache.polygene.api.identity.StringIdentity;
 
 public interface AccountIds
 {
-    Identity SAVINGS_ACCOUNT_ID = StringIdentity.fromString( "SavingsAccountId" );
-    Identity CHECKING_ACCOUNT_ID = StringIdentity.fromString( "CheckingAccountId" );
-    Identity CREDITOR_ID1 = StringIdentity.fromString( "BakerAccount" );
-    Identity CREDITOR_ID2 = StringIdentity.fromString( "ButcherAccount" );
+    Identity SAVINGS_ACCOUNT_ID = StringIdentity.identity( "SavingsAccountId" );
+    Identity CHECKING_ACCOUNT_ID = StringIdentity.identity( "CheckingAccountId" );
+    Identity CREDITOR_ID1 = StringIdentity.identity( "BakerAccount" );
+    Identity CREDITOR_ID2 = StringIdentity.identity( "ButcherAccount" );
 
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Forums.java
----------------------------------------------------------------------
diff --git a/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Forums.java b/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Forums.java
index 5650376..cc70100 100644
--- a/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Forums.java
+++ b/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Forums.java
@@ -38,7 +38,7 @@ import static org.apache.polygene.api.query.QueryExpressions.templateFor;
 public interface Forums
     extends Administrators, EntityComposite
 {
-    Identity FORUMS_ID = StringIdentity.fromString( "forums" );
+    Identity FORUMS_ID = StringIdentity.identity( "forums" );
 
     Query<Forum> forums();
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Users.java
----------------------------------------------------------------------
diff --git a/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Users.java b/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Users.java
index 42f0205..aa16c40 100644
--- a/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Users.java
+++ b/samples/forum/src/main/java/org/apache/polygene/sample/forum/data/entity/Users.java
@@ -41,7 +41,7 @@ import static org.apache.polygene.api.query.QueryExpressions.templateFor;
 public interface Users
     extends EntityComposite, Events
 {
-    Identity USERS_ID = StringIdentity.fromString( "users" );
+    Identity USERS_ID = StringIdentity.identity( "users" );
 
     Query<User> users();
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/df5fd8af/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/BoardResource.java
----------------------------------------------------------------------
diff --git a/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/BoardResource.java b/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/BoardResource.java
index 7dd3e52..f748192 100644
--- a/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/BoardResource.java
+++ b/samples/forum/src/main/java/org/apache/polygene/sample/forum/rest/resource/forum/BoardResource.java
@@ -37,7 +37,7 @@ public class BoardResource
     public void resource( String segment )
         throws ResourceException
     {
-        selectFromManyAssociation( ObjectSelection.current().get( Forum.class ).boards(),  StringIdentity.fromString( segment ) );
+        selectFromManyAssociation( ObjectSelection.current().get( Forum.class ).boards(),  StringIdentity.identity( segment ) );
         subResource( BoardResource.class );
     }
 }


[48/50] polygene-java git commit: Fixed that Assmeblers tries to warn if assemble() method is forgotten.

Posted by ni...@apache.org.
Fixed that Assmeblers tries to warn if assemble() method is forgotten.


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/047380a3
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/047380a3
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/047380a3

Branch: refs/heads/es-jooq
Commit: 047380a3c36483c73d1c105c5ab465b45656fcea
Parents: 73fa7bd
Author: niclas <ni...@hedhman.org>
Authored: Mon Jul 10 11:32:32 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Mon Jul 10 11:32:32 2017 +0800

----------------------------------------------------------------------
 .../polygene/api/query/QueryBuilderFactory.java |  2 +
 .../apache/polygene/bootstrap/Assemblers.java   | 56 +++++++++++++++++---
 .../runtime/unitofwork/ModuleUnitOfWork.java    |  3 +-
 .../polygene/test/EntityTestAssembler.java      |  1 +
 .../ehcache/assembly/EhCacheAssembler.java      |  1 +
 .../memcache/assembly/MemcacheAssembler.java    |  1 +
 .../assembly/CassandraEntityStoreAssembler.java |  1 +
 .../file/assembly/FileEntityStoreAssembler.java |  1 +
 .../assembly/GeodeEntityStoreAssembler.java     |  1 +
 .../assembly/HazelcastEntityStoreAssembler.java |  1 +
 .../assembly/JCloudsEntityStoreAssembler.java   |  1 +
 .../jdbm/assembly/JdbmEntityStoreAssembler.java |  1 +
 .../assembly/LevelDBEntityStoreAssembler.java   |  1 +
 .../assembly/MemoryEntityStoreAssembler.java    |  1 +
 .../assembly/MongoDBEntityStoreAssembler.java   |  1 +
 .../PreferencesEntityStoreAssembler.java        |  1 +
 .../assembly/RedisEntityStoreAssembler.java     |  1 +
 .../riak/assembly/RiakEntityStoreAssembler.java |  1 +
 .../AbstractSQLEntityStoreAssembler.java        |  1 +
 .../assembly/ESClientIndexQueryAssembler.java   |  1 +
 .../assembly/ESClusterIndexQueryAssembler.java  |  1 +
 .../ESFilesystemIndexQueryAssembler.java        |  1 +
 .../solr/assembly/SolrIndexingAssembler.java    |  1 +
 .../AbstractSQLIndexQueryAssembler.java         |  1 +
 .../assembly/CodahaleMetricsAssembler.java      |  1 +
 .../JavaxJsonSerializationAssembler.java        |  1 +
 .../JavaxXmlSerializationAssembler.java         |  1 +
 .../MessagePackSerializationAssembler.java      |  1 +
 .../library/alarm/AlarmSystemAssembler.java     |  1 +
 .../fileconfig/FileConfigurationAssembler.java  |  1 +
 .../library/http/JettyServiceAssembler.java     |  1 +
 .../library/rest/client/RssReaderTest.java      | 52 ++++++++----------
 .../library/rest/admin/RestAssembler.java       |  1 +
 .../assembly/RestletCrudModuleAssembler.java    |  1 +
 .../shiro/assembly/PasswordDomainAssembler.java |  1 +
 .../assembly/PermissionsDomainAssembler.java    |  1 +
 .../assembly/StandaloneShiroAssembler.java      |  1 +
 .../shiro/web/assembly/HttpShiroAssembler.java  |  1 +
 .../sql/liquibase/LiquibaseAssembler.java       |  1 +
 ...bstractPooledDataSourceServiceAssembler.java |  1 +
 .../sql/assembly/DataSourceAssembler.java       |  1 +
 .../sql/assembly/DataSourceJMXAssembler.java    |  1 +
 .../assembly/ExternalDataSourceAssembler.java   |  1 +
 .../assembly/PersistingSequencingAssembler.java |  1 +
 .../assembly/TransientSequencingAssembler.java  |  1 +
 .../uid/uuid/assembly/UuidServiceAssembler.java |  1 +
 .../uowfile/bootstrap/UoWFileAssembler.java     |  1 +
 47 files changed, 117 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/core/api/src/main/java/org/apache/polygene/api/query/QueryBuilderFactory.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/query/QueryBuilderFactory.java b/core/api/src/main/java/org/apache/polygene/api/query/QueryBuilderFactory.java
index 19ee958..de1a3a1 100644
--- a/core/api/src/main/java/org/apache/polygene/api/query/QueryBuilderFactory.java
+++ b/core/api/src/main/java/org/apache/polygene/api/query/QueryBuilderFactory.java
@@ -19,6 +19,8 @@
  */
 package org.apache.polygene.api.query;
 
+import org.apache.polygene.api.indexing.MissingIndexingSystemException;
+
 /**
  * This is used to create QueryBuilders.
  *

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/core/bootstrap/src/main/java/org/apache/polygene/bootstrap/Assemblers.java
----------------------------------------------------------------------
diff --git a/core/bootstrap/src/main/java/org/apache/polygene/bootstrap/Assemblers.java b/core/bootstrap/src/main/java/org/apache/polygene/bootstrap/Assemblers.java
index b24a5e6..7efcd6d 100644
--- a/core/bootstrap/src/main/java/org/apache/polygene/bootstrap/Assemblers.java
+++ b/core/bootstrap/src/main/java/org/apache/polygene/bootstrap/Assemblers.java
@@ -117,7 +117,7 @@ public class Assemblers
      * Assembler with Visibility adapter.
      * @param <AssemblerType> Parameterized type of Assembler
      */
-    public static abstract class Visibility<AssemblerType>
+    public static abstract class Visibility<AssemblerType> extends AssembleChecker
         implements Visible<AssemblerType>
     {
         private org.apache.polygene.api.common.Visibility visibility = org.apache.polygene.api.common.Visibility.module;
@@ -141,7 +141,7 @@ public class Assemblers
      * Assembler with Identity adapter.
      * @param <AssemblerType> Parameterized type of Assembler
      */
-    public static abstract class Identity<AssemblerType>
+    public static abstract class Identity<AssemblerType> extends AssembleChecker
         implements Identifiable<AssemblerType>
     {
         private String identity;
@@ -171,7 +171,7 @@ public class Assemblers
      * Assembler with Configuration adapter.
      * @param <AssemblerType> Parameterized type of Assembler
      */
-    public static abstract class Config<AssemblerType>
+    public static abstract class Config<AssemblerType> extends AssembleChecker
         implements Configurable<AssemblerType>
     {
         private ModuleAssembly configModule = null;
@@ -210,7 +210,7 @@ public class Assemblers
      * Assembler with Visibility and Identity adapter.
      * @param <AssemblerType> Parameterized type of Assembler
      */
-    public static abstract class VisibilityIdentity<AssemblerType>
+    public static abstract class VisibilityIdentity<AssemblerType> extends AssembleChecker
         implements Visible<AssemblerType>,
                    Identifiable<AssemblerType>
     {
@@ -256,7 +256,7 @@ public class Assemblers
      * Assembler with Visibility and Configuration adapter.
      * @param <AssemblerType> Parameterized type of Assembler
      */
-    public static abstract class VisibilityConfig<AssemblerType>
+    public static abstract class VisibilityConfig<AssemblerType> extends AssembleChecker
         implements Visible<AssemblerType>,
                    Configurable<AssemblerType>
     {
@@ -311,7 +311,7 @@ public class Assemblers
      * Assembler with Identity and Configuration adapter.
      * @param <AssemblerType> Parameterized type of Assembler
      */
-    public static abstract class IdentityConfig<AssemblerType>
+    public static abstract class IdentityConfig<AssemblerType> extends AssembleChecker
         implements Identifiable<AssemblerType>,
                    Configurable<AssemblerType>
     {
@@ -372,7 +372,7 @@ public class Assemblers
      * Assembler with Visibility, Identity and Configuation adapter.
      * @param <AssemblerType> Parameterized type of Assembler
      */
-    public static abstract class VisibilityIdentityConfig<AssemblerType>
+    public static abstract class VisibilityIdentityConfig<AssemblerType> extends AssembleChecker
         implements Visible<AssemblerType>,
                    Identifiable<AssemblerType>,
                    Configurable<AssemblerType>
@@ -445,4 +445,46 @@ public class Assemblers
         }
     }
 
+    public static abstract class AssembleChecker
+        implements Assembler
+    {
+        private boolean assembled = false;
+
+        @Override
+        public void assemble( ModuleAssembly module )
+            throws AssemblyException
+        {
+            assembled = true;
+        }
+
+        @Override
+        protected void finalize()
+            throws Throwable
+        {
+            super.finalize();
+            if( !assembled )
+            {
+                System.err.println( "WARNING!!!!!" );
+                System.err.println( "############################################################################" );
+                System.err.println( "##" );
+                System.err.println( "##  The " + getClass().getName() + " assembler was not assembled." );
+                System.err.println( "##" );
+                System.err.println( "##  Expect that some functionality to be missing or incorrect." );
+                System.err.println( "##" );
+                if( getClass().getName().startsWith( "org.apache.polygene" ))
+                {
+                    System.err.println( "## When instantiating a provided Assembler, you must call the assemble(module)" );
+                    System.err.println( "## method after setting the options. This was not done." );
+                }
+                else
+                {
+                    System.err.println( "## When overriding any helper class in org.apache.polygene.bootstrap.Assemblers" );
+                    System.err.println( "## you must call super.assemble(module) in the assmeble(ModuleAssembly module)" );
+                    System.err.println( "## method. This was not done, OR that you forgot to call assemble() method " );
+                    System.err.println( "## after instantiating and setting the options." );
+                }
+                System.err.println( "############################################################################" );
+            }
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java b/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
index 0cf26f0..f72cb37 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
@@ -547,7 +547,8 @@ public class ModuleUnitOfWork
         return ( (EntityInstance) compositeInstanceOf( (Composite) entity ) ).entityState();
     }
 
-    private static class UoWQuerySource implements QuerySource
+    private static class UoWQuerySource
+        implements QuerySource
     {
         private final ModuleUnitOfWork moduleUnitOfWork;
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/core/testsupport/src/main/java/org/apache/polygene/test/EntityTestAssembler.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/EntityTestAssembler.java b/core/testsupport/src/main/java/org/apache/polygene/test/EntityTestAssembler.java
index 36827b8..4dbe625 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/EntityTestAssembler.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/EntityTestAssembler.java
@@ -42,6 +42,7 @@ public class EntityTestAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration service = module.services( MemoryEntityStoreService.class ).visibleIn( visibility() );
         if( hasIdentity() )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/cache-ehcache/src/main/java/org/apache/polygene/cache/ehcache/assembly/EhCacheAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/cache-ehcache/src/main/java/org/apache/polygene/cache/ehcache/assembly/EhCacheAssembler.java b/extensions/cache-ehcache/src/main/java/org/apache/polygene/cache/ehcache/assembly/EhCacheAssembler.java
index 8a4d4f8..e99a379 100644
--- a/extensions/cache-ehcache/src/main/java/org/apache/polygene/cache/ehcache/assembly/EhCacheAssembler.java
+++ b/extensions/cache-ehcache/src/main/java/org/apache/polygene/cache/ehcache/assembly/EhCacheAssembler.java
@@ -31,6 +31,7 @@ public class EhCacheAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration service = module.services( EhCachePoolService.class ).visibleIn( visibility() );
         if( hasIdentity() )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/cache-memcache/src/main/java/org/apache/polygene/cache/memcache/assembly/MemcacheAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/cache-memcache/src/main/java/org/apache/polygene/cache/memcache/assembly/MemcacheAssembler.java b/extensions/cache-memcache/src/main/java/org/apache/polygene/cache/memcache/assembly/MemcacheAssembler.java
index 92a76db..20886ec 100644
--- a/extensions/cache-memcache/src/main/java/org/apache/polygene/cache/memcache/assembly/MemcacheAssembler.java
+++ b/extensions/cache-memcache/src/main/java/org/apache/polygene/cache/memcache/assembly/MemcacheAssembler.java
@@ -34,6 +34,7 @@ public class MemcacheAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration service = module.services( MemcachePoolService.class ).visibleIn( visibility() );
         if( hasIdentity() )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/assembly/CassandraEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/assembly/CassandraEntityStoreAssembler.java b/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/assembly/CassandraEntityStoreAssembler.java
index ab6193f..51f726b 100644
--- a/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/assembly/CassandraEntityStoreAssembler.java
+++ b/extensions/entitystore-cassandra/src/main/java/org/apache/polygene/entitystore/cassandra/assembly/CassandraEntityStoreAssembler.java
@@ -30,6 +30,7 @@ public class CassandraEntityStoreAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         module.services( CassandraEntityStoreService.class )
               .visibleIn( visibility() )
               .identifiedBy( identity() )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/entitystore-file/src/main/java/org/apache/polygene/entitystore/file/assembly/FileEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-file/src/main/java/org/apache/polygene/entitystore/file/assembly/FileEntityStoreAssembler.java b/extensions/entitystore-file/src/main/java/org/apache/polygene/entitystore/file/assembly/FileEntityStoreAssembler.java
index 13e1ad8..40fdf35 100644
--- a/extensions/entitystore-file/src/main/java/org/apache/polygene/entitystore/file/assembly/FileEntityStoreAssembler.java
+++ b/extensions/entitystore-file/src/main/java/org/apache/polygene/entitystore/file/assembly/FileEntityStoreAssembler.java
@@ -31,6 +31,7 @@ public class FileEntityStoreAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration service = module.services( FileEntityStoreService.class ).visibleIn( visibility() );
         if( hasIdentity() )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/entitystore-geode/src/main/java/org/apache/polygene/entitystore/geode/assembly/GeodeEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-geode/src/main/java/org/apache/polygene/entitystore/geode/assembly/GeodeEntityStoreAssembler.java b/extensions/entitystore-geode/src/main/java/org/apache/polygene/entitystore/geode/assembly/GeodeEntityStoreAssembler.java
index fbb68de..8bc98c9 100644
--- a/extensions/entitystore-geode/src/main/java/org/apache/polygene/entitystore/geode/assembly/GeodeEntityStoreAssembler.java
+++ b/extensions/entitystore-geode/src/main/java/org/apache/polygene/entitystore/geode/assembly/GeodeEntityStoreAssembler.java
@@ -34,6 +34,7 @@ public class GeodeEntityStoreAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration service = module.services( GeodeEntityStoreService.class ).visibleIn( visibility() );
         if( hasIdentity() )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/entitystore-hazelcast/src/main/java/org/apache/polygene/entitystore/hazelcast/assembly/HazelcastEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-hazelcast/src/main/java/org/apache/polygene/entitystore/hazelcast/assembly/HazelcastEntityStoreAssembler.java b/extensions/entitystore-hazelcast/src/main/java/org/apache/polygene/entitystore/hazelcast/assembly/HazelcastEntityStoreAssembler.java
index ae5ad69..be0c8a8 100644
--- a/extensions/entitystore-hazelcast/src/main/java/org/apache/polygene/entitystore/hazelcast/assembly/HazelcastEntityStoreAssembler.java
+++ b/extensions/entitystore-hazelcast/src/main/java/org/apache/polygene/entitystore/hazelcast/assembly/HazelcastEntityStoreAssembler.java
@@ -31,6 +31,7 @@ public class HazelcastEntityStoreAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration service = module.services( HazelcastEntityStoreService.class ).
             visibleIn( visibility() ).
             instantiateOnStartup();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/entitystore-jclouds/src/main/java/org/apache/polygene/entitystore/jclouds/assembly/JCloudsEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jclouds/src/main/java/org/apache/polygene/entitystore/jclouds/assembly/JCloudsEntityStoreAssembler.java b/extensions/entitystore-jclouds/src/main/java/org/apache/polygene/entitystore/jclouds/assembly/JCloudsEntityStoreAssembler.java
index d586f1b..aba1e32 100644
--- a/extensions/entitystore-jclouds/src/main/java/org/apache/polygene/entitystore/jclouds/assembly/JCloudsEntityStoreAssembler.java
+++ b/extensions/entitystore-jclouds/src/main/java/org/apache/polygene/entitystore/jclouds/assembly/JCloudsEntityStoreAssembler.java
@@ -32,6 +32,7 @@ public class JCloudsEntityStoreAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration service = module.services( JCloudsEntityStoreService.class ).
             visibleIn( visibility() ).
             instantiateOnStartup();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/entitystore-jdbm/src/main/java/org/apache/polygene/entitystore/jdbm/assembly/JdbmEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jdbm/src/main/java/org/apache/polygene/entitystore/jdbm/assembly/JdbmEntityStoreAssembler.java b/extensions/entitystore-jdbm/src/main/java/org/apache/polygene/entitystore/jdbm/assembly/JdbmEntityStoreAssembler.java
index 175b6db..f48d3cb 100644
--- a/extensions/entitystore-jdbm/src/main/java/org/apache/polygene/entitystore/jdbm/assembly/JdbmEntityStoreAssembler.java
+++ b/extensions/entitystore-jdbm/src/main/java/org/apache/polygene/entitystore/jdbm/assembly/JdbmEntityStoreAssembler.java
@@ -31,6 +31,7 @@ public class JdbmEntityStoreAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration service = module.services( JdbmEntityStoreService.class ).visibleIn( visibility() );
         if( hasIdentity() )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/entitystore-leveldb/src/main/java/org/apache/polygene/entitystore/leveldb/assembly/LevelDBEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-leveldb/src/main/java/org/apache/polygene/entitystore/leveldb/assembly/LevelDBEntityStoreAssembler.java b/extensions/entitystore-leveldb/src/main/java/org/apache/polygene/entitystore/leveldb/assembly/LevelDBEntityStoreAssembler.java
index 4f8f2b7..1a8a26a 100644
--- a/extensions/entitystore-leveldb/src/main/java/org/apache/polygene/entitystore/leveldb/assembly/LevelDBEntityStoreAssembler.java
+++ b/extensions/entitystore-leveldb/src/main/java/org/apache/polygene/entitystore/leveldb/assembly/LevelDBEntityStoreAssembler.java
@@ -34,6 +34,7 @@ public class LevelDBEntityStoreAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration service = module.services( LevelDBEntityStoreService.class ).visibleIn( visibility() );
         if( hasIdentity() )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/entitystore-memory/src/main/java/org/apache/polygene/entitystore/memory/assembly/MemoryEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-memory/src/main/java/org/apache/polygene/entitystore/memory/assembly/MemoryEntityStoreAssembler.java b/extensions/entitystore-memory/src/main/java/org/apache/polygene/entitystore/memory/assembly/MemoryEntityStoreAssembler.java
index b593442..6b11a85 100644
--- a/extensions/entitystore-memory/src/main/java/org/apache/polygene/entitystore/memory/assembly/MemoryEntityStoreAssembler.java
+++ b/extensions/entitystore-memory/src/main/java/org/apache/polygene/entitystore/memory/assembly/MemoryEntityStoreAssembler.java
@@ -33,6 +33,7 @@ public class MemoryEntityStoreAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration service = module.services( MemoryEntityStoreService.class ).visibleIn( visibility() );
         if( hasIdentity() )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/entitystore-mongodb/src/main/java/org/apache/polygene/entitystore/mongodb/assembly/MongoDBEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-mongodb/src/main/java/org/apache/polygene/entitystore/mongodb/assembly/MongoDBEntityStoreAssembler.java b/extensions/entitystore-mongodb/src/main/java/org/apache/polygene/entitystore/mongodb/assembly/MongoDBEntityStoreAssembler.java
index c3d40ec..f212a8d 100644
--- a/extensions/entitystore-mongodb/src/main/java/org/apache/polygene/entitystore/mongodb/assembly/MongoDBEntityStoreAssembler.java
+++ b/extensions/entitystore-mongodb/src/main/java/org/apache/polygene/entitystore/mongodb/assembly/MongoDBEntityStoreAssembler.java
@@ -31,6 +31,7 @@ public class MongoDBEntityStoreAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration service = module.services( MongoDBEntityStoreService.class ).visibleIn( visibility() );
         if( hasIdentity() )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/entitystore-preferences/src/main/java/org/apache/polygene/entitystore/preferences/assembly/PreferencesEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-preferences/src/main/java/org/apache/polygene/entitystore/preferences/assembly/PreferencesEntityStoreAssembler.java b/extensions/entitystore-preferences/src/main/java/org/apache/polygene/entitystore/preferences/assembly/PreferencesEntityStoreAssembler.java
index f3b0de5..4f6725a 100644
--- a/extensions/entitystore-preferences/src/main/java/org/apache/polygene/entitystore/preferences/assembly/PreferencesEntityStoreAssembler.java
+++ b/extensions/entitystore-preferences/src/main/java/org/apache/polygene/entitystore/preferences/assembly/PreferencesEntityStoreAssembler.java
@@ -31,6 +31,7 @@ public class PreferencesEntityStoreAssembler extends Assemblers.VisibilityIdenti
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         String applicationName = module.layer().application().name();
 
         Preferences root = Preferences.userRoot();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/entitystore-redis/src/main/java/org/apache/polygene/entitystore/redis/assembly/RedisEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-redis/src/main/java/org/apache/polygene/entitystore/redis/assembly/RedisEntityStoreAssembler.java b/extensions/entitystore-redis/src/main/java/org/apache/polygene/entitystore/redis/assembly/RedisEntityStoreAssembler.java
index 4f521a2..7c1ebca 100644
--- a/extensions/entitystore-redis/src/main/java/org/apache/polygene/entitystore/redis/assembly/RedisEntityStoreAssembler.java
+++ b/extensions/entitystore-redis/src/main/java/org/apache/polygene/entitystore/redis/assembly/RedisEntityStoreAssembler.java
@@ -34,6 +34,7 @@ public class RedisEntityStoreAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration service = module.services( RedisEntityStoreService.class ).visibleIn( visibility() );
         if( hasIdentity() )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/entitystore-riak/src/main/java/org/apache/polygene/entitystore/riak/assembly/RiakEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-riak/src/main/java/org/apache/polygene/entitystore/riak/assembly/RiakEntityStoreAssembler.java b/extensions/entitystore-riak/src/main/java/org/apache/polygene/entitystore/riak/assembly/RiakEntityStoreAssembler.java
index ce538f6..9c67e31 100644
--- a/extensions/entitystore-riak/src/main/java/org/apache/polygene/entitystore/riak/assembly/RiakEntityStoreAssembler.java
+++ b/extensions/entitystore-riak/src/main/java/org/apache/polygene/entitystore/riak/assembly/RiakEntityStoreAssembler.java
@@ -33,6 +33,7 @@ public class RiakEntityStoreAssembler
     @Override
     public void assemble(ModuleAssembly module)
     {
+        super.assemble( module );
         ServiceDeclaration service = module.services( RiakEntityStoreService.class ).
             withMixins( RiakEntityStoreMixin.class ).
                 visibleIn( visibility() );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java b/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java
index c25a3cd..0f86490 100644
--- a/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java
+++ b/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java
@@ -44,6 +44,7 @@ public abstract class AbstractSQLEntityStoreAssembler<AssemblerType>
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         SQLDialect dialect = getSQLDialect();
         if( dialect == null )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/indexing-elasticsearch/src/main/java/org/apache/polygene/index/elasticsearch/assembly/ESClientIndexQueryAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-elasticsearch/src/main/java/org/apache/polygene/index/elasticsearch/assembly/ESClientIndexQueryAssembler.java b/extensions/indexing-elasticsearch/src/main/java/org/apache/polygene/index/elasticsearch/assembly/ESClientIndexQueryAssembler.java
index 1a8a3a2..7b118d4 100644
--- a/extensions/indexing-elasticsearch/src/main/java/org/apache/polygene/index/elasticsearch/assembly/ESClientIndexQueryAssembler.java
+++ b/extensions/indexing-elasticsearch/src/main/java/org/apache/polygene/index/elasticsearch/assembly/ESClientIndexQueryAssembler.java
@@ -36,6 +36,7 @@ public class ESClientIndexQueryAssembler
     @Override
     public void assemble( final ModuleAssembly module )
     {
+        super.assemble( module );
         module.services( ESClientIndexQueryService.class )
               .taggedWith( "elasticsearch", "query", "indexing" )
               .identifiedBy( identity() )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/indexing-elasticsearch/src/main/java/org/apache/polygene/index/elasticsearch/assembly/ESClusterIndexQueryAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-elasticsearch/src/main/java/org/apache/polygene/index/elasticsearch/assembly/ESClusterIndexQueryAssembler.java b/extensions/indexing-elasticsearch/src/main/java/org/apache/polygene/index/elasticsearch/assembly/ESClusterIndexQueryAssembler.java
index 9056cd3..2158059 100644
--- a/extensions/indexing-elasticsearch/src/main/java/org/apache/polygene/index/elasticsearch/assembly/ESClusterIndexQueryAssembler.java
+++ b/extensions/indexing-elasticsearch/src/main/java/org/apache/polygene/index/elasticsearch/assembly/ESClusterIndexQueryAssembler.java
@@ -30,6 +30,7 @@ public class ESClusterIndexQueryAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         module.services( ESClusterIndexQueryService.class )
               .taggedWith( "elasticsearch", "query", "indexing" )
               .identifiedBy( identity() )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/indexing-elasticsearch/src/main/java/org/apache/polygene/index/elasticsearch/assembly/ESFilesystemIndexQueryAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-elasticsearch/src/main/java/org/apache/polygene/index/elasticsearch/assembly/ESFilesystemIndexQueryAssembler.java b/extensions/indexing-elasticsearch/src/main/java/org/apache/polygene/index/elasticsearch/assembly/ESFilesystemIndexQueryAssembler.java
index 1dfb9bb..d401321 100644
--- a/extensions/indexing-elasticsearch/src/main/java/org/apache/polygene/index/elasticsearch/assembly/ESFilesystemIndexQueryAssembler.java
+++ b/extensions/indexing-elasticsearch/src/main/java/org/apache/polygene/index/elasticsearch/assembly/ESFilesystemIndexQueryAssembler.java
@@ -30,6 +30,7 @@ public class ESFilesystemIndexQueryAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         module.services( ESFilesystemIndexQueryService.class )
               .taggedWith( "elasticsearch", "query", "indexing" )
               .identifiedBy( identity() )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/indexing-solr/src/main/java/org/apache/polygene/index/solr/assembly/SolrIndexingAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-solr/src/main/java/org/apache/polygene/index/solr/assembly/SolrIndexingAssembler.java b/extensions/indexing-solr/src/main/java/org/apache/polygene/index/solr/assembly/SolrIndexingAssembler.java
index 4932cdc..ab0e3c8 100644
--- a/extensions/indexing-solr/src/main/java/org/apache/polygene/index/solr/assembly/SolrIndexingAssembler.java
+++ b/extensions/indexing-solr/src/main/java/org/apache/polygene/index/solr/assembly/SolrIndexingAssembler.java
@@ -31,6 +31,7 @@ public class SolrIndexingAssembler extends Assemblers.VisibilityIdentityConfig<S
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         module.services( EmbeddedSolrService.class ).identifiedBy( "solr" ).instantiateOnStartup();
         module.services( SolrQueryService.class )
               .taggedWith( "solr", "search", "indexing", "query" )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/assembly/AbstractSQLIndexQueryAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/assembly/AbstractSQLIndexQueryAssembler.java b/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/assembly/AbstractSQLIndexQueryAssembler.java
index b5e861c..6c931be 100644
--- a/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/assembly/AbstractSQLIndexQueryAssembler.java
+++ b/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/assembly/AbstractSQLIndexQueryAssembler.java
@@ -62,6 +62,7 @@ public abstract class AbstractSQLIndexQueryAssembler<AssemblerType> extends Asse
     @Override
     public final void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         try
         {
             SQLVendor sqlVendor = getSQLVendor();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/metrics-codahale/src/main/java/org/apache/polygene/metrics/codahale/assembly/CodahaleMetricsAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/metrics-codahale/src/main/java/org/apache/polygene/metrics/codahale/assembly/CodahaleMetricsAssembler.java b/extensions/metrics-codahale/src/main/java/org/apache/polygene/metrics/codahale/assembly/CodahaleMetricsAssembler.java
index 0281d12..f2bd5d6 100644
--- a/extensions/metrics-codahale/src/main/java/org/apache/polygene/metrics/codahale/assembly/CodahaleMetricsAssembler.java
+++ b/extensions/metrics-codahale/src/main/java/org/apache/polygene/metrics/codahale/assembly/CodahaleMetricsAssembler.java
@@ -108,6 +108,7 @@ public class CodahaleMetricsAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration service =
             module.services( CodahaleMetricsProvider.class )
                   .setMetaInfo( declaration )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/serialization-javaxjson/src/main/java/org/apache/polygene/serialization/javaxjson/assembly/JavaxJsonSerializationAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/serialization-javaxjson/src/main/java/org/apache/polygene/serialization/javaxjson/assembly/JavaxJsonSerializationAssembler.java b/extensions/serialization-javaxjson/src/main/java/org/apache/polygene/serialization/javaxjson/assembly/JavaxJsonSerializationAssembler.java
index 10a8622..0bd397c 100644
--- a/extensions/serialization-javaxjson/src/main/java/org/apache/polygene/serialization/javaxjson/assembly/JavaxJsonSerializationAssembler.java
+++ b/extensions/serialization-javaxjson/src/main/java/org/apache/polygene/serialization/javaxjson/assembly/JavaxJsonSerializationAssembler.java
@@ -45,6 +45,7 @@ public class JavaxJsonSerializationAssembler extends Assemblers.VisibilityIdenti
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration declaration = module.services( JavaxJsonSerialization.class )
                                                .withTypes( Serialization.class,
                                                            Serializer.class, Deserializer.class,

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/assembly/JavaxXmlSerializationAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/assembly/JavaxXmlSerializationAssembler.java b/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/assembly/JavaxXmlSerializationAssembler.java
index e6a69f5..2385715 100644
--- a/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/assembly/JavaxXmlSerializationAssembler.java
+++ b/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/assembly/JavaxXmlSerializationAssembler.java
@@ -45,6 +45,7 @@ public class JavaxXmlSerializationAssembler extends Assemblers.VisibilityIdentit
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration declaration = module.services( JavaxXmlSerialization.class )
                                                .withTypes( Serialization.class,
                                                            Serializer.class, Deserializer.class,

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/extensions/serialization-messagepack/src/main/java/org/apache/polygene/serialization/messagepack/assembly/MessagePackSerializationAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/serialization-messagepack/src/main/java/org/apache/polygene/serialization/messagepack/assembly/MessagePackSerializationAssembler.java b/extensions/serialization-messagepack/src/main/java/org/apache/polygene/serialization/messagepack/assembly/MessagePackSerializationAssembler.java
index 7f87458..a262e80 100644
--- a/extensions/serialization-messagepack/src/main/java/org/apache/polygene/serialization/messagepack/assembly/MessagePackSerializationAssembler.java
+++ b/extensions/serialization-messagepack/src/main/java/org/apache/polygene/serialization/messagepack/assembly/MessagePackSerializationAssembler.java
@@ -41,6 +41,7 @@ public class MessagePackSerializationAssembler extends Assemblers.VisibilityIden
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration declaration = module.services( MessagePackSerialization.class )
                                                .withTypes( Serialization.class,
                                                            Serializer.class, Deserializer.class,

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/libraries/alarm/src/main/java/org/apache/polygene/library/alarm/AlarmSystemAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/alarm/src/main/java/org/apache/polygene/library/alarm/AlarmSystemAssembler.java b/libraries/alarm/src/main/java/org/apache/polygene/library/alarm/AlarmSystemAssembler.java
index 73d407b..405ca99 100644
--- a/libraries/alarm/src/main/java/org/apache/polygene/library/alarm/AlarmSystemAssembler.java
+++ b/libraries/alarm/src/main/java/org/apache/polygene/library/alarm/AlarmSystemAssembler.java
@@ -29,6 +29,7 @@ public class AlarmSystemAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration alarmSystem = module.services( AlarmSystemService.class ).visibleIn( visibility() );
         if( hasIdentity() )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/libraries/fileconfig/src/main/java/org/apache/polygene/library/fileconfig/FileConfigurationAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/fileconfig/src/main/java/org/apache/polygene/library/fileconfig/FileConfigurationAssembler.java b/libraries/fileconfig/src/main/java/org/apache/polygene/library/fileconfig/FileConfigurationAssembler.java
index 6270502..bdc8d89 100644
--- a/libraries/fileconfig/src/main/java/org/apache/polygene/library/fileconfig/FileConfigurationAssembler.java
+++ b/libraries/fileconfig/src/main/java/org/apache/polygene/library/fileconfig/FileConfigurationAssembler.java
@@ -40,6 +40,7 @@ public class FileConfigurationAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration service = module.services( FileConfigurationService.class ).visibleIn( visibility() );
         if( hasIdentity() )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/libraries/http/src/main/java/org/apache/polygene/library/http/JettyServiceAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/http/src/main/java/org/apache/polygene/library/http/JettyServiceAssembler.java b/libraries/http/src/main/java/org/apache/polygene/library/http/JettyServiceAssembler.java
index d9103ce..d7ebf49 100644
--- a/libraries/http/src/main/java/org/apache/polygene/library/http/JettyServiceAssembler.java
+++ b/libraries/http/src/main/java/org/apache/polygene/library/http/JettyServiceAssembler.java
@@ -54,6 +54,7 @@ public class JettyServiceAssembler
     @Override
     public final void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration service = module.services( httpService() ).
             visibleIn( visibility() ).
             instantiateOnStartup();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/libraries/rest-client/src/test/java/org/apache/polygene/library/rest/client/RssReaderTest.java
----------------------------------------------------------------------
diff --git a/libraries/rest-client/src/test/java/org/apache/polygene/library/rest/client/RssReaderTest.java b/libraries/rest-client/src/test/java/org/apache/polygene/library/rest/client/RssReaderTest.java
index da9c070..a1fb7a0 100644
--- a/libraries/rest-client/src/test/java/org/apache/polygene/library/rest/client/RssReaderTest.java
+++ b/libraries/rest-client/src/test/java/org/apache/polygene/library/rest/client/RssReaderTest.java
@@ -33,15 +33,12 @@ import org.apache.polygene.library.rest.client.api.ContextResourceClient;
 import org.apache.polygene.library.rest.client.api.ContextResourceClientFactory;
 import org.apache.polygene.library.rest.client.api.ErrorHandler;
 import org.apache.polygene.library.rest.client.api.HandlerCommand;
-import org.apache.polygene.library.rest.client.spi.ResponseHandler;
-import org.apache.polygene.library.rest.client.spi.ResponseReader;
 import org.apache.polygene.library.rest.client.spi.ResultHandler;
 import org.apache.polygene.library.rest.common.ValueAssembler;
 import org.apache.polygene.test.AbstractPolygeneTest;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.restlet.Client;
-import org.restlet.Response;
 import org.restlet.data.Protocol;
 import org.restlet.data.Reference;
 import org.restlet.resource.ResourceException;
@@ -67,6 +64,7 @@ public class RssReaderTest
         assumeConnectivity( "github.com", 443 );
     }
 
+    @SuppressWarnings( "FieldCanBeLocal" )
     private ContextResourceClient crc;
 
     @Override
@@ -84,42 +82,34 @@ public class RssReaderTest
     public void testReadRssFeed()
     {
         Client client = new Client( Protocol.HTTPS );
-        Reference ref = new Reference( "https://github.com/Qi4j/qi4j-sdk/commits/develop.atom" );
+        Reference ref = new Reference( "https://github.com/Apache/polygene-java/commits/develop.atom" );
         ContextResourceClientFactory contextResourceClientFactory = objectFactory.newObject( ContextResourceClientFactory.class, client );
 
-        contextResourceClientFactory.registerResponseReader( new ResponseReader()
-        {
-            @Override
-            public Object readResponse( Response response, Class<?> resultType )
-                throws ResourceException
+        contextResourceClientFactory.registerResponseReader( ( response, resultType ) -> {
+            if( resultType.equals( Document.class ) )
             {
-                if( resultType.equals( Document.class ) )
+                try
                 {
-                    try
-                    {
-                        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
-                        documentBuilderFactory.setNamespaceAware( false );
-                        return documentBuilderFactory.newDocumentBuilder().parse( response.getEntity().getStream() );
-                    }
-                    catch( Exception e )
-                    {
-                        throw new ResourceException( e );
-                    }
+                    DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
+                    documentBuilderFactory.setNamespaceAware( false );
+                    return documentBuilderFactory.newDocumentBuilder().parse( response.getEntity().getStream() );
+                }
+                catch( Exception e )
+                {
+                    throw new ResourceException( e );
                 }
-
-                return null;
             }
+
+            return null;
         } );
 
-        contextResourceClientFactory.setErrorHandler( new ErrorHandler().onError( ErrorHandler.RECOVERABLE_ERROR, new ResponseHandler()
-        {
-            @Override
-            public HandlerCommand handleResponse( Response response, ContextResourceClient client )
-            {
-                System.out.println( ">> REFRESH on recoverable error: " + response.getStatus() );
-                return refresh();
-            }
-        } ) );
+        contextResourceClientFactory.setErrorHandler(
+            new ErrorHandler()
+                .onError( ErrorHandler.RECOVERABLE_ERROR,
+                          ( response, client1 ) -> {
+                              System.out.println( ">> REFRESH on recoverable error: " + response.getStatus() );
+                              return refresh();
+                          } ) );
 
         crc = contextResourceClientFactory.newClient( ref );
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/RestAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/RestAssembler.java b/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/RestAssembler.java
index 9641806..0bd9782 100644
--- a/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/RestAssembler.java
+++ b/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/RestAssembler.java
@@ -29,6 +29,7 @@ public class RestAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         module.objects( RestApplication.class ).visibleIn( visibility() );
         module.objects( PolygeneFinder.class,
                         EntitiesResource.class,

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestletCrudModuleAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestletCrudModuleAssembler.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestletCrudModuleAssembler.java
index 490804b..f6c07e0 100644
--- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestletCrudModuleAssembler.java
+++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestletCrudModuleAssembler.java
@@ -52,6 +52,7 @@ public class RestletCrudModuleAssembler extends Assemblers.VisibilityIdentity<Re
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration declaration = module
             .addServices( repositoryType )
             .visibleIn( Visibility.application )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/libraries/shiro-core/src/main/java/org/apache/polygene/library/shiro/assembly/PasswordDomainAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/shiro-core/src/main/java/org/apache/polygene/library/shiro/assembly/PasswordDomainAssembler.java b/libraries/shiro-core/src/main/java/org/apache/polygene/library/shiro/assembly/PasswordDomainAssembler.java
index df2e3e4..f9c4a2d 100644
--- a/libraries/shiro-core/src/main/java/org/apache/polygene/library/shiro/assembly/PasswordDomainAssembler.java
+++ b/libraries/shiro-core/src/main/java/org/apache/polygene/library/shiro/assembly/PasswordDomainAssembler.java
@@ -32,6 +32,7 @@ public class PasswordDomainAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         module.entities( PasswordSecurable.class ).visibleIn( visibility() );
         ServiceDeclaration service = module.services( PasswordRealmService.class ).
             instantiateOnStartup().

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/libraries/shiro-core/src/main/java/org/apache/polygene/library/shiro/assembly/PermissionsDomainAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/shiro-core/src/main/java/org/apache/polygene/library/shiro/assembly/PermissionsDomainAssembler.java b/libraries/shiro-core/src/main/java/org/apache/polygene/library/shiro/assembly/PermissionsDomainAssembler.java
index 1848a69..6609085 100644
--- a/libraries/shiro-core/src/main/java/org/apache/polygene/library/shiro/assembly/PermissionsDomainAssembler.java
+++ b/libraries/shiro-core/src/main/java/org/apache/polygene/library/shiro/assembly/PermissionsDomainAssembler.java
@@ -32,6 +32,7 @@ public class PermissionsDomainAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         module.entities( Role.class, RoleAssignment.class, RoleAssignee.class ).
             visibleIn( visibility() );
         module.services( RoleFactory.class ).

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/libraries/shiro-core/src/main/java/org/apache/polygene/library/shiro/assembly/StandaloneShiroAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/shiro-core/src/main/java/org/apache/polygene/library/shiro/assembly/StandaloneShiroAssembler.java b/libraries/shiro-core/src/main/java/org/apache/polygene/library/shiro/assembly/StandaloneShiroAssembler.java
index 25ca7ba..9edf580 100644
--- a/libraries/shiro-core/src/main/java/org/apache/polygene/library/shiro/assembly/StandaloneShiroAssembler.java
+++ b/libraries/shiro-core/src/main/java/org/apache/polygene/library/shiro/assembly/StandaloneShiroAssembler.java
@@ -31,6 +31,7 @@ public class StandaloneShiroAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration service = module.services( IniSecurityManagerService.class ).
             visibleIn( visibility() ).
             instantiateOnStartup();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/libraries/shiro-web/src/main/java/org/apache/polygene/library/shiro/web/assembly/HttpShiroAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/shiro-web/src/main/java/org/apache/polygene/library/shiro/web/assembly/HttpShiroAssembler.java b/libraries/shiro-web/src/main/java/org/apache/polygene/library/shiro/web/assembly/HttpShiroAssembler.java
index 01630a0..8037332 100644
--- a/libraries/shiro-web/src/main/java/org/apache/polygene/library/shiro/web/assembly/HttpShiroAssembler.java
+++ b/libraries/shiro-web/src/main/java/org/apache/polygene/library/shiro/web/assembly/HttpShiroAssembler.java
@@ -40,6 +40,7 @@ public class HttpShiroAssembler extends Assemblers.Config<HttpShiroAssembler>
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         addContextListeners(
             listen().with( EnvironmentLoaderService.class ) )
             .to( module );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/libraries/sql-liquibase/src/main/java/org/apache/polygene/library/sql/liquibase/LiquibaseAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/sql-liquibase/src/main/java/org/apache/polygene/library/sql/liquibase/LiquibaseAssembler.java b/libraries/sql-liquibase/src/main/java/org/apache/polygene/library/sql/liquibase/LiquibaseAssembler.java
index d29cf8d..59f1aba 100644
--- a/libraries/sql-liquibase/src/main/java/org/apache/polygene/library/sql/liquibase/LiquibaseAssembler.java
+++ b/libraries/sql-liquibase/src/main/java/org/apache/polygene/library/sql/liquibase/LiquibaseAssembler.java
@@ -31,6 +31,7 @@ public class LiquibaseAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         ServiceDeclaration service = module.services( LiquibaseService.class ).visibleIn( visibility() );
         if( applyChangelogOnStartup )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/AbstractPooledDataSourceServiceAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/AbstractPooledDataSourceServiceAssembler.java b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/AbstractPooledDataSourceServiceAssembler.java
index 49ed1fe..360e34e 100644
--- a/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/AbstractPooledDataSourceServiceAssembler.java
+++ b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/AbstractPooledDataSourceServiceAssembler.java
@@ -32,6 +32,7 @@ public abstract class AbstractPooledDataSourceServiceAssembler<AssemblerType>
     @Override
     public final void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         module.values( DataSourceConfiguration.class ).visibleIn( Visibility.module );
         if( hasConfig() )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceAssembler.java b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceAssembler.java
index 1618cc0..adea163 100644
--- a/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceAssembler.java
+++ b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceAssembler.java
@@ -68,6 +68,7 @@ public class DataSourceAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         module.importedServices( DataSource.class ).
             importedBy( ServiceInstanceImporter.class ).
             setMetaInfo( StringIdentity.identityOf( dataSourceServiceId ) ).

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceJMXAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceJMXAssembler.java b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceJMXAssembler.java
index e65e1e7..ff6a004 100644
--- a/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceJMXAssembler.java
+++ b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/DataSourceJMXAssembler.java
@@ -29,6 +29,7 @@ public class DataSourceJMXAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         module.services( DataSourceConfigurationManagerService.class ).visibleIn( visibility() ).instantiateOnStartup();
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/ExternalDataSourceAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/ExternalDataSourceAssembler.java b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/ExternalDataSourceAssembler.java
index 2e833bb..462dee3 100644
--- a/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/ExternalDataSourceAssembler.java
+++ b/libraries/sql/src/main/java/org/apache/polygene/library/sql/assembly/ExternalDataSourceAssembler.java
@@ -63,6 +63,7 @@ public class ExternalDataSourceAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         if( circuitBreaker != null )
         {
             externalDataSource = DataSources.wrapWithCircuitBreaker( StringIdentity.identityOf( identity() ), externalDataSource, circuitBreaker );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/libraries/uid/src/main/java/org/apache/polygene/library/uid/sequence/assembly/PersistingSequencingAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/uid/src/main/java/org/apache/polygene/library/uid/sequence/assembly/PersistingSequencingAssembler.java b/libraries/uid/src/main/java/org/apache/polygene/library/uid/sequence/assembly/PersistingSequencingAssembler.java
index 1a8038c..ebebe0b 100644
--- a/libraries/uid/src/main/java/org/apache/polygene/library/uid/sequence/assembly/PersistingSequencingAssembler.java
+++ b/libraries/uid/src/main/java/org/apache/polygene/library/uid/sequence/assembly/PersistingSequencingAssembler.java
@@ -31,6 +31,7 @@ public class PersistingSequencingAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         module.services( PersistingSequencingService.class ).visibleIn( visibility() );
         module.entities( SequenceEntity.class ).visibleIn( Visibility.module );
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/libraries/uid/src/main/java/org/apache/polygene/library/uid/sequence/assembly/TransientSequencingAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/uid/src/main/java/org/apache/polygene/library/uid/sequence/assembly/TransientSequencingAssembler.java b/libraries/uid/src/main/java/org/apache/polygene/library/uid/sequence/assembly/TransientSequencingAssembler.java
index a53b9a3..d32f78b 100644
--- a/libraries/uid/src/main/java/org/apache/polygene/library/uid/sequence/assembly/TransientSequencingAssembler.java
+++ b/libraries/uid/src/main/java/org/apache/polygene/library/uid/sequence/assembly/TransientSequencingAssembler.java
@@ -29,6 +29,7 @@ public class TransientSequencingAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         module.services( TransientSequencingService.class ).visibleIn( visibility() );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/libraries/uid/src/main/java/org/apache/polygene/library/uid/uuid/assembly/UuidServiceAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/uid/src/main/java/org/apache/polygene/library/uid/uuid/assembly/UuidServiceAssembler.java b/libraries/uid/src/main/java/org/apache/polygene/library/uid/uuid/assembly/UuidServiceAssembler.java
index 489650d..b32d642 100644
--- a/libraries/uid/src/main/java/org/apache/polygene/library/uid/uuid/assembly/UuidServiceAssembler.java
+++ b/libraries/uid/src/main/java/org/apache/polygene/library/uid/uuid/assembly/UuidServiceAssembler.java
@@ -29,6 +29,7 @@ public class UuidServiceAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         module.services( UuidServiceComposite.class ).visibleIn( visibility() );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/047380a3/libraries/uowfile/src/main/java/org/apache/polygene/library/uowfile/bootstrap/UoWFileAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/uowfile/src/main/java/org/apache/polygene/library/uowfile/bootstrap/UoWFileAssembler.java b/libraries/uowfile/src/main/java/org/apache/polygene/library/uowfile/bootstrap/UoWFileAssembler.java
index ab98a18..a85e757 100644
--- a/libraries/uowfile/src/main/java/org/apache/polygene/library/uowfile/bootstrap/UoWFileAssembler.java
+++ b/libraries/uowfile/src/main/java/org/apache/polygene/library/uowfile/bootstrap/UoWFileAssembler.java
@@ -41,6 +41,7 @@ public class UoWFileAssembler
     @Override
     public void assemble( ModuleAssembly module )
     {
+        super.assemble( module );
         module.services( UoWFileFactory.class ).visibleIn( visibility() );
     }
 }