Repository: zest-java
Updated Branches:
  refs/heads/develop cce196525 -> d212c550d


added EntityStoreSPI#versionOf (not requiring module) which enabled the removal 
of ModuleEntityStoreUnitOfWork altogether


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

Branch: refs/heads/develop
Commit: ad1a2f5474195fb62d8bd36a6ce7602946207109
Parents: cce1965
Author: Kent Sølvsten <[email protected]>
Authored: Sat Sep 5 23:51:54 2015 +0200
Committer: Kent Sølvsten <[email protected]>
Committed: Sat Sep 5 23:51:54 2015 +0200

----------------------------------------------------------------------
 .../bootstrap/CompositeAssemblyImpl.java        |  4 +-
 .../runtime/structure/ModuleUnitOfWork.java     |  4 +-
 .../runtime/unitofwork/UnitOfWorkInstance.java  |  6 +-
 .../ConcurrentModificationCheckConcern.java     | 17 ++--
 .../DefaultEntityStoreUnitOfWork.java           |  7 ++
 .../spi/entitystore/EntityStateVersions.java    |  9 +--
 .../zest/spi/entitystore/EntityStore.java       |  2 +-
 .../zest/spi/entitystore/EntityStoreSPI.java    |  2 +
 .../spi/entitystore/EntityStoreUnitOfWork.java  |  2 +
 .../ModuleEntityStoreUnitOfWork.java            | 85 --------------------
 .../helpers/JSONMapEntityStoreMixin.java        | 25 ++++--
 .../helpers/MapEntityStoreMixin.java            | 25 ++++--
 .../prefs/PreferencesEntityStoreMixin.java      | 30 +++++--
 .../entitystore/sql/SQLEntityStoreMixin.java    | 33 ++++----
 .../elasticsearch/ElasticSearchIndexer.java     |  1 -
 .../rdf/entity/EntitySerializerTest.java        |  2 +-
 .../zest/library/rest/admin/EntityResource.java |  5 +-
 17 files changed, 119 insertions(+), 140 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zest-java/blob/ad1a2f54/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/CompositeAssemblyImpl.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/CompositeAssemblyImpl.java
 
b/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/CompositeAssemblyImpl.java
index 9190d67f..5c1bbb7 100755
--- 
a/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/CompositeAssemblyImpl.java
+++ 
b/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/CompositeAssemblyImpl.java
@@ -490,7 +490,7 @@ public abstract class CompositeAssemblyImpl
             Class<? extends Annotation> annotationType = 
