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 <[email protected]> Authored: Thu Jun 25 14:41:23 2015 +0200 Committer: Niclas Hedhman <[email protected]> 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
