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 2015/06/25 14:41:33 UTC
[2/2] zest-qi4j git commit: Introduced a layered
EntityStoreUnitOfWork, just like the ordinary UnitOfWork,
that has a wrapper which contains the current Module. To make this work,
quite a lot of SPI level interfaces needed to be changed, and SPI compatib
Introduced a layered EntityStoreUnitOfWork, just like the ordinary UnitOfWork, that has a wrapper which contains the current Module. To make this work, quite a lot of SPI level interfaces needed to be changed, and SPI compatibiilty breaks.
Project: http://git-wip-us.apache.org/repos/asf/zest-qi4j/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-qi4j/commit/c8c3286c
Tree: http://git-wip-us.apache.org/repos/asf/zest-qi4j/tree/c8c3286c
Diff: http://git-wip-us.apache.org/repos/asf/zest-qi4j/diff/c8c3286c
Branch: refs/heads/develop
Commit: c8c3286cb7d27f3c9e1a8764a05da95e06c55808
Parents: 0189ec7
Author: Niclas Hedhman <ni...@hedhman.org>
Authored: Thu Jun 25 14:41:23 2015 +0200
Committer: Niclas Hedhman <ni...@hedhman.org>
Committed: Thu Jun 25 14:41:23 2015 +0200
----------------------------------------------------------------------
.../org/qi4j/runtime/entity/EntityModel.java | 4 +-
.../unitofwork/EntityBuilderInstance.java | 2 +-
.../runtime/unitofwork/UnitOfWorkInstance.java | 6 +-
.../ConcurrentModificationCheckConcern.java | 111 ++++---
.../DefaultEntityStoreUnitOfWork.java | 18 +-
.../EntityAlreadyExistsException.java | 2 +-
.../spi/entitystore/EntityStateVersions.java | 12 +-
.../org/qi4j/spi/entitystore/EntityStore.java | 5 +-
.../qi4j/spi/entitystore/EntityStoreSPI.java | 4 +-
.../spi/entitystore/EntityStoreUnitOfWork.java | 9 +-
.../ModuleEntityStoreUnitOfWork.java | 69 +++++
.../StateChangeNotificationConcern.java | 1 +
.../entitystore/helpers/DefaultEntityState.java | 13 +-
.../entitystore/helpers/JSONEntityState.java | 30 +-
.../helpers/JSONMapEntityStoreMixin.java | 73 ++---
.../helpers/MapEntityStoreMixin.java | 45 ++-
.../helpers/JSONManyAssociationStateTest.java | 2 -
.../java/org/qi4j/test/AbstractQi4jTest.java | 6 +-
.../hazelcast/HazelcastEntityStoreMixin.java | 4 +-
.../prefs/PreferencesEntityStoreMixin.java | 35 +--
.../entitystore/sql/SQLEntityStoreMixin.java | 60 ++--
.../elasticsearch/ElasticSearchIndexer.java | 64 ++--
.../index/rdf/indexing/RdfIndexingService.java | 2 +-
.../reindexer/internal/ReindexerMixin.java | 180 +++++------
.../org/qi4j/index/reindexer/ReindexerTest.java | 11 +-
.../rdf/repository/NativeRepositoryService.java | 301 ++++++++++---------
.../rdf/entity/EntitySerializerTest.java | 30 +-
.../qi4j/library/rest/admin/EntityResource.java | 16 +-
libraries/scheduler/src/docs/scheduler.txt | 5 +
29 files changed, 603 insertions(+), 517 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/core/runtime/src/main/java/org/qi4j/runtime/entity/EntityModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/entity/EntityModel.java b/core/runtime/src/main/java/org/qi4j/runtime/entity/EntityModel.java
index 3563115..ff0b633 100644
--- a/core/runtime/src/main/java/org/qi4j/runtime/entity/EntityModel.java
+++ b/core/runtime/src/main/java/org/qi4j/runtime/entity/EntityModel.java
@@ -116,13 +116,13 @@ public final class EntityModel
return ( (EntityMixinsModel) mixinsModel ).newMixin( entityInstance, entityState, mixins, method );
}
- public EntityState newEntityState( EntityStoreUnitOfWork store, EntityReference identity )
+ public EntityState newEntityState( EntityStoreUnitOfWork store, ModuleSpi module, EntityReference identity )
throws ConstraintViolationException, EntityStoreException
{
try
{
// New EntityState
- EntityState entityState = store.newEntityState( identity, this );
+ EntityState entityState = store.newEntityState( module, identity, this );
// Set identity property
PropertyDescriptor persistentPropertyDescriptor = state().propertyModelFor( IDENTITY_METHOD );
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/core/runtime/src/main/java/org/qi4j/runtime/unitofwork/EntityBuilderInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/unitofwork/EntityBuilderInstance.java b/core/runtime/src/main/java/org/qi4j/runtime/unitofwork/EntityBuilderInstance.java
index ff17a07..4ca81d9 100644
--- a/core/runtime/src/main/java/org/qi4j/runtime/unitofwork/EntityBuilderInstance.java
+++ b/core/runtime/src/main/java/org/qi4j/runtime/unitofwork/EntityBuilderInstance.java
@@ -117,7 +117,7 @@ public final class EntityBuilderInstance<T>
// Figure out whether to use given or generated identity
identity = (String) entityState.propertyValueOf( IDENTITY_STATE_NAME );
- EntityState newEntityState = model.model().newEntityState( store,
+ EntityState newEntityState = model.model().newEntityState( store, uow.module(),
EntityReference.parseEntityReference( identity ) );
prototypeInstance.invokeCreate();
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/core/runtime/src/main/java/org/qi4j/runtime/unitofwork/UnitOfWorkInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/unitofwork/UnitOfWorkInstance.java b/core/runtime/src/main/java/org/qi4j/runtime/unitofwork/UnitOfWorkInstance.java
index 886fb97..ec33e08 100644
--- a/core/runtime/src/main/java/org/qi4j/runtime/unitofwork/UnitOfWorkInstance.java
+++ b/core/runtime/src/main/java/org/qi4j/runtime/unitofwork/UnitOfWorkInstance.java
@@ -31,7 +31,6 @@ import org.qi4j.api.metrics.MetricsCounterFactory;
import org.qi4j.api.metrics.MetricsProvider;
import org.qi4j.api.metrics.MetricsTimer;
import org.qi4j.api.metrics.MetricsTimerFactory;
-import org.qi4j.api.structure.Module;
import org.qi4j.api.unitofwork.ConcurrentEntityModificationException;
import org.qi4j.api.unitofwork.EntityTypeNotFoundException;
import org.qi4j.api.unitofwork.NoSuchEntityException;
@@ -42,7 +41,6 @@ import org.qi4j.api.unitofwork.UnitOfWorkOptions;
import org.qi4j.api.usecase.Usecase;
import org.qi4j.runtime.entity.EntityInstance;
import org.qi4j.runtime.entity.EntityModel;
-import org.qi4j.runtime.structure.ModuleInstance;
import org.qi4j.runtime.structure.ModuleUnitOfWork;
import org.qi4j.spi.entity.EntityState;
import org.qi4j.spi.entity.EntityStatus;
@@ -111,7 +109,7 @@ public final class UnitOfWorkInstance
return currentTime;
}
- public EntityStoreUnitOfWork getEntityStoreUnitOfWork( EntityStore store, Module module )
+ public EntityStoreUnitOfWork getEntityStoreUnitOfWork( EntityStore store, ModuleSpi module )
{
EntityStoreUnitOfWork uow = storeUnitOfWork.get( store );
if( uow == null )
@@ -146,7 +144,7 @@ public final class UnitOfWorkInstance
EntityStoreUnitOfWork storeUow = getEntityStoreUnitOfWork( store, potentialModel.module() );
try
{
- entityState = storeUow.entityStateOf( identity );
+ entityState = storeUow.entityStateOf( potentialModel.module(), identity );
}
catch( EntityNotFoundException e )
{
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/core/spi/src/main/java/org/qi4j/spi/entitystore/ConcurrentModificationCheckConcern.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/qi4j/spi/entitystore/ConcurrentModificationCheckConcern.java b/core/spi/src/main/java/org/qi4j/spi/entitystore/ConcurrentModificationCheckConcern.java
index cfeead6..118389c 100644
--- a/core/spi/src/main/java/org/qi4j/spi/entitystore/ConcurrentModificationCheckConcern.java
+++ b/core/spi/src/main/java/org/qi4j/spi/entitystore/ConcurrentModificationCheckConcern.java
@@ -14,19 +14,18 @@
package org.qi4j.spi.entitystore;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
import org.qi4j.api.Qi4j;
import org.qi4j.api.concern.ConcernOf;
import org.qi4j.api.entity.EntityDescriptor;
import org.qi4j.api.entity.EntityReference;
import org.qi4j.api.injection.scope.Structure;
import org.qi4j.api.injection.scope.This;
-import org.qi4j.api.structure.Module;
import org.qi4j.api.usecase.Usecase;
import org.qi4j.spi.entity.EntityState;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
+import org.qi4j.spi.module.ModuleSpi;
/**
* Concern that helps EntityStores do concurrent modification checks.
@@ -44,11 +43,12 @@ public abstract class ConcurrentModificationCheckConcern
{
@This
private EntityStateVersions versions;
+
@Structure
private Qi4j api;
@Override
- public EntityStoreUnitOfWork newUnitOfWork( Usecase usecase, Module module, long currentTime )
+ public EntityStoreUnitOfWork newUnitOfWork( Usecase usecase, ModuleSpi module, long currentTime )
{
final EntityStoreUnitOfWork uow = next.newUnitOfWork( usecase, module, currentTime );
return new ConcurrentCheckingEntityStoreUnitOfWork( uow, api.dereference( versions ), module, currentTime );
@@ -59,16 +59,16 @@ public abstract class ConcurrentModificationCheckConcern
{
private final EntityStoreUnitOfWork uow;
private EntityStateVersions versions;
- private Module module;
+ private ModuleSpi module;
private long currentTime;
- private List<EntityState> loaded = new ArrayList<EntityState>();
+ private List<EntityState> loaded = new ArrayList<>();
- private ReentrantReadWriteLock lock = new ReentrantReadWriteLock( );
+ private ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
public ConcurrentCheckingEntityStoreUnitOfWork( EntityStoreUnitOfWork uow,
EntityStateVersions versions,
- Module module,
+ ModuleSpi module,
long currentTime
)
{
@@ -91,10 +91,13 @@ public abstract class ConcurrentModificationCheckConcern
}
@Override
- public EntityState newEntityState( EntityReference anIdentity, EntityDescriptor entityDescriptor )
+ public EntityState newEntityState( ModuleSpi module,
+ EntityReference anIdentity,
+ EntityDescriptor entityDescriptor
+ )
throws EntityStoreException
{
- return uow.newEntityState( anIdentity, entityDescriptor );
+ return uow.newEntityState( module, anIdentity, entityDescriptor );
}
@Override
@@ -105,34 +108,35 @@ public abstract class ConcurrentModificationCheckConcern
try
{
- versions.checkForConcurrentModification( loaded, module, currentTime );
-
- final StateCommitter committer = uow.applyChanges();
-
- return new StateCommitter()
- {
- @Override
- public void commit()
- {
- committer.commit();
- versions.forgetVersions( loaded );
-
- lock.writeLock().unlock();
- }
-
- @Override
- public void cancel()
- {
- committer.cancel();
- versions.forgetVersions( loaded );
-
- lock.writeLock().unlock();
- }
- };
- } catch( EntityStoreException e )
+ versions.checkForConcurrentModification( loaded, module, currentTime );
+
+ final StateCommitter committer = uow.applyChanges();
+
+ return new StateCommitter()
+ {
+ @Override
+ public void commit()
+ {
+ committer.commit();
+ versions.forgetVersions( loaded );
+
+ lock.writeLock().unlock();
+ }
+
+ @Override
+ public void cancel()
+ {
+ committer.cancel();
+ versions.forgetVersions( loaded );
+
+ lock.writeLock().unlock();
+ }
+ };
+ }
+ catch( EntityStoreException e )
{
- lock.writeLock().unlock();
- throw e;
+ lock.writeLock().unlock();
+ throw e;
}
}
@@ -149,29 +153,38 @@ public abstract class ConcurrentModificationCheckConcern
try
{
- versions.forgetVersions( loaded );
- } finally
+ versions.forgetVersions( loaded );
+ }
+ finally
{
- lock.writeLock().unlock();
+ lock.writeLock().unlock();
}
}
}
@Override
- public EntityState entityStateOf( EntityReference anIdentity )
+ public Usecase usecase()
+ {
+ return uow.usecase();
+ }
+
+ @SuppressWarnings( "DuplicateThrows" )
+ @Override
+ public EntityState entityStateOf( ModuleSpi module, EntityReference anIdentity )
throws EntityStoreException, EntityNotFoundException
{
lock.readLock().lock();
try
{
- EntityState entityState = uow.entityStateOf( anIdentity );
- versions.rememberVersion( entityState.identity(), entityState.version() );
- loaded.add( entityState );
- return entityState;
- } finally
+ EntityState entityState = uow.entityStateOf( module, anIdentity );
+ versions.rememberVersion( entityState.identity(), entityState.version() );
+ loaded.add( entityState );
+ return entityState;
+ }
+ finally
{
- lock.readLock().unlock();
+ lock.readLock().unlock();
}
}
}
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/core/spi/src/main/java/org/qi4j/spi/entitystore/DefaultEntityStoreUnitOfWork.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/qi4j/spi/entitystore/DefaultEntityStoreUnitOfWork.java b/core/spi/src/main/java/org/qi4j/spi/entitystore/DefaultEntityStoreUnitOfWork.java
index cc93430..1c1d794 100644
--- a/core/spi/src/main/java/org/qi4j/spi/entitystore/DefaultEntityStoreUnitOfWork.java
+++ b/core/spi/src/main/java/org/qi4j/spi/entitystore/DefaultEntityStoreUnitOfWork.java
@@ -17,9 +17,9 @@ package org.qi4j.spi.entitystore;
import java.util.HashMap;
import org.qi4j.api.entity.EntityDescriptor;
import org.qi4j.api.entity.EntityReference;
-import org.qi4j.api.structure.Module;
import org.qi4j.api.usecase.Usecase;
import org.qi4j.spi.entity.EntityState;
+import org.qi4j.spi.module.ModuleSpi;
/**
* Default EntityStore UnitOfWork.
@@ -29,21 +29,18 @@ public final class DefaultEntityStoreUnitOfWork
{
private EntityStoreSPI entityStoreSPI;
private String identity;
- private Module module;
private HashMap<EntityReference, EntityState> states = new HashMap<>();
private Usecase usecase;
private long currentTime;
public DefaultEntityStoreUnitOfWork( EntityStoreSPI entityStoreSPI,
String identity,
- Module module,
Usecase usecase,
long currentTime
)
{
this.entityStoreSPI = entityStoreSPI;
this.identity = identity;
- this.module = module;
this.usecase = usecase;
this.currentTime = currentTime;
}
@@ -54,11 +51,6 @@ public final class DefaultEntityStoreUnitOfWork
return identity;
}
- public Module module()
- {
- return module;
- }
-
@Override
public long currentTime()
{
@@ -73,7 +65,7 @@ public final class DefaultEntityStoreUnitOfWork
// EntityStore
@Override
- public EntityState newEntityState( EntityReference anIdentity, EntityDescriptor descriptor )
+ public EntityState newEntityState( ModuleSpi module, EntityReference anIdentity, EntityDescriptor descriptor )
throws EntityStoreException
{
EntityState entityState = states.get( anIdentity );
@@ -81,13 +73,13 @@ public final class DefaultEntityStoreUnitOfWork
{
throw new EntityAlreadyExistsException( anIdentity );
}
- EntityState state = entityStoreSPI.newEntityState( this, anIdentity, descriptor );
+ EntityState state = entityStoreSPI.newEntityState( this, module, anIdentity, descriptor );
states.put( anIdentity, state );
return state;
}
@Override
- public EntityState entityStateOf( EntityReference anIdentity )
+ public EntityState entityStateOf( ModuleSpi module, EntityReference anIdentity )
throws EntityNotFoundException
{
@@ -96,7 +88,7 @@ public final class DefaultEntityStoreUnitOfWork
{
return entityState;
}
- entityState = entityStoreSPI.entityStateOf( this, anIdentity );
+ entityState = entityStoreSPI.entityStateOf( this, module, anIdentity );
states.put( anIdentity, entityState );
return entityState;
}
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityAlreadyExistsException.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityAlreadyExistsException.java b/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityAlreadyExistsException.java
index 116e9bf..6054dcd 100644
--- a/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityAlreadyExistsException.java
+++ b/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityAlreadyExistsException.java
@@ -28,7 +28,7 @@ public class EntityAlreadyExistsException
public EntityAlreadyExistsException( EntityReference identity )
{
- super("Entity " + identity + " already existed");
+ super("Entity " + identity + " already exists.");
this.identity = identity;
}
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityStateVersions.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityStateVersions.java b/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityStateVersions.java
index ddf1758..08e268d 100644
--- a/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityStateVersions.java
+++ b/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityStateVersions.java
@@ -21,10 +21,10 @@ import java.util.WeakHashMap;
import org.qi4j.api.entity.EntityReference;
import org.qi4j.api.injection.scope.This;
import org.qi4j.api.mixin.Mixins;
-import org.qi4j.api.structure.Module;
import org.qi4j.api.usecase.Usecase;
import org.qi4j.spi.entity.EntityState;
import org.qi4j.spi.entity.EntityStatus;
+import org.qi4j.spi.module.ModuleSpi;
/**
* Entity versions state.
@@ -36,7 +36,7 @@ public interface EntityStateVersions
void rememberVersion( EntityReference identity, String version );
- void checkForConcurrentModification( Iterable<EntityState> loaded, Module module, long currentTime )
+ void checkForConcurrentModification( Iterable<EntityState> loaded, ModuleSpi module, long currentTime )
throws ConcurrentEntityStateModificationException;
/**
@@ -48,7 +48,7 @@ public interface EntityStateVersions
@This
private EntityStore store;
- private final Map<EntityReference, String> versions = new WeakHashMap<EntityReference, String>();
+ private final Map<EntityReference, String> versions = new WeakHashMap<>();
@Override
public synchronized void forgetVersions( Iterable<EntityState> states )
@@ -67,7 +67,7 @@ public interface EntityStateVersions
@Override
public synchronized void checkForConcurrentModification( Iterable<EntityState> loaded,
- Module module,
+ ModuleSpi module,
long currentTime
)
throws ConcurrentEntityStateModificationException
@@ -84,7 +84,7 @@ public interface EntityStateVersions
if( storeVersion == null )
{
EntityStoreUnitOfWork unitOfWork = store.newUnitOfWork( Usecase.DEFAULT, module, currentTime );
- EntityState state = unitOfWork.entityStateOf( entityState.identity() );
+ EntityState state = unitOfWork.entityStateOf( module, entityState.identity() );
storeVersion = state.version();
unitOfWork.discard();
}
@@ -93,7 +93,7 @@ public interface EntityStateVersions
{
if( changed == null )
{
- changed = new ArrayList<EntityReference>();
+ changed = new ArrayList<>();
}
changed.add( entityState.identity() );
}
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityStore.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityStore.java b/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityStore.java
index fa5ac1b..b8de305 100644
--- a/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityStore.java
+++ b/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityStore.java
@@ -20,13 +20,14 @@ import org.qi4j.api.structure.Module;
import org.qi4j.api.usecase.Usecase;
import org.qi4j.io.Input;
import org.qi4j.spi.entity.EntityState;
+import org.qi4j.spi.module.ModuleSpi;
/**
* Interface that must be implemented by store for persistent state of EntityComposites.
*/
public interface EntityStore
{
- EntityStoreUnitOfWork newUnitOfWork( Usecase usecase, Module module, long currentTime );
+ EntityStoreUnitOfWork newUnitOfWork( Usecase usecase, ModuleSpi module, long currentTime );
- Input<EntityState, EntityStoreException> entityStates( Module module );
+ Input<EntityState, EntityStoreException> entityStates( ModuleSpi module );
}
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityStoreSPI.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityStoreSPI.java b/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityStoreSPI.java
index 536ceb9..521d2ce 100644
--- a/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityStoreSPI.java
+++ b/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityStoreSPI.java
@@ -17,6 +17,7 @@ package org.qi4j.spi.entitystore;
import org.qi4j.api.entity.EntityDescriptor;
import org.qi4j.api.entity.EntityReference;
import org.qi4j.spi.entity.EntityState;
+import org.qi4j.spi.module.ModuleSpi;
/**
* EntityStore SPI.
@@ -24,10 +25,11 @@ import org.qi4j.spi.entity.EntityState;
public interface EntityStoreSPI
{
EntityState newEntityState( EntityStoreUnitOfWork unitOfWork,
+ ModuleSpi module,
EntityReference identity, EntityDescriptor entityDescriptor
);
- EntityState entityStateOf( EntityStoreUnitOfWork unitOfWork, EntityReference identity );
+ EntityState entityStateOf( EntityStoreUnitOfWork unitOfWork, ModuleSpi module, EntityReference identity );
StateCommitter applyChanges( EntityStoreUnitOfWork unitOfWork, Iterable<EntityState> state
);
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityStoreUnitOfWork.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityStoreUnitOfWork.java b/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityStoreUnitOfWork.java
index 21655cd..0b055bf 100644
--- a/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityStoreUnitOfWork.java
+++ b/core/spi/src/main/java/org/qi4j/spi/entitystore/EntityStoreUnitOfWork.java
@@ -14,9 +14,12 @@
package org.qi4j.spi.entitystore;
+import org.qi4j.api.common.MetaInfo;
import org.qi4j.api.entity.EntityDescriptor;
import org.qi4j.api.entity.EntityReference;
+import org.qi4j.api.usecase.Usecase;
import org.qi4j.spi.entity.EntityState;
+import org.qi4j.spi.module.ModuleSpi;
/**
* EntityStore UnitOfWork.
@@ -40,7 +43,7 @@ public interface EntityStoreUnitOfWork
*
* @throws EntityStoreException Thrown if creational fails.
*/
- EntityState newEntityState( EntityReference anIdentity, EntityDescriptor entityDescriptor )
+ EntityState newEntityState( ModuleSpi module, EntityReference anIdentity, EntityDescriptor entityDescriptor )
throws EntityStoreException;
/**
@@ -54,11 +57,13 @@ public interface EntityStoreUnitOfWork
* @throws EntityStoreException thrown if retrieval failed.
* @throws EntityNotFoundException if requested entity does not exist
*/
- EntityState entityStateOf( EntityReference anIdentity )
+ EntityState entityStateOf( ModuleSpi module, EntityReference anIdentity )
throws EntityStoreException, EntityNotFoundException;
StateCommitter applyChanges()
throws EntityStoreException;
void discard();
+
+ Usecase usecase();
}
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/core/spi/src/main/java/org/qi4j/spi/entitystore/ModuleEntityStoreUnitOfWork.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/qi4j/spi/entitystore/ModuleEntityStoreUnitOfWork.java b/core/spi/src/main/java/org/qi4j/spi/entitystore/ModuleEntityStoreUnitOfWork.java
new file mode 100644
index 0000000..8e43144
--- /dev/null
+++ b/core/spi/src/main/java/org/qi4j/spi/entitystore/ModuleEntityStoreUnitOfWork.java
@@ -0,0 +1,69 @@
+package org.qi4j.spi.entitystore;
+
+import org.qi4j.api.entity.EntityDescriptor;
+import org.qi4j.api.entity.EntityReference;
+import org.qi4j.api.usecase.Usecase;
+import org.qi4j.spi.entity.EntityState;
+import org.qi4j.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-qi4j/blob/c8c3286c/core/spi/src/main/java/org/qi4j/spi/entitystore/StateChangeNotificationConcern.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/qi4j/spi/entitystore/StateChangeNotificationConcern.java b/core/spi/src/main/java/org/qi4j/spi/entitystore/StateChangeNotificationConcern.java
index d49e5eb..1365881 100644
--- a/core/spi/src/main/java/org/qi4j/spi/entitystore/StateChangeNotificationConcern.java
+++ b/core/spi/src/main/java/org/qi4j/spi/entitystore/StateChangeNotificationConcern.java
@@ -17,6 +17,7 @@ package org.qi4j.spi.entitystore;
import org.qi4j.api.concern.ConcernOf;
import org.qi4j.api.injection.scope.Service;
import org.qi4j.spi.entity.EntityState;
+import org.qi4j.spi.module.ModuleSpi;
/**
* State change notification Concern.
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/core/spi/src/main/java/org/qi4j/spi/entitystore/helpers/DefaultEntityState.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/qi4j/spi/entitystore/helpers/DefaultEntityState.java b/core/spi/src/main/java/org/qi4j/spi/entitystore/helpers/DefaultEntityState.java
index e7938c3..4d66073 100644
--- a/core/spi/src/main/java/org/qi4j/spi/entitystore/helpers/DefaultEntityState.java
+++ b/core/spi/src/main/java/org/qi4j/spi/entitystore/helpers/DefaultEntityState.java
@@ -32,7 +32,6 @@ import org.qi4j.spi.entity.EntityState;
import org.qi4j.spi.entity.EntityStatus;
import org.qi4j.spi.entity.ManyAssociationState;
import org.qi4j.spi.entity.NamedAssociationState;
-import org.qi4j.spi.entitystore.DefaultEntityStoreUnitOfWork;
/**
* Standard implementation of EntityState.
@@ -40,8 +39,6 @@ import org.qi4j.spi.entitystore.DefaultEntityStoreUnitOfWork;
public final class DefaultEntityState
implements EntityState
{
- private DefaultEntityStoreUnitOfWork unitOfWork;
-
private EntityStatus status;
private String version;
@@ -54,13 +51,13 @@ public final class DefaultEntityState
private final Map<QualifiedName, List<EntityReference>> manyAssociations;
private final Map<QualifiedName, Map<String, EntityReference>> namedAssociations;
- public DefaultEntityState( DefaultEntityStoreUnitOfWork unitOfWork,
+ public DefaultEntityState( long currentTime,
EntityReference identity,
EntityDescriptor entityDescriptor
)
{
- this( unitOfWork, "",
- unitOfWork.currentTime(),
+ this( "",
+ currentTime,
identity,
EntityStatus.NEW,
entityDescriptor,
@@ -70,8 +67,7 @@ public final class DefaultEntityState
new HashMap<QualifiedName, Map<String, EntityReference>>() );
}
- public DefaultEntityState( DefaultEntityStoreUnitOfWork unitOfWork,
- String version,
+ public DefaultEntityState( String version,
long lastModified,
EntityReference identity,
EntityStatus status,
@@ -82,7 +78,6 @@ public final class DefaultEntityState
Map<QualifiedName, Map<String, EntityReference>> namedAssociations
)
{
- this.unitOfWork = unitOfWork;
this.version = version;
this.lastModified = lastModified;
this.identity = identity;
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/core/spi/src/main/java/org/qi4j/spi/entitystore/helpers/JSONEntityState.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/qi4j/spi/entitystore/helpers/JSONEntityState.java b/core/spi/src/main/java/org/qi4j/spi/entitystore/helpers/JSONEntityState.java
index bef6229..435acde 100644
--- a/core/spi/src/main/java/org/qi4j/spi/entitystore/helpers/JSONEntityState.java
+++ b/core/spi/src/main/java/org/qi4j/spi/entitystore/helpers/JSONEntityState.java
@@ -33,7 +33,6 @@ import org.qi4j.spi.entity.EntityState;
import org.qi4j.spi.entity.EntityStatus;
import org.qi4j.spi.entity.ManyAssociationState;
import org.qi4j.spi.entity.NamedAssociationState;
-import org.qi4j.spi.entitystore.DefaultEntityStoreUnitOfWork;
import org.qi4j.spi.entitystore.EntityStoreException;
/**
@@ -44,15 +43,14 @@ public final class JSONEntityState
{
private static final String[] EMPTY_NAMES = new String[ 0 ];
private static final String[] CLONE_NAMES =
- {
- JSONKeys.IDENTITY,
- JSONKeys.APPLICATION_VERSION,
- JSONKeys.TYPE,
- JSONKeys.VERSION,
- JSONKeys.MODIFIED
- };
+ {
+ JSONKeys.IDENTITY,
+ JSONKeys.APPLICATION_VERSION,
+ JSONKeys.TYPE,
+ JSONKeys.VERSION,
+ JSONKeys.MODIFIED
+ };
- private final DefaultEntityStoreUnitOfWork unitOfWork;
private final ValueSerialization valueSerialization;
private final String version;
private final EntityReference identity;
@@ -62,24 +60,23 @@ public final class JSONEntityState
private long lastModified;
private JSONObject state;
- /* package */ JSONEntityState( DefaultEntityStoreUnitOfWork unitOfWork,
+ /* package */ JSONEntityState( long time,
ValueSerialization valueSerialization,
EntityReference identity,
EntityDescriptor entityDescriptor,
- JSONObject initialState )
+ JSONObject initialState
+ )
{
- this( unitOfWork,
- valueSerialization,
+ this( valueSerialization,
"",
- unitOfWork.currentTime(),
+ time,
identity,
EntityStatus.NEW,
entityDescriptor,
initialState );
}
- /* package */ JSONEntityState( DefaultEntityStoreUnitOfWork unitOfWork,
- ValueSerialization valueSerialization,
+ /* package */ JSONEntityState( ValueSerialization valueSerialization,
String version,
long lastModified,
EntityReference identity,
@@ -88,7 +85,6 @@ public final class JSONEntityState
JSONObject state
)
{
- this.unitOfWork = unitOfWork;
this.valueSerialization = valueSerialization;
this.version = version;
this.lastModified = lastModified;
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/core/spi/src/main/java/org/qi4j/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/qi4j/spi/entitystore/helpers/JSONMapEntityStoreMixin.java b/core/spi/src/main/java/org/qi4j/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
index 7cbb88b..47bf17f 100644
--- a/core/spi/src/main/java/org/qi4j/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
+++ b/core/spi/src/main/java/org/qi4j/spi/entitystore/helpers/JSONMapEntityStoreMixin.java
@@ -42,10 +42,8 @@ import org.qi4j.api.injection.scope.Uses;
import org.qi4j.api.service.ServiceDescriptor;
import org.qi4j.api.service.qualifier.Tagged;
import org.qi4j.api.structure.Application;
-import org.qi4j.api.structure.Module;
import org.qi4j.api.unitofwork.EntityTypeNotFoundException;
import org.qi4j.api.usecase.Usecase;
-import org.qi4j.api.usecase.UsecaseBuilder;
import org.qi4j.api.value.ValueSerialization;
import org.qi4j.io.Input;
import org.qi4j.io.Output;
@@ -62,6 +60,7 @@ import org.qi4j.spi.entitystore.EntityStore;
import org.qi4j.spi.entitystore.EntityStoreException;
import org.qi4j.spi.entitystore.EntityStoreSPI;
import org.qi4j.spi.entitystore.EntityStoreUnitOfWork;
+import org.qi4j.spi.entitystore.ModuleEntityStoreUnitOfWork;
import org.qi4j.spi.entitystore.StateCommitter;
import org.qi4j.spi.module.ModelModule;
import org.qi4j.spi.module.ModuleSpi;
@@ -144,15 +143,18 @@ public class JSONMapEntityStoreMixin
// EntityStore
@Override
- public EntityStoreUnitOfWork newUnitOfWork( Usecase usecaseMetaInfo, Module module, long currentTime )
+ public EntityStoreUnitOfWork newUnitOfWork( Usecase usecaseMetaInfo, ModuleSpi module, long currentTime )
{
- return new DefaultEntityStoreUnitOfWork( entityStoreSpi, newUnitOfWorkId(), module, usecaseMetaInfo, currentTime );
+ EntityStoreUnitOfWork storeUnitOfWork = new DefaultEntityStoreUnitOfWork( entityStoreSpi, newUnitOfWorkId(), usecaseMetaInfo, currentTime );
+ storeUnitOfWork = new ModuleEntityStoreUnitOfWork( module, storeUnitOfWork );
+ return storeUnitOfWork;
}
// EntityStoreSPI
@Override
public EntityState newEntityState( EntityStoreUnitOfWork unitOfWork,
+ ModuleSpi module,
EntityReference identity,
EntityDescriptor entityDescriptor
)
@@ -169,7 +171,7 @@ public class JSONMapEntityStoreMixin
state.put( JSONKeys.ASSOCIATIONS, new JSONObject() );
state.put( JSONKeys.MANY_ASSOCIATIONS, new JSONObject() );
state.put( JSONKeys.NAMED_ASSOCIATIONS, new JSONObject() );
- return new JSONEntityState( (DefaultEntityStoreUnitOfWork) unitOfWork, valueSerialization,
+ return new JSONEntityState( unitOfWork.currentTime(), valueSerialization,
identity, entityDescriptor, state );
}
catch( JSONException e )
@@ -179,17 +181,20 @@ public class JSONMapEntityStoreMixin
}
@Override
- public synchronized EntityState entityStateOf( EntityStoreUnitOfWork unitOfWork, EntityReference identity )
+ public synchronized EntityState entityStateOf( EntityStoreUnitOfWork unitOfWork,
+ ModuleSpi module,
+ EntityReference identity
+ )
{
- EntityState state = fetchCachedState( identity, (DefaultEntityStoreUnitOfWork) unitOfWork );
+ EntityState state = fetchCachedState( identity, module, unitOfWork.currentTime() );
if( state != null )
{
return state;
}
// Get state
Reader in = mapEntityStore.get( identity );
- JSONEntityState loadedState = readEntityState( (DefaultEntityStoreUnitOfWork) unitOfWork, in );
- if( doCacheOnRead( (DefaultEntityStoreUnitOfWork) unitOfWork ) )
+ JSONEntityState loadedState = readEntityState( module, in );
+ if( doCacheOnRead( unitOfWork ) )
{
cache.put( identity.identity(), new CacheState( loadedState.state() ) );
}
@@ -197,7 +202,8 @@ public class JSONMapEntityStoreMixin
}
@Override
- public StateCommitter applyChanges( final EntityStoreUnitOfWork unitOfWork, final Iterable<EntityState> state
+ public StateCommitter applyChanges( final EntityStoreUnitOfWork unitOfWork,
+ final Iterable<EntityState> state
)
throws EntityStoreException
{
@@ -214,8 +220,7 @@ public class JSONMapEntityStoreMixin
public void visitMap( MapEntityStore.MapChanger changer )
throws IOException
{
- DefaultEntityStoreUnitOfWork uow = (DefaultEntityStoreUnitOfWork) unitOfWork;
- CacheOptions options = uow.usecase().metaInfo( CacheOptions.class );
+ CacheOptions options = unitOfWork.usecase().metaInfo( CacheOptions.class );
if( options == null )
{
options = CacheOptions.ALWAYS;
@@ -226,7 +231,7 @@ public class JSONMapEntityStoreMixin
JSONEntityState state = (JSONEntityState) entityState;
if( state.status().equals( EntityStatus.NEW ) )
{
- try( Writer writer = changer.newEntity( state.identity(), state.entityDescriptor() ) )
+ try (Writer writer = changer.newEntity( state.identity(), state.entityDescriptor() ))
{
writeEntityState( state, writer, unitOfWork.identity(), unitOfWork.currentTime() );
}
@@ -237,7 +242,7 @@ public class JSONMapEntityStoreMixin
}
else if( state.status().equals( EntityStatus.UPDATED ) )
{
- try( Writer writer = changer.updateEntity( state.identity(), state.entityDescriptor() ) )
+ try (Writer writer = changer.updateEntity( state.identity(), state.entityDescriptor() ))
{
writeEntityState( state, writer, unitOfWork.identity(), unitOfWork.currentTime() );
}
@@ -269,7 +274,7 @@ public class JSONMapEntityStoreMixin
}
@Override
- public Input<EntityState, EntityStoreException> entityStates( final Module module )
+ public Input<EntityState, EntityStoreException> entityStates( final ModuleSpi module )
{
return new Input<EntityState, EntityStoreException>()
{
@@ -283,20 +288,7 @@ public class JSONMapEntityStoreMixin
public <ReceiverThrowableType extends Throwable> void sendTo( final Receiver<? super EntityState, ReceiverThrowableType> receiver )
throws ReceiverThrowableType, EntityStoreException
{
- Usecase usecase = UsecaseBuilder
- .buildUsecase( "qi4j.entitystore.entitystates" )
- .withMetaInfo( CacheOptions.NEVER )
- .newUsecase();
-
- final DefaultEntityStoreUnitOfWork uow = new DefaultEntityStoreUnitOfWork(
- entityStoreSpi,
- newUnitOfWorkId(),
- module,
- usecase,
- System.currentTimeMillis() );
-
final List<EntityState> migrated = new ArrayList<>();
-
try
{
mapEntityStore.entityStates().transferTo( new Output<Reader, ReceiverThrowableType>()
@@ -311,7 +303,7 @@ public class JSONMapEntityStoreMixin
public void receive( Reader item )
throws ReceiverThrowableType
{
- final EntityState entity = readEntityState( uow, item );
+ final EntityState entity = readEntityState( module, item );
if( entity.status() == EntityStatus.UPDATED )
{
migrated.add( entity );
@@ -370,7 +362,7 @@ public class JSONMapEntityStoreMixin
for( EntityState migratedEntity : migratedEntities )
{
JSONEntityState state = (JSONEntityState) migratedEntity;
- try( Writer writer = changer.updateEntity( state.identity(), state.entityDescriptor() ) )
+ try (Writer writer = changer.updateEntity( state.identity(), state.entityDescriptor() ))
{
writeEntityState( state, writer, state.version(), state.lastModified() );
}
@@ -401,12 +393,11 @@ public class JSONMapEntityStoreMixin
}
}
- protected JSONEntityState readEntityState( DefaultEntityStoreUnitOfWork unitOfWork, Reader entityState )
+ protected JSONEntityState readEntityState( ModuleSpi module, Reader entityState )
throws EntityStoreException
{
try
{
- ModuleSpi module = (ModuleSpi) unitOfWork.module();
JSONObject jsonObject = new JSONObject( new JSONTokener( entityState ) );
EntityStatus status = EntityStatus.LOADED;
@@ -449,8 +440,7 @@ public class JSONMapEntityStoreMixin
) );
}
- return new JSONEntityState( unitOfWork,
- valueSerialization,
+ return new JSONEntityState( valueSerialization,
version,
modified,
EntityReference.parseEntityReference( identity ),
@@ -469,7 +459,7 @@ public class JSONMapEntityStoreMixin
public JSONObject jsonStateOf( String id )
throws IOException
{
- try( Reader reader = mapEntityStore.get( EntityReference.parseEntityReference( id ) ) )
+ try (Reader reader = mapEntityStore.get( EntityReference.parseEntityReference( id ) ))
{
return new JSONObject( new JSONTokener( reader ) );
}
@@ -479,7 +469,7 @@ public class JSONMapEntityStoreMixin
}
}
- private EntityState fetchCachedState( EntityReference identity, DefaultEntityStoreUnitOfWork unitOfWork )
+ private EntityState fetchCachedState( EntityReference identity, ModuleSpi module, long currentTime )
{
CacheState cacheState = cache.get( identity.identity() );
if( cacheState != null )
@@ -488,8 +478,8 @@ public class JSONMapEntityStoreMixin
try
{
String type = data.getString( JSONKeys.TYPE );
- EntityDescriptor entityDescriptor = unitOfWork.module().entityDescriptor( type );
- return new JSONEntityState( unitOfWork, valueSerialization, identity, entityDescriptor, data );
+ EntityDescriptor entityDescriptor = module.entityDescriptor( type );
+ return new JSONEntityState( currentTime, valueSerialization, identity, entityDescriptor, data );
}
catch( JSONException e )
{
@@ -500,18 +490,18 @@ public class JSONMapEntityStoreMixin
return null;
}
- private boolean doCacheOnRead( DefaultEntityStoreUnitOfWork unitOfWork )
+ private boolean doCacheOnRead( EntityStoreUnitOfWork unitOfWork )
{
CacheOptions cacheOptions = unitOfWork.usecase().metaInfo( CacheOptions.class );
return cacheOptions == null || cacheOptions.cacheOnRead();
}
- private static class CacheState
+ public static class CacheState
implements Externalizable
{
public JSONObject json;
- private CacheState()
+ public CacheState()
{
}
@@ -541,5 +531,4 @@ public class JSONMapEntityStoreMixin
}
}
}
-
}
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/core/spi/src/main/java/org/qi4j/spi/entitystore/helpers/MapEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/qi4j/spi/entitystore/helpers/MapEntityStoreMixin.java b/core/spi/src/main/java/org/qi4j/spi/entitystore/helpers/MapEntityStoreMixin.java
index a41b308..a2d02bc 100644
--- a/core/spi/src/main/java/org/qi4j/spi/entitystore/helpers/MapEntityStoreMixin.java
+++ b/core/spi/src/main/java/org/qi4j/spi/entitystore/helpers/MapEntityStoreMixin.java
@@ -34,7 +34,6 @@ import org.json.JSONObject;
import org.json.JSONTokener;
import org.json.JSONWriter;
import org.qi4j.api.association.AssociationDescriptor;
-import org.qi4j.api.cache.CacheOptions;
import org.qi4j.api.common.Optional;
import org.qi4j.api.common.QualifiedName;
import org.qi4j.api.entity.EntityDescriptor;
@@ -47,11 +46,9 @@ import org.qi4j.api.property.PropertyDescriptor;
import org.qi4j.api.service.ServiceDescriptor;
import org.qi4j.api.service.qualifier.Tagged;
import org.qi4j.api.structure.Application;
-import org.qi4j.api.structure.Module;
import org.qi4j.api.type.ValueType;
import org.qi4j.api.unitofwork.EntityTypeNotFoundException;
import org.qi4j.api.usecase.Usecase;
-import org.qi4j.api.usecase.UsecaseBuilder;
import org.qi4j.api.value.ValueSerialization;
import org.qi4j.io.Input;
import org.qi4j.io.Output;
@@ -65,6 +62,7 @@ import org.qi4j.spi.entitystore.EntityStore;
import org.qi4j.spi.entitystore.EntityStoreException;
import org.qi4j.spi.entitystore.EntityStoreSPI;
import org.qi4j.spi.entitystore.EntityStoreUnitOfWork;
+import org.qi4j.spi.entitystore.ModuleEntityStoreUnitOfWork;
import org.qi4j.spi.entitystore.StateCommitter;
import org.qi4j.spi.module.ModelModule;
import org.qi4j.spi.module.ModuleSpi;
@@ -118,27 +116,33 @@ public class MapEntityStoreMixin
// EntityStore
@Override
- public EntityStoreUnitOfWork newUnitOfWork( Usecase usecaseMetaInfo, Module module, long currentTime )
+ public EntityStoreUnitOfWork newUnitOfWork( Usecase usecaseMetaInfo, ModuleSpi module, long currentTime )
{
- return new DefaultEntityStoreUnitOfWork( entityStoreSpi, newUnitOfWorkId(), module, usecaseMetaInfo, currentTime );
+ EntityStoreUnitOfWork storeUnitOfWork =
+ new DefaultEntityStoreUnitOfWork( entityStoreSpi, newUnitOfWorkId(), usecaseMetaInfo, currentTime );
+ storeUnitOfWork = new ModuleEntityStoreUnitOfWork( module, storeUnitOfWork );
+ return storeUnitOfWork;
}
// EntityStoreSPI
@Override
public EntityState newEntityState( EntityStoreUnitOfWork unitOfWork,
+ ModuleSpi module,
EntityReference identity,
EntityDescriptor entityDescriptor
)
{
- return new DefaultEntityState( (DefaultEntityStoreUnitOfWork) unitOfWork, identity, entityDescriptor );
+ return new DefaultEntityState( unitOfWork.currentTime(), identity, entityDescriptor );
}
@Override
- public synchronized EntityState entityStateOf( EntityStoreUnitOfWork unitofwork, EntityReference identity )
+ public synchronized EntityState entityStateOf( EntityStoreUnitOfWork unitofwork,
+ ModuleSpi module,
+ EntityReference identity
+ )
{
- DefaultEntityStoreUnitOfWork unitOfWork = (DefaultEntityStoreUnitOfWork) unitofwork;
Reader in = mapEntityStore.get( identity );
- return readEntityState( unitOfWork, in );
+ return readEntityState( module, in );
}
@Override
@@ -198,7 +202,7 @@ public class MapEntityStoreMixin
}
@Override
- public Input<EntityState, EntityStoreException> entityStates( final Module module )
+ public Input<EntityState, EntityStoreException> entityStates( final ModuleSpi module )
{
return new Input<EntityState, EntityStoreException>()
{
@@ -212,20 +216,7 @@ public class MapEntityStoreMixin
public <ReceiverThrowableType extends Throwable> void sendTo( final Receiver<? super EntityState, ReceiverThrowableType> receiver )
throws ReceiverThrowableType, EntityStoreException
{
- Usecase usecase = UsecaseBuilder
- .buildUsecase( "qi4j.entitystore.entitystates" )
- .withMetaInfo( CacheOptions.NEVER )
- .newUsecase();
-
- final DefaultEntityStoreUnitOfWork uow = new DefaultEntityStoreUnitOfWork(
- entityStoreSpi,
- newUnitOfWorkId(),
- module,
- usecase,
- System.currentTimeMillis() );
-
final List<EntityState> migrated = new ArrayList<>();
-
try
{
mapEntityStore.entityStates().transferTo( new Output<Reader, ReceiverThrowableType>()
@@ -240,7 +231,7 @@ public class MapEntityStoreMixin
public void receive( Reader item )
throws ReceiverThrowableType
{
- final EntityState entity = readEntityState( uow, item );
+ final EntityState entity = readEntityState( module, item );
if( entity.status() == EntityStatus.UPDATED )
{
migrated.add( entity );
@@ -394,12 +385,11 @@ public class MapEntityStoreMixin
}
}
- protected EntityState readEntityState( DefaultEntityStoreUnitOfWork unitOfWork, Reader entityState )
+ protected EntityState readEntityState( ModuleSpi module, Reader entityState )
throws EntityStoreException
{
try
{
- ModuleSpi module = (ModuleSpi) unitOfWork.module();
JSONObject jsonObject = new JSONObject( new JSONTokener( entityState ) );
EntityStatus status = EntityStatus.LOADED;
@@ -539,8 +529,7 @@ public class MapEntityStoreMixin
}
}
- return new DefaultEntityState( unitOfWork,
- version,
+ return new DefaultEntityState( version,
modified,
EntityReference.parseEntityReference( identity ),
status,
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/core/spi/src/test/java/org/qi4j/spi/entitystore/helpers/JSONManyAssociationStateTest.java
----------------------------------------------------------------------
diff --git a/core/spi/src/test/java/org/qi4j/spi/entitystore/helpers/JSONManyAssociationStateTest.java b/core/spi/src/test/java/org/qi4j/spi/entitystore/helpers/JSONManyAssociationStateTest.java
index d0c3426..dba4b58 100644
--- a/core/spi/src/test/java/org/qi4j/spi/entitystore/helpers/JSONManyAssociationStateTest.java
+++ b/core/spi/src/test/java/org/qi4j/spi/entitystore/helpers/JSONManyAssociationStateTest.java
@@ -45,7 +45,6 @@ public class JSONManyAssociationStateTest
state.put( JSONKeys.MANY_ASSOCIATIONS, new JSONObject() );
state.put( JSONKeys.NAMED_ASSOCIATIONS, new JSONObject() );
JSONEntityState entityState = new JSONEntityState( null,
- null,
"0",
System.currentTimeMillis(),
EntityReference.parseEntityReference( "123" ),
@@ -71,7 +70,6 @@ public class JSONManyAssociationStateTest
state.put( JSONKeys.MANY_ASSOCIATIONS, new JSONObject() );
state.put( JSONKeys.NAMED_ASSOCIATIONS, new JSONObject() );
JSONEntityState entityState = new JSONEntityState( null,
- null,
"0",
System.currentTimeMillis(),
EntityReference.parseEntityReference( "123" ),
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/core/testsupport/src/main/java/org/qi4j/test/AbstractQi4jTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/qi4j/test/AbstractQi4jTest.java b/core/testsupport/src/main/java/org/qi4j/test/AbstractQi4jTest.java
index 7b7adbb..2ef0647 100644
--- a/core/testsupport/src/main/java/org/qi4j/test/AbstractQi4jTest.java
+++ b/core/testsupport/src/main/java/org/qi4j/test/AbstractQi4jTest.java
@@ -16,13 +16,13 @@ package org.qi4j.test;
import org.junit.After;
import org.junit.Before;
-import org.qi4j.api.structure.Module;
import org.qi4j.api.unitofwork.UnitOfWork;
import org.qi4j.bootstrap.ApplicationAssembly;
import org.qi4j.bootstrap.Assembler;
import org.qi4j.bootstrap.AssemblyException;
import org.qi4j.bootstrap.LayerAssembly;
import org.qi4j.bootstrap.ModuleAssembly;
+import org.qi4j.spi.module.ModuleSpi;
/**
* Base class for Composite tests.
@@ -30,7 +30,7 @@ import org.qi4j.bootstrap.ModuleAssembly;
public abstract class AbstractQi4jTest extends AbstractQi4jBaseTest
implements Assembler
{
- protected Module module;
+ protected ModuleSpi module;
@Before
@Override
@@ -42,7 +42,7 @@ public abstract class AbstractQi4jTest extends AbstractQi4jBaseTest
{
return; // failure in Assembly.
}
- module = application.findModule( "Layer 1", "Module 1" );
+ module = (ModuleSpi) application.findModule( "Layer 1", "Module 1" );
module.injectTo( this );
}
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/extensions/entitystore-hazelcast/src/main/java/org/qi4j/entitystore/hazelcast/HazelcastEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-hazelcast/src/main/java/org/qi4j/entitystore/hazelcast/HazelcastEntityStoreMixin.java b/extensions/entitystore-hazelcast/src/main/java/org/qi4j/entitystore/hazelcast/HazelcastEntityStoreMixin.java
index 501b34b..ebc54a0 100644
--- a/extensions/entitystore-hazelcast/src/main/java/org/qi4j/entitystore/hazelcast/HazelcastEntityStoreMixin.java
+++ b/extensions/entitystore-hazelcast/src/main/java/org/qi4j/entitystore/hazelcast/HazelcastEntityStoreMixin.java
@@ -157,8 +157,8 @@ public class HazelcastEntityStoreMixin
output.receiveFrom( new Sender<Reader, IOException>()
{
@Override
- public <ReceiverThrowableType extends Throwable> void sendTo( Receiver<? super Reader, ReceiverThrowableType> receiver )
- throws ReceiverThrowableType, IOException
+ public <RTT extends Throwable> void sendTo( Receiver<? super Reader, RTT> receiver )
+ throws RTT, IOException
{
for( Map.Entry<String, String> eachEntry : stringMap.entrySet() )
{
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/extensions/entitystore-preferences/src/main/java/org/qi4j/entitystore/prefs/PreferencesEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-preferences/src/main/java/org/qi4j/entitystore/prefs/PreferencesEntityStoreMixin.java b/extensions/entitystore-preferences/src/main/java/org/qi4j/entitystore/prefs/PreferencesEntityStoreMixin.java
index 6017b80..b078d8d 100644
--- a/extensions/entitystore-preferences/src/main/java/org/qi4j/entitystore/prefs/PreferencesEntityStoreMixin.java
+++ b/extensions/entitystore-preferences/src/main/java/org/qi4j/entitystore/prefs/PreferencesEntityStoreMixin.java
@@ -43,7 +43,6 @@ import org.qi4j.api.service.ServiceActivation;
import org.qi4j.api.service.ServiceDescriptor;
import org.qi4j.api.service.qualifier.Tagged;
import org.qi4j.api.structure.Application;
-import org.qi4j.api.structure.Module;
import org.qi4j.api.type.CollectionType;
import org.qi4j.api.type.EnumType;
import org.qi4j.api.type.MapType;
@@ -67,6 +66,7 @@ import org.qi4j.spi.entitystore.EntityStore;
import org.qi4j.spi.entitystore.EntityStoreException;
import org.qi4j.spi.entitystore.EntityStoreSPI;
import org.qi4j.spi.entitystore.EntityStoreUnitOfWork;
+import org.qi4j.spi.entitystore.ModuleEntityStoreUnitOfWork;
import org.qi4j.spi.entitystore.StateCommitter;
import org.qi4j.spi.entitystore.helpers.DefaultEntityState;
import org.qi4j.spi.module.ModelModule;
@@ -174,13 +174,15 @@ public class PreferencesEntityStoreMixin
}
@Override
- public EntityStoreUnitOfWork newUnitOfWork( Usecase usecase, Module module, long currentTime )
+ public EntityStoreUnitOfWork newUnitOfWork( Usecase usecase, ModuleSpi module, long currentTime )
{
- return new DefaultEntityStoreUnitOfWork( entityStoreSpi, newUnitOfWorkId(), module, usecase, currentTime );
+ EntityStoreUnitOfWork storeUnitOfWork = new DefaultEntityStoreUnitOfWork( entityStoreSpi, newUnitOfWorkId(), usecase, currentTime );
+ storeUnitOfWork = new ModuleEntityStoreUnitOfWork( module, storeUnitOfWork );
+ return storeUnitOfWork;
}
@Override
- public Input<EntityState, EntityStoreException> entityStates( final Module module )
+ public Input<EntityState, EntityStoreException> entityStates( final ModuleSpi module )
{
return new Input<EntityState, EntityStoreException>()
{
@@ -196,18 +198,16 @@ public class PreferencesEntityStoreMixin
{
UsecaseBuilder builder = UsecaseBuilder.buildUsecase( "qi4j.entitystore.preferences.visit" );
Usecase visitUsecase = builder.withMetaInfo( CacheOptions.NEVER ).newUsecase();
- final DefaultEntityStoreUnitOfWork uow = new DefaultEntityStoreUnitOfWork(
- entityStoreSpi,
- newUnitOfWorkId(),
- module,
- visitUsecase,
- System.currentTimeMillis() );
+ final EntityStoreUnitOfWork uow =
+ newUnitOfWork( visitUsecase, module, System.currentTimeMillis() );
+
try
{
String[] identities = root.childrenNames();
for( String identity : identities )
{
- EntityState entityState = uow.entityStateOf( EntityReference.parseEntityReference( identity ) );
+ EntityReference reference = EntityReference.parseEntityReference( identity );
+ EntityState entityState = uow.entityStateOf( module, reference );
receiver.receive( entityState );
}
}
@@ -223,22 +223,19 @@ public class PreferencesEntityStoreMixin
@Override
public EntityState newEntityState( EntityStoreUnitOfWork unitOfWork,
+ ModuleSpi module,
EntityReference identity,
EntityDescriptor entityDescriptor
)
{
- return new DefaultEntityState( (DefaultEntityStoreUnitOfWork) unitOfWork, identity, entityDescriptor );
+ return new DefaultEntityState( unitOfWork.currentTime(), identity, entityDescriptor );
}
@Override
- public EntityState entityStateOf( EntityStoreUnitOfWork unitOfWork, EntityReference identity )
+ public EntityState entityStateOf( EntityStoreUnitOfWork unitOfWork, ModuleSpi module, EntityReference identity )
{
try
{
- DefaultEntityStoreUnitOfWork desuw = (DefaultEntityStoreUnitOfWork) unitOfWork;
-
- ModuleSpi module = (ModuleSpi) desuw.module();
-
if( !root.nodeExists( identity.identity() ) )
{
throw new NoSuchEntityException( identity, UnknownType.class );
@@ -443,8 +440,7 @@ public class PreferencesEntityStoreMixin
}
}
- return new DefaultEntityState( desuw,
- entityPrefs.get( "version", "" ),
+ return new DefaultEntityState( entityPrefs.get( "version", "" ),
entityPrefs.getLong( "modified", unitOfWork.currentTime() ),
identity,
status,
@@ -466,6 +462,7 @@ public class PreferencesEntityStoreMixin
{
return new StateCommitter()
{
+ @SuppressWarnings( "SynchronizeOnNonFinalField" )
@Override
public void commit()
{
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/extensions/entitystore-sql/src/main/java/org/qi4j/entitystore/sql/SQLEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/main/java/org/qi4j/entitystore/sql/SQLEntityStoreMixin.java b/extensions/entitystore-sql/src/main/java/org/qi4j/entitystore/sql/SQLEntityStoreMixin.java
index ddeca7b..b57dcf0 100644
--- a/extensions/entitystore-sql/src/main/java/org/qi4j/entitystore/sql/SQLEntityStoreMixin.java
+++ b/extensions/entitystore-sql/src/main/java/org/qi4j/entitystore/sql/SQLEntityStoreMixin.java
@@ -48,7 +48,6 @@ import org.qi4j.api.property.PropertyDescriptor;
import org.qi4j.api.service.ServiceActivation;
import org.qi4j.api.service.qualifier.Tagged;
import org.qi4j.api.structure.Application;
-import org.qi4j.api.structure.Module;
import org.qi4j.api.type.ValueType;
import org.qi4j.api.unitofwork.EntityTypeNotFoundException;
import org.qi4j.api.usecase.Usecase;
@@ -73,6 +72,7 @@ import org.qi4j.spi.entitystore.EntityStore;
import org.qi4j.spi.entitystore.EntityStoreException;
import org.qi4j.spi.entitystore.EntityStoreSPI;
import org.qi4j.spi.entitystore.EntityStoreUnitOfWork;
+import org.qi4j.spi.entitystore.ModuleEntityStoreUnitOfWork;
import org.qi4j.spi.entitystore.StateCommitter;
import org.qi4j.spi.entitystore.helpers.DefaultEntityState;
import org.qi4j.spi.entitystore.helpers.JSONKeys;
@@ -237,31 +237,34 @@ public class SQLEntityStoreMixin
}
@Override
- public EntityState entityStateOf( EntityStoreUnitOfWork unitOfWork, EntityReference entityRef )
+ public EntityState entityStateOf( EntityStoreUnitOfWork unitOfWork, ModuleSpi module, EntityReference entityRef )
{
EntityValueResult valueResult = getValue( entityRef );
- return new DefaultSQLEntityState( readEntityState( (DefaultEntityStoreUnitOfWork) unitOfWork,
- valueResult.getReader() ),
- valueResult.getEntityPK(),
- valueResult.getEntityOptimisticLock() );
+ DefaultEntityState state = readEntityState( module, valueResult.getReader() );
+ return new DefaultSQLEntityState( state, valueResult.getEntityPK(), valueResult.getEntityOptimisticLock() );
}
@Override
- public EntityState newEntityState( EntityStoreUnitOfWork unitOfWork, EntityReference entityRef, EntityDescriptor entityDescriptor )
+ public EntityState newEntityState( EntityStoreUnitOfWork unitOfWork,
+ ModuleSpi module,
+ EntityReference entityRef,
+ EntityDescriptor entityDescriptor
+ )
{
- return new DefaultSQLEntityState( new DefaultEntityState( (DefaultEntityStoreUnitOfWork) unitOfWork,
- entityRef,
- entityDescriptor ) );
+ return new DefaultSQLEntityState( new DefaultEntityState( unitOfWork.currentTime(), entityRef, entityDescriptor ) );
}
@Override
- public EntityStoreUnitOfWork newUnitOfWork( Usecase usecase, Module module, long currentTime )
+ public EntityStoreUnitOfWork newUnitOfWork( Usecase usecase, ModuleSpi module, long currentTime )
{
- return new DefaultEntityStoreUnitOfWork( entityStoreSPI, newUnitOfWorkId(), module, usecase, currentTime );
+ EntityStoreUnitOfWork storeUnitOfWork =
+ new DefaultEntityStoreUnitOfWork( entityStoreSPI, newUnitOfWorkId(), usecase, currentTime );
+ storeUnitOfWork = new ModuleEntityStoreUnitOfWork( module, storeUnitOfWork );
+ return storeUnitOfWork;
}
@Override
- public Input<EntityState, EntityStoreException> entityStates( final Module module )
+ public Input<EntityState, EntityStoreException> entityStates( final ModuleSpi module )
{
return new Input<EntityState, EntityStoreException>()
{
@@ -298,16 +301,15 @@ public class SQLEntityStoreMixin
};
}
- private void queryAllEntities( Module module, EntityStatesVisitor entityStatesVisitor )
+ private void queryAllEntities( ModuleSpi module, EntityStatesVisitor entityStatesVisitor )
{
Connection connection = null;
PreparedStatement ps = null;
ResultSet rs = null;
UsecaseBuilder builder = UsecaseBuilder.buildUsecase( "qi4j.entitystore.sql.visit" );
Usecase usecase = builder.withMetaInfo( CacheOptions.NEVER ).newUsecase();
- final DefaultEntityStoreUnitOfWork uow = new DefaultEntityStoreUnitOfWork( entityStoreSPI,
- newUnitOfWorkId(), module, usecase,
- System.currentTimeMillis() );
+ final ModuleEntityStoreUnitOfWork uow =
+ (ModuleEntityStoreUnitOfWork) newUnitOfWork( usecase, module, System.currentTimeMillis() );
try
{
connection = database.getConnection();
@@ -316,7 +318,7 @@ public class SQLEntityStoreMixin
rs = ps.executeQuery();
while( rs.next() )
{
- DefaultEntityState entityState = readEntityState( uow, database.getEntityValue( rs ).getReader() );
+ DefaultEntityState entityState = readEntityState( module, database.getEntityValue( rs ).getReader() );
if( !entityStatesVisitor.visit( entityState ) )
{
return;
@@ -345,12 +347,11 @@ public class SQLEntityStoreMixin
return uuid + Integer.toHexString( count.incrementAndGet() );
}
- protected DefaultEntityState readEntityState( DefaultEntityStoreUnitOfWork unitOfWork, Reader entityState )
+ protected DefaultEntityState readEntityState( ModuleSpi module, Reader entityState )
throws EntityStoreException
{
try
{
- ModuleSpi module = (ModuleSpi) unitOfWork.module();
JSONObject jsonObject = new JSONObject( new JSONTokener( entityState ) );
EntityStatus status = EntityStatus.LOADED;
@@ -491,7 +492,7 @@ public class SQLEntityStoreMixin
}
}
- return new DefaultEntityState( unitOfWork, version, modified,
+ return new DefaultEntityState( version, modified,
EntityReference.parseEntityReference( identity ), status, entityDescriptor,
properties, associations, manyAssociations, namedAssociations );
}
@@ -506,7 +507,7 @@ public class SQLEntityStoreMixin
throws IOException
{
JSONObject jsonObject;
- try( Reader reader = getValue( EntityReference.parseEntityReference( id ) ).getReader() )
+ try (Reader reader = getValue( EntityReference.parseEntityReference( id ) ).getReader())
{
jsonObject = new JSONObject( new JSONTokener( reader ) );
}
@@ -532,10 +533,7 @@ public class SQLEntityStoreMixin
{
throw new EntityNotFoundException( ref );
}
-
- EntityValueResult result = database.getEntityValue( rs );
-
- return result;
+ return database.getEntityValue( rs );
}
catch( SQLException sqle )
{
@@ -590,7 +588,8 @@ public class SQLEntityStoreMixin
}
JSONWriter associations = properties.endObject().key( JSONKeys.ASSOCIATIONS ).object();
- for( Map.Entry<QualifiedName, EntityReference> stateNameEntityReferenceEntry : state.associations().entrySet() )
+ for( Map.Entry<QualifiedName, EntityReference> stateNameEntityReferenceEntry : state.associations()
+ .entrySet() )
{
EntityReference value = stateNameEntityReferenceEntry.getValue();
associations.key( stateNameEntityReferenceEntry.getKey().name() ).
@@ -598,7 +597,8 @@ public class SQLEntityStoreMixin
}
JSONWriter manyAssociations = associations.endObject().key( JSONKeys.MANY_ASSOCIATIONS ).object();
- for( Map.Entry<QualifiedName, List<EntityReference>> stateNameListEntry : state.manyAssociations().entrySet() )
+ for( Map.Entry<QualifiedName, List<EntityReference>> stateNameListEntry : state.manyAssociations()
+ .entrySet() )
{
JSONWriter assocs = manyAssociations.key( stateNameListEntry.getKey().name() ).array();
for( EntityReference entityReference : stateNameListEntry.getValue() )
@@ -609,7 +609,8 @@ public class SQLEntityStoreMixin
}
JSONWriter namedAssociations = manyAssociations.endObject().key( JSONKeys.NAMED_ASSOCIATIONS ).object();
- for( Map.Entry<QualifiedName, Map<String, EntityReference>> stateNameMapEntry : state.namedAssociations().entrySet() )
+ for( Map.Entry<QualifiedName, Map<String, EntityReference>> stateNameMapEntry : state.namedAssociations()
+ .entrySet() )
{
JSONWriter assocs = namedAssociations.key( stateNameMapEntry.getKey().name() ).object();
for( Map.Entry<String, EntityReference> entry : stateNameMapEntry.getValue().entrySet() )
@@ -625,5 +626,4 @@ public class SQLEntityStoreMixin
throw new EntityStoreException( "Could not store EntityState", e );
}
}
-
}
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/extensions/indexing-elasticsearch/src/main/java/org/qi4j/index/elasticsearch/ElasticSearchIndexer.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-elasticsearch/src/main/java/org/qi4j/index/elasticsearch/ElasticSearchIndexer.java b/extensions/indexing-elasticsearch/src/main/java/org/qi4j/index/elasticsearch/ElasticSearchIndexer.java
index 58172d5..329c8e5 100644
--- a/extensions/indexing-elasticsearch/src/main/java/org/qi4j/index/elasticsearch/ElasticSearchIndexer.java
+++ b/extensions/indexing-elasticsearch/src/main/java/org/qi4j/index/elasticsearch/ElasticSearchIndexer.java
@@ -34,7 +34,6 @@ import org.qi4j.api.injection.scope.This;
import org.qi4j.api.mixin.Mixins;
import org.qi4j.api.property.PropertyDescriptor;
import org.qi4j.api.service.qualifier.Tagged;
-import org.qi4j.api.structure.Module;
import org.qi4j.api.type.ValueType;
import org.qi4j.api.usecase.UsecaseBuilder;
import org.qi4j.api.util.Classes;
@@ -49,6 +48,7 @@ import org.qi4j.spi.entity.NamedAssociationState;
import org.qi4j.spi.entitystore.EntityStore;
import org.qi4j.spi.entitystore.EntityStoreUnitOfWork;
import org.qi4j.spi.entitystore.StateChangeListener;
+import org.qi4j.spi.module.ModuleSpi;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -67,13 +67,17 @@ public interface ElasticSearchIndexer
{
private static final Logger LOGGER = LoggerFactory.getLogger( ElasticSearchIndexer.class );
+
@Structure
- private Module module;
+ private ModuleSpi module;
+
@Service
private EntityStore entityStore;
+
@Service
@Tagged( ValueSerialization.Formats.JSON )
private ValueSerializer valueSerializer;
+
@This
private ElasticSearchSupport support;
@@ -111,27 +115,27 @@ public interface ElasticSearchIndexer
{
switch( changedState.status() )
{
- case REMOVED:
- LOGGER.trace( "Removing Entity State from Index: {}", changedState );
- remove( bulkBuilder, changedState.identity().identity() );
- break;
- case UPDATED:
- LOGGER.trace( "Updating Entity State in Index: {}", changedState );
- remove( bulkBuilder, changedState.identity().identity() );
- String updatedJson = toJSON( changedState, newStates, uow );
- LOGGER.trace( "Will index: {}", updatedJson );
- index( bulkBuilder, changedState.identity().identity(), updatedJson );
- break;
- case NEW:
- LOGGER.trace( "Creating Entity State in Index: {}", changedState );
- String newJson = toJSON( changedState, newStates, uow );
- LOGGER.trace( "Will index: {}", newJson );
- index( bulkBuilder, changedState.identity().identity(), newJson );
- break;
- case LOADED:
- default:
- // Ignored
- break;
+ case REMOVED:
+ LOGGER.trace( "Removing Entity State from Index: {}", changedState );
+ remove( bulkBuilder, changedState.identity().identity() );
+ break;
+ case UPDATED:
+ LOGGER.trace( "Updating Entity State in Index: {}", changedState );
+ remove( bulkBuilder, changedState.identity().identity() );
+ String updatedJson = toJSON( changedState, newStates, uow );
+ LOGGER.trace( "Will index: {}", updatedJson );
+ index( bulkBuilder, changedState.identity().identity(), updatedJson );
+ break;
+ case NEW:
+ LOGGER.trace( "Creating Entity State in Index: {}", changedState );
+ String newJson = toJSON( changedState, newStates, uow );
+ LOGGER.trace( "Will index: {}", newJson );
+ index( bulkBuilder, changedState.identity().identity(), newJson );
+ break;
+ case LOADED:
+ default:
+ // Ignored
+ break;
}
}
}
@@ -154,7 +158,6 @@ public interface ElasticSearchIndexer
// Refresh index
support.client().admin().indices().prepareRefresh( support.index() ).execute().actionGet();
-
}
}
@@ -190,7 +193,8 @@ public interface ElasticSearchIndexer
JSONObject json = new JSONObject();
json.put( "_identity", state.identity().identity() );
- json.put( "_types", Iterables.toList( Iterables.map( Classes.toClassName(), state.entityDescriptor().mixinTypes() ) ) );
+ json.put( "_types", Iterables.toList( Iterables.map( Classes.toClassName(), state.entityDescriptor()
+ .mixinTypes() ) ) );
EntityDescriptor entityType = state.entityDescriptor();
@@ -247,7 +251,8 @@ public interface ElasticSearchIndexer
}
else
{
- EntityState assocState = uow.entityStateOf( EntityReference.parseEntityReference( associated.identity() ) );
+ EntityReference reference = EntityReference.parseEntityReference( associated.identity() );
+ EntityState assocState = uow.entityStateOf( module, reference );
value = new JSONObject( toJSON( assocState, newStates, uow ) );
}
}
@@ -278,7 +283,8 @@ public interface ElasticSearchIndexer
}
else
{
- EntityState assocState = uow.entityStateOf( EntityReference.parseEntityReference( associated.identity() ) );
+ EntityReference reference = EntityReference.parseEntityReference( associated.identity() );
+ EntityState assocState = uow.entityStateOf( module, reference );
array.put( new JSONObject( toJSON( assocState, newStates, uow ) ) );
}
}
@@ -312,7 +318,8 @@ public interface ElasticSearchIndexer
}
else
{
- EntityState assocState = uow.entityStateOf( EntityReference.parseEntityReference( identity ) );
+ EntityReference reference = EntityReference.parseEntityReference( identity );
+ EntityState assocState = uow.entityStateOf( module, reference );
JSONObject obj = new JSONObject( toJSON( assocState, newStates, uow ) );
obj.put( "_named", name );
array.put( obj );
@@ -338,5 +345,4 @@ public interface ElasticSearchIndexer
}
}
}
-
}
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c8c3286c/extensions/indexing-rdf/src/main/java/org/qi4j/index/rdf/indexing/RdfIndexingService.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-rdf/src/main/java/org/qi4j/index/rdf/indexing/RdfIndexingService.java b/extensions/indexing-rdf/src/main/java/org/qi4j/index/rdf/indexing/RdfIndexingService.java
index f2a03ff..444aa17 100644
--- a/extensions/indexing-rdf/src/main/java/org/qi4j/index/rdf/indexing/RdfIndexingService.java
+++ b/extensions/indexing-rdf/src/main/java/org/qi4j/index/rdf/indexing/RdfIndexingService.java
@@ -86,7 +86,7 @@ public interface RdfIndexingService
@Override
public void initialize()
{
- indexedEntityTypes = new HashSet<EntityDescriptor>();
+ indexedEntityTypes = new HashSet<>();
}
@Override