constraintAnnotation.annotationType();
             for( Class<?> constraint : constraintClasses )
             {
-                if( helper.appliesTo( (Class<? extends Constraint<?, ?>>) 
constraint, annotationType, valueType ) )
+                if( false && helper.appliesTo( (Class<? extends Constraint<?, 
?>>) constraint, annotationType, valueType ) )
                 {
                     constraintModels.add( new ConstraintModel( 
constraintAnnotation, (Class<? extends Constraint<?, ?>>) constraint ) );
                     continue nextConstraint;
@@ -513,7 +513,7 @@ public abstract class CompositeAssemblyImpl
 
             // No implementation found!
             // Check if if it's a composite constraints
-            if( Arrays.stream( annotationType.getAnnotations() )
+            if( false && Arrays.stream( annotationType.getAnnotations() )
                 .anyMatch( translate( type(), hasAnnotation( 
ConstraintDeclaration.class ) ) ) )
             {
                 ValueConstraintsModel valueConstraintsModel = constraintsFor(

http://git-wip-us.apache.org/repos/asf/zest-java/blob/ad1a2f54/core/runtime/src/main/java/org/apache/zest/runtime/structure/ModuleUnitOfWork.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/zest/runtime/structure/ModuleUnitOfWork.java
 
b/core/runtime/src/main/java/org/apache/zest/runtime/structure/ModuleUnitOfWork.java
old mode 100644
new mode 100755
index b7a3fe2..b5303d5
--- 
a/core/runtime/src/main/java/org/apache/zest/runtime/structure/ModuleUnitOfWork.java
+++ 
b/core/runtime/src/main/java/org/apache/zest/runtime/structure/ModuleUnitOfWork.java
@@ -203,7 +203,7 @@ public class ModuleUnitOfWork
 
         builder = new EntityBuilderInstance<>( model,
                                                this,
-                                               uow.getEntityStoreUnitOfWork( 
entityStore, module ),
+                                               uow.getEntityStoreUnitOfWork( 
entityStore ),
                                                identity );
         return builder;
     }
@@ -275,7 +275,7 @@ public class ModuleUnitOfWork
 
         return new EntityBuilderInstance<>( model,
                                             this,
-                                            uow.getEntityStoreUnitOfWork( 
entityStore, module ),
+                                            uow.getEntityStoreUnitOfWork( 
entityStore ),
                                             identity,
                                             stateResolver );
     }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/ad1a2f54/core/runtime/src/main/java/org/apache/zest/runtime/unitofwork/UnitOfWorkInstance.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/zest/runtime/unitofwork/UnitOfWorkInstance.java
 
b/core/runtime/src/main/java/org/apache/zest/runtime/unitofwork/UnitOfWorkInstance.java
old mode 100644
new mode 100755
index caf2c01..6f404e7
--- 
a/core/runtime/src/main/java/org/apache/zest/runtime/unitofwork/UnitOfWorkInstance.java
+++ 
b/core/runtime/src/main/java/org/apache/zest/runtime/unitofwork/UnitOfWorkInstance.java
@@ -109,12 +109,12 @@ public final class UnitOfWorkInstance
         return currentTime;
     }
 
-    public EntityStoreUnitOfWork getEntityStoreUnitOfWork( EntityStore store, 
ModuleSpi module )
+    public EntityStoreUnitOfWork getEntityStoreUnitOfWork( EntityStore store )
     {
         EntityStoreUnitOfWork uow = storeUnitOfWork.get( store );
         if( uow == null )
         {
-            uow = store.newUnitOfWork( usecase, module, currentTime );
+            uow = store.newUnitOfWork( usecase, currentTime );
             storeUnitOfWork.put( store, uow );
         }
         return uow;
@@ -141,7 +141,7 @@ public final class UnitOfWorkInstance
             for( ModelModule<EntityDescriptor> potentialModel : 
potentialModels )
             {
                 EntityStore store = potentialModel.module().entityStore();
-                EntityStoreUnitOfWork storeUow = getEntityStoreUnitOfWork( 
store, potentialModel.module() );
+                EntityStoreUnitOfWork storeUow = getEntityStoreUnitOfWork( 
store );
                 try
                 {
                     entityState = storeUow.entityStateOf( 
potentialModel.module(), identity );

http://git-wip-us.apache.org/repos/asf/zest-java/blob/ad1a2f54/core/spi/src/main/java/org/apache/zest/spi/entitystore/ConcurrentModificationCheckConcern.java
----------------------------------------------------------------------
diff --git 
a/core/spi/src/main/java/org/apache/zest/spi/entitystore/ConcurrentModificationCheckConcern.java
 
b/core/spi/src/main/java/org/apache/zest/spi/entitystore/ConcurrentModificationCheckConcern.java
old mode 100644
new mode 100755
index a00145d..c811568
--- 
a/core/spi/src/main/java/org/apache/zest/spi/entitystore/ConcurrentModificationCheckConcern.java
+++ 
b/core/spi/src/main/java/org/apache/zest/spi/entitystore/ConcurrentModificationCheckConcern.java
@@ -48,10 +48,10 @@ public abstract class ConcurrentModificationCheckConcern
     private ZestAPI api;
 
     @Override
-    public EntityStoreUnitOfWork newUnitOfWork( Usecase usecase, ModuleSpi 
module, long currentTime )
+    public EntityStoreUnitOfWork newUnitOfWork( Usecase usecase, long 
currentTime )
     {
-        final EntityStoreUnitOfWork uow = next.newUnitOfWork( usecase, module, 
currentTime );
-        return new ConcurrentCheckingEntityStoreUnitOfWork( uow, 
api.dereference( versions ), module, currentTime );
+        final EntityStoreUnitOfWork uow = next.newUnitOfWork( usecase, 
currentTime );
+        return new ConcurrentCheckingEntityStoreUnitOfWork( uow, 
api.dereference( versions ), currentTime );
     }
 
     private static class ConcurrentCheckingEntityStoreUnitOfWork
@@ -68,7 +68,6 @@ public abstract class ConcurrentModificationCheckConcern
 
         public ConcurrentCheckingEntityStoreUnitOfWork( EntityStoreUnitOfWork 
uow,
                                                         EntityStateVersions 
versions,
-                                                        ModuleSpi module,
                                                         long currentTime
         )
         {
@@ -108,7 +107,7 @@ public abstract class ConcurrentModificationCheckConcern
 
             try
             {
-                versions.checkForConcurrentModification( loaded, module, 
currentTime );
+                versions.checkForConcurrentModification( loaded, currentTime );
 
                 final StateCommitter committer = uow.applyChanges();
 
@@ -187,5 +186,13 @@ public abstract class ConcurrentModificationCheckConcern
                 lock.readLock().unlock();
             }
         }
+
+
+        @Override
+        public String versionOf( EntityReference anIdentity )
+            throws EntityStoreException
+        {
+            return uow.versionOf( anIdentity );
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/ad1a2f54/core/spi/src/main/java/org/apache/zest/spi/entitystore/DefaultEntityStoreUnitOfWork.java
----------------------------------------------------------------------
diff --git 
a/core/spi/src/main/java/org/apache/zest/spi/entitystore/DefaultEntityStoreUnitOfWork.java
 
b/core/spi/src/main/java/org/apache/zest/spi/entitystore/DefaultEntityStoreUnitOfWork.java
old mode 100644
new mode 100755
index f0f9a2a..a336af6
--- 
a/core/spi/src/main/java/org/apache/zest/spi/entitystore/DefaultEntityStoreUnitOfWork.java
+++ 
b/core/spi/src/main/java/org/apache/zest/spi/entitystore/DefaultEntityStoreUnitOfWork.java
@@ -94,6 +94,13 @@ public final class DefaultEntityStoreUnitOfWork
     }
 
     @Override
+    public String versionOf( EntityReference anIdentity )
+        throws EntityNotFoundException
+    {
+        return entityStoreSPI.versionOf( this, anIdentity );
+    }
+
+    @Override
     public StateCommitter applyChanges()
         throws EntityStoreException
     {

http://git-wip-us.apache.org/repos/asf/zest-java/blob/ad1a2f54/core/spi/src/main/java/org/apache/zest/spi/entitystore/EntityStateVersions.java
----------------------------------------------------------------------
diff --git 
a/core/spi/src/main/java/org/apache/zest/spi/entitystore/EntityStateVersions.java
 
b/core/spi/src/main/java/org/apache/zest/spi/entitystore/EntityStateVersions.java
old mode 100644
new mode 100755
index 7f4b93c..57a7119
--- 
a/core/spi/src/main/java/org/apache/zest/spi/entitystore/EntityStateVersions.java
+++ 
b/core/spi/src/main/java/org/apache/zest/spi/entitystore/EntityStateVersions.java
@@ -24,7 +24,6 @@ import org.apache.zest.api.mixin.Mixins;
 import org.apache.zest.api.usecase.Usecase;
 import org.apache.zest.spi.entity.EntityState;
 import org.apache.zest.spi.entity.EntityStatus;
-import org.apache.zest.spi.module.ModuleSpi;
 
 /**
  * Entity versions state.
@@ -36,7 +35,7 @@ public interface EntityStateVersions
 
     void rememberVersion( EntityReference identity, String version );
 
-    void checkForConcurrentModification( Iterable<EntityState> loaded, 
ModuleSpi module, long currentTime )
+    void checkForConcurrentModification( Iterable<EntityState> loaded, long 
currentTime )
         throws ConcurrentEntityStateModificationException;
 
     /**
@@ -67,7 +66,6 @@ public interface EntityStateVersions
 
         @Override
         public synchronized void checkForConcurrentModification( 
Iterable<EntityState> loaded,
-                                                                 ModuleSpi 
module,
                                                                  long 
currentTime
         )
             throws ConcurrentEntityStateModificationException
@@ -83,9 +81,8 @@ public interface EntityStateVersions
                 String storeVersion = versions.get( entityState.identity() );
                 if( storeVersion == null )
                 {
-                    EntityStoreUnitOfWork unitOfWork = store.newUnitOfWork( 
Usecase.DEFAULT, module, currentTime );
-                    EntityState state = unitOfWork.entityStateOf( module, 
entityState.identity() );
-                    storeVersion = state.version();
+                    EntityStoreUnitOfWork unitOfWork = store.newUnitOfWork( 
Usecase.DEFAULT, currentTime );
+                    storeVersion = unitOfWork.versionOf( 
entityState.identity() );
                     unitOfWork.discard();
                 }
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/ad1a2f54/core/spi/src/main/java/org/apache/zest/spi/entitystore/EntityStore.java
----------------------------------------------------------------------
diff --git 
a/core/spi/src/main/java/org/apache/zest/spi/entitystore/EntityStore.java 
b/core/spi/src/main/java/org/apache/zest/spi/entitystore/EntityStore.java
old mode 100644
new mode 100755
index 1d94c79..0a3d3e3
--- a/core/spi/src/main/java/org/apache/zest/spi/entitystore/EntityStore.java
+++ b/core/spi/src/main/java/org/apache/zest/spi/entitystore/EntityStore.java
@@ -26,7 +26,7 @@ import org.apache.zest.spi.module.ModuleSpi;
  */
 public interface EntityStore
 {
-    EntityStoreUnitOfWork newUnitOfWork( Usecase usecase, ModuleSpi module, 
long currentTime );
+    EntityStoreUnitOfWork newUnitOfWork( Usecase usecase, long currentTime );
 
     Input<EntityState, EntityStoreException> entityStates( ModuleSpi module );
 }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/ad1a2f54/core/spi/src/main/java/org/apache/zest/spi/entitystore/EntityStoreSPI.java
----------------------------------------------------------------------
diff --git 
a/core/spi/src/main/java/org/apache/zest/spi/entitystore/EntityStoreSPI.java 
b/core/spi/src/main/java/org/apache/zest/spi/entitystore/EntityStoreSPI.java
old mode 100644
new mode 100755
index aa7bfa1..f584f7a
--- a/core/spi/src/main/java/org/apache/zest/spi/entitystore/EntityStoreSPI.java
+++ b/core/spi/src/main/java/org/apache/zest/spi/entitystore/EntityStoreSPI.java
@@ -31,6 +31,8 @@ public interface EntityStoreSPI
 
     EntityState entityStateOf( EntityStoreUnitOfWork unitOfWork, ModuleSpi 
module, EntityReference identity );
 
+    String versionOf( EntityStoreUnitOfWork unitOfWork, EntityReference 
identity );
+
     StateCommitter applyChanges( EntityStoreUnitOfWork unitOfWork, 
Iterable<EntityState> state
     );
 }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/ad1a2f54/core/spi/src/main/java/org/apache/zest/spi/entitystore/EntityStoreUnitOfWork.java
----------------------------------------------------------------------
diff --git 
a/core/spi/src/main/java/org/apache/zest/spi/entitystore/EntityStoreUnitOfWork.java
 
b/core/spi/src/main/java/org/apache/zest/spi/entitystore/EntityStoreUnitOfWork.java
old mode 100644
new mode 100755
index a106906..efe396e
--- 
a/core/spi/src/main/java/org/apache/zest/spi/entitystore/EntityStoreUnitOfWork.java
+++ 
b/core/spi/src/main/java/org/apache/zest/spi/entitystore/EntityStoreUnitOfWork.java
@@ -59,6 +59,8 @@ public interface EntityStoreUnitOfWork
     EntityState entityStateOf( ModuleSpi module, EntityReference anIdentity )
         throws EntityStoreException, EntityNotFoundException;
 
+    String versionOf( EntityReference anIdentity ) throws EntityStoreException;
+
     StateCommitter applyChanges()
         throws EntityStoreException;
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/ad1a2f54/core/spi/src/main/java/org/apache/zest/spi/entitystore/ModuleEntityStoreUnitOfWork.java
----------------------------------------------------------------------
diff --git 
a/core/spi/src/main/java/org/apache/zest/spi/entitystore/ModuleEntityStoreUnitOfWork.java
 
b/core/spi/src/main/java/org/apache/zest/spi/entitystore/ModuleEntityStoreUnitOfWork.java
deleted file mode 100644
index 609390e..0000000
--- 
a/core/spi/src/main/java/org/apache/zest/spi/entitystore/ModuleEntityStoreUnitOfWork.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.zest.spi.entitystore;
-
-import org.apache.zest.api.entity.EntityDescriptor;
-import org.apache.zest.api.entity.EntityReference;
-import org.apache.zest.api.usecase.Usecase;
-import org.apache.zest.spi.entity.EntityState;
-import org.apache.zest.spi.module.ModuleSpi;
-
-public class ModuleEntityStoreUnitOfWork
-    implements EntityStoreUnitOfWork
-{
-    private final ModuleSpi module;
-    private final EntityStoreUnitOfWork underlying;
-
-    public ModuleEntityStoreUnitOfWork( ModuleSpi module, 
EntityStoreUnitOfWork underlying )
-    {
-        this.module = module;
-        this.underlying = underlying;
-    }
-
-    public ModuleSpi module()
-    {
-        return module;
-    }
-
-    @Override
-    public String identity()
-    {
-        return underlying.identity();
-    }
-
-    @Override
-    public long currentTime()
-    {
-        return underlying.currentTime();
-    }
-
-    @Override
-    public EntityState newEntityState( ModuleSpi module, EntityReference 
reference, EntityDescriptor descriptor )
-        throws EntityStoreException
-    {
-        return underlying.newEntityState( module, reference, descriptor );
-    }
-
-    @Override
-    public EntityState entityStateOf( ModuleSpi module, EntityReference 
reference )
-        throws EntityStoreException, EntityNotFoundException
-    {
-        return underlying.entityStateOf( module, reference );
-    }
-
-    @Override
-    public StateCommitter applyChanges()
-        throws EntityStoreException
-    {
-        return underlying.applyChanges();
-    }
-
-    @Override
-    public void discard()
-    {
-        underlying.discard();
-    }
-
-    public Usecase usecase()
-    {
-        return underlying.usecase();
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/ad1a2f54/core/spi/src/main/java/org/apache/zest/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
----------------------------------------------------------------------
diff --git 
a/core/spi/src/main/java/org/apache/zest/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
 
b/core/spi/src/main/java/org/apache/zest/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
old mode 100644
new mode 100755
index f85564d..e4a6e7b
--- 
a/core/spi/src/main/java/org/apache/zest/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
+++ 
b/core/spi/src/main/java/org/apache/zest/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
@@ -57,7 +57,6 @@ import org.apache.zest.spi.entitystore.EntityStore;
 import org.apache.zest.spi.entitystore.EntityStoreException;
 import org.apache.zest.spi.entitystore.EntityStoreSPI;
 import org.apache.zest.spi.entitystore.EntityStoreUnitOfWork;
-import org.apache.zest.spi.entitystore.ModuleEntityStoreUnitOfWork;
 import org.apache.zest.spi.entitystore.StateCommitter;
 import org.apache.zest.spi.module.ModelModule;
 import org.apache.zest.spi.module.ModuleSpi;
@@ -140,11 +139,9 @@ public class JSONMapEntityStoreMixin
     // EntityStore
 
     @Override
-    public EntityStoreUnitOfWork newUnitOfWork( Usecase usecaseMetaInfo, 
ModuleSpi module, long currentTime )
+    public EntityStoreUnitOfWork newUnitOfWork( Usecase usecaseMetaInfo, long 
currentTime )
     {
-        EntityStoreUnitOfWork storeUnitOfWork = new 
DefaultEntityStoreUnitOfWork( entityStoreSpi, newUnitOfWorkId(), 
usecaseMetaInfo, currentTime );
-        storeUnitOfWork = new ModuleEntityStoreUnitOfWork( module, 
storeUnitOfWork );
-        return storeUnitOfWork;
+        return new DefaultEntityStoreUnitOfWork( entityStoreSpi, 
newUnitOfWorkId(), usecaseMetaInfo, currentTime );
     }
 
     // EntityStoreSPI
@@ -199,6 +196,24 @@ public class JSONMapEntityStoreMixin
     }
 
     @Override
+    public synchronized String versionOf( EntityStoreUnitOfWork unitOfWork,
+                                                   EntityReference identity
+    )
+    {
+        // Get state
+        Reader entityState = mapEntityStore.get( identity );
+        try
+        {
+            JSONObject jsonObject = new JSONObject( new JSONTokener( 
entityState ) );
+            return jsonObject.getString( JSONKeys.VERSION );
+        }
+        catch( JSONException e )
+        {
+            throw new EntityStoreException( e );
+        }
+    }
+
+    @Override
     public StateCommitter applyChanges( final EntityStoreUnitOfWork unitOfWork,
                                         final Iterable<EntityState> state
     )

http://git-wip-us.apache.org/repos/asf/zest-java/blob/ad1a2f54/core/spi/src/main/java/org/apache/zest/spi/entitystore/helpers/MapEntityStoreMixin.java
----------------------------------------------------------------------
diff --git 
a/core/spi/src/main/java/org/apache/zest/spi/entitystore/helpers/MapEntityStoreMixin.java
 
b/core/spi/src/main/java/org/apache/zest/spi/entitystore/helpers/MapEntityStoreMixin.java
old mode 100644
new mode 100755
index 91aad69..c821a6a
--- 
a/core/spi/src/main/java/org/apache/zest/spi/entitystore/helpers/MapEntityStoreMixin.java
+++ 
b/core/spi/src/main/java/org/apache/zest/spi/entitystore/helpers/MapEntityStoreMixin.java
@@ -54,7 +54,6 @@ import org.apache.zest.spi.entitystore.EntityStore;
 import org.apache.zest.spi.entitystore.EntityStoreException;
 import org.apache.zest.spi.entitystore.EntityStoreSPI;
 import org.apache.zest.spi.entitystore.EntityStoreUnitOfWork;
-import org.apache.zest.spi.entitystore.ModuleEntityStoreUnitOfWork;
 import org.apache.zest.spi.entitystore.StateCommitter;
 import org.apache.zest.spi.module.ModelModule;
 import org.apache.zest.spi.module.ModuleSpi;
@@ -110,12 +109,9 @@ public class MapEntityStoreMixin
 
     // EntityStore
     @Override
-    public EntityStoreUnitOfWork newUnitOfWork( Usecase usecaseMetaInfo, 
ModuleSpi module, long currentTime )
+    public EntityStoreUnitOfWork newUnitOfWork( Usecase usecaseMetaInfo, long 
currentTime )
     {
-        EntityStoreUnitOfWork storeUnitOfWork =
-            new DefaultEntityStoreUnitOfWork( entityStoreSpi, 
newUnitOfWorkId(), usecaseMetaInfo, currentTime );
-        storeUnitOfWork = new ModuleEntityStoreUnitOfWork( module, 
storeUnitOfWork );
-        return storeUnitOfWork;
+        return new DefaultEntityStoreUnitOfWork( entityStoreSpi, 
newUnitOfWorkId(), usecaseMetaInfo, currentTime );
     }
 
     // EntityStoreSPI
@@ -140,6 +136,23 @@ public class MapEntityStoreMixin
     }
 
     @Override
+    public synchronized String versionOf( EntityStoreUnitOfWork unitofwork,
+                                                   EntityReference identity
+    )
+    {
+        Reader in = mapEntityStore.get( identity );
+        try
+        {
+            JSONObject jsonObject = new JSONObject( new JSONTokener( in ) );
+            return jsonObject.getString( JSONKeys.VERSION );
+        }
+        catch( JSONException e )
+        {
+            throw new EntityStoreException( e );
+        }
+    }
+
+    @Override
     public StateCommitter applyChanges( final EntityStoreUnitOfWork 
unitofwork, final Iterable<EntityState> state
     )
         throws EntityStoreException

http://git-wip-us.apache.org/repos/asf/zest-java/blob/ad1a2f54/extensions/entitystore-preferences/src/main/java/org/apache/zest/entitystore/prefs/PreferencesEntityStoreMixin.java
----------------------------------------------------------------------
diff --git 
a/extensions/entitystore-preferences/src/main/java/org/apache/zest/entitystore/prefs/PreferencesEntityStoreMixin.java
 
b/extensions/entitystore-preferences/src/main/java/org/apache/zest/entitystore/prefs/PreferencesEntityStoreMixin.java
old mode 100644
new mode 100755
index ac1098b..26744a8
--- 
a/extensions/entitystore-preferences/src/main/java/org/apache/zest/entitystore/prefs/PreferencesEntityStoreMixin.java
+++ 
b/extensions/entitystore-preferences/src/main/java/org/apache/zest/entitystore/prefs/PreferencesEntityStoreMixin.java
@@ -65,7 +65,6 @@ import org.apache.zest.spi.entitystore.EntityStore;
 import org.apache.zest.spi.entitystore.EntityStoreException;
 import org.apache.zest.spi.entitystore.EntityStoreSPI;
 import org.apache.zest.spi.entitystore.EntityStoreUnitOfWork;
-import org.apache.zest.spi.entitystore.ModuleEntityStoreUnitOfWork;
 import org.apache.zest.spi.entitystore.StateCommitter;
 import org.apache.zest.spi.entitystore.helpers.DefaultEntityState;
 import org.apache.zest.spi.module.ModelModule;
@@ -170,11 +169,9 @@ public class PreferencesEntityStoreMixin
     }
 
     @Override
-    public EntityStoreUnitOfWork newUnitOfWork( Usecase usecase, ModuleSpi 
module, long currentTime )
+    public EntityStoreUnitOfWork newUnitOfWork( Usecase usecase, long 
currentTime )
     {
-        EntityStoreUnitOfWork storeUnitOfWork = new 
DefaultEntityStoreUnitOfWork( entityStoreSpi, newUnitOfWorkId(), usecase, 
currentTime );
-        storeUnitOfWork = new ModuleEntityStoreUnitOfWork( module, 
storeUnitOfWork );
-        return storeUnitOfWork;
+        return new DefaultEntityStoreUnitOfWork( entityStoreSpi, 
newUnitOfWorkId(), usecase, currentTime );
     }
 
     @Override
@@ -195,7 +192,7 @@ public class PreferencesEntityStoreMixin
                         UsecaseBuilder builder = UsecaseBuilder.buildUsecase( 
"zest.entitystore.preferences.visit" );
                         Usecase visitUsecase = builder.withMetaInfo( 
CacheOptions.NEVER ).newUsecase();
                         final EntityStoreUnitOfWork uow =
-                            newUnitOfWork( visitUsecase, module, 
System.currentTimeMillis() );
+                            newUnitOfWork( visitUsecase, 
System.currentTimeMillis() );
 
                         try
                         {
@@ -435,6 +432,27 @@ public class PreferencesEntityStoreMixin
     }
 
     @Override
+    public String versionOf( EntityStoreUnitOfWork unitOfWork, EntityReference 
identity )
+    {
+        try
+        {
+            if( !root.nodeExists( identity.identity() ) )
+            {
+                throw new NoSuchEntityException( identity, UnknownType.class, 
unitOfWork.usecase() );
+            }
+
+            Preferences entityPrefs = root.node( identity.identity() );
+
+            String version = entityPrefs.get( "version", "" );
+            return version;
+        }
+        catch( BackingStoreException e )
+        {
+            throw new EntityStoreException( e );
+        }
+    }
+
+    @Override
     public StateCommitter applyChanges( final EntityStoreUnitOfWork 
unitofwork, final Iterable<EntityState> state )
     {
         return new StateCommitter()

http://git-wip-us.apache.org/repos/asf/zest-java/blob/ad1a2f54/extensions/entitystore-sql/src/main/java/org/apache/zest/entitystore/sql/SQLEntityStoreMixin.java
----------------------------------------------------------------------
diff --git 
a/extensions/entitystore-sql/src/main/java/org/apache/zest/entitystore/sql/SQLEntityStoreMixin.java
 
b/extensions/entitystore-sql/src/main/java/org/apache/zest/entitystore/sql/SQLEntityStoreMixin.java
old mode 100644
new mode 100755
index 6dfdae0..bb695a2
--- 
a/extensions/entitystore-sql/src/main/java/org/apache/zest/entitystore/sql/SQLEntityStoreMixin.java
+++ 
b/extensions/entitystore-sql/src/main/java/org/apache/zest/entitystore/sql/SQLEntityStoreMixin.java
@@ -30,7 +30,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 import java.util.concurrent.atomic.AtomicInteger;
-import org.apache.zest.api.cache.CacheOptions;
 import org.apache.zest.api.common.Optional;
 import org.apache.zest.api.common.QualifiedName;
 import org.apache.zest.api.entity.EntityDescriptor;
@@ -44,7 +43,6 @@ import org.apache.zest.api.structure.Application;
 import org.apache.zest.api.type.ValueType;
 import org.apache.zest.api.unitofwork.EntityTypeNotFoundException;
 import org.apache.zest.api.usecase.Usecase;
-import org.apache.zest.api.usecase.UsecaseBuilder;
 import org.apache.zest.api.value.ValueSerialization;
 import org.apache.zest.entitystore.sql.internal.DatabaseSQLService;
 import 
org.apache.zest.entitystore.sql.internal.DatabaseSQLService.EntityValueResult;
@@ -65,7 +63,6 @@ import org.apache.zest.spi.entitystore.EntityStore;
 import org.apache.zest.spi.entitystore.EntityStoreException;
 import org.apache.zest.spi.entitystore.EntityStoreSPI;
 import org.apache.zest.spi.entitystore.EntityStoreUnitOfWork;
-import org.apache.zest.spi.entitystore.ModuleEntityStoreUnitOfWork;
 import org.apache.zest.spi.entitystore.StateCommitter;
 import org.apache.zest.spi.entitystore.helpers.DefaultEntityState;
 import org.apache.zest.spi.entitystore.helpers.JSONKeys;
@@ -240,6 +237,23 @@ public class SQLEntityStoreMixin
     }
 
     @Override
+    public String versionOf( EntityStoreUnitOfWork unitOfWork, EntityReference 
entityRef )
+    {
+        EntityValueResult valueResult = getValue( entityRef );
+        Reader entityState = valueResult.getReader();
+        try
+        {
+            JSONObject jsonObject = new JSONObject( new JSONTokener( 
entityState ) );
+            final String version = jsonObject.getString( JSONKeys.VERSION );
+            return version;
+        }
+        catch( JSONException e )
+        {
+            throw new EntityStoreException( e );
+        }
+    }
+
+    @Override
     public EntityState newEntityState( EntityStoreUnitOfWork unitOfWork,
                                        ModuleSpi module,
                                        EntityReference entityRef,
@@ -250,12 +264,9 @@ public class SQLEntityStoreMixin
     }
 
     @Override
-    public EntityStoreUnitOfWork newUnitOfWork( Usecase usecase, ModuleSpi 
module, long currentTime )
+    public EntityStoreUnitOfWork newUnitOfWork( Usecase usecase, long 
currentTime )
     {
-        EntityStoreUnitOfWork storeUnitOfWork =
-            new DefaultEntityStoreUnitOfWork( entityStoreSPI, 
newUnitOfWorkId(), usecase, currentTime );
-        storeUnitOfWork = new ModuleEntityStoreUnitOfWork( module, 
storeUnitOfWork );
-        return storeUnitOfWork;
+        return new DefaultEntityStoreUnitOfWork( entityStoreSPI, 
newUnitOfWorkId(), usecase, currentTime );
     }
 
     @Override
@@ -295,12 +306,6 @@ public class SQLEntityStoreMixin
         Connection connection = null;
         PreparedStatement ps = null;
         ResultSet rs = null;
-        UsecaseBuilder builder = UsecaseBuilder.buildUsecase( 
"zest.entitystore.sql.visit" );
-        Usecase usecase = builder.withMetaInfo( CacheOptions.NEVER 
).newUsecase();
-
-        // TODO: This unit of work creation seem to not be cleaned up 
properly... CHECK!!!
-        final ModuleEntityStoreUnitOfWork uow =
-            (ModuleEntityStoreUnitOfWork) newUnitOfWork( usecase, module, 
System.currentTimeMillis() );
         try
         {
             connection = database.getConnection();

http://git-wip-us.apache.org/repos/asf/zest-java/blob/ad1a2f54/extensions/indexing-elasticsearch/src/main/java/org/apache/zest/index/elasticsearch/ElasticSearchIndexer.java
----------------------------------------------------------------------
diff --git 
a/extensions/indexing-elasticsearch/src/main/java/org/apache/zest/index/elasticsearch/ElasticSearchIndexer.java
 
b/extensions/indexing-elasticsearch/src/main/java/org/apache/zest/index/elasticsearch/ElasticSearchIndexer.java
index 65ca307..3d9fdf2 100755
--- 
a/extensions/indexing-elasticsearch/src/main/java/org/apache/zest/index/elasticsearch/ElasticSearchIndexer.java
+++ 
b/extensions/indexing-elasticsearch/src/main/java/org/apache/zest/index/elasticsearch/ElasticSearchIndexer.java
@@ -99,7 +99,6 @@ public interface ElasticSearchIndexer
 
             EntityStoreUnitOfWork uow = entityStore.newUnitOfWork(
                 UsecaseBuilder.newUsecase( "Load associations for indexing" ),
-                module,
                 System.currentTimeMillis()
             );
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/ad1a2f54/libraries/rdf/src/test/java/org/apache/zest/library/rdf/entity/EntitySerializerTest.java
----------------------------------------------------------------------
diff --git 
a/libraries/rdf/src/test/java/org/apache/zest/library/rdf/entity/EntitySerializerTest.java
 
b/libraries/rdf/src/test/java/org/apache/zest/library/rdf/entity/EntitySerializerTest.java
old mode 100644
new mode 100755
index 8082065..49edb94
--- 
a/libraries/rdf/src/test/java/org/apache/zest/library/rdf/entity/EntitySerializerTest.java
+++ 
b/libraries/rdf/src/test/java/org/apache/zest/library/rdf/entity/EntitySerializerTest.java
@@ -81,7 +81,7 @@ public class EntitySerializerTest
         EntityReference entityReference = new EntityReference( "test2" );
         Usecase usecase = UsecaseBuilder.newUsecase( "Test" );
         long currentTime = System.currentTimeMillis();
-        EntityStoreUnitOfWork unitOfWork = entityStore.newUnitOfWork( usecase, 
module, currentTime );
+        EntityStoreUnitOfWork unitOfWork = entityStore.newUnitOfWork( usecase, 
currentTime );
         EntityState entityState = unitOfWork.entityStateOf( module, 
entityReference );
 
         Iterable<Statement> graph = serializer.serialize( entityState );

http://git-wip-us.apache.org/repos/asf/zest-java/blob/ad1a2f54/libraries/rest/src/main/java/org/apache/zest/library/rest/admin/EntityResource.java
----------------------------------------------------------------------
diff --git 
a/libraries/rest/src/main/java/org/apache/zest/library/rest/admin/EntityResource.java
 
b/libraries/rest/src/main/java/org/apache/zest/library/rest/admin/EntityResource.java
old mode 100644
new mode 100755
index 481ee15..3390e38
--- 
a/libraries/rest/src/main/java/org/apache/zest/library/rest/admin/EntityResource.java
+++ 
b/libraries/rest/src/main/java/org/apache/zest/library/rest/admin/EntityResource.java
@@ -108,7 +108,7 @@ public class EntityResource
         throws ResourceException
     {
         Usecase usecase = UsecaseBuilder.newUsecase( "Remove entity" );
-        EntityStoreUnitOfWork uow = entityStore.newUnitOfWork( usecase, 
module, System.currentTimeMillis() );
+        EntityStoreUnitOfWork uow = entityStore.newUnitOfWork( usecase, 
System.currentTimeMillis() );
         try
         {
             EntityReference identityRef = 
EntityReference.parseEntityReference( identity );
@@ -130,7 +130,6 @@ public class EntityResource
         throws ResourceException
     {
         EntityStoreUnitOfWork uow = entityStore.newUnitOfWork( 
UsecaseBuilder.newUsecase( "Get entity" ),
-                                                               module,
                                                                
System.currentTimeMillis() );
 
         try
@@ -350,7 +349,7 @@ public class EntityResource
         throws ResourceException
     {
         Usecase usecase = UsecaseBuilder.newUsecase( "Update entity" );
-        EntityStoreUnitOfWork unitOfWork = entityStore.newUnitOfWork( usecase, 
module, System.currentTimeMillis() );
+        EntityStoreUnitOfWork unitOfWork = entityStore.newUnitOfWork( usecase, 
System.currentTimeMillis() );
         EntityState entity = getEntityState( unitOfWork );
 
         Form form = new Form( entityRepresentation );

Reply via email to