From c39be5dad80968744ac12c0fe3710fe7d33f3593 Mon Sep 17 00:00:00 2001
From: Todd Nine
Date: Thu, 26 Mar 2015 16:50:09 -0600
Subject: [PATCH 01/12] First pass of changing interface to only use
ApplicationScope. Implementation should be legacy compatible
---
.../collection/EntityCollectionManager.java | 47 ++-
.../EntityCollectionManagerFactory.java | 13 +-
.../cache/CachedEntityCollectionManager.java | 9 +-
.../exception/CollectionRuntimeException.java | 30 +-
.../exception/EntityTooLargeException.java | 6 +-
.../exception/WriteCommitException.java | 11 +-
.../WriteOptimisticVerifyException.java | 10 +-
.../exception/WriteStartException.java | 10 +-
.../exception/WriteUniqueVerifyException.java | 6 +-
.../EntityCollectionManagerFactoryImpl.java | 18 +-
.../impl/EntityCollectionManagerImpl.java | 41 +-
.../collection/impl/EntityDeletedTask.java | 6 +-
.../impl/EntityVersionCleanupTask.java | 2 +-
.../impl/EntityVersionTaskFactory.java | 10 +-
.../mvcc/stage/CollectionIoEvent.java | 7 +-
.../mvcc/stage/delete/MarkCommit.java | 9 +-
.../mvcc/stage/delete/MarkStart.java | 15 +-
.../mvcc/stage/write/RollbackAction.java | 5 +-
.../mvcc/stage/write/WriteCommit.java | 13 +-
.../stage/write/WriteOptimisticVerify.java | 9 +-
.../mvcc/stage/write/WriteStart.java | 13 +-
.../mvcc/stage/write/WriteUniqueVerify.java | 21 +-
.../MvccEntitySerializationStrategy.java | 15 +-
.../MvccLogEntrySerializationStrategy.java | 21 +-
.../UniqueValueSerializationStrategy.java | 23 +-
.../serialization/impl/LogEntryIterator.java | 2 +-
.../MvccEntitySerializationStrategyImpl.java | 66 ++--
...cEntitySerializationStrategyProxyImpl.java | 16 +-
...MvccEntitySerializationStrategyV3Impl.java | 52 +--
...MvccLogEntrySerializationStrategyImpl.java | 31 +-
.../impl/SerializationModule.java | 2 +-
.../UniqueValueSerializationStrategyImpl.java | 61 +--
.../serialization/impl/util/Inflector.java | 370 ++++++++++++++++++
.../impl/util/LegacyScopeUtils.java | 57 +++
.../impl/EntityVersionCleanupTaskTest.java | 11 +-
.../mvcc/stage/delete/MarkCommitTest.java | 2 +-
.../mvcc/stage/delete/MarkStartTest.java | 2 +-
.../mvcc/stage/write/WriteCommitTest.java | 2 +-
.../write/WriteOptimisticVerifyTest.java | 14 +-
.../mvcc/stage/write/WriteStartTest.java | 2 +-
.../impl/LogEntryIteratorTest.java | 2 +-
.../impl/MvccLESSTransientTest.java | 6 +-
...LogEntrySerializationStrategyImplTest.java | 2 +-
.../collection/util/LogEntryMock.java | 3 +-
.../collection/util/UniqueValueEntryMock.java | 10 -
45 files changed, 775 insertions(+), 308 deletions(-)
rename stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/{mvcc => serialization}/MvccLogEntrySerializationStrategy.java (72%)
create mode 100644 stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/util/Inflector.java
create mode 100644 stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/util/LegacyScopeUtils.java
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManager.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManager.java
index 6532ee6850..d4232cac9f 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManager.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManager.java
@@ -35,50 +35,69 @@ public interface EntityCollectionManager {
/**
* Write the entity in the entity collection. This is an entire entity, it's contents will
* completely overwrite the previous values, if it exists.
+ *
* @param entity The entity to update
+ *
+ * @return the Observable with the updated entity in the body
*/
- public Observable write( Entity entity );
+ Observable write( Entity entity );
/**
- * MarkCommit the entity and remove it's indexes with the given entity id
+ * @param entityId MarkCommit the entity as deleted
+ *
+ * @return The observable of the id after the operation has completed
*/
- public Observable delete( Id entityId );
+ Observable delete( Id entityId );
/**
+ * @param entityId The entity id to load.
+ *
+ * @return The observable with the entity
+ *
* Load the entity with the given entity Id
*/
- public Observable load( Id entityId );
+ Observable load( Id entityId );
/**
+ * @param entityIds Returns a version set with the latest version for each of the entities
* Return the latest versions of the specified entityIds
+ *
+ * @return A versionset that has all the latest versions for the specified Ids that could be found
*/
- public Observable getLatestVersion( Collection entityId );
+ Observable getLatestVersion( Collection entityIds );
- public Observable getEntitiesFromFields( Collection fields );
+ /**
+ * Get a fieldset of all fields from the entities
+ * @param entityType The type of entity. From the "type" field in the id.
+ * @param fields The collection of fields to search
+ * @return
+ */
+ Observable getEntitiesFromFields( String entityType, Collection fields );
/**
* Gets the Id for a field
+ * @param entityType the type field from the Id object
+ * @param field The field to search for
+ *
* @return most likely a single Id, watch for onerror events
*/
- public Observable getIdField(final Field field);
+ Observable getIdField( String entityType, Field field );
- /**
- * Audit a unique field, and remove any stale entries in the system
- * @param field The field to audit within this collection scope.
- public Observable auditUniqueField(final Field field);
- */
/**
+ * @param entityIds The entityIds for loading a collection
* Load all the entityIds into the observable entity set
+ *
+ * @return An EntitySet with the latest data of every entity that could be located
*/
- public Observable load(Collection entityIds);
+ Observable load( Collection entityIds );
/**
* Returns health of entity data store.
*/
- public Health getHealth();
+ Health getHealth();
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactory.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactory.java
index 16045ed851..1d6f45e9f5 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactory.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactory.java
@@ -19,6 +19,9 @@
package org.apache.usergrid.persistence.collection;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+
+
/**
* A basic factory that creates a collection manager with the given context.
* Each instance of this factory should exist for a Single ApplicationScope
@@ -31,13 +34,13 @@ public interface EntityCollectionManagerFactory {
* and will shard responses. The returned instance should not be shared
* among threads it will not be guaranteed to be thread safe.
*
- * @param collectionScope The collectionScope collectionScope to use
- * when creating the collectionScope manager
+ * @param applicationScope The applicationScope to use
+ * when creating the EntityCollectionManager
*
- * @return The collectionScope manager to perform operations within the provided context
+ * @return The EntityCollectionManager to perform operations within the applicationscope provided
*/
- public EntityCollectionManager
- createCollectionManager( CollectionScope collectionScope );
+ EntityCollectionManager
+ createCollectionManager( ApplicationScope applicationScope );
void invalidate();
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/cache/CachedEntityCollectionManager.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/cache/CachedEntityCollectionManager.java
index 955f0b7c42..57dcc798f3 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/cache/CachedEntityCollectionManager.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/cache/CachedEntityCollectionManager.java
@@ -70,8 +70,8 @@ public CachedEntityCollectionManager( final EntityCacheFig entityCacheFig,
}
@Override
- public Observable getEntitiesFromFields( final Collection fields ) {
- return targetEntityCollectionManager.getEntitiesFromFields( fields );
+ public Observable getEntitiesFromFields( final String entityType, final Collection fields) {
+ return targetEntityCollectionManager.getEntitiesFromFields( entityType, fields );
}
@Override
@@ -110,9 +110,10 @@ public Observable getLatestVersion( final Collection entityId )
}
+
@Override
- public Observable getIdField( final Field field ) {
- return targetEntityCollectionManager.getIdField( field );
+ public Observable getIdField( final String entityType, final Field field ) {
+ return targetEntityCollectionManager.getIdField( entityType, field );
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/CollectionRuntimeException.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/CollectionRuntimeException.java
index 416cb9f934..431122e7cb 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/CollectionRuntimeException.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/CollectionRuntimeException.java
@@ -17,53 +17,53 @@
*/
package org.apache.usergrid.persistence.collection.exception;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.MvccEntity;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
public class CollectionRuntimeException extends RuntimeException {
private MvccEntity entity;
- private CollectionScope collectionScope;
+ private ApplicationScope applicationScope;
- public CollectionRuntimeException( MvccEntity entity, CollectionScope scope, final String message ) {
- super( message );
+ public CollectionRuntimeException( MvccEntity entity, ApplicationScope scope, final String message ) {
+ super( message );
this.entity = entity;
- this.collectionScope = scope;
+ this.applicationScope = scope;
}
- public CollectionRuntimeException( MvccEntity entity, CollectionScope scope, final String message, final Throwable cause ) {
+ public CollectionRuntimeException( MvccEntity entity, ApplicationScope scope, final String message, final Throwable cause ) {
super( message, cause );
this.entity = entity;
- this.collectionScope = scope;
+ this.applicationScope = scope;
}
- public CollectionRuntimeException( MvccEntity entity, CollectionScope scope, final Throwable cause ) {
+ public CollectionRuntimeException( MvccEntity entity, ApplicationScope scope, final Throwable cause ) {
super( cause );
this.entity = entity;
- this.collectionScope = scope;
+ this.applicationScope = scope;
}
- public CollectionRuntimeException( MvccEntity entity, CollectionScope scope,
+ public CollectionRuntimeException( MvccEntity entity, ApplicationScope scope,
final String message, final Throwable cause, final boolean enableSuppression,
final boolean writableStackTrace ) {
super( message, cause, enableSuppression, writableStackTrace );
this.entity = entity;
- this.collectionScope = scope;
+ this.applicationScope = scope;
}
-
- public CollectionScope getCollectionScope() {
- return collectionScope;
+
+ public ApplicationScope getApplicationScope() {
+ return applicationScope;
}
/**
* Entity involved in operation.
- * @return Entity or null if entity not instantiated yet in operation.
+ * @return Entity or null if entity not instantiated yet in operation.
*/
public MvccEntity getEntity() {
return entity;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/EntityTooLargeException.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/EntityTooLargeException.java
index 11224db0d2..6ba300194d 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/EntityTooLargeException.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/EntityTooLargeException.java
@@ -18,11 +18,11 @@
*/
package org.apache.usergrid.persistence.collection.exception;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.MvccEntity;
+
import org.apache.usergrid.persistence.model.entity.Entity;
+
public class EntityTooLargeException extends RuntimeException {
private final Entity entity;
@@ -59,7 +59,7 @@ public int getAttemptedSize() {
/**
* Entity involved in operation.
- * @return Entity or null if entity not instantiated yet in operation.
+ * @return Entity or null if entity not instantiated yet in operation.
*/
public Entity getEntity() {
return entity;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteCommitException.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteCommitException.java
index b0b8b9cad9..426502e886 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteCommitException.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteCommitException.java
@@ -17,28 +17,29 @@
*/
package org.apache.usergrid.persistence.collection.exception;
-import org.apache.usergrid.persistence.collection.CollectionScope;
+
import org.apache.usergrid.persistence.collection.MvccEntity;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
public class WriteCommitException extends CollectionRuntimeException {
- public WriteCommitException( MvccEntity entity, CollectionScope scope, final String message ) {
+ public WriteCommitException( MvccEntity entity, ApplicationScope scope, final String message ) {
super( entity, scope, message );
}
- public WriteCommitException( MvccEntity entity, CollectionScope scope, final String message, final Throwable cause ) {
+ public WriteCommitException( MvccEntity entity, ApplicationScope scope, final String message, final Throwable cause ) {
super( entity, scope, message, cause );
}
- public WriteCommitException( MvccEntity entity, CollectionScope scope, final Throwable cause ) {
+ public WriteCommitException( MvccEntity entity, ApplicationScope scope, final Throwable cause ) {
super( entity, scope, cause );
}
- public WriteCommitException( MvccEntity entity, CollectionScope scope, final String message, final Throwable cause, final boolean enableSuppression,
+ public WriteCommitException( MvccEntity entity, ApplicationScope scope, final String message, final Throwable cause, final boolean enableSuppression,
final boolean writableStackTrace ) {
super( entity, scope, message, cause, enableSuppression, writableStackTrace );
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteOptimisticVerifyException.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteOptimisticVerifyException.java
index ca9c7aa2e4..0badc42b51 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteOptimisticVerifyException.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteOptimisticVerifyException.java
@@ -17,29 +17,29 @@
*/
package org.apache.usergrid.persistence.collection.exception;
-import org.apache.usergrid.persistence.collection.CollectionScope;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.collection.MvccEntity;
public class WriteOptimisticVerifyException extends CollectionRuntimeException {
- public WriteOptimisticVerifyException( MvccEntity entity, CollectionScope scope, final String message ) {
+ public WriteOptimisticVerifyException( MvccEntity entity, ApplicationScope scope, final String message ) {
super( entity, scope, message );
}
- public WriteOptimisticVerifyException( MvccEntity entity, CollectionScope scope, final String message, final Throwable cause ) {
+ public WriteOptimisticVerifyException( MvccEntity entity, ApplicationScope scope, final String message, final Throwable cause ) {
super( entity, scope, message, cause );
}
- public WriteOptimisticVerifyException( MvccEntity entity, CollectionScope scope, final Throwable cause ) {
+ public WriteOptimisticVerifyException( MvccEntity entity, ApplicationScope scope, final Throwable cause ) {
super( entity, scope, cause );
}
- public WriteOptimisticVerifyException( MvccEntity entity, CollectionScope scope,
+ public WriteOptimisticVerifyException( MvccEntity entity, ApplicationScope scope,
final String message, final Throwable cause, final boolean enableSuppression,
final boolean writableStackTrace ) {
super( entity, scope, message, cause, enableSuppression, writableStackTrace );
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteStartException.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteStartException.java
index f8a90df5af..27f029b839 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteStartException.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteStartException.java
@@ -17,29 +17,29 @@
*/
package org.apache.usergrid.persistence.collection.exception;
-import org.apache.usergrid.persistence.collection.CollectionScope;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.collection.MvccEntity;
public class WriteStartException extends CollectionRuntimeException {
- public WriteStartException( MvccEntity entity, CollectionScope scope, final String message ) {
+ public WriteStartException( MvccEntity entity, ApplicationScope scope, final String message ) {
super( entity, scope, message );
}
- public WriteStartException( MvccEntity entity, CollectionScope scope, final String message, final Throwable cause ) {
+ public WriteStartException( MvccEntity entity, ApplicationScope scope, final String message, final Throwable cause ) {
super( entity, scope, message, cause );
}
- public WriteStartException( MvccEntity entity, CollectionScope scope, final Throwable cause ) {
+ public WriteStartException( MvccEntity entity, ApplicationScope scope, final Throwable cause ) {
super( entity, scope, cause );
}
- public WriteStartException( MvccEntity entity, CollectionScope scope, final String message, final Throwable cause, final boolean enableSuppression,
+ public WriteStartException( MvccEntity entity, ApplicationScope scope, final String message, final Throwable cause, final boolean enableSuppression,
final boolean writableStackTrace ) {
super( entity, scope, message, cause, enableSuppression, writableStackTrace );
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteUniqueVerifyException.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteUniqueVerifyException.java
index a20e0903e9..083eddb494 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteUniqueVerifyException.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteUniqueVerifyException.java
@@ -20,7 +20,7 @@
import java.util.Map;
-import org.apache.usergrid.persistence.collection.CollectionScope;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.model.field.Field;
@@ -31,8 +31,8 @@
public class WriteUniqueVerifyException extends CollectionRuntimeException {
private Map violations;
-
- public WriteUniqueVerifyException( MvccEntity entity, CollectionScope scope, Map violations ) {
+
+ public WriteUniqueVerifyException( MvccEntity entity, ApplicationScope scope, Map violations ) {
super( entity, scope, "Error: one or more duplicate fields detected");
this.violations = violations;
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java
index 409467cbc7..5cc326b089 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java
@@ -23,13 +23,12 @@
import java.util.concurrent.ExecutionException;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.EntityCollectionManager;
import org.apache.usergrid.persistence.collection.EntityCollectionManagerFactory;
import org.apache.usergrid.persistence.collection.cache.CachedEntityCollectionManager;
import org.apache.usergrid.persistence.collection.cache.EntityCacheFig;
import org.apache.usergrid.persistence.collection.guice.CollectionTaskExecutor;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.mvcc.stage.delete.MarkCommit;
import org.apache.usergrid.persistence.collection.mvcc.stage.delete.MarkStart;
import org.apache.usergrid.persistence.collection.mvcc.stage.write.RollbackAction;
@@ -38,10 +37,10 @@
import org.apache.usergrid.persistence.collection.mvcc.stage.write.WriteStart;
import org.apache.usergrid.persistence.collection.mvcc.stage.write.WriteUniqueVerify;
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
-import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.metrics.MetricsFactory;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.task.TaskExecutor;
import com.google.common.base.Preconditions;
@@ -50,7 +49,6 @@
import com.google.common.cache.LoadingCache;
import com.google.inject.Inject;
import com.google.inject.Singleton;
-import com.google.inject.assistedinject.Assisted;
import com.netflix.astyanax.Keyspace;
@@ -78,10 +76,10 @@ public class EntityCollectionManagerFactoryImpl implements EntityCollectionManag
private final EntityCacheFig entityCacheFig;
private final MetricsFactory metricsFactory;
- private LoadingCache ecmCache =
+ private LoadingCache ecmCache =
CacheBuilder.newBuilder().maximumSize( 1000 )
- .build( new CacheLoader() {
- public EntityCollectionManager load( CollectionScope scope ) {
+ .build( new CacheLoader() {
+ public EntityCollectionManager load( ApplicationScope scope ) {
//create the target EM that will perform logic
final EntityCollectionManager target = new EntityCollectionManagerImpl(
writeStart, writeVerifyUnique,
@@ -129,10 +127,10 @@ public EntityCollectionManagerFactoryImpl( final WriteStart writeStart,
this.metricsFactory = metricsFactory;
}
@Override
- public EntityCollectionManager createCollectionManager(CollectionScope collectionScope) {
- Preconditions.checkNotNull(collectionScope);
+ public EntityCollectionManager createCollectionManager(ApplicationScope applicationScope) {
+ Preconditions.checkNotNull(applicationScope);
try{
- return ecmCache.get(collectionScope);
+ return ecmCache.get(applicationScope);
}catch (ExecutionException ee){
throw new RuntimeException(ee);
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerImpl.java
index 70b5a3a4d9..1d73268442 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerImpl.java
@@ -28,15 +28,13 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.EntityCollectionManager;
import org.apache.usergrid.persistence.collection.EntitySet;
import org.apache.usergrid.persistence.collection.FieldSet;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.VersionSet;
import org.apache.usergrid.persistence.collection.guice.CollectionTaskExecutor;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
-import org.apache.usergrid.persistence.collection.mvcc.entity.MvccValidationUtils;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionIoEvent;
import org.apache.usergrid.persistence.collection.mvcc.stage.delete.MarkCommit;
import org.apache.usergrid.persistence.collection.mvcc.stage.delete.MarkStart;
@@ -52,6 +50,7 @@
import org.apache.usergrid.persistence.collection.serialization.impl.MutableFieldSet;
import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.metrics.MetricsFactory;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.task.Task;
import org.apache.usergrid.persistence.core.task.TaskExecutor;
import org.apache.usergrid.persistence.core.util.Health;
@@ -91,8 +90,6 @@ public class EntityCollectionManagerImpl implements EntityCollectionManager {
private static final Logger logger = LoggerFactory.getLogger( EntityCollectionManagerImpl.class );
- private final CollectionScope collectionScope;
-
//start stages
private final WriteStart writeStart;
@@ -125,6 +122,8 @@ public class EntityCollectionManagerImpl implements EntityCollectionManager {
private final Meter loadMeter;
private final Meter updateMeter;
+ private final ApplicationScope applicationScope;
+
@Inject
public EntityCollectionManagerImpl(
@@ -141,14 +140,14 @@ public EntityCollectionManagerImpl(
final Keyspace keyspace,
final EntityVersionTaskFactory entityVersionTaskFactory,
@CollectionTaskExecutor final TaskExecutor taskExecutor,
- @Assisted final CollectionScope collectionScope,
+ @Assisted final ApplicationScope applicationScope,
final MetricsFactory metricsFactory
) {
this.uniqueValueSerializationStrategy = uniqueValueSerializationStrategy;
this.entitySerializationStrategy = entitySerializationStrategy;
- MvccValidationUtils.validateCollectionScope( collectionScope );
+ ValidationUtils.validateApplicationScope( applicationScope );
this.writeStart = writeStart;
this.writeVerifyUnique = writeVerifyUnique;
@@ -165,7 +164,7 @@ public EntityCollectionManagerImpl(
this.entityVersionTaskFactory = entityVersionTaskFactory;
this.taskExecutor = taskExecutor;
- this.collectionScope = collectionScope;
+ this.applicationScope = applicationScope;
this.mvccLogEntrySerializationStrategy = mvccLogEntrySerializationStrategy;
this.writeTimer = metricsFactory.getTimer(EntityCollectionManagerImpl.class,"write.timer");
this.writeMeter = metricsFactory.getMeter(EntityCollectionManagerImpl.class, "write.meter");
@@ -192,7 +191,7 @@ public Observable write( final Entity entity ) {
// create our observable and start the write
- final CollectionIoEvent writeData = new CollectionIoEvent( collectionScope, entity );
+ final CollectionIoEvent writeData = new CollectionIoEvent( applicationScope, entity );
Observable> observable = stageRunner( writeData, writeStart );
@@ -206,8 +205,8 @@ public Observable write( final Entity entity ) {
@Override
public void call(final Entity entity) {
//TODO fire the created task first then the entityVersioncleanup
- taskExecutor.submit( entityVersionTaskFactory.getCreatedTask( collectionScope, entity ));
- taskExecutor.submit( entityVersionTaskFactory.getCleanupTask( collectionScope, entityId,
+ taskExecutor.submit( entityVersionTaskFactory.getCreatedTask( applicationScope, entity ));
+ taskExecutor.submit( entityVersionTaskFactory.getCleanupTask( applicationScope, entityId,
entity.getVersion(), false ));
//post-processing to come later. leave it empty for now.
}
@@ -235,7 +234,7 @@ public Observable delete( final Id entityId ) {
Preconditions.checkNotNull( entityId.getType(), "Entity type is required in this stage" );
final Timer.Context timer = deleteTimer.time();
- Observable o = Observable.just( new CollectionIoEvent( collectionScope, entityId ) )
+ Observable o = Observable.just( new CollectionIoEvent( applicationScope, entityId ) )
.map(markStart)
.doOnNext( markCommit )
.map(new Func1, Id>() {
@@ -244,7 +243,7 @@ public Observable delete( final Id entityId ) {
public Id call(final CollectionIoEvent mvccEntityCollectionIoEvent) {
MvccEntity entity = mvccEntityCollectionIoEvent.getEvent();
Task task = entityVersionTaskFactory
- .getDeleteTask( collectionScope, entity.getId(), entity.getVersion() );
+ .getDeleteTask( applicationScope, entity.getId(), entity.getVersion() );
taskExecutor.submit(task);
return entity.getId();
}
@@ -318,7 +317,7 @@ public Observable load( final Collection entityIds ) {
public void call( final Subscriber super EntitySet> subscriber ) {
try {
final EntitySet results =
- entitySerializationStrategy.load( collectionScope, entityIds, UUIDGenerator.newTimeUUID() );
+ entitySerializationStrategy.load( applicationScope, entityIds, UUIDGenerator.newTimeUUID() );
subscriber.onNext( results );
subscriber.onCompleted();
@@ -344,13 +343,13 @@ public void call() {
@Override
- public Observable getIdField( final Field field ) {
+ public Observable getIdField(final String type, final Field field ) {
final List fields = Collections.singletonList( field );
return rx.Observable.from( fields ).map( new Func1() {
@Override
public Id call( Field field ) {
try {
- final UniqueValueSet set = uniqueValueSerializationStrategy.load( collectionScope, fields );
+ final UniqueValueSet set = uniqueValueSerializationStrategy.load( applicationScope, type, fields );
final UniqueValue value = set.getValue( field.getName() );
return value == null ? null : value.getEntityId();
}
@@ -369,7 +368,7 @@ public Id call( Field field ) {
* @return
*/
@Override
- public Observable getEntitiesFromFields( final Collection fields ) {
+ public Observable getEntitiesFromFields(final String type, final Collection fields ) {
return rx.Observable.just(fields).map( new Func1, FieldSet>() {
@Override
public FieldSet call( Collection fields ) {
@@ -378,7 +377,7 @@ public FieldSet call( Collection fields ) {
final UUID startTime = UUIDGenerator.newTimeUUID();
//Get back set of unique values that correspond to collection of fields
- UniqueValueSet set = uniqueValueSerializationStrategy.load( collectionScope, fields );
+ UniqueValueSet set = uniqueValueSerializationStrategy.load( applicationScope,type, fields );
//Short circut if we don't have any uniqueValues from the given fields.
if(!set.iterator().hasNext()){
@@ -403,7 +402,7 @@ public FieldSet call( Collection fields ) {
}
//Load a entity for each entityId we retrieved.
- final EntitySet entitySet = entitySerializationStrategy.load(collectionScope, entityIds, startTime);
+ final EntitySet entitySet = entitySerializationStrategy.load(applicationScope, entityIds, startTime);
//now loop through and ensure the entities are there.
final MutationBatch deleteBatch = keyspace.prepareMutationBatch();
@@ -415,7 +414,7 @@ public FieldSet call( Collection fields ) {
//bad unique value, delete this, it's inconsistent
if(entity == null || !entity.getEntity().isPresent()){
- final MutationBatch valueDelete = uniqueValueSerializationStrategy.delete(collectionScope, expectedUnique);
+ final MutationBatch valueDelete = uniqueValueSerializationStrategy.delete(applicationScope, expectedUnique);
deleteBatch.mergeShallow(valueDelete);
continue;
}
@@ -482,7 +481,7 @@ public Observable getLatestVersion( final Collection entityIds )
public void call( final Subscriber super VersionSet> subscriber ) {
try {
final VersionSet logEntries = mvccLogEntrySerializationStrategy
- .load( collectionScope, entityIds, UUIDGenerator.newTimeUUID() );
+ .load( applicationScope, entityIds, UUIDGenerator.newTimeUUID() );
subscriber.onNext( logEntries );
subscriber.onCompleted();
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityDeletedTask.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityDeletedTask.java
index 7620907d7d..213cbb9553 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityDeletedTask.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityDeletedTask.java
@@ -24,21 +24,17 @@
import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.event.EntityDeleted;
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.core.task.Task;
import org.apache.usergrid.persistence.model.entity.Id;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import rx.Observable;
-import rx.functions.Action1;
-import rx.functions.Func1;
import rx.schedulers.Schedulers;
import java.util.Set;
import java.util.UUID;
-import org.apache.commons.lang.NotImplementedException;
-
import org.apache.usergrid.persistence.core.guice.ProxyImpl;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCleanupTask.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCleanupTask.java
index 1a7b86bf2b..f52eb2598b 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCleanupTask.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCleanupTask.java
@@ -35,7 +35,7 @@
import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.event.EntityVersionDeleted;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
import org.apache.usergrid.persistence.collection.serialization.impl.LogEntryIterator;
import org.apache.usergrid.persistence.core.rx.ObservableIterator;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityVersionTaskFactory.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityVersionTaskFactory.java
index b41e6681e3..e121b77580 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityVersionTaskFactory.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityVersionTaskFactory.java
@@ -23,6 +23,7 @@
import org.apache.usergrid.persistence.collection.impl.EntityDeletedTask;
import org.apache.usergrid.persistence.collection.impl.EntityVersionCleanupTask;
import org.apache.usergrid.persistence.collection.impl.EntityVersionCreatedTask;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.Id;
@@ -41,8 +42,8 @@ public interface EntityVersionTaskFactory {
* @param includeVersion
* @return
*/
- public EntityVersionCleanupTask getCleanupTask( final CollectionScope scope, final Id entityId, final UUID version,
- final boolean includeVersion );
+ EntityVersionCleanupTask getCleanupTask( final ApplicationScope scope, final Id entityId, final UUID version,
+ final boolean includeVersion );
/**
* Get an entityVersionCreatedTask
@@ -50,7 +51,7 @@ public EntityVersionCleanupTask getCleanupTask( final CollectionScope scope, fin
* @param entity
* @return
*/
- public EntityVersionCreatedTask getCreatedTask( final CollectionScope scope, final Entity entity );
+ EntityVersionCreatedTask getCreatedTask( final ApplicationScope scope, final Entity entity );
/**
* Get an entity deleted task
@@ -59,7 +60,6 @@ public EntityVersionCleanupTask getCleanupTask( final CollectionScope scope, fin
* @param version
* @return
*/
- public EntityDeletedTask getDeleteTask( final CollectionScope collectionScope, final Id entityId,
- final UUID version );
+ EntityDeletedTask getDeleteTask( final ApplicationScope collectionScope, final Id entityId, final UUID version );
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/CollectionIoEvent.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/CollectionIoEvent.java
index d54f69a3f8..20fa4be2b2 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/CollectionIoEvent.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/CollectionIoEvent.java
@@ -21,6 +21,7 @@
import java.io.Serializable;
import org.apache.usergrid.persistence.collection.CollectionScope;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
/**
@@ -28,18 +29,18 @@
*/
public class CollectionIoEvent implements Serializable {
- private CollectionScope context;
+ private ApplicationScope context;
private T event;
- public CollectionIoEvent( final CollectionScope context, final T event ) {
+ public CollectionIoEvent( final ApplicationScope context, final T event ) {
this.context = context;
this.event = event;
}
- public CollectionScope getEntityCollection() {
+ public ApplicationScope getEntityCollection() {
return context;
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkCommit.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkCommit.java
index 5a0ada6783..1c5a1eb2de 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkCommit.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkCommit.java
@@ -26,7 +26,7 @@
import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.mvcc.entity.MvccValidationUtils;
@@ -36,6 +36,7 @@
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
import org.apache.usergrid.persistence.core.guice.ProxyImpl;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Id;
import com.google.common.base.Preconditions;
@@ -92,7 +93,7 @@ public void call( final CollectionIoEvent idIoEvent ) {
final UUID version = entity.getVersion();
- final CollectionScope collectionScope = idIoEvent.getEntityCollection();
+ final ApplicationScope applicationScope = idIoEvent.getEntityCollection();
LOG.debug("Inserting tombstone for entity {} at version {}", entityId, version );
@@ -100,12 +101,12 @@ public void call( final CollectionIoEvent idIoEvent ) {
final MvccLogEntry startEntry =
new MvccLogEntryImpl( entityId, version, Stage.COMMITTED, MvccLogEntry.State.DELETED );
- final MutationBatch entityStateBatch = logStrat.write( collectionScope, startEntry );
+ final MutationBatch entityStateBatch = logStrat.write( applicationScope, startEntry );
//insert a "cleared" value into the versions. Post processing should actually delete
try {
- final MutationBatch entityBatch = entityStrat.mark( collectionScope, entityId, version );
+ final MutationBatch entityBatch = entityStrat.mark( applicationScope, entityId, version );
entityStateBatch.mergeShallow( entityBatch );
entityStateBatch.execute();
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkStart.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkStart.java
index c80b076044..04059c5cb1 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkStart.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkStart.java
@@ -26,7 +26,7 @@
import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
@@ -34,6 +34,7 @@
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccLogEntryImpl;
import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionIoEvent;
import org.apache.usergrid.persistence.collection.service.UUIDService;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.util.ValidationUtils;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.Id;
@@ -49,8 +50,8 @@
/**
- * This is the first stage and should be invoked immediately when a write is started.
- * It should persist the start of a new write in the data store for
+ * This is the first stage and should be invoked immediately when a write is started.
+ * It should persist the start of a new write in the data store for
* a checkpoint and recovery
*/
@Singleton
@@ -86,12 +87,12 @@ public CollectionIoEvent call( final CollectionIoEvent entityIoE
final UUID version = uuidService.newTimeUUID();
- final CollectionScope collectionScope = entityIoEvent.getEntityCollection();
+ final ApplicationScope applicationScope = entityIoEvent.getEntityCollection();
final MvccLogEntry startEntry = new MvccLogEntryImpl( entityId, version, Stage.ACTIVE, MvccLogEntry.State.DELETED );
- MutationBatch write = logStrategy.write( collectionScope, startEntry );
+ MutationBatch write = logStrategy.write( applicationScope, startEntry );
try {
@@ -99,7 +100,7 @@ public CollectionIoEvent call( final CollectionIoEvent entityIoE
}
catch ( ConnectionException e ) {
LOG.error( "Failed to execute write asynchronously ", e );
- throw new CollectionRuntimeException( null, collectionScope,
+ throw new CollectionRuntimeException( null, applicationScope,
"Failed to execute write asynchronously ", e );
}
@@ -109,6 +110,6 @@ public CollectionIoEvent call( final CollectionIoEvent entityIoE
entityId, version, MvccEntity.Status.COMPLETE, Optional.absent() );
- return new CollectionIoEvent( collectionScope, nextStage );
+ return new CollectionIoEvent( applicationScope, nextStage );
}
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/RollbackAction.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/RollbackAction.java
index e1becf8f47..0de1ab6b65 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/RollbackAction.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/RollbackAction.java
@@ -23,11 +23,12 @@
import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.serialization.UniqueValue;
import org.apache.usergrid.persistence.collection.serialization.impl.UniqueValueImpl;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.field.Field;
@@ -70,7 +71,7 @@ public void call( final Throwable t ) {
CollectionRuntimeException cre = ( CollectionRuntimeException ) t;
final MvccEntity mvccEntity = cre.getEntity();
- final CollectionScope scope = cre.getCollectionScope();
+ final ApplicationScope scope = cre.getApplicationScope();
// one batch to handle rollback
MutationBatch rollbackMb = null;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteCommit.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteCommit.java
index 65ba0b446b..50321b6f60 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteCommit.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteCommit.java
@@ -26,7 +26,7 @@
import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.exception.WriteCommitException;
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.mvcc.entity.MvccValidationUtils;
@@ -36,6 +36,7 @@
import org.apache.usergrid.persistence.collection.serialization.UniqueValue;
import org.apache.usergrid.persistence.collection.serialization.impl.UniqueValueImpl;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.util.EntityUtils;
import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.util.ValidationUtils;
@@ -92,7 +93,7 @@ public Entity call( final CollectionIoEvent ioEvent ) {
final Id entityId = mvccEntity.getId();
final UUID version = mvccEntity.getVersion();
- final CollectionScope collectionScope = ioEvent.getEntityCollection();
+ final ApplicationScope applicationScope = ioEvent.getEntityCollection();
//set the version into the entity
EntityUtils.setVersion( mvccEntity.getEntity().get(), version );
@@ -102,10 +103,10 @@ public Entity call( final CollectionIoEvent ioEvent ) {
final MvccLogEntry startEntry = new MvccLogEntryImpl( entityId, version, Stage.COMMITTED, MvccLogEntry.State.COMPLETE );
- MutationBatch logMutation = logEntryStrat.write( collectionScope, startEntry );
+ MutationBatch logMutation = logEntryStrat.write( applicationScope, startEntry );
// now get our actual insert into the entity data
- MutationBatch entityMutation = entityStrat.write( collectionScope, mvccEntity );
+ MutationBatch entityMutation = entityStrat.write( applicationScope, mvccEntity );
// merge the 2 into 1 mutation
logMutation.mergeShallow( entityMutation );
@@ -116,7 +117,7 @@ public Entity call( final CollectionIoEvent ioEvent ) {
UniqueValue written = new UniqueValueImpl( field,
entityId,version);
- MutationBatch mb = uniqueValueStrat.write(collectionScope, written );
+ MutationBatch mb = uniqueValueStrat.write(applicationScope, written );
LOG.debug("Finalizing {} unqiue value {}", field.getName(), field.getValue().toString());
@@ -130,7 +131,7 @@ public Entity call( final CollectionIoEvent ioEvent ) {
}
catch ( ConnectionException e ) {
LOG.error( "Failed to execute write asynchronously ", e );
- throw new WriteCommitException( mvccEntity, collectionScope,
+ throw new WriteCommitException( mvccEntity, applicationScope,
"Failed to execute write asynchronously ", e );
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteOptimisticVerify.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteOptimisticVerify.java
index b0312370fd..92656cc24d 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteOptimisticVerify.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteOptimisticVerify.java
@@ -25,12 +25,13 @@
import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.exception.WriteOptimisticVerifyException;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.mvcc.entity.MvccValidationUtils;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionIoEvent;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Entity;
import com.google.inject.Inject;
@@ -69,14 +70,14 @@ public void call( final CollectionIoEvent ioevent ) {
MvccEntity mvccEntity = ioevent.getEvent();
final Entity entity = mvccEntity.getEntity().get();
- CollectionScope collectionScope = ioevent.getEntityCollection();
+ ApplicationScope applicationScope = ioevent.getEntityCollection();
if ( entity.getVersion() == null ) {
return;
}
- List versions = logEntryStrat.load( collectionScope, entity.getId(), entity.getVersion(), 2 );
+ List versions = logEntryStrat.load( applicationScope, entity.getId(), entity.getVersion(), 2 );
// Previous log entry must be committed, otherwise somebody is already writing
if ( versions.size() > 1 && versions.get( 1 ).getStage().ordinal() < Stage.COMMITTED.ordinal() ) {
@@ -84,7 +85,7 @@ public void call( final CollectionIoEvent ioevent ) {
log.debug( "Conflict writing entity id {} version {}", entity.getId().toString(),
entity.getVersion().toString() );
- throw new WriteOptimisticVerifyException( mvccEntity, collectionScope,
+ throw new WriteOptimisticVerifyException( mvccEntity, applicationScope,
"Change conflict, not first writer" );
}
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteStart.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteStart.java
index 92dc69de34..453a043579 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteStart.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteStart.java
@@ -8,13 +8,14 @@
import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.exception.WriteStartException;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccEntityImpl;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccLogEntryImpl;
import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionIoEvent;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.util.UUIDGenerator;
@@ -55,7 +56,7 @@ public WriteStart ( final MvccLogEntrySerializationStrategy logStrategy) {
public CollectionIoEvent call( final CollectionIoEvent ioEvent ) {
{
final Entity entity = ioEvent.getEvent();
- final CollectionScope collectionScope = ioEvent.getEntityCollection();
+ final ApplicationScope applicationScope = ioEvent.getEntityCollection();
final Id entityId = entity.getId();
@@ -65,7 +66,7 @@ public CollectionIoEvent call( final CollectionIoEvent ioEve
final MvccLogEntry startEntry = new MvccLogEntryImpl( entityId, newVersion,
Stage.ACTIVE, MvccLogEntry.State.COMPLETE);
- MutationBatch write = logStrategy.write( collectionScope, startEntry );
+ MutationBatch write = logStrategy.write( applicationScope, startEntry );
final MvccEntityImpl nextStage = new MvccEntityImpl( entityId, newVersion, MvccEntity.Status.COMPLETE, entity );
if(ioEvent.getEvent().hasVersion()) {
@@ -73,11 +74,11 @@ public CollectionIoEvent call( final CollectionIoEvent ioEve
write.execute();
} catch (ConnectionException e) {
LOG.error("Failed to execute write ", e);
- throw new WriteStartException(nextStage, collectionScope,
+ throw new WriteStartException(nextStage, applicationScope,
"Failed to execute write ", e);
} catch (NullPointerException e) {
LOG.error("Failed to execute write ", e);
- throw new WriteStartException(nextStage, collectionScope,
+ throw new WriteStartException(nextStage, applicationScope,
"Failed to execute write", e);
}
}
@@ -85,7 +86,7 @@ public CollectionIoEvent call( final CollectionIoEvent ioEve
//create the mvcc entity for the next stage
//TODO: we need to create a complete or partial update here (or sooner)
- return new CollectionIoEvent( collectionScope, nextStage );
+ return new CollectionIoEvent<>( applicationScope, nextStage );
}
}
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java
index 548127c59b..18c221cc1d 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java
@@ -28,13 +28,13 @@
import com.netflix.hystrix.HystrixCommandGroupKey;
import com.netflix.hystrix.HystrixThreadPoolProperties;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.util.EntityUtils;
import org.apache.usergrid.persistence.core.astyanax.CassandraConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.exception.WriteUniqueVerifyException;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.mvcc.entity.MvccValidationUtils;
@@ -97,7 +97,7 @@ public void call( final CollectionIoEvent ioevent ) {
final Entity entity = mvccEntity.getEntity().get();
- final CollectionScope scope = ioevent.getEntityCollection();
+ final ApplicationScope scope = ioevent.getEntityCollection();
final MutationBatch batch = keyspace.prepareMutationBatch();
//allocate our max size, worst case
@@ -137,9 +137,12 @@ public void call( final CollectionIoEvent ioevent ) {
}
// use simple thread pool to verify fields in parallel
- ConsistentReplayCommand cmd = new ConsistentReplayCommand(uniqueValueStrat,cassandraFig,scope, uniqueFields,entity);
+ ConsistentReplayCommand cmd = new ConsistentReplayCommand(uniqueValueStrat,cassandraFig,scope, entity.getId().getType(), uniqueFields,entity);
+
Map uniquenessViolations = cmd.execute();
- cmd.getFailedExecutionException();
+
+ //do we want to do this?
+
//We have violations, throw an exception
if ( !uniquenessViolations.isEmpty() ) {
throw new WriteUniqueVerifyException( mvccEntity, ioevent.getEntityCollection(), uniquenessViolations );
@@ -150,15 +153,19 @@ private static class ConsistentReplayCommand extends HystrixCommand uniqueFields;
private final Entity entity;
- public ConsistentReplayCommand(UniqueValueSerializationStrategy uniqueValueSerializationStrategy, CassandraConfig fig, CollectionScope scope, List uniqueFields, Entity entity){
+ public ConsistentReplayCommand( UniqueValueSerializationStrategy uniqueValueSerializationStrategy,
+ CassandraConfig fig, ApplicationScope scope, final String type, List
+ uniqueFields, Entity entity ){
super(REPLAY_GROUP);
this.uniqueValueSerializationStrategy = uniqueValueSerializationStrategy;
this.fig = fig;
this.scope = scope;
+ this.type = type;
this.uniqueFields = uniqueFields;
this.entity = entity;
}
@@ -178,7 +185,7 @@ public Map executeStrategy(ConsistencyLevel consistencyLevel){
//now get the set of fields back
final UniqueValueSet uniqueValues;
try {
- uniqueValues = uniqueValueSerializationStrategy.load( scope,consistencyLevel, uniqueFields );
+ uniqueValues = uniqueValueSerializationStrategy.load( scope, consistencyLevel, type, uniqueFields );
}
catch ( ConnectionException e ) {
throw new RuntimeException( "Unable to read from cassandra", e );
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccEntitySerializationStrategy.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccEntitySerializationStrategy.java
index 7028620b9f..beb5621786 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccEntitySerializationStrategy.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccEntitySerializationStrategy.java
@@ -28,6 +28,7 @@
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.core.migration.data.VersionedData;
import org.apache.usergrid.persistence.core.migration.schema.Migration;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Id;
import com.google.common.base.Optional;
@@ -45,7 +46,7 @@ public interface MvccEntitySerializationStrategy extends Migration, VersionedDat
* @param entity The entity to persist
* @return The MutationBatch operations for this update
*/
- public MutationBatch write(CollectionScope context, MvccEntity entity);
+ public MutationBatch write(ApplicationScope context, MvccEntity entity);
/**
@@ -55,7 +56,7 @@ public interface MvccEntitySerializationStrategy extends Migration, VersionedDat
* @param entityIds
* @return
*/
- public EntitySet load(CollectionScope scope, Collection entityIds, UUID maxVersion);
+ public EntitySet load(ApplicationScope scope, Collection entityIds, UUID maxVersion);
/**
* Load a list, from highest to lowest of the entity with versions <= version up to maxSize elements
@@ -69,7 +70,7 @@ public interface MvccEntitySerializationStrategy extends Migration, VersionedDat
*/
@Deprecated
//this has been made obsolete in the latest version, only use the load methods
- public Iterator loadDescendingHistory( CollectionScope context, Id entityId, UUID version,
+ public Iterator loadDescendingHistory( ApplicationScope context, Id entityId, UUID version,
int fetchSize );
/**
@@ -85,7 +86,7 @@ public Iterator loadDescendingHistory( CollectionScope context, Id e
*/
@Deprecated
//this has been made obsolete in the latest version, only use the load methods
- public Iterator loadAscendingHistory( CollectionScope context, Id entityId, UUID version,
+ public Iterator loadAscendingHistory( ApplicationScope context, Id entityId, UUID version,
int fetchSize );
@@ -96,7 +97,7 @@ public Iterator loadAscendingHistory( CollectionScope context, Id en
* @param entityId
* @return The MvccEntity if it exists. Null otherwise
*/
- public Optional load(CollectionScope scope, Id entityId);
+ public Optional load(ApplicationScope scope, Id entityId);
/**
@@ -104,7 +105,7 @@ public Iterator loadAscendingHistory( CollectionScope context, Id en
* can be used in a mark+sweep system. The entity with the given version will exist in the context, but no data
* will be stored
*/
- public MutationBatch mark(CollectionScope context, Id entityId, UUID version);
+ public MutationBatch mark(ApplicationScope context, Id entityId, UUID version);
/**
@@ -114,6 +115,6 @@ public Iterator loadAscendingHistory( CollectionScope context, Id en
* @param entityId The entity id to delete
* @param version The version to delete
*/
- public MutationBatch delete(CollectionScope context, Id entityId, UUID version);
+ public MutationBatch delete(ApplicationScope context, Id entityId, UUID version);
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/MvccLogEntrySerializationStrategy.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccLogEntrySerializationStrategy.java
similarity index 72%
rename from stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/MvccLogEntrySerializationStrategy.java
rename to stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccLogEntrySerializationStrategy.java
index 4baef84944..d0292497bc 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/MvccLogEntrySerializationStrategy.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccLogEntrySerializationStrategy.java
@@ -16,17 +16,17 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.usergrid.persistence.collection.mvcc;
+package org.apache.usergrid.persistence.collection.serialization;
import java.util.Collection;
import java.util.List;
import java.util.UUID;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.VersionSet;
import org.apache.usergrid.persistence.core.migration.schema.Migration;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Id;
import com.netflix.astyanax.MutationBatch;
@@ -40,41 +40,42 @@ public interface MvccLogEntrySerializationStrategy extends Migration {
/**
* Serialize the entity to the data store with the given collection context
*
+ * @param applicationScope The applicationscope of the entrye
* @param entry the entry to write
*
* @return The mutation batch with the mutation operations for this write.
*/
- public MutationBatch write( final CollectionScope context, MvccLogEntry entry );
+ MutationBatch write( final ApplicationScope applicationScope, MvccLogEntry entry );
/**
* Load and return the stage with the given id and a version that is <= the version provided
*
- * @param context The context to persist the entity into
+ * @param applicationScope The applicationScope to persist the entity into
* @param entityIds The entity id to load
* @param version The max version to load. This will return the first version <= the given version
*
* @return The deserialized version of the log entry
*/
- public VersionSet load( final CollectionScope context, final Collection entityIds, final UUID version );
+ VersionSet load( final ApplicationScope applicationScope, final Collection entityIds, final UUID version );
/**
* Load a list, from highest to lowest of the stage with versions <= version up to maxSize elements
*
- * @param context The context to load the entity from
+ * @param applicationScope The applicationScope to load the entity from
* @param entityId The entity id to load
* @param version The max version to seek from
* @param maxSize The maximum size to return. If you receive this size, there may be more versions to load.
*
* @return A list of entities up to max size ordered from max(UUID)=> min(UUID)
*/
- public List load( CollectionScope context, Id entityId, UUID version, int maxSize );
+ List load( ApplicationScope applicationScope, Id entityId, UUID version, int maxSize );
/**
- * MarkCommit the stage from the context with the given entityId and version
+ * MarkCommit the stage from the applicationScope with the given entityId and version
*
- * @param context The context that contains the entity
+ * @param applicationScope The applicationScope that contains the entity
* @param entityId The entity id to delete
* @param version The version to delete
*/
- public MutationBatch delete( CollectionScope context, Id entityId, UUID version );
+ MutationBatch delete( ApplicationScope applicationScope, Id entityId, UUID version );
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValueSerializationStrategy.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValueSerializationStrategy.java
index d7a640775e..8cee99d15c 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValueSerializationStrategy.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValueSerializationStrategy.java
@@ -26,6 +26,7 @@
import com.netflix.astyanax.model.ConsistencyLevel;
import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.core.migration.schema.Migration;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.field.Field;
@@ -39,53 +40,59 @@ public interface UniqueValueSerializationStrategy extends Migration {
/**
* Write the specified UniqueValue to Cassandra with optional timeToLive in milliseconds.
*
+ * @param applicationScope scope
* @param uniqueValue Object to be written
+ *
* @return MutatationBatch that encapsulates operation, caller may or may not execute.
*/
- public MutationBatch write( CollectionScope collectionScope, UniqueValue uniqueValue );
+ MutationBatch write( ApplicationScope applicationScope, UniqueValue uniqueValue );
/**
* Write the specified UniqueValue to Cassandra with optional timeToLive in milliseconds.
*
+ * @param applicationScope scope
* @param uniqueValue Object to be written
* @param timeToLive How long object should live in seconds. -1 implies store forever
* @return MutatationBatch that encapsulates operation, caller may or may not execute.
*/
- public MutationBatch write( CollectionScope collectionScope, UniqueValue uniqueValue, int timeToLive );
+ MutationBatch write( ApplicationScope applicationScope, UniqueValue uniqueValue, int timeToLive );
/**
* Load UniqueValue that matches field from collection or null if that value does not exist.
*
- * @param collectionScope scope in which to look for field name/value
+ * @param applicationScope scope in which to look for field name/value
+ * @param type The type the unique value exists within
* @param fields Field name/value to search for
*
* @return UniqueValueSet containing fields from the collection that exist in cassandra
*
* @throws ConnectionException on error connecting to Cassandra
*/
- public UniqueValueSet load( CollectionScope collectionScope, Collection fields ) throws ConnectionException;
+ UniqueValueSet load( ApplicationScope applicationScope, String type, Collection fields ) throws ConnectionException;
/**
* Load UniqueValue that matches field from collection or null if that value does not exist.
*
* @param colScope Collection scope in which to look for field name/value
* @param consistencyLevel Consistency level of query
+ * @param type The type the unique value exists within
* @param fields Field name/value to search for
* @return UniqueValueSet containing fields from the collection that exist in cassandra
* @throws ConnectionException on error connecting to Cassandra
*/
- public UniqueValueSet load( CollectionScope colScope, ConsistencyLevel consistencyLevel, Collection fields ) throws ConnectionException;
+ UniqueValueSet load( ApplicationScope colScope, ConsistencyLevel consistencyLevel, String type,
+ Collection fields ) throws ConnectionException;
/**
* Loads the currently persisted history of every unique value the entity has held. This will
* start from the max version and return values in descending version order. Note that for entities
* with more than one unique field, sequential fields can be returned with the same version.
- * @param collectionScope The scope the entity is stored in
+ * @param applicationScope The scope the entity is stored in
* @param entityId
* @return
*/
- public Iterator getAllUniqueFields(CollectionScope collectionScope, Id entityId);
+ Iterator getAllUniqueFields( ApplicationScope applicationScope, Id entityId );
/**
@@ -94,7 +101,7 @@ public interface UniqueValueSerializationStrategy extends Migration {
* @param uniqueValue Object to be deleted.
* @return MutatationBatch that encapsulates operation, caller may or may not execute.
*/
- public MutationBatch delete( CollectionScope scope, UniqueValue uniqueValue );
+ MutationBatch delete( ApplicationScope scope, UniqueValue uniqueValue );
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/LogEntryIterator.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/LogEntryIterator.java
index 2b99033f23..3ecc61da63 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/LogEntryIterator.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/LogEntryIterator.java
@@ -7,7 +7,7 @@
import java.util.UUID;
import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.model.entity.Id;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImpl.java
index ad1d91ae06..5b324db4f3 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImpl.java
@@ -33,13 +33,14 @@
import org.apache.cassandra.db.marshal.ReversedType;
import org.apache.cassandra.db.marshal.UUIDType;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.EntitySet;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException;
import org.apache.usergrid.persistence.collection.exception.DataCorruptionException;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccEntityImpl;
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
+import org.apache.usergrid.persistence.collection.serialization.impl.util.LegacyScopeUtils;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.util.EntityUtils;
import org.apache.usergrid.persistence.core.astyanax.CassandraFig;
import org.apache.usergrid.persistence.core.astyanax.ColumnNameIterator;
@@ -97,14 +98,14 @@ public MvccEntitySerializationStrategyImpl( final Keyspace keyspace, final Seria
@Override
- public MutationBatch write( final CollectionScope collectionScope, final MvccEntity entity ) {
- Preconditions.checkNotNull( collectionScope, "collectionScope is required" );
+ public MutationBatch write( final ApplicationScope applicationScope, final MvccEntity entity ) {
+ Preconditions.checkNotNull( applicationScope, "applicationScope is required" );
Preconditions.checkNotNull( entity, "entity is required" );
final UUID colName = entity.getVersion();
final Id entityId = entity.getId();
- return doWrite( collectionScope, entityId, new RowOp() {
+ return doWrite( applicationScope, entityId, new RowOp() {
@Override
public void doOp( final ColumnListMutation colMutation ) {
colMutation.putColumn( colName, getEntitySerializer()
@@ -115,11 +116,11 @@ public void doOp( final ColumnListMutation colMutation ) {
@Override
- public EntitySet load( final CollectionScope collectionScope, final Collection entityIds,
+ public EntitySet load( final ApplicationScope applicationScope, final Collection entityIds,
final UUID maxVersion ) {
- Preconditions.checkNotNull( collectionScope, "collectionScope is required" );
+ Preconditions.checkNotNull( applicationScope, "applicationScope is required" );
Preconditions.checkNotNull( entityIds, "entityIds is required" );
Preconditions.checkArgument( entityIds.size() > 0, "entityIds is required" );
Preconditions.checkNotNull( maxVersion, "version is required" );
@@ -130,15 +131,16 @@ public EntitySet load( final CollectionScope collectionScope, final Collection>> rowKeys = new ArrayList<>( entityIds.size() );
for ( final Id entityId : entityIds ) {
+
+ final String collectionName = LegacyScopeUtils.getCollectionScopeNameFromEntityType( entityId.getType() );
+
final CollectionPrefixedKey collectionPrefixedKey =
new CollectionPrefixedKey<>( collectionName, ownerId, entityId );
@@ -190,7 +192,7 @@ public EntitySet load( final CollectionScope collectionScope, final Collection loadDescendingHistory( final CollectionScope collectionScope, final Id entityId,
+ public Iterator loadDescendingHistory( final ApplicationScope applicationScope, final Id entityId,
final UUID version, final int fetchSize ) {
- Preconditions.checkNotNull( collectionScope, "collectionScope is required" );
+ Preconditions.checkNotNull( applicationScope, "applicationScope is required" );
Preconditions.checkNotNull( entityId, "entity id is required" );
Preconditions.checkNotNull( version, "version is required" );
Preconditions.checkArgument( fetchSize > 0, "max Size must be greater than 0" );
- final Id applicationId = collectionScope.getApplication();
- final Id ownerId = collectionScope.getOwner();
- final String collectionName = collectionScope.getName();
+ final Id applicationId = applicationScope.getApplication();
+ final Id ownerId = applicationId;
+ final String collectionName = LegacyScopeUtils.getCollectionScopeNameFromEntityType( entityId.getType() );
final CollectionPrefixedKey collectionPrefixedKey =
new CollectionPrefixedKey<>( collectionName, ownerId, entityId );
@@ -260,18 +262,18 @@ public Iterator loadDescendingHistory( final CollectionScope collect
@Override
- public Iterator loadAscendingHistory( final CollectionScope collectionScope, final Id entityId,
+ public Iterator loadAscendingHistory( final ApplicationScope applicationScope, final Id entityId,
final UUID version, final int fetchSize ) {
- Preconditions.checkNotNull( collectionScope, "collectionScope is required" );
+ Preconditions.checkNotNull( applicationScope, "applicationScope is required" );
Preconditions.checkNotNull( entityId, "entity id is required" );
Preconditions.checkNotNull( version, "version is required" );
Preconditions.checkArgument( fetchSize > 0, "max Size must be greater than 0" );
- final Id applicationId = collectionScope.getApplication();
- final Id ownerId = collectionScope.getOwner();
- final String collectionName = collectionScope.getName();
+ final Id applicationId = applicationScope.getApplication();
+ final Id ownerId = applicationId;
+ final String collectionName = LegacyScopeUtils.getCollectionScopeNameFromEntityType( entityId.getType() );
final CollectionPrefixedKey collectionPrefixedKey =
new CollectionPrefixedKey<>( collectionName, ownerId, entityId );
@@ -290,7 +292,7 @@ public Iterator loadAscendingHistory( final CollectionScope collecti
@Override
- public Optional load( final CollectionScope scope, final Id entityId ) {
+ public Optional load( final ApplicationScope scope, final Id entityId ) {
final EntitySet results = load( scope, Collections.singleton( entityId ), UUIDGenerator.newTimeUUID() );
return Optional.fromNullable( results.getEntity( entityId ));
@@ -298,12 +300,12 @@ public Optional load( final CollectionScope scope, final Id entityId
@Override
- public MutationBatch mark( final CollectionScope collectionScope, final Id entityId, final UUID version ) {
- Preconditions.checkNotNull( collectionScope, "collectionScope is required" );
+ public MutationBatch mark( final ApplicationScope applicationScope, final Id entityId, final UUID version ) {
+ Preconditions.checkNotNull( applicationScope, "applicationScope is required" );
Preconditions.checkNotNull( entityId, "entity id is required" );
Preconditions.checkNotNull( version, "version is required" );
- return doWrite( collectionScope, entityId, new RowOp() {
+ return doWrite( applicationScope, entityId, new RowOp() {
@Override
public void doOp( final ColumnListMutation colMutation ) {
colMutation.putColumn( version, getEntitySerializer()
@@ -314,13 +316,13 @@ public void doOp( final ColumnListMutation colMutation ) {
@Override
- public MutationBatch delete( final CollectionScope collectionScope, final Id entityId, final UUID version ) {
- Preconditions.checkNotNull( collectionScope, "collectionScope is required" );
+ public MutationBatch delete( final ApplicationScope applicationScope, final Id entityId, final UUID version ) {
+ Preconditions.checkNotNull( applicationScope, "applicationScope is required" );
Preconditions.checkNotNull( entityId, "entity id is required" );
Preconditions.checkNotNull( version, "version is required" );
- return doWrite( collectionScope, entityId, new RowOp() {
+ return doWrite( applicationScope, entityId, new RowOp() {
@Override
public void doOp( final ColumnListMutation colMutation ) {
colMutation.deleteColumn( version );
@@ -347,12 +349,12 @@ public java.util.Collection getColumnFamilies() {
/**
* Do the write on the correct row for the entity id with the operation
*/
- private MutationBatch doWrite( final CollectionScope collectionScope, final Id entityId, final RowOp op ) {
+ private MutationBatch doWrite( final ApplicationScope applicationScope, final Id entityId, final RowOp op ) {
final MutationBatch batch = keyspace.prepareMutationBatch();
- final Id applicationId = collectionScope.getApplication();
- final Id ownerId = collectionScope.getOwner();
- final String collectionName = collectionScope.getName();
+ final Id applicationId = applicationScope.getApplication();
+ final Id ownerId = applicationId;
+ final String collectionName = LegacyScopeUtils.getCollectionScopeNameFromEntityType( entityId.getType() );
final CollectionPrefixedKey collectionPrefixedKey =
new CollectionPrefixedKey<>( collectionName, ownerId, entityId );
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyProxyImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyProxyImpl.java
index b815ef4105..bb143a42af 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyProxyImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyProxyImpl.java
@@ -22,7 +22,6 @@
import java.util.Iterator;
import java.util.UUID;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.EntitySet;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
@@ -31,6 +30,7 @@
import org.apache.usergrid.persistence.core.migration.data.MigrationInfoCache;
import org.apache.usergrid.persistence.core.migration.data.MigrationRelationship;
import org.apache.usergrid.persistence.core.migration.data.VersionedMigrationSet;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Id;
import com.google.common.base.Optional;
@@ -64,7 +64,7 @@ public MvccEntitySerializationStrategyProxyImpl( final Keyspace keyspace,
@Override
- public MutationBatch write( final CollectionScope context, final MvccEntity entity ) {
+ public MutationBatch write( final ApplicationScope context, final MvccEntity entity ) {
final MigrationRelationship migration = getMigrationRelationShip();
@@ -82,7 +82,7 @@ public MutationBatch write( final CollectionScope context, final MvccEntity enti
@Override
- public EntitySet load( final CollectionScope scope, final Collection entityIds, final UUID maxVersion ) {
+ public EntitySet load( final ApplicationScope scope, final Collection entityIds, final UUID maxVersion ) {
final MigrationRelationship migration = getMigrationRelationShip();
@@ -96,7 +96,7 @@ public EntitySet load( final CollectionScope scope, final Collection entityI
@Override
- public Iterator loadDescendingHistory( final CollectionScope context, final Id entityId,
+ public Iterator loadDescendingHistory( final ApplicationScope context, final Id entityId,
final UUID version, final int fetchSize ) {
final MigrationRelationship migration = getMigrationRelationShip();
@@ -110,7 +110,7 @@ public Iterator loadDescendingHistory( final CollectionScope context
@Override
- public Iterator loadAscendingHistory( final CollectionScope context, final Id entityId,
+ public Iterator loadAscendingHistory( final ApplicationScope context, final Id entityId,
final UUID version, final int fetchSize ) {
final MigrationRelationship migration = getMigrationRelationShip();
@@ -123,7 +123,7 @@ public Iterator loadAscendingHistory( final CollectionScope context,
}
@Override
- public Optional load( final CollectionScope scope, final Id entityId ) {
+ public Optional load( final ApplicationScope scope, final Id entityId ) {
final MigrationRelationship migration = getMigrationRelationShip();
@@ -136,7 +136,7 @@ public Optional load( final CollectionScope scope, final Id entityId
@Override
- public MutationBatch mark( final CollectionScope context, final Id entityId, final UUID version ) {
+ public MutationBatch mark( final ApplicationScope context, final Id entityId, final UUID version ) {
final MigrationRelationship migration = getMigrationRelationShip();
@@ -154,7 +154,7 @@ public MutationBatch mark( final CollectionScope context, final Id entityId, fin
@Override
- public MutationBatch delete( final CollectionScope context, final Id entityId, final UUID version ) {
+ public MutationBatch delete( final ApplicationScope context, final Id entityId, final UUID version ) {
final MigrationRelationship migration = getMigrationRelationShip();
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV3Impl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV3Impl.java
index de959b51cc..fe0d31d761 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV3Impl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV3Impl.java
@@ -24,6 +24,8 @@
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccEntityImpl;
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
+import org.apache.usergrid.persistence.collection.serialization.impl.util.LegacyScopeUtils;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.util.EntityUtils;
import org.apache.usergrid.persistence.core.astyanax.CassandraFig;
import org.apache.usergrid.persistence.core.astyanax.ColumnParser;
@@ -103,14 +105,14 @@ public MvccEntitySerializationStrategyV3Impl( final Keyspace keyspace, final Ser
@Override
- public MutationBatch write( final CollectionScope collectionScope, final MvccEntity entity ) {
- Preconditions.checkNotNull( collectionScope, "collectionScope is required" );
+ public MutationBatch write( final ApplicationScope applicationScope, final MvccEntity entity ) {
+ Preconditions.checkNotNull( applicationScope, "applicationScope is required" );
Preconditions.checkNotNull( entity, "entity is required" );
final Id entityId = entity.getId();
final UUID version = entity.getVersion();
- return doWrite( collectionScope, entityId, version, new RowOp() {
+ return doWrite( applicationScope, entityId, version, new RowOp() {
@Override
public void doOp( final ColumnListMutation colMutation ) {
colMutation.putColumn( COL_VALUE,
@@ -121,11 +123,11 @@ public void doOp( final ColumnListMutation colMutation ) {
@Override
- public EntitySet load( final CollectionScope collectionScope, final Collection entityIds,
+ public EntitySet load( final ApplicationScope applicationScope, final Collection entityIds,
final UUID maxVersion ) {
- Preconditions.checkNotNull( collectionScope, "collectionScope is required" );
+ Preconditions.checkNotNull( applicationScope, "applicationScope is required" );
Preconditions.checkNotNull( entityIds, "entityIds is required" );
Preconditions.checkArgument( entityIds.size() > 0, "entityIds is required" );
Preconditions.checkNotNull( maxVersion, "version is required" );
@@ -137,15 +139,17 @@ public EntitySet load( final CollectionScope collectionScope, final Collection>> rowKeys = new ArrayList<>( entityIds.size() );
for ( final Id entityId : entityIds ) {
+
+ final String collectionName = LegacyScopeUtils.getCollectionScopeNameFromEntityType( entityId.getType() );
+
final CollectionPrefixedKey collectionPrefixedKey =
new CollectionPrefixedKey<>( collectionName, ownerId, entityId );
@@ -199,7 +203,7 @@ public EntitySet load( final CollectionScope collectionScope, final Collection loadDescendingHistory( final CollectionScope collectionScope, final Id entityId,
+ public Iterator loadDescendingHistory( final ApplicationScope applicationScope, final Id entityId,
final UUID version, final int fetchSize ) {
- Preconditions.checkNotNull( collectionScope, "collectionScope is required" );
+ Preconditions.checkNotNull( applicationScope, "applicationScope is required" );
Preconditions.checkNotNull( entityId, "entity id is required" );
Preconditions.checkNotNull( version, "version is required" );
Preconditions.checkArgument( fetchSize > 0, "max Size must be greater than 0" );
@@ -255,10 +259,10 @@ public Iterator loadDescendingHistory( final CollectionScope collect
@Override
- public Iterator loadAscendingHistory( final CollectionScope collectionScope, final Id entityId,
+ public Iterator loadAscendingHistory( final ApplicationScope applicationScope, final Id entityId,
final UUID version, final int fetchSize ) {
- Preconditions.checkNotNull( collectionScope, "collectionScope is required" );
+ Preconditions.checkNotNull( applicationScope, "applicationScope is required" );
Preconditions.checkNotNull( entityId, "entity id is required" );
Preconditions.checkNotNull( version, "version is required" );
Preconditions.checkArgument( fetchSize > 0, "max Size must be greater than 0" );
@@ -268,7 +272,7 @@ public Iterator loadAscendingHistory( final CollectionScope collecti
@Override
- public Optional load( final CollectionScope scope, final Id entityId ) {
+ public Optional load( final ApplicationScope scope, final Id entityId ) {
final EntitySet results = load( scope, Collections.singleton( entityId ), UUIDGenerator.newTimeUUID() );
return Optional.fromNullable( results.getEntity( entityId ));
@@ -276,13 +280,13 @@ public Optional load( final CollectionScope scope, final Id entityId
@Override
- public MutationBatch mark( final CollectionScope collectionScope, final Id entityId, final UUID version ) {
- Preconditions.checkNotNull( collectionScope, "collectionScope is required" );
+ public MutationBatch mark( final ApplicationScope applicationScope, final Id entityId, final UUID version ) {
+ Preconditions.checkNotNull( applicationScope, "applicationScope is required" );
Preconditions.checkNotNull( entityId, "entity id is required" );
Preconditions.checkNotNull( version, "version is required" );
- return doWrite( collectionScope, entityId, version, new RowOp() {
+ return doWrite( applicationScope, entityId, version, new RowOp() {
@Override
public void doOp( final ColumnListMutation colMutation ) {
colMutation.putColumn( COL_VALUE, entitySerializer.toByteBuffer(
@@ -293,13 +297,13 @@ public void doOp( final ColumnListMutation colMutation ) {
@Override
- public MutationBatch delete( final CollectionScope collectionScope, final Id entityId, final UUID version ) {
- Preconditions.checkNotNull( collectionScope, "collectionScope is required" );
+ public MutationBatch delete( final ApplicationScope applicationScope, final Id entityId, final UUID version ) {
+ Preconditions.checkNotNull( applicationScope, "applicationScope is required" );
Preconditions.checkNotNull( entityId, "entity id is required" );
Preconditions.checkNotNull( version, "version is required" );
- return doWrite( collectionScope, entityId, version, new RowOp() {
+ return doWrite( applicationScope, entityId, version, new RowOp() {
@Override
public void doOp( final ColumnListMutation colMutation ) {
colMutation.deleteColumn( Boolean.TRUE );
@@ -326,12 +330,12 @@ public java.util.Collection getColumnFamilies() {
/**
* Do the write on the correct row for the entity id with the operation
*/
- private MutationBatch doWrite( final CollectionScope collectionScope, final Id entityId, final UUID version, final RowOp op ) {
+ private MutationBatch doWrite( final ApplicationScope applicationScope, final Id entityId, final UUID version, final RowOp op ) {
final MutationBatch batch = keyspace.prepareMutationBatch();
- final Id applicationId = collectionScope.getApplication();
- final Id ownerId = collectionScope.getOwner();
- final String collectionName = collectionScope.getName();
+ final Id applicationId = applicationScope.getApplication();
+ final Id ownerId = applicationId;
+ final String collectionName = LegacyScopeUtils.getCollectionScopeNameFromEntityType( entityId.getType() );
final CollectionPrefixedKey collectionPrefixedKey =
new CollectionPrefixedKey<>( collectionName, ownerId, entityId );
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java
index 831091d7eb..b9156258cb 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java
@@ -36,19 +36,19 @@
import org.apache.cassandra.db.marshal.ReversedType;
import org.apache.cassandra.db.marshal.UUIDType;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.VersionSet;
import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccLogEntryImpl;
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
+import org.apache.usergrid.persistence.collection.serialization.impl.util.LegacyScopeUtils;
import org.apache.usergrid.persistence.core.astyanax.IdRowCompositeSerializer;
import org.apache.usergrid.persistence.core.astyanax.MultiTennantColumnFamily;
import org.apache.usergrid.persistence.core.astyanax.MultiTennantColumnFamilyDefinition;
import org.apache.usergrid.persistence.core.astyanax.ScopedRowKey;
-import org.apache.usergrid.persistence.core.migration.schema.Migration;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Id;
import com.google.common.base.Preconditions;
@@ -98,7 +98,7 @@ public MvccLogEntrySerializationStrategyImpl( final Keyspace keyspace, final Ser
@Override
- public MutationBatch write( final CollectionScope collectionScope, final MvccLogEntry entry ) {
+ public MutationBatch write( final ApplicationScope collectionScope, final MvccLogEntry entry ) {
Preconditions.checkNotNull( collectionScope, "collectionScope is required" );
Preconditions.checkNotNull( entry, "entry is required" );
@@ -126,7 +126,7 @@ public void doOp( final ColumnListMutation colMutation ) {
@Override
- public VersionSet load( final CollectionScope collectionScope, final Collection entityIds,
+ public VersionSet load( final ApplicationScope collectionScope, final Collection entityIds,
final UUID maxVersion ) {
Preconditions.checkNotNull( collectionScope, "collectionScope is required" );
Preconditions.checkNotNull( entityIds, "entityIds is required" );
@@ -140,14 +140,17 @@ public VersionSet load( final CollectionScope collectionScope, final Collection<
final Id applicationId = collectionScope.getApplication();
- final Id ownerId = collectionScope.getOwner();
- final String collectionName = collectionScope.getName();
+ final Id ownerId = applicationId;
+
final List>> rowKeys = new ArrayList<>( entityIds.size() );
for ( final Id entityId : entityIds ) {
+
+ final String collectionName = LegacyScopeUtils.getCollectionScopeNameFromEntityType( entityId.getType() );
+
final CollectionPrefixedKey collectionPrefixedKey =
new CollectionPrefixedKey<>( collectionName, ownerId, entityId );
@@ -207,7 +210,7 @@ public VersionSet load( final CollectionScope collectionScope, final Collection<
@Override
- public List load( final CollectionScope collectionScope, final Id entityId, final UUID version,
+ public List load( final ApplicationScope collectionScope, final Id entityId, final UUID version,
final int maxSize ) {
Preconditions.checkNotNull( collectionScope, "collectionScope is required" );
Preconditions.checkNotNull( entityId, "entity id is required" );
@@ -219,8 +222,8 @@ public List load( final CollectionScope collectionScope, final Id
try {
final Id applicationId = collectionScope.getApplication();
- final Id ownerId = collectionScope.getOwner();
- final String collectionName = collectionScope.getName();
+ final Id ownerId = applicationId;
+ final String collectionName = LegacyScopeUtils.getCollectionScopeNameFromEntityType( entityId.getType() );
final CollectionPrefixedKey collectionPrefixedKey =
@@ -253,7 +256,7 @@ public List load( final CollectionScope collectionScope, final Id
@Override
- public MutationBatch delete( final CollectionScope context, final Id entityId, final UUID version ) {
+ public MutationBatch delete( final ApplicationScope context, final Id entityId, final UUID version ) {
Preconditions.checkNotNull( context, "context is required" );
Preconditions.checkNotNull( entityId, "entityId is required" );
@@ -299,7 +302,7 @@ private static interface RowOp {
*
* @param collectionScope We need to use this when getting the keyspace
*/
- private MutationBatch doWrite( CollectionScope collectionScope, Id entityId, UUID version, RowOp op ) {
+ private MutationBatch doWrite( ApplicationScope collectionScope, Id entityId, UUID version, RowOp op ) {
final MutationBatch batch = keyspace.prepareMutationBatch();
@@ -308,8 +311,8 @@ private MutationBatch doWrite( CollectionScope collectionScope, Id entityId, UUI
LOG.debug( "Writing version with timestamp '{}'", timestamp );
final Id applicationId = collectionScope.getApplication();
- final Id ownerId = collectionScope.getOwner();
- final String collectionName = collectionScope.getName();
+ final Id ownerId = applicationId;
+ final String collectionName = LegacyScopeUtils.getCollectionScopeNameFromEntityType( entityId.getType() );
final CollectionPrefixedKey collectionPrefixedKey =
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/SerializationModule.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/SerializationModule.java
index 9d6d7fbc0f..1ebc0ca76b 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/SerializationModule.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/SerializationModule.java
@@ -18,7 +18,7 @@
package org.apache.usergrid.persistence.collection.serialization.impl;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.impl.migration.CollectionMigration;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueSerializationStrategyImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueSerializationStrategyImpl.java
index c95650ccf7..86ad706c51 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueSerializationStrategyImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueSerializationStrategyImpl.java
@@ -26,13 +26,14 @@
import java.util.UUID;
import com.netflix.astyanax.model.ConsistencyLevel;
+
+import org.apache.usergrid.persistence.collection.serialization.impl.util.LegacyScopeUtils;
import org.apache.usergrid.persistence.core.astyanax.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.cassandra.db.marshal.BytesType;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
import org.apache.usergrid.persistence.collection.serialization.UniqueValue;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
@@ -44,6 +45,7 @@
import org.apache.usergrid.persistence.core.astyanax.MultiTennantColumnFamily;
import org.apache.usergrid.persistence.core.astyanax.MultiTennantColumnFamilyDefinition;
import org.apache.usergrid.persistence.core.astyanax.ScopedRowKey;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.util.ValidationUtils;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.field.Field;
@@ -113,7 +115,7 @@ public UniqueValueSerializationStrategyImpl( final Keyspace keyspace, final Cass
}
- public MutationBatch write( final CollectionScope collectionScope, UniqueValue value ) {
+ public MutationBatch write( final ApplicationScope collectionScope, UniqueValue value ) {
Preconditions.checkNotNull( value, "value is required" );
@@ -126,9 +128,6 @@ public MutationBatch write( final CollectionScope collectionScope, UniqueValue v
ValidationUtils.verifyIdentity( entityId );
ValidationUtils.verifyVersion( entityVersion );
- log.debug( "Writing unique value collectionScope={} id={} version={} name={} value={} ttl={} ", new Object[] {
- collectionScope.getName(), entityId, entityVersion, value.getField().getName(), value.getField().getValue()
- } );
final EntityVersion ev = new EntityVersion( entityId, entityVersion );
final UniqueFieldEntry uniqueFieldEntry = new UniqueFieldEntry( entityVersion, field );
@@ -150,7 +149,7 @@ public void doLog( final ColumnListMutation colMutation ) {
@Override
- public MutationBatch write( final CollectionScope collectionScope, final UniqueValue value, final int timeToLive ) {
+ public MutationBatch write( final ApplicationScope collectionScope, final UniqueValue value, final int timeToLive ) {
Preconditions.checkNotNull( value, "value is required" );
Preconditions.checkArgument( timeToLive > 0, "timeToLive must be greater than 0 is required" );
@@ -184,7 +183,7 @@ public void doLog( final ColumnListMutation colMutation ) {
@Override
- public MutationBatch delete( final CollectionScope scope, UniqueValue value ) {
+ public MutationBatch delete( final ApplicationScope scope, UniqueValue value ) {
Preconditions.checkNotNull( value, "value is required" );
@@ -219,27 +218,42 @@ public void doLog( final ColumnListMutation colMutation ) {
/**
* Do the column update or delete for the given column and row key
*
- * @param collectionScope We need to use this when getting the keyspace
+ * @param applicationScope We need to use this when getting the keyspace
+ * @param uniqueValue The unique value to write
+ * @param op The operation to write
*/
- private MutationBatch doWrite( CollectionScope collectionScope, UniqueValue uniqueValue, RowOp op ) {
+ private MutationBatch doWrite( ApplicationScope applicationScope, UniqueValue uniqueValue, RowOp op ) {
final MutationBatch batch = keyspace.prepareMutationBatch();
+
+ final Id applicationId = applicationScope.getApplication();
+ final Id uniqueValueId = uniqueValue.getEntityId();
+
+ final String collectionName = LegacyScopeUtils.getCollectionScopeNameFromEntityType( uniqueValueId.getType() );
+
final CollectionPrefixedKey uniquePrefixedKey =
- new CollectionPrefixedKey<>( collectionScope.getName(), collectionScope.getOwner(), uniqueValue.getField() );
+ new CollectionPrefixedKey<>( collectionName, applicationId, uniqueValue.getField() );
op.doLookup( batch
- .withRow( CF_UNIQUE_VALUES, ScopedRowKey.fromKey( collectionScope.getApplication(), uniquePrefixedKey ) ) );
+ .withRow( CF_UNIQUE_VALUES, ScopedRowKey.fromKey( applicationId, uniquePrefixedKey ) ) );
- final Id ownerId = collectionScope.getOwner();
- final String collectionName = collectionScope.getName();
+ final Id ownerId = applicationId;
final CollectionPrefixedKey collectionPrefixedEntityKey =
new CollectionPrefixedKey<>( collectionName, ownerId, uniqueValue.getEntityId() );
op.doLog( batch.withRow( CF_ENTITY_UNIQUE_VALUES,
- ScopedRowKey.fromKey( collectionScope.getApplication(), collectionPrefixedEntityKey ) ) );
+ ScopedRowKey.fromKey( applicationId, collectionPrefixedEntityKey ) ) );
+
+
+ if(log.isDebugEnabled()) {
+ log.debug( "Writing unique value collectionScope={} id={} version={} name={} value={} ttl={} ", new
+ Object[] {
+ collectionName, uniqueValueId, uniqueValue.getEntityVersion(), uniqueValue.getField().getName(), uniqueValue.getField().getValue()
+ } );
+ }
return batch;
@@ -248,11 +262,12 @@ private MutationBatch doWrite( CollectionScope collectionScope, UniqueValue uniq
@Override
- public UniqueValueSet load(final CollectionScope colScope, final Collection fields ) throws ConnectionException{
- return load(colScope,ConsistencyLevel.valueOf(cassandraFig.getReadCL()), fields);
+ public UniqueValueSet load(final ApplicationScope colScope, final String type, final Collection fields ) throws ConnectionException{
+ return load(colScope,ConsistencyLevel.valueOf(cassandraFig.getReadCL()), type, fields);
}
+
@Override
- public UniqueValueSet load(final CollectionScope colScope, final ConsistencyLevel consistencyLevel, final Collection fields )
+ public UniqueValueSet load(final ApplicationScope appScope, final ConsistencyLevel consistencyLevel, final String type, final Collection fields )
throws ConnectionException {
Preconditions.checkNotNull( fields, "fields are required" );
@@ -261,9 +276,9 @@ public UniqueValueSet load(final CollectionScope colScope, final ConsistencyLeve
final List>> keys = new ArrayList<>( fields.size() );
- final Id applicationId = colScope.getApplication();
- final Id ownerId = colScope.getOwner();
- final String collectionName = colScope.getName();
+ final Id applicationId = appScope.getApplication();
+ final Id ownerId = appScope.getApplication();
+ final String collectionName = LegacyScopeUtils.getCollectionScopeNameFromEntityType( type );
for ( Field field : fields ) {
@@ -312,7 +327,7 @@ public UniqueValueSet load(final CollectionScope colScope, final ConsistencyLeve
@Override
- public Iterator getAllUniqueFields( final CollectionScope collectionScope, final Id entityId ) {
+ public Iterator getAllUniqueFields( final ApplicationScope collectionScope, final Id entityId ) {
Preconditions.checkNotNull( collectionScope, "collectionScope is required" );
@@ -320,8 +335,8 @@ public Iterator getAllUniqueFields( final CollectionScope collectio
final Id applicationId = collectionScope.getApplication();
- final Id ownerId = collectionScope.getOwner();
- final String collectionName = collectionScope.getName();
+ final Id ownerId = applicationId;
+ final String collectionName = LegacyScopeUtils.getCollectionScopeNameFromEntityType( entityId.getType() );
final CollectionPrefixedKey collectionPrefixedKey =
new CollectionPrefixedKey<>( collectionName, ownerId, entityId );
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/util/Inflector.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/util/Inflector.java
new file mode 100644
index 0000000000..eab69fa923
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/util/Inflector.java
@@ -0,0 +1,370 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.usergrid.persistence.collection.serialization.impl.util;
+
+
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+
+/**
+ * Transforms words to singular, plural, humanized (human readable), underscore, camel case, or ordinal form. This is
+ * inspired by the Inflector class in Ruby on Rails , which is distributed under the Rails license .
+ */
+public class Inflector {
+
+ protected static final Inflector INSTANCE = new Inflector();
+
+
+ public static Inflector getInstance() {
+ return INSTANCE;
+ }
+
+
+ protected class Rule {
+
+ protected final String expression;
+ protected final Pattern expressionPattern;
+ protected final String replacement;
+
+
+ protected Rule( String expression, String replacement ) {
+ this.expression = expression;
+ this.replacement = replacement != null ? replacement : "";
+ expressionPattern = Pattern.compile( this.expression, Pattern.CASE_INSENSITIVE );
+ }
+
+
+ /**
+ * Apply the rule against the input string, returning the modified string or null if the rule didn't apply (and
+ * no modifications were made)
+ *
+ * @param input the input string
+ *
+ * @return the modified string if this rule applied, or null if the input was not modified by this rule
+ */
+ protected String apply( String input ) {
+ Matcher matcher = expressionPattern.matcher( input );
+ if ( !matcher.find() ) {
+ return null;
+ }
+ return matcher.replaceAll( replacement );
+ }
+
+
+ @Override
+ public int hashCode() {
+ return expression.hashCode();
+ }
+
+
+ @Override
+ public boolean equals( Object obj ) {
+ if ( obj == this ) {
+ return true;
+ }
+ if ( ( obj != null ) && ( obj.getClass() == this.getClass() ) ) {
+ final Rule that = ( Rule ) obj;
+ if ( expression.equalsIgnoreCase( that.expression ) ) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+ @Override
+ public String toString() {
+ return expression + ", " + replacement;
+ }
+ }
+
+
+ private final LinkedList plurals = new LinkedList();
+ private final LinkedList singulars = new LinkedList();
+ /**
+ * The lowercase words that are to be excluded and not processed. This map can be modified by the users via {@link
+ * #getUncountables()}.
+ */
+ private final Set uncountables = new HashSet();
+
+
+ public Inflector() {
+ initialize();
+ }
+
+
+ protected Inflector( Inflector original ) {
+ plurals.addAll( original.plurals );
+ singulars.addAll( original.singulars );
+ uncountables.addAll( original.uncountables );
+ }
+
+
+ @Override
+ @SuppressWarnings("all")
+ public Inflector clone() {
+ return new Inflector( this );
+ }
+
+ // ------------------------------------------------------------------------------------------------
+ // Usage functions
+ // ------------------------------------------------------------------------------------------------
+
+
+ /**
+ * Returns the plural form of the word in the string. Examples:
+ *
+ * inflector.pluralize("post") #=> "posts"
+ * inflector.pluralize("octopus") #=> "octopi"
+ * inflector.pluralize("sheep") #=> "sheep"
+ * inflector.pluralize("words") #=> "words"
+ * inflector.pluralize("the blue mailman") #=> "the blue mailmen"
+ * inflector.pluralize("CamelOctopus") #=> "CamelOctopi"
+ *
+ *
Note that if the {@link Object#toString()} is called on the supplied object, so this method works
+ * for non-strings, too.
+ *
+ * @param word the word that is to be pluralized.
+ *
+ * @return the pluralized form of the word, or the word itself if it could not be pluralized
+ *
+ * @see #singularize(Object)
+ */
+ public String pluralize( Object word ) {
+ if ( word == null ) {
+ return null;
+ }
+ String wordStr = word.toString().trim();
+ if ( wordStr.length() == 0 ) {
+ return wordStr;
+ }
+ if ( isUncountable( wordStr ) ) {
+ return wordStr;
+ }
+ for ( Rule rule : plurals ) {
+ String result = rule.apply( wordStr );
+ if ( result != null ) {
+ return result;
+ }
+ }
+ return wordStr;
+ }
+
+
+ public String pluralize( Object word, int count ) {
+ if ( word == null ) {
+ return null;
+ }
+ if ( ( count == 1 ) || ( count == -1 ) ) {
+ return word.toString();
+ }
+ return pluralize( word );
+ }
+
+
+
+ /**
+ * Returns the singular form of the word in the string. Examples:
+ *
+ * inflector.singularize("posts") #=> "post"
+ * inflector.singularize("octopi") #=> "octopus"
+ * inflector.singularize("sheep") #=> "sheep"
+ * inflector.singularize("words") #=> "word"
+ * inflector.singularize("the blue mailmen") #=> "the blue mailman"
+ * inflector.singularize("CamelOctopi") #=> "CamelOctopus"
+ *
+ *
Note that if the {@link Object#toString()} is called on the supplied object, so this method works
+ * for non-strings, too.
+ *
+ * @param word the word that is to be pluralized.
+ *
+ * @return the pluralized form of the word, or the word itself if it could not be pluralized
+ *
+ * @see #pluralize(Object)
+ */
+ public String singularize( Object word ) {
+ if ( word == null ) {
+ return null;
+ }
+ String wordStr = word.toString().trim();
+ if ( wordStr.length() == 0 ) {
+ return wordStr;
+ }
+ if ( isUncountable( wordStr ) ) {
+ return wordStr;
+ }
+ for ( Rule rule : singulars ) {
+ String result = rule.apply( wordStr );
+ if ( result != null ) {
+ return result;
+ }
+ }
+ return wordStr;
+ }
+
+
+
+ // ------------------------------------------------------------------------------------------------
+ // Management methods
+ // ------------------------------------------------------------------------------------------------
+
+
+ /**
+ * Determine whether the supplied word is considered uncountable by the {@link #pluralize(Object) pluralize} and
+ * {@link #singularize(Object) singularize} methods.
+ *
+ * @param word the word
+ *
+ * @return true if the plural and singular forms of the word are the same
+ */
+ public boolean isUncountable( String word ) {
+ if ( word == null ) {
+ return false;
+ }
+ String trimmedLower = word.trim().toLowerCase();
+ return uncountables.contains( trimmedLower );
+ }
+
+
+ public void addPluralize( String rule, String replacement ) {
+ final Rule pluralizeRule = new Rule( rule, replacement );
+ plurals.addFirst( pluralizeRule );
+ }
+
+
+ public void addSingularize( String rule, String replacement ) {
+ final Rule singularizeRule = new Rule( rule, replacement );
+ singulars.addFirst( singularizeRule );
+ }
+
+
+ public void addIrregular( String singular, String plural ) {
+ if ( org.apache.commons.lang.StringUtils.isEmpty( singular ) ) {
+ throw new IllegalArgumentException( "singular rule may not be empty" );
+ }
+ if ( org.apache.commons.lang.StringUtils.isEmpty( plural ) ) {
+ throw new IllegalArgumentException( "plural rule may not be empty" );
+ }
+ String singularRemainder = singular.length() > 1 ? singular.substring( 1 ) : "";
+ String pluralRemainder = plural.length() > 1 ? plural.substring( 1 ) : "";
+ addPluralize( "(" + singular.charAt( 0 ) + ")" + singularRemainder + "$", "$1" + pluralRemainder );
+ addSingularize( "(" + plural.charAt( 0 ) + ")" + pluralRemainder + "$", "$1" + singularRemainder );
+ }
+
+
+ public void addUncountable( String... words ) {
+ if ( ( words == null ) || ( words.length == 0 ) ) {
+ return;
+ }
+ for ( String word : words ) {
+ if ( word != null ) {
+ uncountables.add( word.trim().toLowerCase() );
+ }
+ }
+ }
+
+
+ /** Completely remove all rules within this inflector. */
+ public void clear() {
+ uncountables.clear();
+ plurals.clear();
+ singulars.clear();
+ }
+
+
+ protected void initialize() {
+ Inflector inflect = this;
+ inflect.addPluralize( "$", "s" );
+ inflect.addPluralize( "s$", "s" );
+ inflect.addPluralize( "(ax|test)is$", "$1es" );
+ inflect.addPluralize( "(octop|vir)us$", "$1i" );
+ inflect.addPluralize( "(octop|vir)i$", "$1i" ); // already plural
+ inflect.addPluralize( "(alias|status)$", "$1es" );
+ inflect.addPluralize( "(bu)s$", "$1ses" );
+ inflect.addPluralize( "(buffal|tomat)o$", "$1oes" );
+ inflect.addPluralize( "([ti])um$", "$1a" );
+ inflect.addPluralize( "([ti])a$", "$1a" ); // already plural
+ inflect.addPluralize( "sis$", "ses" );
+ inflect.addPluralize( "(?:([^f])fe|([lr])f)$", "$1$2ves" );
+ inflect.addPluralize( "(hive)$", "$1s" );
+ inflect.addPluralize( "([^aeiouy]|qu)y$", "$1ies" );
+ inflect.addPluralize( "(x|ch|ss|sh)$", "$1es" );
+ inflect.addPluralize( "(matr|vert|ind)ix|ex$", "$1ices" );
+ inflect.addPluralize( "([m|l])ouse$", "$1ice" );
+ inflect.addPluralize( "([m|l])ice$", "$1ice" );
+ inflect.addPluralize( "^(ox)$", "$1en" );
+ inflect.addPluralize( "(quiz)$", "$1zes" );
+ // Need to check for the following words that are already pluralized:
+ inflect.addPluralize( "(people|men|children|sexes|moves|stadiums)$", "$1" ); // irregulars
+ inflect.addPluralize( "(oxen|octopi|viri|aliases|quizzes)$", "$1" ); // special
+ // rules
+
+ inflect.addSingularize( "s$", "" );
+ inflect.addSingularize( "(s|si|u)s$", "$1s" ); // '-us' and '-ss' are
+ // already singular
+ inflect.addSingularize( "(n)ews$", "$1ews" );
+ inflect.addSingularize( "([ti])a$", "$1um" );
+ inflect.addSingularize( "((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$", "$1$2sis" );
+ inflect.addSingularize( "(^analy)ses$", "$1sis" );
+ inflect.addSingularize( "(^analy)sis$", "$1sis" ); // already singular,
+ // but ends in 's'
+ inflect.addSingularize( "([^f])ves$", "$1fe" );
+ inflect.addSingularize( "(hive)s$", "$1" );
+ inflect.addSingularize( "(tive)s$", "$1" );
+ inflect.addSingularize( "([lr])ves$", "$1f" );
+ inflect.addSingularize( "([^aeiouy]|qu)ies$", "$1y" );
+ inflect.addSingularize( "(s)eries$", "$1eries" );
+ inflect.addSingularize( "(m)ovies$", "$1ovie" );
+ inflect.addSingularize( "(x|ch|ss|sh)es$", "$1" );
+ inflect.addSingularize( "([m|l])ice$", "$1ouse" );
+ inflect.addSingularize( "(bus)es$", "$1" );
+ inflect.addSingularize( "(o)es$", "$1" );
+ inflect.addSingularize( "(shoe)s$", "$1" );
+ inflect.addSingularize( "(cris|ax|test)is$", "$1is" ); // already
+ // singular, but
+ // ends in 's'
+ inflect.addSingularize( "(cris|ax|test)es$", "$1is" );
+ inflect.addSingularize( "(octop|vir)i$", "$1us" );
+ inflect.addSingularize( "(octop|vir)us$", "$1us" ); // already singular,
+ // but ends in 's'
+ inflect.addSingularize( "(alias|status)es$", "$1" );
+ inflect.addSingularize( "(alias|status)$", "$1" ); // already singular,
+ // but ends in 's'
+ inflect.addSingularize( "^(ox)en", "$1" );
+ inflect.addSingularize( "(vert|ind)ices$", "$1ex" );
+ inflect.addSingularize( "(matr)ices$", "$1ix" );
+ inflect.addSingularize( "(quiz)zes$", "$1" );
+
+ inflect.addIrregular( "person", "people" );
+ inflect.addIrregular( "man", "men" );
+ inflect.addIrregular( "child", "children" );
+ inflect.addIrregular( "sex", "sexes" );
+ inflect.addIrregular( "move", "moves" );
+ inflect.addIrregular( "stadium", "stadiums" );
+
+ inflect.addUncountable( "equipment", "information", "rice", "money", "species", "series", "fish", "sheep",
+ "data", "analytics" );
+ }
+}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/util/LegacyScopeUtils.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/util/LegacyScopeUtils.java
new file mode 100644
index 0000000000..d538685c6b
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/util/LegacyScopeUtils.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.usergrid.persistence.collection.serialization.impl.util;
+
+
+import org.apache.usergrid.persistence.collection.CollectionScope;
+import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.model.entity.Id;
+
+
+/**
+ * This class is a helper to keep our legacy CollectionScope for older serialization apis. This will generate
+ * the scope in the same way previous scopes were generated in the core module. This only exists to migrate
+ * perviously collection scoped Api's to versions without them.
+ * This can be removed once we do an official release and prune our impls.
+ */
+public class LegacyScopeUtils {
+
+ /**
+ * Edge types for collection suffix
+ */
+ public static final String EDGE_COLL_SUFFIX = "zzzcollzzz";
+
+
+
+ /**
+ * Get the collection name from the entity/id type
+ * @param type
+ * @return
+ */
+ public static String getCollectionScopeNameFromEntityType( String type ) {
+ String csn = EDGE_COLL_SUFFIX + Inflector.INSTANCE.pluralize( type );
+ return csn.toLowerCase();
+ }
+
+
+
+
+}
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCleanupTaskTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCleanupTaskTest.java
index 787ab3065b..1e9dae77b8 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCleanupTaskTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCleanupTaskTest.java
@@ -19,7 +19,6 @@
package org.apache.usergrid.persistence.collection.impl;
-import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -29,16 +28,12 @@
import java.util.concurrent.Semaphore;
import org.junit.AfterClass;
-import org.junit.Ignore;
import org.junit.Test;
import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.event.EntityVersionDeleted;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
-import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccEntityImpl;
-import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
import org.apache.usergrid.persistence.collection.serialization.UniqueValue;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
@@ -47,12 +42,9 @@
import org.apache.usergrid.persistence.collection.util.VersionGenerator;
import org.apache.usergrid.persistence.core.task.NamedTaskExecutorImpl;
import org.apache.usergrid.persistence.core.task.TaskExecutor;
-import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.entity.SimpleId;
-import org.apache.usergrid.persistence.model.util.UUIDGenerator;
-import com.google.common.base.Optional;
import com.google.common.util.concurrent.ListenableFuture;
import com.netflix.astyanax.Keyspace;
import com.netflix.astyanax.MutationBatch;
@@ -63,7 +55,6 @@
import static org.mockito.Matchers.same;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkCommitTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkCommitTest.java
index bbc791dff4..9a806d0a7f 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkCommitTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkCommitTest.java
@@ -6,7 +6,7 @@
import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkStartTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkStartTest.java
index 6c13dd57da..d308fec4b4 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkStartTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkStartTest.java
@@ -7,7 +7,7 @@
import org.mockito.ArgumentCaptor;
import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteCommitTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteCommitTest.java
index 2b49478b27..c21a40347a 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteCommitTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteCommitTest.java
@@ -23,7 +23,7 @@
import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteOptimisticVerifyTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteOptimisticVerifyTest.java
index 8f64b383c2..06640f098a 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteOptimisticVerifyTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteOptimisticVerifyTest.java
@@ -29,7 +29,7 @@
import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.exception.WriteOptimisticVerifyException;
import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
@@ -83,12 +83,12 @@ public void testNoConflict() throws Exception {
final MvccEntity mvccEntity = fromEntity( entity );
List logEntries = new ArrayList();
- logEntries.add( new MvccLogEntryImpl(
+ logEntries.add( new MvccLogEntryImpl(
entity.getId(), UUIDGenerator.newTimeUUID(), Stage.ACTIVE, MvccLogEntry.State.COMPLETE ));
- logEntries.add( new MvccLogEntryImpl(
+ logEntries.add( new MvccLogEntryImpl(
entity.getId(), UUIDGenerator.newTimeUUID(), Stage.COMMITTED, MvccLogEntry.State.COMPLETE ));
- MvccLogEntrySerializationStrategy noConflictLog =
+ MvccLogEntrySerializationStrategy noConflictLog =
mock( MvccLogEntrySerializationStrategy.class );
when( noConflictLog.load( collectionScope, entity.getId(), entity.getVersion(), 2) )
@@ -121,15 +121,15 @@ public void testConflict() throws Exception {
// log that one operation is active on entity
List logEntries = new ArrayList();
- logEntries.add( new MvccLogEntryImpl(
+ logEntries.add( new MvccLogEntryImpl(
entity.getId(), UUIDGenerator.newTimeUUID(), Stage.ACTIVE, MvccLogEntry.State.COMPLETE ));
// log another operation as active on entity
- logEntries.add( new MvccLogEntryImpl(
+ logEntries.add( new MvccLogEntryImpl(
entity.getId(), UUIDGenerator.newTimeUUID(), Stage.ACTIVE, MvccLogEntry.State.COMPLETE ));
// mock up the log
- MvccLogEntrySerializationStrategy mvccLog =
+ MvccLogEntrySerializationStrategy mvccLog =
mock( MvccLogEntrySerializationStrategy.class );
when( mvccLog.load( scope, entity.getId(), entity.getVersion(), 2) )
.thenReturn( logEntries );
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteStartTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteStartTest.java
index c00c82a100..6171f795dc 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteStartTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteStartTest.java
@@ -23,7 +23,7 @@
import org.mockito.ArgumentCaptor;
import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/LogEntryIteratorTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/LogEntryIteratorTest.java
index 6081b48dcc..8a625052bd 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/LogEntryIteratorTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/LogEntryIteratorTest.java
@@ -9,7 +9,7 @@
import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.util.LogEntryMock;
import org.apache.usergrid.persistence.collection.util.VersionGenerator;
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLESSTransientTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLESSTransientTest.java
index 09b350cf63..5336b0506b 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLESSTransientTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLESSTransientTest.java
@@ -20,7 +20,6 @@
package org.apache.usergrid.persistence.collection.serialization.impl;
-import java.lang.annotation.Annotation;
import java.util.Collections;
import java.util.UUID;
@@ -29,16 +28,13 @@
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.safehaus.guicyfig.Bypass;
-import org.safehaus.guicyfig.Env;
-import org.safehaus.guicyfig.Option;
import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccLogEntryImpl;
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImplTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImplTest.java
index f7cc6150f1..148fcf848d 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImplTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImplTest.java
@@ -33,7 +33,7 @@
import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccLogEntryImpl;
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/util/LogEntryMock.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/util/LogEntryMock.java
index c25d1bc439..ec27e8ab60 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/util/LogEntryMock.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/util/LogEntryMock.java
@@ -30,12 +30,11 @@
import org.mockito.stubbing.Answer;
import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccLogEntryImpl;
import org.apache.usergrid.persistence.model.entity.Id;
-import org.apache.usergrid.persistence.model.util.UUIDGenerator;
import com.fasterxml.uuid.UUIDComparator;
import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/util/UniqueValueEntryMock.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/util/UniqueValueEntryMock.java
index 8da6ef5f98..c06479b250 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/util/UniqueValueEntryMock.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/util/UniqueValueEntryMock.java
@@ -42,27 +42,17 @@
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
-import java.util.Iterator;
import java.util.List;
-import java.util.TreeMap;
import java.util.UUID;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-
import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.MvccLogEntry;
-import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.UniqueValue;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
-import org.apache.usergrid.persistence.collection.serialization.impl.UniqueFieldEntrySerializer;
import org.apache.usergrid.persistence.collection.serialization.impl.UniqueValueImpl;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.field.StringField;
-import org.apache.usergrid.persistence.model.util.UUIDGenerator;
import com.fasterxml.uuid.UUIDComparator;
import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
From 6bf2d3d2b262932866033ed73c3c66e8d5159639 Mon Sep 17 00:00:00 2001
From: Todd Nine
Date: Thu, 26 Mar 2015 17:47:52 -0600
Subject: [PATCH 02/12] Finished migrating tests to new framework. Need to
validate keyspace name.
---
.../migration/EntityTypeMappingMigration.java | 4 +-
.../rx/AllEntitiesInSystemObservableIT.java | 2 +-
.../collection/CollectionScope.java | 45 --------
.../collection/EntityCollectionManager.java | 2 +
.../persistence/collection/FieldSet.java | 2 +-
.../cache/CachedEntityCollectionManager.java | 5 +-
.../collection/event/EntityDeleted.java | 8 +-
.../event/EntityVersionCreated.java | 7 +-
.../event/EntityVersionDeleted.java | 8 +-
.../WriteOptimisticVerifyException.java | 3 +-
.../exception/WriteStartException.java | 3 +-
.../exception/WriteUniqueVerifyException.java | 2 +-
.../collection/guice/CollectionModule.java | 2 +-
.../guice/CollectionTaskExecutor.java | 4 +-
.../collection/impl/CollectionScopeImpl.java | 102 ------------------
.../EntityCollectionManagerFactoryImpl.java | 2 +-
.../impl/EntityCollectionManagerImpl.java | 2 +-
.../collection/impl/EntityDeletedTask.java | 29 ++---
.../impl/EntityVersionCleanupTask.java | 16 ++-
.../impl/EntityVersionCreatedTask.java | 13 ++-
.../impl/EntityVersionTaskFactory.java | 7 +-
.../collection/mvcc/changelog/ChangeLog.java | 2 -
.../mvcc/entity/MvccValidationUtils.java | 16 ---
.../entity/impl/MvccEntityDeleteEvent.java | 8 +-
.../mvcc/entity/impl/MvccEntityEvent.java | 11 +-
.../entity/impl/MvccEntityWriteEvent.java | 6 +-
.../mvcc/stage/CollectionIoEvent.java | 2 +-
.../mvcc/stage/EntityUpdateEvent.java | 34 ------
.../mvcc/stage/delete/MarkCommit.java | 5 +-
.../mvcc/stage/delete/MarkStart.java | 5 +-
.../mvcc/stage/write/RollbackAction.java | 5 +-
.../mvcc/stage/write/WriteCommit.java | 13 ++-
.../stage/write/WriteOptimisticVerify.java | 5 +-
.../mvcc/stage/write/WriteStart.java | 5 +-
.../mvcc/stage/write/WriteUniqueVerify.java | 18 ++--
.../MvccEntitySerializationStrategy.java | 1 -
.../collection/serialization/UniqueValue.java | 1 -
.../UniqueValueSerializationStrategy.java | 8 +-
.../serialization/UniqueValueSet.java | 3 -
.../impl/EntityVersionSerializer.java | 9 +-
.../serialization/impl/LogEntryIterator.java | 8 +-
.../serialization/impl/MutableFieldSet.java | 6 +-
.../MvccEntitySerializationStrategyImpl.java | 9 +-
...MvccEntitySerializationStrategyV3Impl.java | 8 +-
...MvccLogEntrySerializationStrategyImpl.java | 2 +-
.../impl/SerializationModule.java | 2 +-
.../serialization/impl/UniqueFieldEntry.java | 1 -
.../impl/UniqueFieldEntrySerializer.java | 3 -
.../serialization/impl/UniqueValueImpl.java | 5 +-
.../UniqueValueSerializationStrategyImpl.java | 7 +-
.../migration/CollectionMigrationPlugin.java | 2 +-
.../impl/migration/EntityIdScope.java | 12 +--
.../MvccEntityDataMigrationImpl.java | 14 ++-
.../impl/util/LegacyScopeUtils.java | 6 --
.../ApplicationContextImplTest.java | 33 ++++++
.../collection/CollectionContextImplTest.java | 53 ---------
.../EntityCollectionManagerFactoryTest.java | 9 +-
.../collection/EntityCollectionManagerIT.java | 92 +++++++---------
.../EntityCollectionManagerStressTest.java | 14 +--
.../impl/EntityVersionCleanupTaskTest.java | 24 ++---
.../impl/EntityVersionCreatedTaskTest.java | 27 +++--
.../mvcc/stage/AbstractEntityStageTest.java | 6 +-
.../mvcc/stage/AbstractIdStageTest.java | 4 +-
.../stage/AbstractMvccEntityStageTest.java | 6 +-
.../mvcc/stage/TestEntityGenerator.java | 2 +-
.../mvcc/stage/delete/MarkCommitTest.java | 14 +--
.../mvcc/stage/delete/MarkStartTest.java | 6 +-
...queValueSerializationStrategyImplTest.java | 50 ++++-----
.../mvcc/stage/write/WriteCommitTest.java | 12 +--
.../write/WriteOptimisticVerifyTest.java | 23 ++--
.../mvcc/stage/write/WriteStartTest.java | 20 ++--
.../mvcc/stage/write/WriteUniqueVerifyIT.java | 34 +++---
.../stage/write/WriteUniqueVerifyTest.java | 13 ++-
.../impl/LogEntryIteratorTest.java | 14 +--
...ccEntitySerializationStrategyImplTest.java | 50 ++++-----
...EntitySerializationStrategyV1ImplTest.java | 10 +-
...EntitySerializationStrategyV2ImplTest.java | 10 +-
...MvccEntitySerializationStrategyV2Test.java | 20 ++--
...EntitySerializationStrategyV3ImplTest.java | 16 ++-
.../impl/MvccLESSTransientTest.java | 23 ++--
...LogEntrySerializationStrategyImplTest.java | 87 +++++++--------
.../impl/ScopedRowKeySerializerTest.java | 2 +-
.../impl/SerializationComparison.java | 2 +-
.../impl/SettingsValidationTest.java | 1 -
...MvccEntityDataMigrationV1ToV3ImplTest.java | 9 +-
...MvccEntityDataMigrationV1ToV3ImplTest.java | 6 --
.../collection/util/EntityHelper.java | 1 -
.../collection/util/LogEntryMock.java | 9 +-
.../collection/util/UniqueValueEntryMock.java | 7 +-
.../core/scope/ApplicationScopeImpl.java | 3 +
90 files changed, 457 insertions(+), 765 deletions(-)
delete mode 100644 stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/CollectionScope.java
delete mode 100644 stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/CollectionScopeImpl.java
delete mode 100644 stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/EntityUpdateEvent.java
create mode 100644 stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/ApplicationContextImplTest.java
delete mode 100644 stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionContextImplTest.java
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/migration/EntityTypeMappingMigration.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/migration/EntityTypeMappingMigration.java
index 6531d16b6e..47ad30a3d1 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/migration/EntityTypeMappingMigration.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/migration/EntityTypeMappingMigration.java
@@ -35,8 +35,6 @@
import com.google.inject.Inject;
import rx.Observable;
-import rx.functions.Action1;
-import rx.functions.Func1;
import rx.schedulers.Schedulers;
@@ -68,7 +66,7 @@ public int migrate( final int currentVersion, final MigrationDataProvider {
return Observable.just( entityIdScope ).doOnNext( entityIdScopeObservable -> {
final MapScope ms = CpNamingUtils
- .getEntityTypeMapScope( entityIdScope.getCollectionScope().getApplication() );
+ .getEntityTypeMapScope( entityIdScope.getApplicationScope().getApplication() );
final MapManager mapManager = managerCache.getMapManager( ms );
diff --git a/stack/core/src/test/java/org/apache/usergrid/corepersistence/rx/AllEntitiesInSystemObservableIT.java b/stack/core/src/test/java/org/apache/usergrid/corepersistence/rx/AllEntitiesInSystemObservableIT.java
index 7a6ec2245e..3e6a77f34f 100644
--- a/stack/core/src/test/java/org/apache/usergrid/corepersistence/rx/AllEntitiesInSystemObservableIT.java
+++ b/stack/core/src/test/java/org/apache/usergrid/corepersistence/rx/AllEntitiesInSystemObservableIT.java
@@ -99,7 +99,7 @@ public void testEntities() throws Exception {
@Override
public void call( final EntityIdScope entityIdScope ) {
assertNotNull(entityIdScope);
- assertNotNull(entityIdScope.getCollectionScope());
+ assertNotNull(entityIdScope.getApplicationScope());
assertNotNull(entityIdScope.getId());
//we should only emit each node once
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/CollectionScope.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/CollectionScope.java
deleted file mode 100644
index 7fda54e503..0000000000
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/CollectionScope.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.usergrid.persistence.collection;
-
-
-import org.apache.usergrid.persistence.core.scope.ApplicationScope;
-import org.apache.usergrid.persistence.model.entity.Id;
-
-
-/**
- * A scope to use when creating the collection manager. Typically, this would be something like an application, or an
- * organization. Data encapsulated within instances of a scope are mutually exclusive from instances with other ids and
- * names.
- */
-public interface CollectionScope extends ApplicationScope {
-
- /**
- * @return The name of the collection. If you use pluralization for you names vs types,
- * you must keep the consistent or you will be unable to load data
- */
- public String getName();
-
-
- /**
- * @return A uuid that is unique to this context. It can be any uuid (time uuid preferred). Usually an application
- * Id, but could be an entity Id that is the parent of another collection
- */
- public Id getOwner();
-}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManager.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManager.java
index d4232cac9f..5a329e3613 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManager.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManager.java
@@ -20,10 +20,12 @@
import java.util.Collection;
+
import org.apache.usergrid.persistence.core.util.Health;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.field.Field;
+
import rx.Observable;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/FieldSet.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/FieldSet.java
index c46fa3b8f6..43f470d42b 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/FieldSet.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/FieldSet.java
@@ -18,7 +18,7 @@
*/
package org.apache.usergrid.persistence.collection;
-import org.apache.usergrid.persistence.model.entity.Id;
+
import org.apache.usergrid.persistence.model.field.Field;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/cache/CachedEntityCollectionManager.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/cache/CachedEntityCollectionManager.java
index 57dcc798f3..fa35580d1c 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/cache/CachedEntityCollectionManager.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/cache/CachedEntityCollectionManager.java
@@ -23,7 +23,10 @@
import java.util.Collection;
import java.util.concurrent.TimeUnit;
-import org.apache.usergrid.persistence.collection.*;
+import org.apache.usergrid.persistence.collection.EntityCollectionManager;
+import org.apache.usergrid.persistence.collection.EntitySet;
+import org.apache.usergrid.persistence.collection.FieldSet;
+import org.apache.usergrid.persistence.collection.VersionSet;
import org.apache.usergrid.persistence.core.util.Health;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.Id;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/event/EntityDeleted.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/event/EntityDeleted.java
index 0e2b8a21c7..0e9b62e2f6 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/event/EntityDeleted.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/event/EntityDeleted.java
@@ -18,11 +18,11 @@
package org.apache.usergrid.persistence.collection.event;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.model.entity.Id;
-
import java.util.UUID;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.model.entity.Id;
+
/**
*
@@ -40,6 +40,6 @@ public interface EntityDeleted {
* @param entityId The id of the entity
* @param version the entity version
*/
- public void deleted( final CollectionScope scope, final Id entityId, final UUID version);
+ public void deleted( final ApplicationScope scope, final Id entityId, final UUID version);
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/event/EntityVersionCreated.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/event/EntityVersionCreated.java
index 4412b0cdbb..7f1be1a3dc 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/event/EntityVersionCreated.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/event/EntityVersionCreated.java
@@ -17,7 +17,8 @@
*/
package org.apache.usergrid.persistence.collection.event;
-import org.apache.usergrid.persistence.collection.CollectionScope;
+
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Entity;
@@ -29,10 +30,10 @@ public interface EntityVersionCreated {
/**
* The new version of the entity. Note that this should be a fully merged view of the entity.
- * In the case of partial updates, the passed entity should be fully merged with it's previous
+ * In the case of partial updates, the passed entity should be fully merged with it's previous
* entries.
* @param scope The scope of the entity
* @param entity The fully loaded and merged entity
*/
- public void versionCreated( final CollectionScope scope, final Entity entity );
+ public void versionCreated( final ApplicationScope scope, final Entity entity );
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/event/EntityVersionDeleted.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/event/EntityVersionDeleted.java
index 179abc1344..7fd8fe71aa 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/event/EntityVersionDeleted.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/event/EntityVersionDeleted.java
@@ -19,15 +19,15 @@
import java.util.List;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.MvccEntity;
+
import org.apache.usergrid.persistence.collection.MvccLogEntry;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Id;
/**
*
- * Invoked when an entity version is removed. Note that this is not a deletion of the entity
+ * Invoked when an entity version is removed. Note that this is not a deletion of the entity
* itself, only the version itself.
*
*/
@@ -40,7 +40,7 @@ public interface EntityVersionDeleted {
* @param entityId The entity Id that was removed
* @param entityVersions The versions that are to be removed
*/
- public void versionDeleted(final CollectionScope scope, final Id entityId,
+ public void versionDeleted(final ApplicationScope scope, final Id entityId,
final List entityVersions);
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteOptimisticVerifyException.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteOptimisticVerifyException.java
index 0badc42b51..8a7a93d939 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteOptimisticVerifyException.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteOptimisticVerifyException.java
@@ -17,8 +17,9 @@
*/
package org.apache.usergrid.persistence.collection.exception;
-import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+
import org.apache.usergrid.persistence.collection.MvccEntity;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
public class WriteOptimisticVerifyException extends CollectionRuntimeException {
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteStartException.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteStartException.java
index 27f029b839..9c556bfbcf 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteStartException.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteStartException.java
@@ -17,8 +17,9 @@
*/
package org.apache.usergrid.persistence.collection.exception;
-import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+
import org.apache.usergrid.persistence.collection.MvccEntity;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
public class WriteStartException extends CollectionRuntimeException {
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteUniqueVerifyException.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteUniqueVerifyException.java
index 083eddb494..81165fa451 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteUniqueVerifyException.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/WriteUniqueVerifyException.java
@@ -20,8 +20,8 @@
import java.util.Map;
-import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.collection.MvccEntity;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.field.Field;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/guice/CollectionModule.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/guice/CollectionModule.java
index 68ddab5a35..eaf89eff8c 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/guice/CollectionModule.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/guice/CollectionModule.java
@@ -21,12 +21,12 @@
import org.safehaus.guicyfig.GuicyFigModule;
import org.apache.usergrid.persistence.collection.EntityCollectionManagerFactory;
-import org.apache.usergrid.persistence.collection.impl.EntityVersionTaskFactory;
import org.apache.usergrid.persistence.collection.cache.EntityCacheFig;
import org.apache.usergrid.persistence.collection.event.EntityDeleted;
import org.apache.usergrid.persistence.collection.event.EntityVersionCreated;
import org.apache.usergrid.persistence.collection.event.EntityVersionDeleted;
import org.apache.usergrid.persistence.collection.impl.EntityCollectionManagerFactoryImpl;
+import org.apache.usergrid.persistence.collection.impl.EntityVersionTaskFactory;
import org.apache.usergrid.persistence.collection.mvcc.changelog.ChangeLogGenerator;
import org.apache.usergrid.persistence.collection.mvcc.changelog.ChangeLogGeneratorImpl;
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/guice/CollectionTaskExecutor.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/guice/CollectionTaskExecutor.java
index 7c08437fd5..53c1f4851b 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/guice/CollectionTaskExecutor.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/guice/CollectionTaskExecutor.java
@@ -23,10 +23,10 @@
import com.google.inject.BindingAnnotation;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/CollectionScopeImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/CollectionScopeImpl.java
deleted file mode 100644
index 958cc70452..0000000000
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/CollectionScopeImpl.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.usergrid.persistence.collection.impl;
-
-
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.mvcc.entity.MvccValidationUtils;
-import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
-import org.apache.usergrid.persistence.model.entity.Id;
-
-import com.google.inject.Inject;
-
-
-/**
- * Simple impl of hte collection context
- *
- * @author tnine
- */
-public class CollectionScopeImpl extends ApplicationScopeImpl implements CollectionScope {
- private final Id ownerId;
- private final String name;
-
- @Inject
- public CollectionScopeImpl( final Id applicationId, final Id ownerId, final String name ) {
- super( applicationId );
- this.ownerId = ownerId;
- this.name = name;
-
- MvccValidationUtils.validateCollectionScope( this );
- }
-
-
- @Override
- public Id getOwner() {
- return ownerId;
- }
-
-
- @Override
- public String getName() {
- return name;
- }
-
-
- @Override
- public boolean equals( final Object o ) {
- if ( this == o ) {
- return true;
- }
- if ( !( o instanceof CollectionScopeImpl ) ) {
- return false;
- }
- if ( !super.equals( o ) ) {
- return false;
- }
-
- final CollectionScope that = ( CollectionScope ) o;
-
- if ( !name.equals( that.getName() ) ) {
- return false;
- }
- if ( !ownerId.equals( that.getOwner() ) ) {
- return false;
- }
-
- return true;
- }
-
-
- @Override
- public int hashCode() {
- int result = super.hashCode();
- result = 31 * result + ownerId.hashCode();
- result = 31 * result + name.hashCode();
- return result;
- }
-
-
- @Override
- public String toString() {
- return "CollectionScopeImpl{" +
- "ownerId=" + ownerId +
- ", name='" + name + '\'' +
- '}';
- }
-}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java
index 5cc326b089..857432475e 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java
@@ -28,7 +28,6 @@
import org.apache.usergrid.persistence.collection.cache.CachedEntityCollectionManager;
import org.apache.usergrid.persistence.collection.cache.EntityCacheFig;
import org.apache.usergrid.persistence.collection.guice.CollectionTaskExecutor;
-import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.mvcc.stage.delete.MarkCommit;
import org.apache.usergrid.persistence.collection.mvcc.stage.delete.MarkStart;
import org.apache.usergrid.persistence.collection.mvcc.stage.write.RollbackAction;
@@ -37,6 +36,7 @@
import org.apache.usergrid.persistence.collection.mvcc.stage.write.WriteStart;
import org.apache.usergrid.persistence.collection.mvcc.stage.write.WriteUniqueVerify;
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.metrics.MetricsFactory;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerImpl.java
index 1d73268442..8e29f4ad70 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerImpl.java
@@ -34,7 +34,6 @@
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.VersionSet;
import org.apache.usergrid.persistence.collection.guice.CollectionTaskExecutor;
-import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionIoEvent;
import org.apache.usergrid.persistence.collection.mvcc.stage.delete.MarkCommit;
import org.apache.usergrid.persistence.collection.mvcc.stage.delete.MarkStart;
@@ -44,6 +43,7 @@
import org.apache.usergrid.persistence.collection.mvcc.stage.write.WriteStart;
import org.apache.usergrid.persistence.collection.mvcc.stage.write.WriteUniqueVerify;
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.UniqueValue;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSet;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityDeletedTask.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityDeletedTask.java
index 213cbb9553..d858930320 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityDeletedTask.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityDeletedTask.java
@@ -18,24 +18,27 @@
*/
package org.apache.usergrid.persistence.collection.impl;
-import com.google.inject.Inject;
-import com.google.inject.assistedinject.Assisted;
-import com.netflix.astyanax.MutationBatch;
-import org.apache.usergrid.persistence.collection.CollectionScope;
+
+import java.util.Set;
+import java.util.UUID;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import org.apache.usergrid.persistence.collection.event.EntityDeleted;
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.core.guice.ProxyImpl;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.task.Task;
import org.apache.usergrid.persistence.model.entity.Id;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import rx.Observable;
-import rx.schedulers.Schedulers;
-import java.util.Set;
-import java.util.UUID;
+import com.google.inject.Inject;
+import com.google.inject.assistedinject.Assisted;
+import com.netflix.astyanax.MutationBatch;
-import org.apache.usergrid.persistence.core.guice.ProxyImpl;
+import rx.Observable;
+import rx.schedulers.Schedulers;
/**
@@ -48,7 +51,7 @@ public class EntityDeletedTask implements Task {
private final MvccLogEntrySerializationStrategy logEntrySerializationStrategy;
private final MvccEntitySerializationStrategy entitySerializationStrategy;
private final Set listeners;
- private final CollectionScope collectionScope;
+ private final ApplicationScope collectionScope;
private final Id entityId;
private final UUID version;
@@ -59,7 +62,7 @@ public EntityDeletedTask(
final MvccLogEntrySerializationStrategy logEntrySerializationStrategy,
@ProxyImpl final MvccEntitySerializationStrategy entitySerializationStrategy,
final Set listeners, // MUST be a set or Guice will not inject
- @Assisted final CollectionScope collectionScope,
+ @Assisted final ApplicationScope collectionScope,
@Assisted final Id entityId,
@Assisted final UUID version) {
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCleanupTask.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCleanupTask.java
index f52eb2598b..b5f9085da6 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCleanupTask.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCleanupTask.java
@@ -23,25 +23,23 @@
import java.util.Set;
import java.util.UUID;
-import com.google.inject.Inject;
-import com.google.inject.assistedinject.Assisted;
-
-import org.apache.usergrid.persistence.collection.serialization.UniqueValue;
-import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.event.EntityVersionDeleted;
import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
+import org.apache.usergrid.persistence.collection.serialization.UniqueValue;
+import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.impl.LogEntryIterator;
import org.apache.usergrid.persistence.core.rx.ObservableIterator;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.task.Task;
import org.apache.usergrid.persistence.model.entity.Id;
+import com.google.inject.Inject;
+import com.google.inject.assistedinject.Assisted;
import com.netflix.astyanax.Keyspace;
import com.netflix.astyanax.MutationBatch;
import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
@@ -69,7 +67,7 @@ public class EntityVersionCleanupTask implements Task {
private final SerializationFig serializationFig;
- private final CollectionScope scope;
+ private final ApplicationScope scope;
private final Id entityId;
private final UUID version;
private final boolean includeVersion;
@@ -82,7 +80,7 @@ public EntityVersionCleanupTask(
final UniqueValueSerializationStrategy uniqueValueSerializationStrategy,
final Keyspace keyspace,
final Set listeners, // MUST be a set or Guice will not inject
- @Assisted final CollectionScope scope,
+ @Assisted final ApplicationScope scope,
@Assisted final Id entityId,
@Assisted final UUID version,
@Assisted final boolean includeVersion) {
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCreatedTask.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCreatedTask.java
index 16a6e774ce..fbbcdbd74e 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCreatedTask.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCreatedTask.java
@@ -17,18 +17,21 @@
*/
package org.apache.usergrid.persistence.collection.impl;
+
import java.util.Set;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.usergrid.persistence.collection.CollectionScope;
+
import org.apache.usergrid.persistence.collection.event.EntityVersionCreated;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.task.Task;
import org.apache.usergrid.persistence.model.entity.Entity;
+
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;
+
import rx.Observable;
-import rx.functions.Action1;
-import rx.functions.Func1;
import rx.schedulers.Schedulers;
@@ -39,12 +42,12 @@ public class EntityVersionCreatedTask implements Task {
private static final Logger logger = LoggerFactory.getLogger( EntityVersionCreatedTask.class );
private Set listeners;
- private final CollectionScope collectionScope;
+ private final ApplicationScope collectionScope;
private final Entity entity;
@Inject
- public EntityVersionCreatedTask( @Assisted final CollectionScope collectionScope,
+ public EntityVersionCreatedTask( @Assisted final ApplicationScope collectionScope,
final Set listeners,
@Assisted final Entity entity ) {
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityVersionTaskFactory.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityVersionTaskFactory.java
index e121b77580..51a4607b62 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityVersionTaskFactory.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityVersionTaskFactory.java
@@ -18,17 +18,12 @@
package org.apache.usergrid.persistence.collection.impl;
+import java.util.UUID;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.impl.EntityDeletedTask;
-import org.apache.usergrid.persistence.collection.impl.EntityVersionCleanupTask;
-import org.apache.usergrid.persistence.collection.impl.EntityVersionCreatedTask;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.Id;
-import java.util.UUID;
-
public interface EntityVersionTaskFactory {
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/changelog/ChangeLog.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/changelog/ChangeLog.java
index d028aa0666..d5ea4239c4 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/changelog/ChangeLog.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/changelog/ChangeLog.java
@@ -38,9 +38,7 @@
*/
-import java.util.List;
import java.util.Set;
-import java.util.UUID;
import org.apache.usergrid.persistence.model.field.Field;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/MvccValidationUtils.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/MvccValidationUtils.java
index 1f0c91bd91..f97db9cc73 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/MvccValidationUtils.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/MvccValidationUtils.java
@@ -19,15 +19,12 @@
package org.apache.usergrid.persistence.collection.mvcc.entity;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.MvccEntity;
import com.google.common.base.Preconditions;
-import static org.apache.usergrid.persistence.core.util.ValidationUtils.validateApplicationScope;
import static org.apache.usergrid.persistence.core.util.ValidationUtils.verifyEntityWrite;
import static org.apache.usergrid.persistence.core.util.ValidationUtils.verifyIdentity;
-import static org.apache.usergrid.persistence.core.util.ValidationUtils.verifyString;
import static org.apache.usergrid.persistence.core.util.ValidationUtils.verifyTimeUuid;
import static org.apache.usergrid.persistence.core.util.ValidationUtils.verifyVersion;
@@ -66,19 +63,6 @@ public static void verifyMvccEntityOptionalEntity( MvccEntity entity ) {
- /**
- * Validate the collection scope
- */
- public static void validateCollectionScope( final CollectionScope scope ) {
-
- Preconditions.checkNotNull( scope, "collection scope is required" );
-
- verifyIdentity( scope.getOwner() );
-
- verifyString( scope.getName(), "name" );
-
- validateApplicationScope( scope );
- }
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccEntityDeleteEvent.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccEntityDeleteEvent.java
index 1f8fc24382..e1a7ef348d 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccEntityDeleteEvent.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccEntityDeleteEvent.java
@@ -21,8 +21,8 @@
import java.util.UUID;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.MvccEntity;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
/**
@@ -30,9 +30,9 @@
*/
public class MvccEntityDeleteEvent extends MvccEntityEvent {
- public MvccEntityDeleteEvent(
- final CollectionScope collectionScope, final UUID version, final MvccEntity entity ) {
+ public MvccEntityDeleteEvent(
+ final ApplicationScope applicationScope, final UUID version, final MvccEntity entity ) {
- super( collectionScope, version, entity );
+ super( applicationScope, version, entity );
}
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccEntityEvent.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccEntityEvent.java
index f9f1389cb3..ffedf86942 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccEntityEvent.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccEntityEvent.java
@@ -18,29 +18,30 @@
package org.apache.usergrid.persistence.collection.mvcc.entity.impl;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.MvccEntity;
import java.io.Serializable;
import java.util.UUID;
+import org.apache.usergrid.persistence.collection.MvccEntity;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+
/**
* Entity Event for queues
*/
public abstract class MvccEntityEvent implements Serializable {
- private final CollectionScope collectionScope;
+ private final ApplicationScope collectionScope;
private final MvccEntity entity;
private final UUID version;
- public MvccEntityEvent(final CollectionScope collectionScope, final UUID version, final MvccEntity entity) {
+ public MvccEntityEvent(final ApplicationScope collectionScope, final UUID version, final MvccEntity entity) {
this.collectionScope = collectionScope;
this.entity = entity;
this.version = version;
}
- public CollectionScope getCollectionScope() {
+ public ApplicationScope getApplicationScope() {
return collectionScope;
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccEntityWriteEvent.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccEntityWriteEvent.java
index 84cfd18af3..c94f8a481e 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccEntityWriteEvent.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccEntityWriteEvent.java
@@ -21,8 +21,8 @@
import java.util.UUID;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.MvccEntity;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
/**
@@ -30,7 +30,7 @@
*/
public class MvccEntityWriteEvent extends MvccEntityEvent {
- public MvccEntityWriteEvent( final CollectionScope collectionScope, final UUID version, final MvccEntity entity ) {
- super( collectionScope, version, entity );
+ public MvccEntityWriteEvent( final ApplicationScope applicationScope, final UUID version, final MvccEntity entity ) {
+ super( applicationScope, version, entity );
}
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/CollectionIoEvent.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/CollectionIoEvent.java
index 20fa4be2b2..4fc3f8e118 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/CollectionIoEvent.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/CollectionIoEvent.java
@@ -18,9 +18,9 @@
*/
package org.apache.usergrid.persistence.collection.mvcc.stage;
+
import java.io.Serializable;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/EntityUpdateEvent.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/EntityUpdateEvent.java
deleted file mode 100644
index 3951226816..0000000000
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/EntityUpdateEvent.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.usergrid.persistence.collection.mvcc.stage;
-
-
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.model.entity.Id;
-
-
-/**
- * Simple event to signal entity update
- */
-public class EntityUpdateEvent extends CollectionIoEvent {
-
- public EntityUpdateEvent( final CollectionScope context, final Id event ) {
- super( context, event );
- }
-}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkCommit.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkCommit.java
index 1c5a1eb2de..14977eb999 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkCommit.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkCommit.java
@@ -24,15 +24,14 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
-import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.mvcc.entity.MvccValidationUtils;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccLogEntryImpl;
import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionIoEvent;
+import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
import org.apache.usergrid.persistence.core.guice.ProxyImpl;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkStart.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkStart.java
index 04059c5cb1..4ab1b0947e 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkStart.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkStart.java
@@ -24,15 +24,14 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException;
-import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
+import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccEntityImpl;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccLogEntryImpl;
import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionIoEvent;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.service.UUIDService;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.util.ValidationUtils;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/RollbackAction.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/RollbackAction.java
index 0de1ab6b65..a54bf77b60 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/RollbackAction.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/RollbackAction.java
@@ -21,13 +21,12 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.usergrid.persistence.collection.CollectionScope;
+import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException;
import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
-import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.serialization.UniqueValue;
-import org.apache.usergrid.persistence.collection.serialization.impl.UniqueValueImpl;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.impl.UniqueValueImpl;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.field.Field;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteCommit.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteCommit.java
index 50321b6f60..647f29e2ca 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteCommit.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteCommit.java
@@ -23,26 +23,25 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.exception.WriteCommitException;
-import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
-import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
+import org.apache.usergrid.persistence.collection.exception.WriteCommitException;
import org.apache.usergrid.persistence.collection.mvcc.entity.MvccValidationUtils;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccLogEntryImpl;
import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionIoEvent;
+import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.UniqueValue;
-import org.apache.usergrid.persistence.collection.serialization.impl.UniqueValueImpl;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
-import org.apache.usergrid.persistence.core.scope.ApplicationScope;
-import org.apache.usergrid.persistence.model.util.EntityUtils;
+import org.apache.usergrid.persistence.collection.serialization.impl.UniqueValueImpl;
import org.apache.usergrid.persistence.core.guice.ProxyImpl;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.util.ValidationUtils;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.field.Field;
+import org.apache.usergrid.persistence.model.util.EntityUtils;
import com.google.common.base.Preconditions;
import com.google.inject.Inject;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteOptimisticVerify.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteOptimisticVerify.java
index 92656cc24d..4ced62973c 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteOptimisticVerify.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteOptimisticVerify.java
@@ -23,14 +23,13 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.exception.WriteOptimisticVerifyException;
-import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
+import org.apache.usergrid.persistence.collection.exception.WriteOptimisticVerifyException;
import org.apache.usergrid.persistence.collection.mvcc.entity.MvccValidationUtils;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionIoEvent;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Entity;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteStart.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteStart.java
index 453a043579..26ea3cd134 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteStart.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteStart.java
@@ -6,15 +6,14 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.exception.WriteStartException;
-import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
+import org.apache.usergrid.persistence.collection.exception.WriteStartException;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccEntityImpl;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccLogEntryImpl;
import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionIoEvent;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.Id;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java
index 18c221cc1d..b984ad8c73 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java
@@ -23,20 +23,11 @@
import java.util.List;
import java.util.Map;
-import com.netflix.astyanax.model.ConsistencyLevel;
-import com.netflix.hystrix.HystrixCommand;
-import com.netflix.hystrix.HystrixCommandGroupKey;
-import com.netflix.hystrix.HystrixThreadPoolProperties;
-
-import org.apache.usergrid.persistence.core.scope.ApplicationScope;
-import org.apache.usergrid.persistence.model.util.EntityUtils;
-import org.apache.usergrid.persistence.core.astyanax.CassandraConfig;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.usergrid.persistence.collection.exception.WriteUniqueVerifyException;
import org.apache.usergrid.persistence.collection.MvccEntity;
+import org.apache.usergrid.persistence.collection.exception.WriteUniqueVerifyException;
import org.apache.usergrid.persistence.collection.mvcc.entity.MvccValidationUtils;
import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionIoEvent;
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
@@ -44,9 +35,12 @@
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSet;
import org.apache.usergrid.persistence.collection.serialization.impl.UniqueValueImpl;
+import org.apache.usergrid.persistence.core.astyanax.CassandraConfig;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.field.Field;
+import org.apache.usergrid.persistence.model.util.EntityUtils;
import com.google.common.base.Preconditions;
import com.google.inject.Inject;
@@ -54,6 +48,10 @@
import com.netflix.astyanax.Keyspace;
import com.netflix.astyanax.MutationBatch;
import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
+import com.netflix.astyanax.model.ConsistencyLevel;
+import com.netflix.hystrix.HystrixCommand;
+import com.netflix.hystrix.HystrixCommandGroupKey;
+import com.netflix.hystrix.HystrixThreadPoolProperties;
import rx.functions.Action1;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccEntitySerializationStrategy.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccEntitySerializationStrategy.java
index beb5621786..fab0db6989 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccEntitySerializationStrategy.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccEntitySerializationStrategy.java
@@ -23,7 +23,6 @@
import java.util.Iterator;
import java.util.UUID;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.EntitySet;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.core.migration.data.VersionedData;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValue.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValue.java
index 2ba927c31a..41d9285942 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValue.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValue.java
@@ -20,7 +20,6 @@
import java.util.UUID;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.field.Field;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValueSerializationStrategy.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValueSerializationStrategy.java
index 8cee99d15c..71af4603c5 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValueSerializationStrategy.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValueSerializationStrategy.java
@@ -21,15 +21,15 @@
import java.util.Collection;
import java.util.Iterator;
-import com.netflix.astyanax.MutationBatch;
-import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
-import com.netflix.astyanax.model.ConsistencyLevel;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.core.migration.schema.Migration;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.field.Field;
+import com.netflix.astyanax.MutationBatch;
+import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
+import com.netflix.astyanax.model.ConsistencyLevel;
+
/**
* Reads and writes to UniqueValues column family.
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValueSet.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValueSet.java
index 702e908234..4fb163b491 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValueSet.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValueSet.java
@@ -18,9 +18,6 @@
*/
-import java.util.Set;
-
-
/**
* A read only view of unique values
*/
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/EntityVersionSerializer.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/EntityVersionSerializer.java
index 4fd3b33664..97bad7a3e8 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/EntityVersionSerializer.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/EntityVersionSerializer.java
@@ -21,9 +21,6 @@
import java.nio.ByteBuffer;
import java.util.UUID;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.entity.SimpleId;
@@ -36,7 +33,7 @@
import com.netflix.astyanax.serializers.UUIDSerializer;
/**
- * Serialize EntityVersion, entity ID and version, for use a column name in Unique Values Column Family.
+ * Serialize EntityVersion, entity ID and version, for use a column name in Unique Values Column Family.
*/
public class EntityVersionSerializer extends AbstractSerializer {
@@ -69,8 +66,8 @@ public EntityVersion fromByteBuffer(final ByteBuffer byteBuffer) {
final UUID version = composite.get( 0, UUIDSerializer.get() );
final UUID entityId = composite.get( 1, UUIDSerializer.get() );
final String entityType = composite.get( 2, StringSerializer.get() );
-
+
return new EntityVersion( new SimpleId( entityId, entityType ), version);
}
-
+
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/LogEntryIterator.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/LogEntryIterator.java
index 3ecc61da63..e5c28960fb 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/LogEntryIterator.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/LogEntryIterator.java
@@ -6,9 +6,9 @@
import java.util.NoSuchElementException;
import java.util.UUID;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Id;
import com.google.common.base.Preconditions;
@@ -22,7 +22,7 @@ public class LogEntryIterator implements Iterator {
private final MvccLogEntrySerializationStrategy logEntrySerializationStrategy;
- private final CollectionScope scope;
+ private final ApplicationScope scope;
private final Id entityId;
private final int pageSize;
@@ -40,7 +40,7 @@ public class LogEntryIterator implements Iterator {
* @param pageSize The fetch size to get when querying the serialization strategy
*/
public LogEntryIterator( final MvccLogEntrySerializationStrategy logEntrySerializationStrategy,
- final CollectionScope scope, final Id entityId, final UUID maxVersion,
+ final ApplicationScope scope, final Id entityId, final UUID maxVersion,
final int pageSize ) {
Preconditions.checkArgument( pageSize > 0, "pageSize must be > 0" );
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MutableFieldSet.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MutableFieldSet.java
index ae921a74fa..df2b85095b 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MutableFieldSet.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MutableFieldSet.java
@@ -18,13 +18,13 @@
*/
+import java.util.HashMap;
+import java.util.Map;
+
import org.apache.usergrid.persistence.collection.FieldSet;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.model.field.Field;
-import java.util.HashMap;
-import java.util.Map;
-
public class MutableFieldSet implements FieldSet {
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImpl.java
index 5b324db4f3..6fa539a964 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImpl.java
@@ -25,7 +25,6 @@
import java.util.List;
import java.util.UUID;
-import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -38,18 +37,19 @@
import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException;
import org.apache.usergrid.persistence.collection.exception.DataCorruptionException;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccEntityImpl;
+import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
import org.apache.usergrid.persistence.collection.serialization.impl.util.LegacyScopeUtils;
-import org.apache.usergrid.persistence.core.scope.ApplicationScope;
-import org.apache.usergrid.persistence.model.util.EntityUtils;
import org.apache.usergrid.persistence.core.astyanax.CassandraFig;
import org.apache.usergrid.persistence.core.astyanax.ColumnNameIterator;
import org.apache.usergrid.persistence.core.astyanax.ColumnParser;
import org.apache.usergrid.persistence.core.astyanax.MultiTennantColumnFamily;
import org.apache.usergrid.persistence.core.astyanax.MultiTennantColumnFamilyDefinition;
import org.apache.usergrid.persistence.core.astyanax.ScopedRowKey;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.Id;
+import org.apache.usergrid.persistence.model.util.EntityUtils;
import org.apache.usergrid.persistence.model.util.UUIDGenerator;
import com.google.common.base.Optional;
@@ -62,14 +62,11 @@
import com.netflix.astyanax.model.Column;
import com.netflix.astyanax.model.ColumnList;
import com.netflix.astyanax.model.Row;
-import com.netflix.astyanax.model.Rows;
import com.netflix.astyanax.query.RowQuery;
import com.netflix.astyanax.serializers.AbstractSerializer;
import rx.Observable;
import rx.Scheduler;
-import rx.functions.Func1;
-import rx.functions.Func2;
import rx.schedulers.Schedulers;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV3Impl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV3Impl.java
index fe0d31d761..9867621a9b 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV3Impl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV3Impl.java
@@ -15,7 +15,6 @@
import org.apache.cassandra.db.marshal.BooleanType;
import org.apache.cassandra.db.marshal.BytesType;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.EntitySet;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException;
@@ -25,8 +24,6 @@
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
import org.apache.usergrid.persistence.collection.serialization.impl.util.LegacyScopeUtils;
-import org.apache.usergrid.persistence.core.scope.ApplicationScope;
-import org.apache.usergrid.persistence.model.util.EntityUtils;
import org.apache.usergrid.persistence.core.astyanax.CassandraFig;
import org.apache.usergrid.persistence.core.astyanax.ColumnParser;
import org.apache.usergrid.persistence.core.astyanax.FieldBuffer;
@@ -37,9 +34,11 @@
import org.apache.usergrid.persistence.core.astyanax.MultiTennantColumnFamily;
import org.apache.usergrid.persistence.core.astyanax.MultiTennantColumnFamilyDefinition;
import org.apache.usergrid.persistence.core.astyanax.ScopedRowKey;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.EntityMap;
import org.apache.usergrid.persistence.model.entity.Id;
+import org.apache.usergrid.persistence.model.util.EntityUtils;
import org.apache.usergrid.persistence.model.util.UUIDGenerator;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -54,14 +53,11 @@
import com.netflix.astyanax.model.Column;
import com.netflix.astyanax.model.ColumnList;
import com.netflix.astyanax.model.Row;
-import com.netflix.astyanax.model.Rows;
import com.netflix.astyanax.serializers.AbstractSerializer;
import com.netflix.astyanax.serializers.BooleanSerializer;
import rx.Observable;
import rx.Scheduler;
-import rx.functions.Func1;
-import rx.functions.Func2;
import rx.schedulers.Schedulers;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java
index b9156258cb..866b87c432 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java
@@ -39,9 +39,9 @@
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.VersionSet;
import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException;
-import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccLogEntryImpl;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
import org.apache.usergrid.persistence.collection.serialization.impl.util.LegacyScopeUtils;
import org.apache.usergrid.persistence.core.astyanax.IdRowCompositeSerializer;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/SerializationModule.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/SerializationModule.java
index 1ebc0ca76b..f248af60dd 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/SerializationModule.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/SerializationModule.java
@@ -18,8 +18,8 @@
package org.apache.usergrid.persistence.collection.serialization.impl;
-import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.impl.migration.CollectionMigration;
import org.apache.usergrid.persistence.collection.serialization.impl.migration.CollectionMigrationPlugin;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueFieldEntry.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueFieldEntry.java
index 39597c53a5..028a98050e 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueFieldEntry.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueFieldEntry.java
@@ -26,7 +26,6 @@
import java.util.UUID;
-import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.field.Field;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueFieldEntrySerializer.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueFieldEntrySerializer.java
index 51bfd7b1b0..ad9a157ba3 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueFieldEntrySerializer.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueFieldEntrySerializer.java
@@ -38,12 +38,9 @@
import org.apache.usergrid.persistence.model.field.StringField;
import org.apache.usergrid.persistence.model.field.UUIDField;
-import com.netflix.astyanax.model.CompositeBuilder;
import com.netflix.astyanax.model.CompositeParser;
-import com.netflix.astyanax.model.Composites;
import com.netflix.astyanax.model.DynamicComposite;
import com.netflix.astyanax.serializers.AbstractSerializer;
-import com.netflix.astyanax.serializers.DynamicCompositeSerializer;
import com.netflix.astyanax.serializers.StringSerializer;
import com.netflix.astyanax.serializers.UUIDSerializer;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueImpl.java
index 862d8b122e..e24d2a1666 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueImpl.java
@@ -20,7 +20,6 @@
import java.util.UUID;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.serialization.UniqueValue;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.field.Field;
@@ -63,7 +62,7 @@ public Id getEntityId() {
return entityId;
}
-
+
@Override
public boolean equals( final Object o ) {
if ( this == o ) {
@@ -110,5 +109,5 @@ public String toString() {
", entityId =" + entityId +
'}';
}
-
+
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueSerializationStrategyImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueSerializationStrategyImpl.java
index 86ad706c51..bd35c7a41a 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueSerializationStrategyImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueSerializationStrategyImpl.java
@@ -25,10 +25,6 @@
import java.util.List;
import java.util.UUID;
-import com.netflix.astyanax.model.ConsistencyLevel;
-
-import org.apache.usergrid.persistence.collection.serialization.impl.util.LegacyScopeUtils;
-import org.apache.usergrid.persistence.core.astyanax.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -38,6 +34,8 @@
import org.apache.usergrid.persistence.collection.serialization.UniqueValue;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSet;
+import org.apache.usergrid.persistence.collection.serialization.impl.util.LegacyScopeUtils;
+import org.apache.usergrid.persistence.core.astyanax.CassandraFig;
import org.apache.usergrid.persistence.core.astyanax.ColumnNameIterator;
import org.apache.usergrid.persistence.core.astyanax.ColumnParser;
import org.apache.usergrid.persistence.core.astyanax.ColumnTypes;
@@ -57,6 +55,7 @@
import com.netflix.astyanax.MutationBatch;
import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
import com.netflix.astyanax.model.Column;
+import com.netflix.astyanax.model.ConsistencyLevel;
import com.netflix.astyanax.model.Row;
import com.netflix.astyanax.query.RowQuery;
import com.netflix.astyanax.util.RangeBuilder;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/migration/CollectionMigrationPlugin.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/migration/CollectionMigrationPlugin.java
index 3f83c66d85..c757d280a9 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/migration/CollectionMigrationPlugin.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/migration/CollectionMigrationPlugin.java
@@ -26,10 +26,10 @@
import java.util.Set;
-import org.apache.usergrid.persistence.core.migration.data.MigrationInfoSerialization;
import org.apache.usergrid.persistence.core.migration.data.AbstractMigrationPlugin;
import org.apache.usergrid.persistence.core.migration.data.DataMigration;
import org.apache.usergrid.persistence.core.migration.data.MigrationDataProvider;
+import org.apache.usergrid.persistence.core.migration.data.MigrationInfoSerialization;
import org.apache.usergrid.persistence.core.migration.data.PluginPhase;
import com.google.inject.Inject;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/migration/EntityIdScope.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/migration/EntityIdScope.java
index 0e70e759c6..b83b806f50 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/migration/EntityIdScope.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/migration/EntityIdScope.java
@@ -19,9 +19,7 @@
*/
package org.apache.usergrid.persistence.collection.serialization.impl.migration;
-import java.util.Collection;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Id;
@@ -30,11 +28,11 @@
*/
public class EntityIdScope{
private final Id id;
- private final CollectionScope collectionScope;
+ private final ApplicationScope applicationScope;
- public EntityIdScope(CollectionScope collectionScope, Id id){
+ public EntityIdScope(ApplicationScope applicationScope, Id id){
this.id = id;
- this.collectionScope = collectionScope;
+ this.applicationScope = applicationScope;
}
@@ -43,7 +41,7 @@ public Id getId() {
}
- public CollectionScope getCollectionScope() {
- return collectionScope;
+ public ApplicationScope getApplicationScope() {
+ return applicationScope;
}
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/migration/MvccEntityDataMigrationImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/migration/MvccEntityDataMigrationImpl.java
index 6982857a1b..4551d5f662 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/migration/MvccEntityDataMigrationImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/migration/MvccEntityDataMigrationImpl.java
@@ -29,7 +29,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.impl.EntityVersionCleanupTask;
import org.apache.usergrid.persistence.collection.impl.EntityVersionTaskFactory;
@@ -38,16 +37,17 @@
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.impl.MvccEntitySerializationStrategyV3Impl;
import org.apache.usergrid.persistence.collection.serialization.impl.UniqueValueImpl;
-import org.apache.usergrid.persistence.model.util.EntityUtils;
-import org.apache.usergrid.persistence.core.migration.data.DataMigrationException;
import org.apache.usergrid.persistence.core.migration.data.DataMigration;
+import org.apache.usergrid.persistence.core.migration.data.DataMigrationException;
import org.apache.usergrid.persistence.core.migration.data.MigrationDataProvider;
import org.apache.usergrid.persistence.core.migration.data.MigrationRelationship;
import org.apache.usergrid.persistence.core.migration.data.ProgressObserver;
import org.apache.usergrid.persistence.core.migration.data.VersionedMigrationSet;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.field.Field;
+import org.apache.usergrid.persistence.model.util.EntityUtils;
import org.apache.usergrid.persistence.model.util.UUIDGenerator;
import com.google.inject.Inject;
@@ -58,8 +58,6 @@
import rx.Observable;
import rx.Subscriber;
-import rx.functions.Action1;
-import rx.functions.Func1;
import rx.schedulers.Schedulers;
@@ -127,7 +125,7 @@ public int migrate( final int currentVersion, final MigrationDataProvider Observable.just( entityToSaveList ).flatMap( entityIdScope -> {
//load the entity
- final CollectionScope currentScope = entityIdScope.getCollectionScope();
+ final ApplicationScope currentScope = entityIdScope.getApplicationScope();
//for each element in our
@@ -247,11 +245,11 @@ protected void executeBatch( final int targetVersion, final MutationBatch batch,
private static final class EntityToSaveMessage {
- private final CollectionScope scope;
+ private final ApplicationScope scope;
private final MvccEntity entity;
- private EntityToSaveMessage( final CollectionScope scope, final MvccEntity entity ) {
+ private EntityToSaveMessage( final ApplicationScope scope, final MvccEntity entity ) {
this.scope = scope;
this.entity = entity;
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/util/LegacyScopeUtils.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/util/LegacyScopeUtils.java
index d538685c6b..5dc0239a03 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/util/LegacyScopeUtils.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/util/LegacyScopeUtils.java
@@ -20,12 +20,6 @@
package org.apache.usergrid.persistence.collection.serialization.impl.util;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
-import org.apache.usergrid.persistence.core.scope.ApplicationScope;
-import org.apache.usergrid.persistence.model.entity.Id;
-
-
/**
* This class is a helper to keep our legacy CollectionScope for older serialization apis. This will generate
* the scope in the same way previous scopes were generated in the core module. This only exists to migrate
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/ApplicationContextImplTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/ApplicationContextImplTest.java
new file mode 100644
index 0000000000..bed1a9ff76
--- /dev/null
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/ApplicationContextImplTest.java
@@ -0,0 +1,33 @@
+package org.apache.usergrid.persistence.collection;
+
+
+import org.junit.Test;
+
+import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
+import org.apache.usergrid.persistence.model.entity.SimpleId;
+
+import static junit.framework.TestCase.assertEquals;
+
+
+/** @author tnine */
+public class ApplicationContextImplTest {
+
+
+ @Test( expected = NullPointerException.class )
+ public void orgIdrequired() {
+ new ApplicationScopeImpl( null);
+ }
+
+
+
+ @Test
+ public void correctValues() {
+ final SimpleId ownerId = new SimpleId( "test" );
+
+ ApplicationScopeImpl context = new ApplicationScopeImpl(ownerId );
+
+ assertEquals( ownerId, context.getApplication() );
+ }
+
+
+}
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionContextImplTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionContextImplTest.java
deleted file mode 100644
index cab9a6c4af..0000000000
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionContextImplTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.apache.usergrid.persistence.collection;
-
-
-import org.junit.Test;
-
-import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
-import org.apache.usergrid.persistence.model.entity.SimpleId;
-
-import static junit.framework.TestCase.assertEquals;
-
-
-/** @author tnine */
-public class CollectionContextImplTest {
-
-
- @Test( expected = NullPointerException.class )
- public void orgIdrequired() {
- new CollectionScopeImpl( null, new SimpleId( "test" ), "test" );
- }
-
-
- @Test( expected = NullPointerException.class )
- public void ownerIdRequired() {
- new CollectionScopeImpl( new SimpleId( "organization" ), null, "test" );
- }
-
-
- @Test( expected = NullPointerException.class )
- public void collectionRequired() {
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), null );
- }
-
-
- @Test( expected = IllegalArgumentException.class )
- public void collectionRequiredLength() {
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "" );
- }
-
-
- @Test
- public void correctValues() {
- final SimpleId ownerId = new SimpleId( "test" );
-
- final String collection = "tests";
-
- CollectionScopeImpl context = new CollectionScopeImpl( new SimpleId( "organization" ), ownerId, collection );
-
- assertEquals( ownerId, context.getOwner() );
- assertEquals( collection, context.getName() );
- }
-
-
-}
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactoryTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactoryTest.java
index fe984a2e48..fd17ab17e5 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactoryTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactoryTest.java
@@ -1,19 +1,18 @@
package org.apache.usergrid.persistence.collection;
-import org.apache.usergrid.persistence.core.test.UseModules;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
-import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
+import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
+import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
import org.apache.usergrid.persistence.core.test.ITRunner;
+import org.apache.usergrid.persistence.core.test.UseModules;
import org.apache.usergrid.persistence.model.entity.SimpleId;
import com.google.inject.Inject;
-import com.google.inject.ProvisionException;
import static org.junit.Assert.assertNotNull;
@@ -38,7 +37,7 @@ public class EntityCollectionManagerFactoryTest {
@Test
public void validInput() {
- CollectionScopeImpl context = new CollectionScopeImpl(new SimpleId( "organization" ), new SimpleId( "test" ), "test" );
+ ApplicationScopeImpl context = new ApplicationScopeImpl(new SimpleId( "organization" ));
EntityCollectionManager entityCollectionManager =
entityCollectionManagerFactory.createCollectionManager( context );
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerIT.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerIT.java
index f6d9782227..945cebdf80 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerIT.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerIT.java
@@ -23,22 +23,23 @@
import java.util.List;
import java.util.UUID;
-import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
-import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
-import org.apache.usergrid.persistence.collection.serialization.UniqueValueSet;
-import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.apache.usergrid.persistence.collection.exception.WriteUniqueVerifyException;
import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
-import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
+import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
+import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.UniqueValueSet;
import org.apache.usergrid.persistence.collection.util.EntityHelper;
import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
+import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.guicyfig.SetConfigTestBypass;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
import org.apache.usergrid.persistence.core.test.ITRunner;
import org.apache.usergrid.persistence.core.test.UseModules;
import org.apache.usergrid.persistence.core.util.Health;
@@ -91,8 +92,9 @@ public class EntityCollectionManagerIT {
@Test
public void write() {
- CollectionScope context =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" );
+
+ ApplicationScope context =
+ new ApplicationScopeImpl( new SimpleId( "organization" ) );
Entity newEntity = new Entity( new SimpleId( "test" ) );
@@ -112,8 +114,9 @@ public void write() {
@Test
public void writeWithUniqueValues() {
- CollectionScope context =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" );
+
+ ApplicationScope context =
+ new ApplicationScopeImpl( new SimpleId( "organization" ) );
EntityCollectionManager manager = factory.createCollectionManager( context );
@@ -144,8 +147,9 @@ public void writeWithUniqueValues() {
@Test
public void writeAndLoad() {
- CollectionScope context =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" );
+
+ ApplicationScope context =
+ new ApplicationScopeImpl( new SimpleId( "organization" ) );
Entity newEntity = new Entity( new SimpleId( "test" ) );
@@ -171,8 +175,8 @@ public void writeAndLoad() {
@Test
public void writeLoadDelete() {
- CollectionScope context =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" );
+
+ ApplicationScope context = new ApplicationScopeImpl( new SimpleId( "organization" ) );
Entity newEntity = new Entity( new SimpleId( "test" ) );
EntityCollectionManager manager = factory.createCollectionManager( context );
@@ -206,8 +210,7 @@ public void writeLoadDelete() {
@Test
public void writeLoadUpdateLoad() {
- CollectionScope context =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" );
+ ApplicationScope context = new ApplicationScopeImpl( new SimpleId( "organization" ) );
Entity newEntity = new Entity( new SimpleId( "test" ) );
newEntity.setField( new IntegerField( "counter", 1 ) );
@@ -253,8 +256,8 @@ public void writeLoadUpdateLoad() {
public void writeAndLoadScopeClosure() {
- CollectionScope collectionScope1 =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test1" ), "test1" );
+ ApplicationScope collectionScope1 = new ApplicationScopeImpl(new SimpleId("organization"));
+
Entity newEntity = new Entity( new SimpleId( "test" ) );
@@ -276,10 +279,10 @@ public void writeAndLoadScopeClosure() {
assertEquals( "Same value", createReturned, loadReturned );
+ ApplicationScope collectionScope2 = new ApplicationScopeImpl(new SimpleId("organization"));
+
//now make sure we can't load it from another scope, using the same org
- CollectionScope collectionScope2 =
- new CollectionScopeImpl( collectionScope1.getApplication(), new SimpleId( "test2" ),
- collectionScope1.getName() );
+
EntityCollectionManager manager2 = factory.createCollectionManager( collectionScope2 );
@@ -287,12 +290,7 @@ public void writeAndLoadScopeClosure() {
assertNull( "CollectionScope works correctly", loaded );
- //now try to load it from another org, with the same scope
- CollectionScope collectionScope3 =
- new CollectionScopeImpl( new SimpleId( "organization2" ), collectionScope1.getOwner(),
- collectionScope1.getName() );
- assertNotNull( collectionScope3 );
}
@@ -300,8 +298,7 @@ public void writeAndLoadScopeClosure() {
public void writeAndGetField() {
- CollectionScope collectionScope1 =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test1" ), "test1" );
+ ApplicationScope collectionScope1 = new ApplicationScopeImpl(new SimpleId("organization"));
Entity newEntity = new Entity( new SimpleId( "test" ) );
Field field = new StringField( "testField", "unique", true );
@@ -317,12 +314,12 @@ public void writeAndGetField() {
assertNotNull( "Id was assigned", createReturned.getId() );
assertNotNull( "Version was assigned", createReturned.getVersion() );
- Id id = manager.getIdField( field ).toBlocking().lastOrDefault( null );
+ Id id = manager.getIdField( newEntity.getId().getType(), field ).toBlocking().lastOrDefault( null );
assertNotNull( id );
assertEquals( newEntity.getId(), id );
Field fieldNull = new StringField( "testFieldNotThere", "uniquely", true );
- id = manager.getIdField( fieldNull ).toBlocking().lastOrDefault( null );
+ id = manager.getIdField( newEntity.getId().getType(), fieldNull ).toBlocking().lastOrDefault( null );
assertNull( id );
}
@@ -336,8 +333,8 @@ public void updateVersioning() {
Entity origEntity = new Entity( new SimpleId( "testUpdate" ) );
origEntity.setField( new StringField( "testField", "value" ) );
- CollectionScope context =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "testUpdate" ), "testUpdate" );
+ ApplicationScope context = new ApplicationScopeImpl(new SimpleId("organization"));
+
EntityCollectionManager manager = factory.createCollectionManager( context );
Entity returned = manager.write( origEntity ).toBlocking().lastOrDefault( null );
@@ -366,8 +363,7 @@ public void updateVersioning() {
@Test
public void writeMultiget() {
- final CollectionScope context =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" );
+ final ApplicationScope context = new ApplicationScopeImpl( new SimpleId( "organization" ) );
final EntityCollectionManager manager = factory.createCollectionManager( context );
final int multigetSize = serializationFig.getMaxLoadSize();
@@ -411,8 +407,7 @@ public void writeMultiget() {
@Test
public void writeMultigetRepair() {
- final CollectionScope context =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" );
+ final ApplicationScope context = new ApplicationScopeImpl( new SimpleId( "organization" ) );
final EntityCollectionManager manager = factory.createCollectionManager( context );
final int multigetSize = serializationFig.getMaxLoadSize();
@@ -459,8 +454,7 @@ public void writeMultigetRepair() {
@Test( expected = IllegalArgumentException.class )
public void readTooLarge() {
- final CollectionScope context =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" );
+ final ApplicationScope context = new ApplicationScopeImpl( new SimpleId( "organization" ) );
final EntityCollectionManager manager = factory.createCollectionManager( context );
final int multigetSize = serializationFig.getMaxLoadSize() + 1;
@@ -482,8 +476,7 @@ public void readTooLarge() {
@Test
public void testGetVersion() {
- CollectionScope context =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" );
+ ApplicationScope context = new ApplicationScopeImpl( new SimpleId( "organization" ) );
final EntityCollectionManager manager = factory.createCollectionManager( context );
@@ -524,8 +517,7 @@ public void testGetVersion() {
@Test
public void testVersionLogWrite() {
- CollectionScope context =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" );
+ ApplicationScope context = new ApplicationScopeImpl( new SimpleId( "organization" ) );
final EntityCollectionManager manager = factory.createCollectionManager( context );
@@ -570,8 +562,7 @@ public void testVersionLogWrite() {
@Test
public void testVersionLogUpdate() {
- CollectionScope context =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" );
+ ApplicationScope context = new ApplicationScopeImpl( new SimpleId( "organization" ) );
final EntityCollectionManager manager = factory.createCollectionManager( context );
@@ -619,8 +610,7 @@ public void testVersionLogUpdate() {
@Test
public void healthTest() {
- CollectionScope context =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" );
+ ApplicationScope context = new ApplicationScopeImpl( new SimpleId( "organization" ) );
final EntityCollectionManager manager = factory.createCollectionManager( context );
@@ -644,8 +634,7 @@ public void largeEntityWriteRead() {
final Entity entity = EntityHelper.generateEntity( setSize );
//now we have one massive, entity, save it and retrieve it.
- CollectionScope context =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" );
+ ApplicationScope context = new ApplicationScopeImpl( new SimpleId( "organization" ) );
final EntityCollectionManager manager = factory.createCollectionManager( context );
@@ -669,8 +658,7 @@ public void largeEntityWriteRead() {
public void invalidNameRepair() throws ConnectionException {
//write an entity with a unique field
- CollectionScope context =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" );
+ ApplicationScope context = new ApplicationScopeImpl( new SimpleId( "organization" ) );
Entity newEntity = new Entity( new SimpleId( "test" ) );
@@ -692,7 +680,7 @@ public void invalidNameRepair() throws ConnectionException {
assertNotNull( "Version was assigned", createReturned.getVersion() );
FieldSet
- fieldResults = manager.getEntitiesFromFields( Arrays.asList( expectedInteger ) ).toBlocking().last();
+ fieldResults = manager.getEntitiesFromFields( newEntity.getId().getType(), Arrays.asList( expectedInteger ) ).toBlocking().last();
assertEquals(1,fieldResults.size());
@@ -707,7 +695,7 @@ public void invalidNameRepair() throws ConnectionException {
//try to load via the unique field, should have triggered repair
final FieldSet
- results = manager.getEntitiesFromFields( Arrays.asList( expectedInteger ) ).toBlocking().last();
+ results = manager.getEntitiesFromFields( newEntity.getId().getType(), Arrays.asList( expectedInteger ) ).toBlocking().last();
//verify no entity returned
@@ -715,7 +703,7 @@ public void invalidNameRepair() throws ConnectionException {
//user the unique serialization to verify it's been deleted from cassandra
- UniqueValueSet uniqueValues = uniqueValueSerializationStrategy.load( context, createReturned.getFields() );
+ UniqueValueSet uniqueValues = uniqueValueSerializationStrategy.load( context, newEntity.getId().getType(), createReturned.getFields() );
assertFalse( uniqueValues.iterator().hasNext() );
}
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerStressTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerStressTest.java
index 11ad389660..20cf24e941 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerStressTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerStressTest.java
@@ -21,7 +21,6 @@
import java.util.HashSet;
import java.util.Set;
-import org.apache.usergrid.persistence.core.test.UseModules;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
@@ -31,10 +30,12 @@
import org.apache.commons.lang3.time.StopWatch;
-import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
-import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
+import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
import org.apache.usergrid.persistence.core.test.ITRunner;
+import org.apache.usergrid.persistence.core.test.UseModules;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.entity.SimpleId;
@@ -51,7 +52,7 @@
@UseModules(TestCollectionModule.class)
@Ignore("Stress test should not be run in embedded mode")
public class EntityCollectionManagerStressTest {
- private static final Logger log = LoggerFactory.getLogger(
+ private static final Logger log = LoggerFactory.getLogger(
EntityCollectionManagerStressTest.class );
@Inject
@@ -64,9 +65,8 @@ public class EntityCollectionManagerStressTest {
@Test
public void writeThousands() {
- CollectionScope context = new CollectionScopeImpl(
- new SimpleId("organization"), new SimpleId("test"), "test");
-
+ ApplicationScope context = new ApplicationScopeImpl(new SimpleId("organization"));
+
EntityCollectionManager manager = factory.createCollectionManager(context);
int limit = 10000;
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCleanupTaskTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCleanupTaskTest.java
index 1e9dae77b8..8c26c5bbe6 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCleanupTaskTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCleanupTaskTest.java
@@ -30,7 +30,6 @@
import org.junit.AfterClass;
import org.junit.Test;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.event.EntityVersionDeleted;
import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
@@ -40,6 +39,8 @@
import org.apache.usergrid.persistence.collection.util.LogEntryMock;
import org.apache.usergrid.persistence.collection.util.UniqueValueEntryMock;
import org.apache.usergrid.persistence.collection.util.VersionGenerator;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
import org.apache.usergrid.persistence.core.task.NamedTaskExecutorImpl;
import org.apache.usergrid.persistence.core.task.TaskExecutor;
import org.apache.usergrid.persistence.model.entity.Id;
@@ -50,7 +51,6 @@
import com.netflix.astyanax.MutationBatch;
import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
-import static org.junit.Assert.fail;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.same;
import static org.mockito.Mockito.mock;
@@ -99,7 +99,7 @@ public void noListenerOneVersion() throws Exception {
final Id applicationId = new SimpleId( "application" );
- final CollectionScope appScope = new CollectionScopeImpl( applicationId, applicationId, "users" );
+ final ApplicationScope appScope = new ApplicationScopeImpl( applicationId );
final Id entityId = new SimpleId( "user" );
@@ -180,7 +180,7 @@ public void noListenerNoVersions() throws Exception {
final Id applicationId = new SimpleId( "application" );
- final CollectionScope appScope = new CollectionScopeImpl( applicationId, applicationId, "users" );
+ final ApplicationScope appScope = new ApplicationScopeImpl( applicationId );
final Id entityId = new SimpleId( "user" );
@@ -216,10 +216,10 @@ public void noListenerNoVersions() throws Exception {
//verify delete was never invoked
- verify( uvss, never() ).delete( any( CollectionScope.class ), any( UniqueValue.class ) );
+ verify( uvss, never() ).delete( any( ApplicationScope.class ), any( UniqueValue.class ) );
//verify the delete was never invoked
- verify( less, never() ).delete( any( CollectionScope.class ), any( Id.class ), any( UUID.class ) );
+ verify( less, never() ).delete( any( ApplicationScope.class ), any( Id.class ), any( UUID.class ) );
}
@@ -258,7 +258,7 @@ public void singleListenerSingleVersion() throws Exception {
final Id applicationId = new SimpleId( "application" );
- final CollectionScope appScope = new CollectionScopeImpl( applicationId, applicationId, "users" );
+ final ApplicationScope appScope = new ApplicationScopeImpl( applicationId );
final Id entityId = new SimpleId( "user" );
@@ -359,7 +359,7 @@ public void multipleListenerMultipleVersions() throws Exception {
final Id applicationId = new SimpleId( "application" );
- final CollectionScope appScope = new CollectionScopeImpl( applicationId, applicationId, "users" );
+ final ApplicationScope appScope = new ApplicationScopeImpl( applicationId );
final Id entityId = new SimpleId( "user" );
@@ -485,7 +485,7 @@ public void multipleListenerMultipleVersionsNoThreadsToRun()
final Id applicationId = new SimpleId( "application" );
- final CollectionScope appScope = new CollectionScopeImpl( applicationId, applicationId, "users" );
+ final ApplicationScope appScope = new ApplicationScopeImpl( applicationId );
final Id entityId = new SimpleId( "user" );
@@ -613,7 +613,7 @@ public void singleListenerSingleVersionRejected()
final Id applicationId = new SimpleId( "application" );
- final CollectionScope appScope = new CollectionScopeImpl( applicationId, applicationId, "users" );
+ final ApplicationScope appScope = new ApplicationScopeImpl( applicationId );
final Id entityId = new SimpleId( "user" );
@@ -681,7 +681,7 @@ private EntityVersionDeletedTest( final CountDownLatch invocationLatch ) {
@Override
- public void versionDeleted( final CollectionScope scope, final Id entityId,
+ public void versionDeleted( final ApplicationScope scope, final Id entityId,
final List entityVersion ) {
invocationLatch.countDown();
}
@@ -699,7 +699,7 @@ private SlowListener( final CountDownLatch invocationLatch, final Semaphore bloc
@Override
- public void versionDeleted( final CollectionScope scope, final Id entityId,
+ public void versionDeleted( final ApplicationScope scope, final Id entityId,
final List entityVersion ) {
//wait for unblock to happen before counting down invocation latches
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCreatedTaskTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCreatedTaskTest.java
index ade58f6232..e993fad231 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCreatedTaskTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/impl/EntityVersionCreatedTaskTest.java
@@ -17,23 +17,26 @@
*/
package org.apache.usergrid.persistence.collection.impl;
-import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutionException;
-import org.apache.usergrid.persistence.collection.CollectionScope;
+
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Test;
+
import org.apache.usergrid.persistence.collection.event.EntityVersionCreated;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
import org.apache.usergrid.persistence.core.task.NamedTaskExecutorImpl;
import org.apache.usergrid.persistence.core.task.TaskExecutor;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.entity.SimpleId;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Test;
+import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
@@ -65,8 +68,7 @@ public void noListener()
final Id applicationId = new SimpleId( "application" );
- final CollectionScope appScope = new CollectionScopeImpl(
- applicationId, applicationId, "users" );
+ final ApplicationScope appScope = new ApplicationScopeImpl(applicationId);
final Id entityId = new SimpleId( "user" );
final Entity entity = new Entity( entityId );
@@ -111,8 +113,7 @@ public void oneListener()
final Id applicationId = new SimpleId( "application" );
- final CollectionScope appScope = new CollectionScopeImpl(
- applicationId, applicationId, "users" );
+ final ApplicationScope appScope = new ApplicationScopeImpl(applicationId);
final Id entityId = new SimpleId( "user" );
final Entity entity = new Entity( entityId );
@@ -149,8 +150,7 @@ public void multipleListener()
final Id applicationId = new SimpleId( "application" );
- final CollectionScope appScope = new CollectionScopeImpl(
- applicationId, applicationId, "users" );
+ final ApplicationScope appScope = new ApplicationScopeImpl(applicationId);
final Id entityId = new SimpleId( "user" );
final Entity entity = new Entity( entityId );
@@ -207,8 +207,7 @@ public void oneListenerRejected()
final Id applicationId = new SimpleId( "application" );
- final CollectionScope appScope = new CollectionScopeImpl(
- applicationId, applicationId, "users" );
+ final ApplicationScope appScope = new ApplicationScopeImpl(applicationId);
final Id entityId = new SimpleId( "user" );
final Entity entity = new Entity( entityId );
@@ -235,7 +234,7 @@ private EntityVersionCreatedTest( final CountDownLatch invocationLatch) {
}
@Override
- public void versionCreated( final CollectionScope scope, final Entity entity ) {
+ public void versionCreated( final ApplicationScope scope, final Entity entity ) {
invocationLatch.countDown();
}
}
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/AbstractEntityStageTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/AbstractEntityStageTest.java
index 25467906b5..201aa8cfbd 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/AbstractEntityStageTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/AbstractEntityStageTest.java
@@ -24,12 +24,12 @@
import org.junit.experimental.theories.Theory;
import org.junit.runner.RunWith;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.model.util.EntityUtils;
import org.apache.usergrid.persistence.collection.util.InvalidEntityGenerator;
import org.apache.usergrid.persistence.collection.util.InvalidIdGenerator;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.Id;
+import org.apache.usergrid.persistence.model.util.EntityUtils;
import static org.mockito.Mockito.mock;
@@ -62,7 +62,7 @@ public void testWrongEntityType(@InvalidEntityGenerator.IllegalFields final Enti
private void testStage(final Entity entity, final Id id){
- final CollectionScope context = mock( CollectionScope.class );
+ final ApplicationScope context = mock( ApplicationScope.class );
if(entity != null){
EntityUtils.setId( entity, id );
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/AbstractIdStageTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/AbstractIdStageTest.java
index ea071ace4a..a1a3b894e0 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/AbstractIdStageTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/AbstractIdStageTest.java
@@ -23,8 +23,8 @@
import org.junit.experimental.theories.Theory;
import org.junit.runner.RunWith;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.util.InvalidIdGenerator;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Id;
import static org.mockito.Mockito.mock;
@@ -64,7 +64,7 @@ public void testInvalidValue(@InvalidIdGenerator.IllegalFields final Id id ) thr
*/
public void testStage( final Id id ) throws Exception {
- final CollectionScope context = mock( CollectionScope.class );
+ final ApplicationScope context = mock( ApplicationScope.class );
//run the stage
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/AbstractMvccEntityStageTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/AbstractMvccEntityStageTest.java
index dff0a83ae6..261923ad82 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/AbstractMvccEntityStageTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/AbstractMvccEntityStageTest.java
@@ -25,14 +25,14 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.MvccEntity;
-import org.apache.usergrid.persistence.model.util.EntityUtils;
import org.apache.usergrid.persistence.collection.util.InvalidEntityGenerator;
import org.apache.usergrid.persistence.collection.util.InvalidIdGenerator;
import org.apache.usergrid.persistence.collection.util.InvalidMvccEntityGenerator;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.Id;
+import org.apache.usergrid.persistence.model.util.EntityUtils;
import com.google.common.base.Optional;
@@ -82,7 +82,7 @@ public void testStage(
EntityUtils.setId( entity, id );
}
- final CollectionScope context = mock( CollectionScope.class );
+ final ApplicationScope context = mock( ApplicationScope.class );
if ( mvccEntity != null ) {
when( mvccEntity.getEntity() ).thenReturn( Optional.fromNullable( entity ) );
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/TestEntityGenerator.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/TestEntityGenerator.java
index 7a415f046a..8f792ffed5 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/TestEntityGenerator.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/TestEntityGenerator.java
@@ -21,10 +21,10 @@
import java.util.UUID;
import org.apache.usergrid.persistence.collection.MvccEntity;
-import org.apache.usergrid.persistence.model.util.EntityUtils;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.entity.SimpleId;
+import org.apache.usergrid.persistence.model.util.EntityUtils;
import org.apache.usergrid.persistence.model.util.UUIDGenerator;
import com.google.common.base.Optional;
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkCommitTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkCommitTest.java
index 9a806d0a7f..1e8fcd1c43 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkCommitTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkCommitTest.java
@@ -4,18 +4,18 @@
import org.junit.Test;
import org.mockito.ArgumentCaptor;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
-import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
import org.apache.usergrid.persistence.collection.mvcc.stage.AbstractMvccEntityStageTest;
import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionIoEvent;
import org.apache.usergrid.persistence.collection.mvcc.stage.TestEntityGenerator;
-import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
import org.apache.usergrid.persistence.collection.mvcc.stage.write.WriteCommit;
+import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
+import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Entity;
import com.netflix.astyanax.Keyspace;
@@ -37,7 +37,7 @@ public class MarkCommitTest extends AbstractMvccEntityStageTest {
public void testStartStage() throws Exception {
- final CollectionScope context = mock( CollectionScope.class );
+ final ApplicationScope context = mock( ApplicationScope.class );
//mock returning a mock mutation when we do a log entry write
@@ -116,8 +116,8 @@ protected void validateStage( final CollectionIoEvent event ) {
when(keyspace.prepareMutationBatch()).thenReturn( entityMutation );
- when( logStrategy.write( any( CollectionScope.class ), any( MvccLogEntry.class ) ) ).thenReturn( logMutation );
- when( mvccEntityStrategy.write( any( CollectionScope.class ), any( MvccEntity.class ) ) )
+ when( logStrategy.write( any( ApplicationScope.class ), any( MvccLogEntry.class ) ) ).thenReturn( logMutation );
+ when( mvccEntityStrategy.write( any( ApplicationScope.class ), any( MvccEntity.class ) ) )
.thenReturn( entityMutation );
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkStartTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkStartTest.java
index d308fec4b4..8410a3044f 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkStartTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkStartTest.java
@@ -6,15 +6,15 @@
import org.junit.Test;
import org.mockito.ArgumentCaptor;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
import org.apache.usergrid.persistence.collection.mvcc.stage.AbstractIdStageTest;
import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionIoEvent;
import org.apache.usergrid.persistence.collection.mvcc.stage.TestEntityGenerator;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.service.UUIDService;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.util.UUIDGenerator;
@@ -34,7 +34,7 @@ public class MarkStartTest extends AbstractIdStageTest {
@Test
public void testWrite() {
- final CollectionScope context = mock( CollectionScope.class );
+ final ApplicationScope context = mock( ApplicationScope.class );
//mock returning a mock mutation when we do a log entry write
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/UniqueValueSerializationStrategyImplTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/UniqueValueSerializationStrategyImplTest.java
index b03be04acb..e1647b39fb 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/UniqueValueSerializationStrategyImplTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/UniqueValueSerializationStrategyImplTest.java
@@ -23,24 +23,21 @@
import java.util.Iterator;
import java.util.UUID;
-import org.apache.usergrid.persistence.collection.serialization.impl.UniqueFieldEntry;
-import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
-import org.apache.usergrid.persistence.core.test.UseModules;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
-import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
import org.apache.usergrid.persistence.collection.serialization.UniqueValue;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSet;
import org.apache.usergrid.persistence.collection.serialization.impl.UniqueValueImpl;
+import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
import org.apache.usergrid.persistence.core.test.ITRunner;
+import org.apache.usergrid.persistence.core.test.UseModules;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.entity.SimpleId;
import org.apache.usergrid.persistence.model.field.Field;
@@ -73,8 +70,8 @@ public class UniqueValueSerializationStrategyImplTest {
@Test
public void testBasicOperation() throws ConnectionException, InterruptedException {
- CollectionScope scope =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" );
+ ApplicationScope scope =
+ new ApplicationScopeImpl( new SimpleId( "organization" ) );
IntegerField field = new IntegerField( "count", 5 );
Id entityId = new SimpleId( UUIDGenerator.newTimeUUID(), "entity" );
@@ -82,7 +79,7 @@ public void testBasicOperation() throws ConnectionException, InterruptedExceptio
UniqueValue stored = new UniqueValueImpl( field, entityId, version );
strategy.write( scope, stored ).execute();
- UniqueValueSet fields = strategy.load( scope, Collections.singleton( field ) );
+ UniqueValueSet fields = strategy.load( scope, entityId.getType(), Collections.singleton( field ) );
UniqueValue retrieved = fields.getValue( field.getName() );
Assert.assertNotNull( retrieved );
@@ -107,8 +104,9 @@ public void testBasicOperation() throws ConnectionException, InterruptedExceptio
@Test
public void testWriteWithTTL() throws InterruptedException, ConnectionException {
- CollectionScope scope =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" );
+
+ ApplicationScope scope =
+ new ApplicationScopeImpl( new SimpleId( "organization" ) );
// write object that lives 2 seconds
IntegerField field = new IntegerField( "count", 5 );
@@ -120,7 +118,7 @@ public void testWriteWithTTL() throws InterruptedException, ConnectionException
Thread.sleep( 1000 );
// waited one sec, should be still here
- UniqueValueSet fields = strategy.load( scope, Collections.singleton( field ) );
+ UniqueValueSet fields = strategy.load( scope, entityId.getType(), Collections.singleton( field ) );
UniqueValue retrieved = fields.getValue( field.getName() );
@@ -130,7 +128,7 @@ public void testWriteWithTTL() throws InterruptedException, ConnectionException
Thread.sleep( 1500 );
// wait another second, should be gone now
- fields = strategy.load( scope, Collections.singleton( field ) );
+ fields = strategy.load( scope, entityId.getType(), Collections.singleton( field ) );
UniqueValue nullExpected = fields.getValue( field.getName() );
Assert.assertNull( nullExpected );
@@ -159,8 +157,9 @@ public void testWriteWithTTL() throws InterruptedException, ConnectionException
@Test
public void testDelete() throws ConnectionException {
- CollectionScope scope =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" );
+
+ ApplicationScope scope =
+ new ApplicationScopeImpl( new SimpleId( "organization" ) );
IntegerField field = new IntegerField( "count", 5 );
Id entityId = new SimpleId( UUIDGenerator.newTimeUUID(), "entity" );
@@ -170,7 +169,7 @@ public void testDelete() throws ConnectionException {
strategy.delete( scope, stored ).execute();
- UniqueValueSet fields = strategy.load( scope, Collections.singleton( field ) );
+ UniqueValueSet fields = strategy.load( scope, entityId.getType(), Collections.singleton( field ) );
UniqueValue nullExpected = fields.getValue( field.getName() );
@@ -186,8 +185,9 @@ public void testDelete() throws ConnectionException {
@Test
public void testCapitalizationFixes() throws ConnectionException {
- CollectionScope scope =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" );
+
+ ApplicationScope scope =
+ new ApplicationScopeImpl( new SimpleId( "organization" ) );
StringField field = new StringField( "count", "MiXeD CaSe" );
Id entityId = new SimpleId( UUIDGenerator.newTimeUUID(), "entity" );
@@ -196,7 +196,7 @@ public void testCapitalizationFixes() throws ConnectionException {
strategy.write( scope, stored ).execute();
- UniqueValueSet fields = strategy.load( scope, Collections.singleton( field ) );
+ UniqueValueSet fields = strategy.load( scope, entityId.getType(), Collections.singleton( field ) );
UniqueValue value = fields.getValue( field.getName() );
@@ -206,7 +206,7 @@ public void testCapitalizationFixes() throws ConnectionException {
assertEquals( entityId, value.getEntityId() );
//now test will all upper and all lower, we should get it all the same
- fields = strategy.load( scope,
+ fields = strategy.load( scope, entityId.getType(),
Collections.singleton( new StringField( field.getName(), "MIXED CASE" ) ) );
value = fields.getValue( field.getName() );
@@ -216,7 +216,7 @@ public void testCapitalizationFixes() throws ConnectionException {
assertEquals( entityId, value.getEntityId() );
- fields = strategy.load( scope,
+ fields = strategy.load( scope, entityId.getType(),
Collections.singleton( new StringField( field.getName(), "mixed case" ) ) );
value = fields.getValue( field.getName() );
@@ -247,9 +247,9 @@ public void testCapitalizationFixes() throws ConnectionException {
@Test
public void twoFieldsPerVersion() throws ConnectionException, InterruptedException {
- CollectionScope scope =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" );
+ ApplicationScope scope =
+ new ApplicationScopeImpl( new SimpleId( "organization" ) );
Id entityId = new SimpleId( UUIDGenerator.newTimeUUID(), "entity" );
@@ -284,7 +284,7 @@ public void twoFieldsPerVersion() throws ConnectionException, InterruptedExcepti
batch.execute();
- UniqueValueSet fields = strategy.load( scope, Arrays.asList( version1Field1, version1Field2 ) );
+ UniqueValueSet fields = strategy.load( scope, entityId.getType(), Arrays.asList( version1Field1, version1Field2 ) );
UniqueValue retrieved = fields.getValue( version1Field1.getName() );
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteCommitTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteCommitTest.java
index c21a40347a..fa6077f3be 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteCommitTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteCommitTest.java
@@ -21,16 +21,16 @@
import org.junit.Test;
import org.mockito.ArgumentCaptor;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
-import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
import org.apache.usergrid.persistence.collection.mvcc.stage.AbstractMvccEntityStageTest;
import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionIoEvent;
import org.apache.usergrid.persistence.collection.mvcc.stage.TestEntityGenerator;
+import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Entity;
import com.netflix.astyanax.MutationBatch;
@@ -51,7 +51,7 @@ public class WriteCommitTest extends AbstractMvccEntityStageTest {
public void testStartStage() throws Exception {
- final CollectionScope context = mock( CollectionScope.class );
+ final ApplicationScope context = mock( ApplicationScope.class );
//mock returning a mock mutation when we do a log entry write
@@ -119,7 +119,7 @@ protected void validateStage( final CollectionIoEvent event ) {
final MvccLogEntrySerializationStrategy logStrategy = mock( MvccLogEntrySerializationStrategy.class );
final MutationBatch logMutation = mock( MutationBatch.class );
- when( logStrategy.write( any( CollectionScope.class ), any( MvccLogEntry.class ) ) ).thenReturn( logMutation );
+ when( logStrategy.write( any( ApplicationScope.class ), any( MvccLogEntry.class ) ) ).thenReturn( logMutation );
final MvccEntitySerializationStrategy mvccEntityStrategy = mock( MvccEntitySerializationStrategy.class );
@@ -128,7 +128,7 @@ protected void validateStage( final CollectionIoEvent event ) {
final UniqueValueSerializationStrategy uniqueValueStrategy = mock( UniqueValueSerializationStrategy.class );
- when( mvccEntityStrategy.write( any( CollectionScope.class ), any( MvccEntity.class ) ) )
+ when( mvccEntityStrategy.write( any( ApplicationScope.class ), any( MvccEntity.class ) ) )
.thenReturn( entityMutation );
new WriteCommit( logStrategy, mvccEntityStrategy, uniqueValueStrategy ).call( event );
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteOptimisticVerifyTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteOptimisticVerifyTest.java
index 06640f098a..1af8867b1d 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteOptimisticVerifyTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteOptimisticVerifyTest.java
@@ -21,24 +21,24 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.usergrid.persistence.core.test.UseModules;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.exception.WriteOptimisticVerifyException;
-import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
-import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
+import org.apache.usergrid.persistence.collection.exception.WriteOptimisticVerifyException;
+import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccLogEntryImpl;
import org.apache.usergrid.persistence.collection.mvcc.stage.AbstractMvccEntityStageTest;
import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionIoEvent;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.UniqueValue;
-import org.apache.usergrid.persistence.collection.serialization.impl.UniqueValueImpl;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.impl.UniqueValueImpl;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.core.test.UseModules;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.SimpleId;
import org.apache.usergrid.persistence.model.field.StringField;
@@ -48,7 +48,6 @@
import static org.apache.usergrid.persistence.collection.mvcc.stage.TestEntityGenerator.fromEntity;
import static org.apache.usergrid.persistence.collection.mvcc.stage.TestEntityGenerator.generateEntity;
-import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
@@ -70,11 +69,10 @@ protected void validateStage( final CollectionIoEvent event ) {
@Test
public void testNoConflict() throws Exception {
- final CollectionScope collectionScope = mock( CollectionScope.class );
+ final ApplicationScope collectionScope = mock( ApplicationScope.class );
when( collectionScope.getApplication() )
.thenReturn( new SimpleId( UUIDGenerator.newTimeUUID(), "organization" ) );
- when( collectionScope.getOwner() )
- .thenReturn( new SimpleId( UUIDGenerator.newTimeUUID(), "owner" ) );
+
final Entity entity = generateEntity();
entity.setField(new StringField("name", "FOO", true));
@@ -108,11 +106,10 @@ public void testNoConflict() throws Exception {
@Test
public void testConflict() throws Exception {
- final CollectionScope scope = mock( CollectionScope.class );
+ final ApplicationScope scope = mock( ApplicationScope.class );
when( scope.getApplication() )
.thenReturn( new SimpleId( UUIDGenerator.newTimeUUID(), "organization" ) );
- when( scope.getOwner() )
- .thenReturn( new SimpleId( UUIDGenerator.newTimeUUID(), "owner" ) );
+
// there is an entity
final Entity entity = generateEntity();
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteStartTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteStartTest.java
index 6171f795dc..5545a307ec 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteStartTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteStartTest.java
@@ -18,28 +18,32 @@
package org.apache.usergrid.persistence.collection.mvcc.stage.write;
-import org.apache.usergrid.persistence.model.entity.SimpleId;
+import java.util.UUID;
+
import org.junit.Test;
import org.mockito.ArgumentCaptor;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
import org.apache.usergrid.persistence.collection.mvcc.stage.AbstractEntityStageTest;
import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionIoEvent;
import org.apache.usergrid.persistence.collection.mvcc.stage.TestEntityGenerator;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.service.UUIDService;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Entity;
+import org.apache.usergrid.persistence.model.entity.SimpleId;
import com.netflix.astyanax.MutationBatch;
-import java.util.UUID;
-
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertSame;
-import static org.mockito.Mockito.*;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.same;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
/** @author tnine */
@@ -50,7 +54,7 @@ public class WriteStartTest extends AbstractEntityStageTest {
public void testStartStage() throws Exception {
- final CollectionScope context = mock( CollectionScope.class );
+ final ApplicationScope context = mock( ApplicationScope.class );
//mock returning a mock mutation when we do a log entry write
@@ -95,7 +99,7 @@ public void testStartStage() throws Exception {
@Test
public void testNoVersion() throws Exception {
- final CollectionScope context = mock( CollectionScope.class );
+ final ApplicationScope context = mock( ApplicationScope.class );
//mock returning a mock mutation when we do a log entry write
final MvccLogEntrySerializationStrategy logStrategy = mock( MvccLogEntrySerializationStrategy.class );
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerifyIT.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerifyIT.java
index 8e14c4f44e..9d0cd20658 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerifyIT.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerifyIT.java
@@ -18,28 +18,31 @@
package org.apache.usergrid.persistence.collection.mvcc.stage.write;
-import com.google.inject.Inject;
-import org.apache.usergrid.persistence.collection.CollectionScope;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
import org.apache.usergrid.persistence.collection.EntityCollectionManager;
import org.apache.usergrid.persistence.collection.EntityCollectionManagerFactory;
import org.apache.usergrid.persistence.collection.exception.WriteUniqueVerifyException;
-import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
-import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
import org.apache.usergrid.persistence.collection.mvcc.stage.TestEntityGenerator;
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
+import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
import org.apache.usergrid.persistence.core.test.ITRunner;
+import org.apache.usergrid.persistence.core.test.UseModules;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.entity.SimpleId;
import org.apache.usergrid.persistence.model.field.IntegerField;
import org.apache.usergrid.persistence.model.field.StringField;
-import org.apache.usergrid.persistence.core.test.UseModules;
+
+import com.google.inject.Inject;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
/**
@@ -49,7 +52,7 @@
@UseModules( TestCollectionModule.class )
public class WriteUniqueVerifyIT {
- @Inject
+ @Inject
SerializationFig serializationFig;
@Inject
@@ -62,10 +65,9 @@ public class WriteUniqueVerifyIT {
@Test
public void testConflict() {
- final Id orgId = new SimpleId("WriteUniqueVerifyIT");
final Id appId = new SimpleId("testConflict");
- final CollectionScope scope = new CollectionScopeImpl( appId, orgId, "fastcars" );
+ final ApplicationScope scope = new ApplicationScopeImpl( appId );
final EntityCollectionManager entityManager = cmf.createCollectionManager( scope );
final Entity entity = TestEntityGenerator.generateEntity();
@@ -78,8 +80,8 @@ public void testConflict() {
entityFetched.setField( new StringField("foo", "bar"));
// wait for temporary unique value records to time out
- try {
- Thread.sleep(serializationFig.getTimeout() * 1100);
+ try {
+ Thread.sleep(serializationFig.getTimeout() * 1100);
} catch (InterruptedException ignored) { }
// another enity that tries to use two unique values already taken by first
@@ -107,10 +109,9 @@ public void testConflict() {
@Test
public void testNoConflict1() {
- final Id orgId = new SimpleId("WriteUniqueVerifyIT");
final Id appId = new SimpleId("testNoConflict");
- final CollectionScope scope = new CollectionScopeImpl( appId, orgId, "fastcars" );
+ final ApplicationScope scope = new ApplicationScopeImpl( appId);
final EntityCollectionManager entityManager = cmf.createCollectionManager( scope );
final Entity entity = TestEntityGenerator.generateEntity();
@@ -127,10 +128,9 @@ public void testNoConflict1() {
@Test
public void testNoConflict2() {
- final Id orgId = new SimpleId("WriteUniqueVerifyIT");
final Id appId = new SimpleId("testNoConflict");
- final CollectionScope scope = new CollectionScopeImpl( appId, orgId, "fastcars" );
+ final ApplicationScope scope = new ApplicationScopeImpl( appId );
final EntityCollectionManager entityManager = cmf.createCollectionManager( scope );
final Entity entity = TestEntityGenerator.generateEntity();
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerifyTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerifyTest.java
index 51cb1985d6..b9a1565120 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerifyTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerifyTest.java
@@ -18,20 +18,20 @@
package org.apache.usergrid.persistence.collection.mvcc.stage.write;
-import org.apache.usergrid.persistence.core.astyanax.CassandraConfig;
-import org.apache.usergrid.persistence.core.test.UseModules;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
-import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
import org.apache.usergrid.persistence.collection.MvccEntity;
+import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionIoEvent;
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
+import org.apache.usergrid.persistence.core.astyanax.CassandraConfig;
+import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.test.ITRunner;
+import org.apache.usergrid.persistence.core.test.UseModules;
import org.apache.usergrid.persistence.model.entity.Entity;
import com.google.inject.Inject;
@@ -41,7 +41,6 @@
import static org.apache.usergrid.persistence.collection.mvcc.stage.TestEntityGenerator.fromEntity;
import static org.apache.usergrid.persistence.collection.mvcc.stage.TestEntityGenerator.generateEntity;
-import static org.junit.Assert.assertSame;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
@@ -71,7 +70,7 @@ public class WriteUniqueVerifyTest {
@Test
public void testNoFields() throws ConnectionException {
- final CollectionScope collectionScope = mock( CollectionScope.class );
+ final ApplicationScope collectionScope = mock( ApplicationScope.class );
final Keyspace keyspace = mock(Keyspace.class);
final MutationBatch batch = mock(MutationBatch.class);
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/LogEntryIteratorTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/LogEntryIteratorTest.java
index 8a625052bd..720e60232c 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/LogEntryIteratorTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/LogEntryIteratorTest.java
@@ -7,12 +7,12 @@
import org.junit.Test;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
-import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.util.LogEntryMock;
import org.apache.usergrid.persistence.collection.util.VersionGenerator;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.entity.SimpleId;
import org.apache.usergrid.persistence.model.util.UUIDGenerator;
@@ -38,8 +38,8 @@ public void empty() throws ConnectionException {
final MvccLogEntrySerializationStrategy logEntrySerializationStrategy =
mock( MvccLogEntrySerializationStrategy.class );
- final CollectionScope scope =
- new CollectionScopeImpl( new SimpleId( "application" ), new SimpleId( "owner" ), "entities" );
+ final ApplicationScope scope =
+ new ApplicationScopeImpl( new SimpleId( "application" ));
final Id entityId = new SimpleId( "entity" );
@@ -95,8 +95,8 @@ public void pageElements( final int pageSize, final int totalPages, final int la
final MvccLogEntrySerializationStrategy logEntrySerializationStrategy =
mock( MvccLogEntrySerializationStrategy.class );
- final CollectionScope scope =
- new CollectionScopeImpl( new SimpleId( "application" ), new SimpleId( "owner" ), "entities" );
+ final ApplicationScope scope =
+ new ApplicationScopeImpl( new SimpleId( "application" ) );
final Id entityId = new SimpleId( "entity" );
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImplTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImplTest.java
index 07a4b1b574..11575c71aa 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImplTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImplTest.java
@@ -26,18 +26,17 @@
import java.util.Set;
import java.util.UUID;
-import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.MvccEntity;
-import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccEntityImpl;
-import org.apache.usergrid.persistence.model.util.EntityUtils;
+import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
import org.apache.usergrid.persistence.core.astyanax.CassandraFig;
import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.entity.SimpleId;
@@ -49,6 +48,7 @@
import org.apache.usergrid.persistence.model.field.LongField;
import org.apache.usergrid.persistence.model.field.StringField;
import org.apache.usergrid.persistence.model.field.UUIDField;
+import org.apache.usergrid.persistence.model.util.EntityUtils;
import org.apache.usergrid.persistence.model.util.UUIDGenerator;
import com.google.common.base.Optional;
@@ -93,10 +93,8 @@ public void setup() {
public void writeLoadDelete() throws ConnectionException {
final Id organizationId = new SimpleId( "organization" );
- final Id applicationId = new SimpleId( "application" );
- final String name = "test";
- CollectionScope context = new CollectionScopeImpl( organizationId, applicationId, name );
+ ApplicationScope context = new ApplicationScopeImpl( organizationId );
final UUID entityId = UUIDGenerator.newTimeUUID();
@@ -205,11 +203,9 @@ public void writeLoadDelete() throws ConnectionException {
@Test
public void writeLoadClearDelete() throws ConnectionException {
- final Id organizationId = new SimpleId( "organization" );
final Id applicationId = new SimpleId( "application" );
- final String name = "test";
- CollectionScope context = new CollectionScopeImpl(organizationId, applicationId, name );
+ ApplicationScope context = new ApplicationScopeImpl( applicationId );
final UUID version = UUIDGenerator.newTimeUUID();
@@ -264,11 +260,9 @@ public void writeLoadClearDelete() throws ConnectionException {
@Test
public void writeLoadDeleteMinimalFields() throws ConnectionException {
- final Id organizationId = new SimpleId( "organization" );
final Id applicationId = new SimpleId( "application" );
- final String name = "test";
- CollectionScope context = new CollectionScopeImpl( organizationId, applicationId, name );
+ ApplicationScope context = new ApplicationScopeImpl( applicationId );
final UUID entityId = UUIDGenerator.newTimeUUID();
@@ -332,11 +326,9 @@ public void writeLoadDeleteMinimalFields() throws ConnectionException {
@Test
public void writeX2ClearDelete() throws ConnectionException {
- final Id organizationId = new SimpleId( "organization" );
final Id applicationId = new SimpleId( "application" );
- final String name = "test";
- CollectionScope context = new CollectionScopeImpl( organizationId, applicationId, name );
+ ApplicationScope context = new ApplicationScopeImpl( applicationId );
final UUID entityId = UUIDGenerator.newTimeUUID();
@@ -428,11 +420,9 @@ public void writeX2ClearDelete() throws ConnectionException {
@Test
public void loadAscendingHistory() throws ConnectionException {
- final Id organizationId = new SimpleId("organization");
- final Id applicationId = new SimpleId("application");
- final String name = "test";
+ final Id applicationId = new SimpleId( "application" );
- CollectionScope context = new CollectionScopeImpl(organizationId, applicationId, name);
+ ApplicationScope context = new ApplicationScopeImpl( applicationId );
final UUID entityId = UUIDGenerator.newTimeUUID();
@@ -470,11 +460,9 @@ public void loadAscendingHistory() throws ConnectionException {
@Test(expected = UnsupportedOperationException.class)
public void writeLoadDeletePartial() throws ConnectionException {
- final Id organizationId = new SimpleId( "organization" );
final Id applicationId = new SimpleId( "application" );
- final String name = "test";
- CollectionScope context = new CollectionScopeImpl( organizationId, applicationId, name );
+ ApplicationScope context = new ApplicationScopeImpl( applicationId );
final UUID entityId = UUIDGenerator.newTimeUUID();
@@ -523,7 +511,7 @@ public void writeParamsContext() throws ConnectionException {
@Test(expected = NullPointerException.class)
public void writeParamsEntity() throws ConnectionException {
serializationStrategy.write(
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" ), null );
+ new ApplicationScopeImpl( new SimpleId( "organization" )), null );
}
@@ -537,7 +525,7 @@ public void deleteParamContext() throws ConnectionException {
public void deleteParamEntityId() throws ConnectionException {
serializationStrategy.delete(
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" ), null,
+ new ApplicationScopeImpl( new SimpleId( "organization" ) ), null,
UUIDGenerator.newTimeUUID() );
}
@@ -546,7 +534,7 @@ public void deleteParamEntityId() throws ConnectionException {
public void deleteParamVersion() throws ConnectionException {
serializationStrategy
- .delete( new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" ),
+ .delete( new ApplicationScopeImpl( new SimpleId( "organization" )),
new SimpleId( "test" ), null );
}
@@ -561,7 +549,7 @@ public void loadParamContext() throws ConnectionException {
public void loadParamEntityId() throws ConnectionException {
serializationStrategy
- .load( new CollectionScopeImpl(new SimpleId( "organization" ), new SimpleId( "test" ), "test" ), null, UUIDGenerator.newTimeUUID() );
+ .load( new ApplicationScopeImpl(new SimpleId( "organization" ) ), null, UUIDGenerator.newTimeUUID() );
}
@@ -569,7 +557,7 @@ public void loadParamEntityId() throws ConnectionException {
public void loadParamVersion() throws ConnectionException {
serializationStrategy
- .load( new CollectionScopeImpl(new SimpleId( "organization" ), new SimpleId( "test" ), "test" ), Collections.singleton( new SimpleId( "test" )), null );
+ .load( new ApplicationScopeImpl(new SimpleId( "organization" ) ), Collections.singleton( new SimpleId( "test" )), null );
}
@@ -584,7 +572,7 @@ public void loadListParamEntityId() throws ConnectionException {
serializationStrategy
.loadDescendingHistory(
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" ), null,
+ new ApplicationScopeImpl( new SimpleId( "organization" ) ), null,
UUIDGenerator.newTimeUUID(), 1 );
}
@@ -594,7 +582,7 @@ public void loadListParamVersion() throws ConnectionException {
serializationStrategy
.loadDescendingHistory(
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" ),
+ new ApplicationScopeImpl( new SimpleId( "organization" ) ),
new SimpleId( "test" ), null, 1 );
}
@@ -603,7 +591,7 @@ public void loadListParamVersion() throws ConnectionException {
public void loadListParamSize() throws ConnectionException {
serializationStrategy.loadDescendingHistory(
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" ),
+ new ApplicationScopeImpl( new SimpleId( "organization" ) ),
new SimpleId( "test" ), UUIDGenerator.newTimeUUID(), 0 );
}
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV1ImplTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV1ImplTest.java
index ff8d743334..10e5b562b5 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV1ImplTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV1ImplTest.java
@@ -25,13 +25,12 @@
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
-import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccEntityImpl;
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
-import org.apache.usergrid.persistence.model.util.EntityUtils;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
import org.apache.usergrid.persistence.core.test.ITRunner;
import org.apache.usergrid.persistence.core.test.UseModules;
import org.apache.usergrid.persistence.model.entity.Entity;
@@ -43,6 +42,7 @@
import org.apache.usergrid.persistence.model.field.LongField;
import org.apache.usergrid.persistence.model.field.StringField;
import org.apache.usergrid.persistence.model.field.UUIDField;
+import org.apache.usergrid.persistence.model.util.EntityUtils;
import org.apache.usergrid.persistence.model.util.UUIDGenerator;
import com.google.common.base.Optional;
@@ -73,11 +73,9 @@ protected MvccEntitySerializationStrategy getMvccEntitySerializationStrategy() {
@Test
public void writeLoadDeletePartial() throws ConnectionException {
- final Id organizationId = new SimpleId( "organization" );
final Id applicationId = new SimpleId( "application" );
- final String name = "test";
- CollectionScope context = new CollectionScopeImpl( organizationId, applicationId, name );
+ ApplicationScope context = new ApplicationScopeImpl( applicationId );
final UUID entityId = UUIDGenerator.newTimeUUID();
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV2ImplTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV2ImplTest.java
index c64940af2c..3d2e5cbcd3 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV2ImplTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV2ImplTest.java
@@ -25,13 +25,12 @@
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
-import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccEntityImpl;
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
-import org.apache.usergrid.persistence.model.util.EntityUtils;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
import org.apache.usergrid.persistence.core.test.ITRunner;
import org.apache.usergrid.persistence.core.test.UseModules;
import org.apache.usergrid.persistence.model.entity.Entity;
@@ -43,6 +42,7 @@
import org.apache.usergrid.persistence.model.field.LongField;
import org.apache.usergrid.persistence.model.field.StringField;
import org.apache.usergrid.persistence.model.field.UUIDField;
+import org.apache.usergrid.persistence.model.util.EntityUtils;
import org.apache.usergrid.persistence.model.util.UUIDGenerator;
import com.google.common.base.Optional;
@@ -70,11 +70,9 @@ protected MvccEntitySerializationStrategy getMvccEntitySerializationStrategy() {
@Test
public void writeLoadDeletePartial() throws ConnectionException {
- final Id organizationId = new SimpleId( "organization" );
final Id applicationId = new SimpleId( "application" );
- final String name = "test";
- CollectionScope context = new CollectionScopeImpl( organizationId, applicationId, name );
+ ApplicationScope context = new ApplicationScopeImpl( applicationId );
final UUID entityId = UUIDGenerator.newTimeUUID();
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV2Test.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV2Test.java
index 0dcf4274d1..1ed1668775 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV2Test.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV2Test.java
@@ -22,7 +22,6 @@
import java.util.Collections;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.Map;
import java.util.UUID;
@@ -30,16 +29,16 @@
import org.junit.Before;
import org.junit.Test;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.EntitySet;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.exception.EntityTooLargeException;
-import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccEntityImpl;
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
import org.apache.usergrid.persistence.collection.util.EntityHelper;
import org.apache.usergrid.persistence.core.astyanax.CassandraFig;
import org.apache.usergrid.persistence.core.guicyfig.SetConfigTestBypass;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
import org.apache.usergrid.persistence.core.util.ValidationUtils;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.Id;
@@ -50,7 +49,6 @@
import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
public abstract class MvccEntitySerializationStrategyV2Test extends MvccEntitySerializationStrategyImplTest {
@@ -94,8 +92,9 @@ public void largeEntityWriteRead() throws ConnectionException {
final Entity entity = EntityHelper.generateEntity( setSize );
//now we have one massive, entity, save it and retrieve it.
- CollectionScope context =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "parent" ), "tests" );
+ final Id applicationId = new SimpleId( "application" );
+
+ ApplicationScope context = new ApplicationScopeImpl( applicationId );
final Id id = entity.getId();
@@ -134,8 +133,9 @@ public void entityLargerThanAllowedWrite() throws ConnectionException {
final Entity entity = EntityHelper.generateEntity( setSize );
//now we have one massive, entity, save it and retrieve it.
- CollectionScope context =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "parent" ), "tests" );
+ final Id applicationId = new SimpleId( "application" );
+
+ ApplicationScope context = new ApplicationScopeImpl( applicationId );
final Id id = entity.getId();
@@ -175,8 +175,8 @@ public void largeEntityReadWrite() throws ConnectionException {
final HashMap entities = new HashMap<>( size );
- CollectionScope context =
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "parent" ), "tests" );
+ ApplicationScope context =
+ new ApplicationScopeImpl( new SimpleId( "organization" ));
for ( int i = 0; i < size; i++ ) {
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV3ImplTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV3ImplTest.java
index e5ea409773..1df22f64e1 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV3ImplTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV3ImplTest.java
@@ -6,10 +6,10 @@
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
-import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
import org.apache.usergrid.persistence.core.test.ITRunner;
import org.apache.usergrid.persistence.core.test.UseModules;
import org.apache.usergrid.persistence.model.entity.Id;
@@ -38,12 +38,10 @@ protected MvccEntitySerializationStrategy getMvccEntitySerializationStrategy() {
@Test( expected = UnsupportedOperationException.class )
public void loadAscendingHistory() throws ConnectionException {
- final Id organizationId = new SimpleId( "organization" );
final Id applicationId = new SimpleId( "application" );
-
final String name = "test";
- CollectionScope context = new CollectionScopeImpl( organizationId, applicationId, name );
+ ApplicationScope context = new ApplicationScopeImpl( applicationId );
final Id entityId = new SimpleId( UUIDGenerator.newTimeUUID(), name );
@@ -55,20 +53,18 @@ public void loadAscendingHistory() throws ConnectionException {
@Test( expected = UnsupportedOperationException.class )
public void loadDescendingHistory() throws ConnectionException {
- final Id organizationId = new SimpleId( "organization" );
- final Id applicationId = new SimpleId( "application" );
+
final String name = "test";
- CollectionScope context = new CollectionScopeImpl( organizationId, applicationId, name );
+ final Id applicationId = new SimpleId( "application" );
+ ApplicationScope context = new ApplicationScopeImpl( applicationId );
final Id entityId = new SimpleId( UUIDGenerator.newTimeUUID(), name );
final UUID version1 = UUIDGenerator.newTimeUUID();
serializationStrategy.loadDescendingHistory( context, entityId, version1, 20 );
}
-
-
}
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLESSTransientTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLESSTransientTest.java
index 5336b0506b..c92923afc2 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLESSTransientTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLESSTransientTest.java
@@ -29,16 +29,16 @@
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
-import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
-import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
-import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccLogEntryImpl;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
+import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
import org.apache.usergrid.persistence.core.guicyfig.SetConfigTestBypass;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
import org.apache.usergrid.persistence.core.test.ITRunner;
import org.apache.usergrid.persistence.core.test.UseModules;
import org.apache.usergrid.persistence.model.entity.Id;
@@ -78,25 +78,22 @@ public class MvccLESSTransientTest {
public void setTimeout() {
originalTimeout = serializationFig.getTimeout();
//set the bypass options
- SetConfigTestBypass.setValueByPass( serializationFig,"getTimeout", "1" );
+ SetConfigTestBypass.setValueByPass( serializationFig, "getTimeout", "1" );
}
+
@After
- public void resetTimeout(){
- SetConfigTestBypass.setValueByPass( serializationFig,"getTimeout", originalTimeout + "" );
+ public void resetTimeout() {
+ SetConfigTestBypass.setValueByPass( serializationFig, "getTimeout", originalTimeout + "" );
}
-
-
@Test
public void transientTimeout() throws ConnectionException, InterruptedException {
- final Id organizationId = new SimpleId( "organization" );
final Id applicationId = new SimpleId( "application" );
- final String name = "test";
- CollectionScope context = new CollectionScopeImpl( organizationId, applicationId, name );
+ ApplicationScope context = new ApplicationScopeImpl( applicationId );
final Id id = new SimpleId( "test" );
final UUID version = UUIDGenerator.newTimeUUID();
@@ -111,7 +108,7 @@ public void transientTimeout() throws ConnectionException, InterruptedException
Thread.sleep( 1000 );
MvccLogEntry returned =
- logEntryStrategy.load( context, Collections.singleton( id ), version ).getMaxVersion( id );
+ logEntryStrategy.load( context, Collections.singleton( id ), version ).getMaxVersion( id );
if ( stage.isTransient() ) {
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImplTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImplTest.java
index 148fcf848d..19a75fa0b0 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImplTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImplTest.java
@@ -24,20 +24,20 @@
import java.util.List;
import java.util.UUID;
-import org.apache.usergrid.persistence.core.test.UseModules;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
-import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
-import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
-import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
+import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccLogEntryImpl;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
import org.apache.usergrid.persistence.core.test.ITRunner;
+import org.apache.usergrid.persistence.core.test.UseModules;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.entity.SimpleId;
import org.apache.usergrid.persistence.model.util.UUIDGenerator;
@@ -67,12 +67,9 @@ public class MvccLogEntrySerializationStrategyImplTest {
@Test
public void createAndDelete() throws ConnectionException {
- final Id organizationId = new SimpleId( "organization" );
final Id applicationId = new SimpleId( "application" );
- final String name = "test";
-
- CollectionScope context = new CollectionScopeImpl(organizationId, applicationId, name );
+ ApplicationScope context = new ApplicationScopeImpl( applicationId );
final Id id = new SimpleId( "test" );
@@ -84,7 +81,8 @@ public void createAndDelete() throws ConnectionException {
//Read it back
- MvccLogEntry returned = logEntryStrategy.load( context, Collections.singleton(id), version ).getMaxVersion( id );
+ MvccLogEntry returned =
+ logEntryStrategy.load( context, Collections.singleton( id ), version ).getMaxVersion( id );
assertNotNull( "Returned value should not be null", returned );
@@ -96,19 +94,17 @@ public void createAndDelete() throws ConnectionException {
@Test
public void loadNoData() throws ConnectionException {
- final Id organizationId = new SimpleId( "organization" );
final Id applicationId = new SimpleId( "application" );
- final String name = "test";
-
- CollectionScope context = new CollectionScopeImpl(organizationId, applicationId, name );
+ ApplicationScope context = new ApplicationScopeImpl( applicationId );
final Id id = new SimpleId( "test" );
final UUID version = UUIDGenerator.newTimeUUID();
- MvccLogEntry returned = logEntryStrategy.load( context, Collections.singleton(id), version ).getMaxVersion( id );
+ MvccLogEntry returned =
+ logEntryStrategy.load( context, Collections.singleton( id ), version ).getMaxVersion( id );
assertNull( "Returned value should not exist", returned );
}
@@ -117,12 +113,9 @@ public void loadNoData() throws ConnectionException {
@Test
public void getMultipleEntries() throws ConnectionException {
- final Id organizationId = new SimpleId( "organization" );
final Id applicationId = new SimpleId( "application" );
- final String name = "test";
-
- CollectionScope context = new CollectionScopeImpl(organizationId, applicationId, name );
+ ApplicationScope context = new ApplicationScopeImpl( applicationId );
final Id id = new SimpleId( "test" );
@@ -142,7 +135,8 @@ public void getMultipleEntries() throws ConnectionException {
//Read it back
- MvccLogEntry returned = logEntryStrategy.load( context, Collections.singleton(id), versions[i] ).getMaxVersion( id );
+ MvccLogEntry returned =
+ logEntryStrategy.load( context, Collections.singleton( id ), versions[i] ).getMaxVersion( id );
assertNotNull( "Returned value should not be null", returned );
@@ -173,94 +167,89 @@ public void getMultipleEntries() throws ConnectionException {
}
- @Test(expected = NullPointerException.class)
+ @Test( expected = NullPointerException.class )
public void writeParamsNoContext() throws ConnectionException {
logEntryStrategy.write( null, mock( MvccLogEntry.class ) );
}
- @Test(expected = NullPointerException.class)
+ @Test( expected = NullPointerException.class )
public void writeParams() throws ConnectionException {
- logEntryStrategy.write( mock( CollectionScope.class ), null );
+ logEntryStrategy.write( mock( ApplicationScope.class ), null );
}
- @Test(expected = NullPointerException.class)
+ @Test( expected = NullPointerException.class )
public void deleteParamContext() throws ConnectionException {
logEntryStrategy.delete( null, new SimpleId( "test" ), UUIDGenerator.newTimeUUID() );
}
- @Test(expected = NullPointerException.class)
+ @Test( expected = NullPointerException.class )
public void deleteParamEntityId() throws ConnectionException {
- logEntryStrategy.delete(
- new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" ), null,
- UUIDGenerator.newTimeUUID() );
+ logEntryStrategy
+ .delete( new ApplicationScopeImpl( new SimpleId( "organization" ) ), null, UUIDGenerator.newTimeUUID() );
}
- @Test(expected = NullPointerException.class)
+ @Test( expected = NullPointerException.class )
public void deleteParamVersion() throws ConnectionException {
logEntryStrategy
- .delete( new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" ),
- new SimpleId( "test" ), null );
+ .delete( new ApplicationScopeImpl( new SimpleId( "organization" ) ), new SimpleId( "test" ), null );
}
- @Test(expected = NullPointerException.class)
+ @Test( expected = NullPointerException.class )
public void loadParamContext() throws ConnectionException {
logEntryStrategy.load( null, Collections.emptyList(), UUIDGenerator.newTimeUUID() );
}
- @Test(expected = NullPointerException.class)
+ @Test( expected = NullPointerException.class )
public void loadParamEntityId() throws ConnectionException {
logEntryStrategy
- .load( new CollectionScopeImpl(new SimpleId( "organization" ), new SimpleId( "test" ), "test" ), null, UUIDGenerator.newTimeUUID() );
+ .load( new ApplicationScopeImpl( new SimpleId( "organization" ) ), null, UUIDGenerator.newTimeUUID() );
}
- @Test(expected = NullPointerException.class)
+ @Test( expected = NullPointerException.class )
public void loadParamVersion() throws ConnectionException {
- logEntryStrategy
- .load( new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" ),
- Collections.singleton( new SimpleId( "test" )), null );
+ logEntryStrategy.load( new ApplicationScopeImpl( new SimpleId( "organization" ) ),
+ Collections.singleton( new SimpleId( "test" ) ), null );
}
- @Test(expected = NullPointerException.class)
+ @Test( expected = NullPointerException.class )
public void loadListParamContext() throws ConnectionException {
logEntryStrategy.load( null, new SimpleId( "test" ), UUIDGenerator.newTimeUUID(), 1 );
}
- @Test(expected = NullPointerException.class)
+ @Test( expected = NullPointerException.class )
public void loadListParamEntityId() throws ConnectionException {
logEntryStrategy
- .load( new CollectionScopeImpl(new SimpleId( "organization" ), new SimpleId( "test" ), "test" ), null, UUIDGenerator.newTimeUUID(),
- 1 );
+ .load( new ApplicationScopeImpl( new SimpleId( "organization" ) ), null, UUIDGenerator.newTimeUUID(), 1 );
}
- @Test(expected = NullPointerException.class)
+ @Test( expected = NullPointerException.class )
public void loadListParamVersion() throws ConnectionException {
logEntryStrategy
- .load( new CollectionScopeImpl( new SimpleId( "organization" ), new SimpleId( "test" ), "test" ),
- new SimpleId( "test" ), null, 1 );
+ .load( new ApplicationScopeImpl( new SimpleId( "organization" ) ), new SimpleId( "test" ), null, 1 );
}
- @Test(expected = IllegalArgumentException.class)
+ @Test( expected = IllegalArgumentException.class )
public void loadListParamSize() throws ConnectionException {
- logEntryStrategy.load( new CollectionScopeImpl(new SimpleId( "organization" ), new SimpleId( "test" ), "test" ), new SimpleId( "test" ),
- UUIDGenerator.newTimeUUID(), 0 );
+ logEntryStrategy.load( new ApplicationScopeImpl( new SimpleId( "organization" ) ), new SimpleId( "test" ),
+ UUIDGenerator.newTimeUUID(), 0 );
}
}
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/ScopedRowKeySerializerTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/ScopedRowKeySerializerTest.java
index a09b623a31..340cd80213 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/ScopedRowKeySerializerTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/ScopedRowKeySerializerTest.java
@@ -50,7 +50,7 @@ public void testSerialization() {
ScopedRowKey.fromKey( applicationId, collectionPrefixedKey );
- CollectionScopedRowKeySerializer collectionScopedRowKeySerializer =
+ CollectionScopedRowKeySerializer collectionScopedRowKeySerializer =
new CollectionScopedRowKeySerializer( IdRowCompositeSerializer.get() );
ByteBuffer buff = collectionScopedRowKeySerializer.toByteBuffer( rowKey );
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/SerializationComparison.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/SerializationComparison.java
index 6383e75d1b..660a6a9ea9 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/SerializationComparison.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/SerializationComparison.java
@@ -28,7 +28,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.usergrid.persistence.model.util.EntityUtils;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.SimpleId;
import org.apache.usergrid.persistence.model.field.BooleanField;
@@ -37,6 +36,7 @@
import org.apache.usergrid.persistence.model.field.LongField;
import org.apache.usergrid.persistence.model.field.StringField;
import org.apache.usergrid.persistence.model.field.UUIDField;
+import org.apache.usergrid.persistence.model.util.EntityUtils;
import org.apache.usergrid.persistence.model.util.UUIDGenerator;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/SettingsValidationTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/SettingsValidationTest.java
index 807bc4ebaa..273bec081c 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/SettingsValidationTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/SettingsValidationTest.java
@@ -25,7 +25,6 @@
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
import org.apache.usergrid.persistence.core.astyanax.CassandraFig;
-import static org.junit.Assert.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/migration/AbstractMvccEntityDataMigrationV1ToV3ImplTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/migration/AbstractMvccEntityDataMigrationV1ToV3ImplTest.java
index 9938caf8d6..986b7403f2 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/migration/AbstractMvccEntityDataMigrationV1ToV3ImplTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/migration/AbstractMvccEntityDataMigrationV1ToV3ImplTest.java
@@ -26,20 +26,20 @@
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.MvccEntity;
import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
-import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccEntityImpl;
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.impl.CollectionDataVersions;
import org.apache.usergrid.persistence.core.guice.DataMigrationResetRule;
import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
import org.apache.usergrid.persistence.core.migration.data.DataMigrationManager;
-import org.apache.usergrid.persistence.core.migration.data.TestProgressObserver;
import org.apache.usergrid.persistence.core.migration.data.MigrationDataProvider;
import org.apache.usergrid.persistence.core.migration.data.MigrationRelationship;
+import org.apache.usergrid.persistence.core.migration.data.TestProgressObserver;
import org.apache.usergrid.persistence.core.migration.data.VersionedMigrationSet;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
import org.apache.usergrid.persistence.core.test.ITRunner;
import org.apache.usergrid.persistence.core.test.UseModules;
import org.apache.usergrid.persistence.model.entity.Entity;
@@ -95,9 +95,8 @@ public abstract class AbstractMvccEntityDataMigrationV1ToV3ImplTest implements D
public void testMigration() throws ConnectionException {
final Id applicationId = createId( "application" );
- final String collectionName = "things";
- CollectionScope scope = new CollectionScopeImpl( applicationId, applicationId, collectionName );
+ ApplicationScope scope = new ApplicationScopeImpl( applicationId );
final MvccEntity entity1 = getEntity( "thing" );
final MvccEntity entity2 = getEntity( "thing" );
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/migration/MvccEntityDataMigrationV1ToV3ImplTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/migration/MvccEntityDataMigrationV1ToV3ImplTest.java
index 7d02b4b62b..453fe773ac 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/migration/MvccEntityDataMigrationV1ToV3ImplTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/migration/MvccEntityDataMigrationV1ToV3ImplTest.java
@@ -38,12 +38,6 @@
import net.jcip.annotations.NotThreadSafe;
-import static org.apache.usergrid.persistence.core.util.IdGenerator.createId;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-
@NotThreadSafe
@RunWith( ITRunner.class )
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/util/EntityHelper.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/util/EntityHelper.java
index 4dafbafd6b..6528c7584e 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/util/EntityHelper.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/util/EntityHelper.java
@@ -28,7 +28,6 @@
import org.apache.usergrid.persistence.model.entity.SimpleId;
import org.apache.usergrid.persistence.model.field.Field;
import org.apache.usergrid.persistence.model.field.StringField;
-import org.apache.usergrid.persistence.model.util.UUIDGenerator;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/util/LogEntryMock.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/util/LogEntryMock.java
index ec27e8ab60..93de9d4297 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/util/LogEntryMock.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/util/LogEntryMock.java
@@ -29,18 +29,17 @@
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccLogEntryImpl;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Id;
import com.fasterxml.uuid.UUIDComparator;
import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
import static org.mockito.Matchers.same;
import static org.mockito.Mockito.when;
@@ -78,7 +77,7 @@ private LogEntryMock(final Id entityId, final List versions ) {
* @param scope
* @throws ConnectionException
*/
- private void initMock( final MvccLogEntrySerializationStrategy logEntrySerializationStrategy, final CollectionScope scope )
+ private void initMock( final MvccLogEntrySerializationStrategy logEntrySerializationStrategy, final ApplicationScope scope )
throws ConnectionException {
@@ -131,7 +130,7 @@ public MvccLogEntry getEntryAtIndex(final int index){
* @param versions The versions to mock
* @throws ConnectionException
*/
- public static LogEntryMock createLogEntryMock(final MvccLogEntrySerializationStrategy logEntrySerializationStrategy, final CollectionScope scope,final Id entityId, final List versions )
+ public static LogEntryMock createLogEntryMock(final MvccLogEntrySerializationStrategy logEntrySerializationStrategy, final ApplicationScope scope,final Id entityId, final List versions )
throws ConnectionException {
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/util/UniqueValueEntryMock.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/util/UniqueValueEntryMock.java
index c06479b250..201970a3b5 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/util/UniqueValueEntryMock.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/util/UniqueValueEntryMock.java
@@ -47,17 +47,16 @@
import java.util.List;
import java.util.UUID;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.serialization.UniqueValue;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.impl.UniqueValueImpl;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.field.StringField;
import com.fasterxml.uuid.UUIDComparator;
import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
-import static org.mockito.Matchers.any;
import static org.mockito.Matchers.same;
import static org.mockito.Mockito.when;
@@ -101,7 +100,7 @@ private UniqueValueEntryMock( final Id entityId, final List versions ) {
* @param scope
* @throws com.netflix.astyanax.connectionpool.exceptions.ConnectionException
*/
- private void initMock( final UniqueValueSerializationStrategy uniqueValueSerializationStrategy, final CollectionScope scope )
+ private void initMock( final UniqueValueSerializationStrategy uniqueValueSerializationStrategy, final ApplicationScope scope )
throws ConnectionException {
@@ -129,7 +128,7 @@ public UniqueValue getEntryAtIndex(final int index){
* @throws com.netflix.astyanax.connectionpool.exceptions.ConnectionException
*/
public static UniqueValueEntryMock createUniqueMock(
- final UniqueValueSerializationStrategy uniqueValueSerializationStrategy, final CollectionScope scope,
+ final UniqueValueSerializationStrategy uniqueValueSerializationStrategy, final ApplicationScope scope,
final Id entityId, final List versions ) throws ConnectionException {
UniqueValueEntryMock mock = new UniqueValueEntryMock( entityId, versions );
diff --git a/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/scope/ApplicationScopeImpl.java b/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/scope/ApplicationScopeImpl.java
index e8dbb028ff..5733e3a321 100644
--- a/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/scope/ApplicationScopeImpl.java
+++ b/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/scope/ApplicationScopeImpl.java
@@ -22,6 +22,8 @@
import org.apache.usergrid.persistence.model.entity.Id;
+import com.google.common.base.Preconditions;
+
/**
*
@@ -33,6 +35,7 @@ public class ApplicationScopeImpl implements ApplicationScope {
public ApplicationScopeImpl( final Id application ) {
+ Preconditions.checkNotNull(application, "application id is required");
this.application = application;
}
From abbdd6b4869211a03dd14319e5fc5f57f71320a5 Mon Sep 17 00:00:00 2001
From: Todd Nine
Date: Fri, 27 Mar 2015 09:41:17 -0600
Subject: [PATCH 03/12] Finished changes to reflect new single index health.
---
.../corepersistence/CpEntityManager.java | 150 ++++++------------
.../CpEntityManagerFactory.java | 43 +++--
.../corepersistence/CpManagerCache.java | 10 +-
.../corepersistence/CpRelationManager.java | 68 +++-----
.../corepersistence/ManagerCache.java | 4 +-
.../events/EntityDeletedHandler.java | 29 ++--
.../events/EntityVersionCreatedHandler.java | 12 +-
.../events/EntityVersionDeletedHandler.java | 44 +++--
.../results/FilteringLoader.java | 11 +-
.../impl/AllApplicationsObservableImpl.java | 7 +-
.../rx/impl/AllEntitiesInSystemImpl.java | 13 +-
.../corepersistence/util/CpNamingUtils.java | 12 --
.../usergrid/persistence/EntityManager.java | 6 +-
.../persistence/EntityManagerFactory.java | 4 +-
.../cassandra/EntityManagerFactoryImpl.java | 7 +
.../cassandra/EntityManagerImpl.java | 6 +-
.../StaleIndexCleanupTest.java | 11 +-
.../EntityTypeMappingMigrationIT.java | 10 +-
.../apache/usergrid/rest/RootResource.java | 6 +-
.../applications/ApplicationResource.java | 2 +-
20 files changed, 174 insertions(+), 281 deletions(-)
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java
index f420d7b64a..c45c39038a 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java
@@ -33,11 +33,6 @@
import java.util.TreeSet;
import java.util.UUID;
-import com.codahale.metrics.Meter;
-import org.apache.usergrid.persistence.collection.FieldSet;
-import org.apache.usergrid.persistence.core.future.BetterFuture;
-import org.apache.usergrid.persistence.index.ApplicationEntityIndex;
-import org.elasticsearch.action.ListenableActionFuture;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.Assert;
@@ -59,10 +54,6 @@
import org.apache.usergrid.persistence.Results;
import org.apache.usergrid.persistence.Schema;
import org.apache.usergrid.persistence.SimpleEntityRef;
-
-import static org.apache.usergrid.corepersistence.util.CpEntityMapUtils.entityToCpEntity;
-import static org.apache.usergrid.persistence.SimpleEntityRef.getUuid;
-
import org.apache.usergrid.persistence.SimpleRoleRef;
import org.apache.usergrid.persistence.TypedEntity;
import org.apache.usergrid.persistence.cassandra.ApplicationCF;
@@ -72,8 +63,8 @@
import org.apache.usergrid.persistence.cassandra.CounterUtils;
import org.apache.usergrid.persistence.cassandra.GeoIndexManager;
import org.apache.usergrid.persistence.cassandra.util.TraceParticipant;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.EntityCollectionManager;
+import org.apache.usergrid.persistence.collection.FieldSet;
import org.apache.usergrid.persistence.collection.exception.WriteOptimisticVerifyException;
import org.apache.usergrid.persistence.collection.exception.WriteUniqueVerifyException;
import org.apache.usergrid.persistence.core.metrics.MetricsFactory;
@@ -88,6 +79,7 @@
import org.apache.usergrid.persistence.exceptions.EntityNotFoundException;
import org.apache.usergrid.persistence.exceptions.RequiredPropertyNotFoundException;
import org.apache.usergrid.persistence.exceptions.UnexpectedEntityTypeException;
+import org.apache.usergrid.persistence.index.ApplicationEntityIndex;
import org.apache.usergrid.persistence.index.EntityIndex;
import org.apache.usergrid.persistence.index.EntityIndexBatch;
import org.apache.usergrid.persistence.index.IndexScope;
@@ -105,9 +97,11 @@
import org.apache.usergrid.persistence.model.util.UUIDGenerator;
import org.apache.usergrid.utils.ClassUtils;
import org.apache.usergrid.utils.CompositeUtils;
+import org.apache.usergrid.utils.Inflector;
import org.apache.usergrid.utils.StringUtils;
import org.apache.usergrid.utils.UUIDUtils;
+import com.codahale.metrics.Meter;
import com.codahale.metrics.Timer;
import com.google.common.base.Preconditions;
import com.netflix.hystrix.exception.HystrixRuntimeException;
@@ -134,6 +128,7 @@
import static me.prettyprint.hector.api.factory.HFactory.createMutator;
import static org.apache.commons.lang.StringUtils.capitalize;
import static org.apache.commons.lang.StringUtils.isBlank;
+import static org.apache.usergrid.corepersistence.util.CpEntityMapUtils.entityToCpEntity;
import static org.apache.usergrid.corepersistence.util.CpNamingUtils.getCollectionScopeNameFromEntityType;
import static org.apache.usergrid.persistence.Schema.COLLECTION_ROLES;
import static org.apache.usergrid.persistence.Schema.COLLECTION_USERS;
@@ -150,6 +145,7 @@
import static org.apache.usergrid.persistence.Schema.PROPERTY_UUID;
import static org.apache.usergrid.persistence.Schema.TYPE_APPLICATION;
import static org.apache.usergrid.persistence.Schema.TYPE_ENTITY;
+import static org.apache.usergrid.persistence.SimpleEntityRef.getUuid;
import static org.apache.usergrid.persistence.cassandra.ApplicationCF.APPLICATION_AGGREGATE_COUNTERS;
import static org.apache.usergrid.persistence.cassandra.ApplicationCF.ENTITY_COMPOSITE_DICTIONARIES;
import static org.apache.usergrid.persistence.cassandra.ApplicationCF.ENTITY_COUNTERS;
@@ -212,7 +208,9 @@ public class CpEntityManager implements EntityManager {
private Timer entGetRepairedEntityTimer;
private Timer updateEntityTimer;
private Meter updateEntityMeter;
- private EntityIndex ei;
+// private EntityIndex ei;
+
+ private EntityCollectionManager ecm;
// /** Short-term cache to keep us from reloading same Entity during single request. */
// private LoadingCache entityCache;
@@ -223,8 +221,7 @@ public CpEntityManager() {
}
@Override
- public void init( EntityManagerFactory emf, EntityIndex ei, UUID applicationId ) {
- this.ei = ei;
+ public void init( EntityManagerFactory emf, UUID applicationId ) {
Preconditions.checkNotNull( emf, "emf must not be null" );
Preconditions.checkNotNull( applicationId, "applicationId must not be null" );
@@ -235,6 +232,8 @@ public void init( EntityManagerFactory emf, EntityIndex ei, UUID applicationId )
applicationScope = CpNamingUtils.getApplicationScope( applicationId );
+ ecm = managerCache.getEntityCollectionManager( applicationScope );
+
this.cass = this.emf.getCassandraService();
this.counterUtils = this.emf.getCounterUtils();
@@ -287,36 +286,18 @@ public void init( EntityManagerFactory emf, EntityIndex ei, UUID applicationId )
}
- @Override
- public Health getIndexHealth() {
- return ei.getIndexHealth();
- }
-
-
- /** Needed to support short-term Entity cache. */
- public static class EntityScope {
- CollectionScope scope;
- Id entityId;
-
-
- public EntityScope( CollectionScope scope, Id entityId ) {
- this.scope = scope;
- this.entityId = entityId;
- }
- }
/**
* Load entity from short-term cache. Package scope so that CpRelationManager can use it too.
*
- * @param es Carries Entity Id and CollectionScope from which to load Entity.
+ * @param entityId Load the entity by entityId
*
* @return Entity or null if not found
*/
- org.apache.usergrid.persistence.model.entity.Entity load( EntityScope es ) {
+ org.apache.usergrid.persistence.model.entity.Entity load( Id entityId ) {
- return managerCache.getEntityCollectionManager(es.scope)
- .load(es.entityId).toBlocking()
+ return ecm .load( entityId ).toBlocking()
.lastOrDefault(null);
}
@@ -435,23 +416,19 @@ public Entity get( EntityRef entityRef ) throws Exception {
Id id = new SimpleId( entityRef.getUuid(), entityRef.getType() );
- CollectionScope collectionScope = getCollectionScopeNameFromEntityType(
- getApplicationScope().getApplication(), entityRef.getType());
-
// if ( !UUIDUtils.isTimeBased( id.getUuid() ) ) {
// throw new IllegalArgumentException(
// "Entity Id " + id.getType() + ":"+ id.getUuid() +" uuid not time based");
// }
- org.apache.usergrid.persistence.model.entity.Entity cpEntity = load( new EntityScope( collectionScope, id ) );
+ org.apache.usergrid.persistence.model.entity.Entity cpEntity = load( id );
if ( cpEntity == null ) {
if ( logger.isDebugEnabled() ) {
- logger.debug( "FAILED to load entity {}:{} from scope\n app {}\n owner {}\n name {}",
+ logger.debug( "FAILED to load entity {}:{} from app {}",
new Object[] {
- id.getType(), id.getUuid(), collectionScope.getApplication(),
- collectionScope.getOwner(), collectionScope.getName()
+ id.getType(), id.getUuid(), applicationId
} );
}
return null;
@@ -518,23 +495,19 @@ public A getEntity( UUID entityId, Class entityClass ) thr
Id id = new SimpleId( entityId, type );
- CollectionScope collectionScope = getCollectionScopeNameFromEntityType(
- getApplicationScope().getApplication(), type);
-
// if ( !UUIDUtils.isTimeBased( id.getUuid() ) ) {
// throw new IllegalArgumentException(
// "Entity Id " + id.getType() + ":"+ id.getUuid() +" uuid not time based");
// }
- org.apache.usergrid.persistence.model.entity.Entity cpEntity = load( new EntityScope( collectionScope, id ) );
+ org.apache.usergrid.persistence.model.entity.Entity cpEntity = load( id );
if ( cpEntity == null ) {
if ( logger.isDebugEnabled() ) {
- logger.debug( "FAILED to load entity {}:{} from scope\n app {}\n owner {}\n name {}",
+ logger.debug( "FAILED to load entity {}:{} from app {}\n",
new Object[] {
- id.getType(), id.getUuid(), collectionScope.getApplication(),
- collectionScope.getOwner(), collectionScope.getName()
+ id.getType(), id.getUuid(), applicationId
} );
}
return null;
@@ -587,18 +560,16 @@ public void update( Entity entity ) throws Exception {
updateEntityMeter.mark();
Timer.Context timer = updateEntityTimer.time();
- CollectionScope collectionScope = getCollectionScopeNameFromEntityType(appId, type );
- EntityCollectionManager ecm = managerCache.getEntityCollectionManager( collectionScope );
+
+
Id entityId = new SimpleId( entity.getUuid(), entity.getType() );
if ( logger.isDebugEnabled() ) {
- logger.debug( "Updating entity {}:{} from scope\n app {}\n owner {}\n name {}",
+ logger.debug( "Updating entity {}:{} app {}\n",
new Object[] {
entityId.getType(),
entityId.getUuid(),
- collectionScope.getApplication(),
- collectionScope.getOwner(),
- collectionScope.getName()
+ appId
} );
}
@@ -662,10 +633,8 @@ private Observable deleteAsync( EntityRef entityRef ) throws Exception {
if(applicationScope == null || entityRef == null){
return Observable.empty();
}
- CollectionScope collectionScope = getCollectionScopeNameFromEntityType(
- getApplicationScope().getApplication(), entityRef.getType() );
- EntityCollectionManager ecm = managerCache.getEntityCollectionManager( collectionScope );
+ EntityCollectionManager ecm = managerCache.getEntityCollectionManager( applicationScope );
Id entityId = new SimpleId( entityRef.getUuid(), entityRef.getType() );
@@ -675,7 +644,7 @@ private Observable deleteAsync( EntityRef entityRef ) throws Exception {
// }
org.apache.usergrid.persistence.model.entity.Entity entity =
- load( new EntityScope( collectionScope, entityId ) );
+ load( entityId );
if ( entity != null ) {
@@ -825,19 +794,16 @@ public void createApplicationCollection( String entityType ) throws Exception {
public Entity getUniqueEntityFromAlias( String collectionType, String aliasType ){
String collName = Schema.defaultCollectionName( collectionType );
- CollectionScope collectionScope = getCollectionScopeNameFromEntityType(
- getApplicationScope().getApplication(), collName);
String propertyName = Schema.getDefaultSchema().aliasProperty( collName );
Timer.Context repairedEntityGet = entGetRepairedEntityTimer.time();
- final EntityCollectionManager ecm = managerCache.getEntityCollectionManager( collectionScope );
//TODO: can't we just sub in the getEntityRepair method here so for every read of a uniqueEntityField we can verify it is correct?
StringField uniqueLookupRepairField = new StringField( propertyName, aliasType.toString());
- Observable fieldSetObservable = ecm.getEntitiesFromFields(
+ Observable fieldSetObservable = ecm.getEntitiesFromFields( Inflector.getInstance().singularize( collectionType ),
Arrays.asList( uniqueLookupRepairField ) );
if(fieldSetObservable == null){
@@ -1074,14 +1040,9 @@ public void updateProperties( EntityRef ref, Map properties ) th
@Override
public void deleteProperty( EntityRef entityRef, String propertyName ) throws Exception {
- CollectionScope collectionScope = getCollectionScopeNameFromEntityType(
- getApplicationScope().getApplication(), entityRef.getType());
-
IndexScope defaultIndexScope = new IndexScopeImpl( getApplicationScope().getApplication(),
getCollectionScopeNameFromEntityType( entityRef.getType() ) );
- EntityCollectionManager ecm = managerCache.getEntityCollectionManager( collectionScope );
- ApplicationEntityIndex aei = managerCache.getEntityIndex( getApplicationScope() );
Id entityId = new SimpleId( entityRef.getUuid(), entityRef.getType() );
@@ -1091,7 +1052,7 @@ public void deleteProperty( EntityRef entityRef, String propertyName ) throws Ex
// }
org.apache.usergrid.persistence.model.entity.Entity cpEntity =
- load( new EntityScope( collectionScope, entityId ) );
+ load( entityId );
cpEntity.removeField( propertyName );
@@ -1103,13 +1064,11 @@ public void deleteProperty( EntityRef entityRef, String propertyName ) throws Ex
cpEntity = ecm.write( cpEntity ).toBlocking().last();
logger.debug( "Wrote {}:{} version {}", new Object[] {
- cpEntity.getId().getType(), cpEntity.getId().getUuid(), cpEntity.getVersion()
+ cpEntity.getId().getType(), cpEntity.getId().getUuid(), cpEntity.getVersion()
} );
//Adding graphite metrics
- Timer.Context timeESBatch = esDeletePropertyTimer.time();
- BetterFuture future = aei.createBatch().index( defaultIndexScope, cpEntity ).execute();
- timeESBatch.stop();
+
// update in all containing collections and connection indexes
CpRelationManager rm = ( CpRelationManager ) getRelationManager( entityRef );
rm.updateContainingCollectionAndCollectionIndexes( cpEntity );
@@ -1226,7 +1185,7 @@ public Map getDictionaryAsMap( EntityRef entity, String dictiona
List> results =
cass.getAllColumns( cass.getApplicationKeyspace( applicationId ), dictionaryCf,
- CassandraPersistenceUtils.key( entity.getUuid(), dictionaryName ), be, be );
+ CassandraPersistenceUtils.key( entity.getUuid(), dictionaryName ), be, be );
for ( HColumn result : results ) {
Object name = null;
if ( entityHasDictionary ) {
@@ -1290,9 +1249,9 @@ public Object getDictionaryElementValue( EntityRef entity, String dictionaryName
HColumn result =
cass.getColumn( cass.getApplicationKeyspace( applicationId ), dictionaryCf,
- CassandraPersistenceUtils.key( entity.getUuid(), dictionaryName ),
- entityHasDictionary ? bytebuffer( elementName ) : DynamicComposite.toByteBuffer( elementName ),
- be, be );
+ CassandraPersistenceUtils.key( entity.getUuid(), dictionaryName ),
+ entityHasDictionary ? bytebuffer( elementName ) : DynamicComposite.toByteBuffer( elementName ), be,
+ be );
if ( result != null ) {
if ( entityHasDictionary && coTypeIsBasic ) {
@@ -1338,7 +1297,7 @@ public Map getDictionaryElementValues( EntityRef entity, String
ColumnSlice results =
cass.getColumns( cass.getApplicationKeyspace( applicationId ), dictionaryCf,
- CassandraPersistenceUtils.key( entity.getUuid(), dictionaryName ), columnNames, be, be );
+ CassandraPersistenceUtils.key( entity.getUuid(), dictionaryName ), columnNames, be, be );
if ( results != null ) {
values = new HashMap();
for ( HColumn result : results.getColumns() ) {
@@ -1430,7 +1389,7 @@ public Results getCollection( UUID entityId, String collectionName, Query query,
throws Exception {
return getRelationManager( get( entityId ))
- .getCollection ( collectionName, query, resultsLevel );
+ .getCollection( collectionName, query, resultsLevel );
}
@@ -1496,7 +1455,7 @@ public void copyRelationships( EntityRef srcEntityRef, String srcRelationName, E
public ConnectionRef createConnection( ConnectionRef connection ) throws Exception {
return createConnection( connection.getConnectingEntity(), connection.getConnectionType(),
- connection.getConnectedEntity() );
+ connection.getConnectedEntity() );
}
@@ -1836,7 +1795,7 @@ public Entity createGroupRole( UUID groupId, String roleName, long inactivity )
.addToCollection( COLLECTION_ROLES, entity );
logger.info( "Created role {} with id {} in group {}",
- new String[] { roleName, entity.getUuid().toString(), groupId.toString() } );
+ new String[] { roleName, entity.getUuid().toString(), groupId.toString() } );
return entity;
}
@@ -1989,7 +1948,7 @@ public EntityRef getGroupRoleRef( UUID groupId, String roleName ) throws Excepti
private EntityRef getRoleRef( String roleName ) throws Exception {
Results results = this.searchCollection( new SimpleEntityRef( Application.ENTITY_TYPE, applicationId ),
- Schema.defaultCollectionName( Role.ENTITY_TYPE ), Query.findForProperty( "roleName", roleName ) );
+ Schema.defaultCollectionName( Role.ENTITY_TYPE ), Query.findForProperty( "roleName", roleName ) );
Iterator iterator = results.iterator();
EntityRef roleRef = null;
while ( iterator.hasNext() ) {
@@ -2297,13 +2256,8 @@ public boolean isPropertyValueUniqueForEntity( String entityType, String propert
private Id getIdForUniqueEntityField( final String collectionName, final String propertyName,
final Object propertyValue ) {
- CollectionScope collectionScope = getCollectionScopeNameFromEntityType(
- getApplicationScope().getApplication(), collectionName);
-
- final EntityCollectionManager ecm = managerCache.getEntityCollectionManager( collectionScope );
-
//convert to a string, that's what we store
- final Id results = ecm.getIdField( new StringField(
+ final Id results = ecm.getIdField( Inflector.getInstance().singularize( collectionName ), new StringField(
propertyName, propertyValue.toString() ) ).toBlocking() .lastOrDefault( null );
return results;
}
@@ -2621,18 +2575,13 @@ else if ( ( v instanceof String ) && isBlank( ( String ) v ) ) {
org.apache.usergrid.persistence.model.entity.Entity cpEntity = entityToCpEntity( entity, importId );
// prepare to write and index Core Persistence Entity into default scope
- CollectionScope collectionScope = getCollectionScopeNameFromEntityType(getApplicationScope().getApplication(), eType);
-
- EntityCollectionManager ecm = managerCache.getEntityCollectionManager( collectionScope );
if ( logger.isDebugEnabled() ) {
- logger.debug( "Writing entity {}:{} into scope\n app {}\n owner {}\n name {} data {}",
+ logger.debug( "Writing entity {}:{} into app {}\n",
new Object[] {
entity.getType(),
entity.getUuid(),
- collectionScope.getApplication(),
- collectionScope.getOwner(),
- collectionScope.getName(),
+ applicationId,
CpEntityMapUtils.toMap( cpEntity )
} );
//
@@ -2646,15 +2595,20 @@ else if ( ( v instanceof String ) && isBlank( ( String ) v ) ) {
}
try {
- logger.debug( "About to Write {}:{} version {}", new Object[] {
+
+ if(logger.isDebugEnabled()) {
+ logger.debug( "About to Write {}:{} version {}", new Object[] {
cpEntity.getId().getType(), cpEntity.getId().getUuid(), cpEntity.getVersion()
- } );
+ } );
+ }
cpEntity = ecm .write( cpEntity ).toBlocking().last();
- logger.debug( "Wrote {}:{} version {}", new Object[] {
+ if(logger.isDebugEnabled()) {
+ logger.debug( "Wrote {}:{} version {}", new Object[] {
cpEntity.getId().getType(), cpEntity.getId().getUuid(), cpEntity.getVersion()
- } );
+ } );
+ }
}
catch ( WriteUniqueVerifyException wuve ) {
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManagerFactory.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManagerFactory.java
index 3cfc1a46dd..9cd1714cfb 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManagerFactory.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManagerFactory.java
@@ -25,9 +25,6 @@
import java.util.UUID;
import java.util.concurrent.atomic.AtomicBoolean;
-import com.hazelcast.core.IdGenerator;
-import org.apache.usergrid.persistence.index.ApplicationEntityIndex;
-import org.apache.usergrid.persistence.index.EntityIndexFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
@@ -47,9 +44,7 @@
import org.apache.usergrid.persistence.cassandra.CassandraService;
import org.apache.usergrid.persistence.cassandra.CounterUtils;
import org.apache.usergrid.persistence.cassandra.Setup;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.EntityCollectionManager;
-import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
import org.apache.usergrid.persistence.collection.serialization.impl.migration.EntityIdScope;
import org.apache.usergrid.persistence.core.metrics.MetricsFactory;
import org.apache.usergrid.persistence.core.migration.data.MigrationDataProvider;
@@ -64,7 +59,9 @@
import org.apache.usergrid.persistence.graph.GraphManager;
import org.apache.usergrid.persistence.graph.SearchByEdgeType;
import org.apache.usergrid.persistence.graph.impl.SimpleSearchByEdgeType;
+import org.apache.usergrid.persistence.index.ApplicationEntityIndex;
import org.apache.usergrid.persistence.index.EntityIndex;
+import org.apache.usergrid.persistence.index.EntityIndexFactory;
import org.apache.usergrid.persistence.index.query.Query;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.entity.SimpleId;
@@ -205,7 +202,7 @@ public EntityManager getEntityManager(UUID applicationId) {
private EntityManager _getEntityManager( UUID applicationId ) {
EntityManager em = new CpEntityManager();
- em.init( this,entityIndex ,applicationId );
+ em.init( this ,applicationId );
return em;
}
@@ -437,20 +434,20 @@ public Map getApplications(boolean deleted) throws Exception {
Map appMap = new HashMap();
ApplicationScope appScope = CpNamingUtils.getApplicationScope( CpNamingUtils.SYSTEM_APP_ID );
- GraphManager gm = managerCache.getGraphManager(appScope);
+ GraphManager gm = managerCache.getGraphManager( appScope );
- EntityManager em = getEntityManager( CpNamingUtils.SYSTEM_APP_ID);
+ EntityManager em = getEntityManager( CpNamingUtils.SYSTEM_APP_ID );
Application app = em.getApplication();
Id fromEntityId = new SimpleId( app.getUuid(), app.getType() );
- final String scopeName;
+// final String scopeName;
final String edgeType;
if ( deleted ) {
- edgeType = CpNamingUtils.getEdgeTypeFromCollectionName(CpNamingUtils.DELETED_APPINFOS);
- scopeName = CpNamingUtils.getCollectionScopeNameFromCollectionName(CpNamingUtils.DELETED_APPINFOS);
+ edgeType = CpNamingUtils.getEdgeTypeFromCollectionName( CpNamingUtils.DELETED_APPINFOS );
+// scopeName = CpNamingUtils.getCollectionScopeNameFromCollectionName(CpNamingUtils.DELETED_APPINFOS);
} else {
- edgeType = CpNamingUtils.getEdgeTypeFromCollectionName(CpNamingUtils.APPINFOS);
- scopeName = CpNamingUtils.getCollectionScopeNameFromCollectionName(CpNamingUtils.APPINFOS);
+ edgeType = CpNamingUtils.getEdgeTypeFromCollectionName( CpNamingUtils.APPINFOS );
+// scopeName = CpNamingUtils.getCollectionScopeNameFromCollectionName(CpNamingUtils.APPINFOS);
}
logger.debug("getApplications(): Loading edges of edgeType {} from {}:{}",
@@ -472,13 +469,10 @@ public Map getApplications(boolean deleted) throws Exception {
edge.getTargetNode().getType(), edge.getTargetNode().getUuid()
});
- CollectionScope collScope = new CollectionScopeImpl(
- appScope.getApplication(),
- appScope.getApplication(),
- scopeName);
+
org.apache.usergrid.persistence.model.entity.Entity e =
- managerCache.getEntityCollectionManager( collScope ).load( targetId )
+ managerCache.getEntityCollectionManager( appScope ).load( targetId )
.toBlocking().lastOrDefault(null);
if ( e == null ) {
@@ -777,13 +771,16 @@ public Health getEntityStoreHealth() {
// could use any collection scope here, does not matter
EntityCollectionManager ecm = getManagerCache().getEntityCollectionManager(
- new CollectionScopeImpl(
- new SimpleId( CpNamingUtils.SYSTEM_APP_ID, "application"),
- new SimpleId( CpNamingUtils.SYSTEM_APP_ID, "application"),
- "dummy"
- ));
+ new ApplicationScopeImpl(
+ new SimpleId( CpNamingUtils.SYSTEM_APP_ID, "application"))
+ );
return ecm.getHealth();
}
+
+ @Override
+ public Health getIndexHealth() {
+ return entityIndex.getIndexHealth();
+ }
}
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpManagerCache.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpManagerCache.java
index 4e35f8cc51..d057fd6479 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpManagerCache.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpManagerCache.java
@@ -16,25 +16,17 @@
package org.apache.usergrid.corepersistence;
-import java.util.concurrent.ExecutionException;
-
-import com.amazonaws.services.cloudfront.model.InvalidArgumentException;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.EntityCollectionManager;
import org.apache.usergrid.persistence.collection.EntityCollectionManagerFactory;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.graph.GraphManager;
import org.apache.usergrid.persistence.graph.GraphManagerFactory;
import org.apache.usergrid.persistence.index.ApplicationEntityIndex;
-import org.apache.usergrid.persistence.index.EntityIndex;
import org.apache.usergrid.persistence.index.EntityIndexFactory;
import org.apache.usergrid.persistence.map.MapManager;
import org.apache.usergrid.persistence.map.MapManagerFactory;
import org.apache.usergrid.persistence.map.MapScope;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
import com.google.inject.Inject;
@@ -62,7 +54,7 @@ public CpManagerCache( final EntityCollectionManagerFactory ecmf, final EntityIn
@Override
- public EntityCollectionManager getEntityCollectionManager( CollectionScope scope ) {
+ public EntityCollectionManager getEntityCollectionManager( ApplicationScope scope ) {
//cache is now in the colletion manager level
return ecmf.createCollectionManager( scope );
}
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
index 5416f19b2c..3427684cb8 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
@@ -29,16 +29,14 @@
import java.util.Set;
import java.util.UUID;
-import org.apache.usergrid.persistence.core.future.BetterFuture;
-import org.apache.usergrid.persistence.index.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.Assert;
+import org.apache.usergrid.corepersistence.results.CollectionResultsLoaderFactoryImpl;
import org.apache.usergrid.corepersistence.results.ConnectionResultsLoaderFactoryImpl;
import org.apache.usergrid.corepersistence.results.ElasticSearchQueryExecutor;
import org.apache.usergrid.corepersistence.results.QueryExecutor;
-import org.apache.usergrid.corepersistence.results.CollectionResultsLoaderFactoryImpl;
import org.apache.usergrid.corepersistence.util.CpEntityMapUtils;
import org.apache.usergrid.corepersistence.util.CpNamingUtils;
import org.apache.usergrid.persistence.ConnectedEntityRef;
@@ -62,7 +60,6 @@
import org.apache.usergrid.persistence.cassandra.index.IndexBucketScanner;
import org.apache.usergrid.persistence.cassandra.index.IndexScanner;
import org.apache.usergrid.persistence.cassandra.index.NoOpIndexScanner;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.core.future.BetterFuture;
import org.apache.usergrid.persistence.core.metrics.MetricsFactory;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
@@ -80,6 +77,8 @@
import org.apache.usergrid.persistence.graph.impl.SimpleSearchEdgeType;
import org.apache.usergrid.persistence.index.ApplicationEntityIndex;
import org.apache.usergrid.persistence.index.EntityIndexBatch;
+import org.apache.usergrid.persistence.index.IndexScope;
+import org.apache.usergrid.persistence.index.SearchTypes;
import org.apache.usergrid.persistence.index.impl.IndexScopeImpl;
import org.apache.usergrid.persistence.index.query.Identifier;
import org.apache.usergrid.persistence.index.query.Query;
@@ -114,13 +113,11 @@
import me.prettyprint.hector.api.mutation.Mutator;
import rx.Observable;
import rx.functions.Action1;
-import rx.functions.Action2;
import rx.functions.Func1;
import static java.util.Arrays.asList;
import static me.prettyprint.hector.api.factory.HFactory.createMutator;
-import static org.apache.usergrid.corepersistence.util.CpNamingUtils.getCollectionScopeNameFromEntityType;
import static org.apache.usergrid.persistence.Schema.COLLECTION_ROLES;
import static org.apache.usergrid.persistence.Schema.DICTIONARY_CONNECTED_ENTITIES;
import static org.apache.usergrid.persistence.Schema.DICTIONARY_CONNECTED_TYPES;
@@ -180,7 +177,6 @@ public class CpRelationManager implements RelationManager {
private org.apache.usergrid.persistence.model.entity.Entity cpHeadEntity;
private ApplicationScope applicationScope;
- private CollectionScope headEntityScope;
private CassandraService cass;
@@ -228,19 +224,16 @@ public CpRelationManager init(
.getTimer( CpRelationManager.class, "relation.manager.es.create.connection.timer" );
this.cassConnectionDelete = metricsFactory
.getTimer( CpRelationManager.class, "relation.manager.cassandra.delete.connection.batch.timer" );
- this.esDeleteConnectionTimer = metricsFactory.getTimer(CpRelationManager.class, "relation.manager.es.delete.connection.batch.timer" );
- // load the Core Persistence version of the head entity as well
- this.headEntityScope = getCollectionScopeNameFromEntityType(
- applicationScope.getApplication(), headEntity.getType());
+ this.esDeleteConnectionTimer = metricsFactory.getTimer( CpRelationManager.class,
+ "relation.manager.es.delete.connection.batch.timer" );
+
if ( logger.isDebugEnabled() ) {
- logger.debug( "Loading head entity {}:{} from scope\n app {}\n owner {}\n name {}",
+ logger.debug( "Loading head entity {}:{} from app {}",
new Object[] {
headEntity.getType(),
headEntity.getUuid(),
- headEntityScope.getApplication(),
- headEntityScope.getOwner(),
- headEntityScope.getName()
+ applicationScope
} );
}
@@ -250,7 +243,7 @@ public CpRelationManager init(
// cpHeadEntity = entityToCpEntity( (Entity)headEntity, headEntity.getUuid() );
// }else {
this.cpHeadEntity =
- ( ( CpEntityManager ) em ).load( new CpEntityManager.EntityScope( headEntityScope, entityId ) );
+ ( ( CpEntityManager ) em ).load( entityId );
// }
// commented out because it is possible that CP entity has not been created yet
@@ -609,12 +602,9 @@ public Entity addToCollection( String collName, EntityRef itemRef ) throws Excep
public Entity addToCollection( String collName, EntityRef itemRef, boolean connectBack )
throws Exception {
- CollectionScope memberScope = getCollectionScopeNameFromEntityType(
- applicationScope.getApplication(), itemRef.getType());
-
Id entityId = new SimpleId( itemRef.getUuid(), itemRef.getType() );
org.apache.usergrid.persistence.model.entity.Entity memberEntity =
- ((CpEntityManager)em).load( new CpEntityManager.EntityScope( memberScope, entityId));
+ ((CpEntityManager)em).load( entityId );
return addToCollection(collName, itemRef, memberEntity, connectBack);
}
@@ -642,9 +632,7 @@ public Entity addToCollection(final String collName, final EntityRef itemRef,
return null;
}
- // load the new member entity to be added to the collection from its default scope
- CollectionScope memberScope = getCollectionScopeNameFromEntityType(
- applicationScope.getApplication(), itemRef.getType());
+
if ( memberEntity == null ) {
throw new RuntimeException(
@@ -652,14 +640,11 @@ public Entity addToCollection(final String collName, final EntityRef itemRef,
}
if ( logger.isDebugEnabled() ) {
- logger.debug( "Loaded member entity {}:{} from scope\n app {}\n "
- + "owner {}\n name {} data {}",
+ logger.debug( "Loaded member entity {}:{} from app {}\n "
+ + " data {}",
new Object[] {
itemRef.getType(),
- itemRef.getUuid(),
- memberScope.getApplication(),
- memberScope.getOwner(),
- memberScope.getName(),
+ itemRef.getUuid(),applicationScope,
CpEntityMapUtils.toMap( memberEntity )
} );
}
@@ -791,24 +776,21 @@ public void removeFromCollection( String collName, EntityRef itemRef ) throws Ex
}
// load the entity to be removed to the collection
- CollectionScope memberScope = getCollectionScopeNameFromEntityType(
- applicationScope.getApplication(), itemRef.getType());
+
if ( logger.isDebugEnabled() ) {
logger.debug( "Loading entity to remove from collection "
- + "{}:{} from scope\n app {}\n owner {}\n name {}",
+ + "{}:{} from app {}\n",
new Object[] {
itemRef.getType(),
itemRef.getUuid(),
- memberScope.getApplication(),
- memberScope.getOwner(),
- memberScope.getName()
+ applicationScope
});
}
Id entityId = new SimpleId( itemRef.getUuid(), itemRef.getType() );
org.apache.usergrid.persistence.model.entity.Entity memberEntity =
- ((CpEntityManager)em).load( new CpEntityManager.EntityScope( memberScope, entityId));
+ ((CpEntityManager)em).load( entityId );
final ApplicationEntityIndex ei = managerCache.getEntityIndex( applicationScope );
final EntityIndexBatch batch = ei.createBatch();
@@ -964,28 +946,24 @@ public ConnectionRef createConnection( String connectionType, EntityRef connecte
ConnectionRefImpl connection = new ConnectionRefImpl( headEntity, connectionType, connectedEntityRef );
- CollectionScope targetScope = getCollectionScopeNameFromEntityType(
- applicationScope.getApplication(), connectedEntityRef.getType());
if ( logger.isDebugEnabled() ) {
logger.debug("createConnection(): "
+ "Indexing connection type '{}'\n from source {}:{}]\n"
- + " to target {}:{}\n from scope\n app {}\n owner {}\n name {}",
+ + " to target {}:{}\n app {}",
new Object[] {
connectionType,
headEntity.getType(),
headEntity.getUuid(),
connectedEntityRef.getType(),
connectedEntityRef.getUuid(),
- targetScope.getApplication(),
- targetScope.getOwner(),
- targetScope.getName()
+ applicationScope
});
}
Id entityId = new SimpleId( connectedEntityRef.getUuid(), connectedEntityRef.getType());
org.apache.usergrid.persistence.model.entity.Entity targetEntity =
- ((CpEntityManager)em).load( new CpEntityManager.EntityScope( targetScope, entityId));
+ ((CpEntityManager)em).load( entityId );
String edgeType = CpNamingUtils.getEdgeTypeFromConnectionType( connectionType );
@@ -1199,8 +1177,6 @@ public void deleteConnection( ConnectionRef connectionRef ) throws Exception {
String connectionType = connectionRef.getConnectedEntity().getConnectionType();
- CollectionScope targetScope = getCollectionScopeNameFromEntityType( applicationScope.getApplication(),
- connectedEntityRef.getType() );
if ( logger.isDebugEnabled() ) {
logger.debug( "Deleting connection '{}' from source {}:{} \n to target {}:{}",
@@ -1215,7 +1191,7 @@ public void deleteConnection( ConnectionRef connectionRef ) throws Exception {
Id entityId = new SimpleId( connectedEntityRef.getUuid(), connectedEntityRef.getType() );
org.apache.usergrid.persistence.model.entity.Entity targetEntity =
- ((CpEntityManager)em).load( new CpEntityManager.EntityScope( targetScope, entityId));
+ ((CpEntityManager)em).load( entityId );
// Delete graph edge connection from head entity to member entity
Edge edge = new SimpleEdge(
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/ManagerCache.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/ManagerCache.java
index 3b94927542..dfa62fbf4d 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/ManagerCache.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/ManagerCache.java
@@ -20,12 +20,10 @@
package org.apache.usergrid.corepersistence;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.EntityCollectionManager;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.graph.GraphManager;
import org.apache.usergrid.persistence.index.ApplicationEntityIndex;
-import org.apache.usergrid.persistence.index.EntityIndex;
import org.apache.usergrid.persistence.map.MapManager;
import org.apache.usergrid.persistence.map.MapScope;
@@ -40,7 +38,7 @@ public interface ManagerCache {
* @param scope
* @return
*/
- EntityCollectionManager getEntityCollectionManager( CollectionScope scope );
+ EntityCollectionManager getEntityCollectionManager( ApplicationScope scope );
/**
* Get the entity index for the specified app scope
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityDeletedHandler.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityDeletedHandler.java
index 85c59dac8a..78c1ca7cfd 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityDeletedHandler.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityDeletedHandler.java
@@ -20,13 +20,14 @@
import java.util.UUID;
+import org.apache.usergrid.exception.NotImplementedException;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.index.ApplicationEntityIndex;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.usergrid.corepersistence.CpEntityManagerFactory;
import org.apache.usergrid.persistence.EntityManagerFactory;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.event.EntityDeleted;
import org.apache.usergrid.persistence.index.EntityIndex;
import org.apache.usergrid.persistence.index.IndexScope;
@@ -56,7 +57,7 @@ public class EntityDeletedHandler implements EntityDeleted {
@Override
- public void deleted( CollectionScope scope, Id entityId, UUID version ) {
+ public void deleted( ApplicationScope scope, Id entityId, UUID version ) {
// This check is for testing purposes and for a test that to be able to dynamically turn
// off and on delete previous versions so that it can test clean-up on read.
@@ -64,20 +65,26 @@ public void deleted( CollectionScope scope, Id entityId, UUID version ) {
return;
}
- logger.debug( "Handling deleted event for entity {}:{} v {} " + "scope\n name: {}\n owner: {}\n app: {}",
- new Object[] {
- entityId.getType(), entityId.getUuid(), version, scope.getName(), scope.getOwner(),
- scope.getApplication()
- } );
+
+
+ if(logger.isDebugEnabled()) {
+ logger.debug(
+ "Handling deleted event for entity {}:{} v {} " + " app: {}",
+ new Object[] {
+ entityId.getType(), entityId.getUuid(), version,
+ scope.getApplication()
+ } );
+ }
CpEntityManagerFactory cpemf = ( CpEntityManagerFactory ) emf;
final ApplicationEntityIndex ei = cpemf.getManagerCache().getEntityIndex( scope );
- final IndexScope indexScope =
- new IndexScopeImpl( new SimpleId( scope.getOwner().getUuid(), scope.getOwner().getType() ),
- scope.getName() );
+ throw new NotImplementedException( "Fix this" );
+
+ //read all edges to this node and de-index them
+
- ei.createBatch().deindex( indexScope, entityId, version ).execute();
+// ei.createBatch().deindex( indexScope, entityId, version ).execute();
}
}
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityVersionCreatedHandler.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityVersionCreatedHandler.java
index 627050187c..c00050046d 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityVersionCreatedHandler.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityVersionCreatedHandler.java
@@ -17,21 +17,19 @@
*/
package org.apache.usergrid.corepersistence.events;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.usergrid.corepersistence.CpEntityManagerFactory;
-import static org.apache.usergrid.corepersistence.CoreModule.EVENTS_DISABLED;
import org.apache.usergrid.persistence.EntityManagerFactory;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.EntityCollectionManagerFactory;
import org.apache.usergrid.persistence.collection.event.EntityVersionCreated;
-import org.apache.usergrid.persistence.index.EntityIndex;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Entity;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
/**
* Clean up stale entity indexes when new version of Entity created. Called when an Entity is
@@ -56,7 +54,7 @@ public EntityVersionCreatedHandler( final EntityManagerFactory emf,
@Override
- public void versionCreated( final CollectionScope scope, final Entity entity ) {
+ public void versionCreated( final ApplicationScope scope, final Entity entity ) {
//not op, we're not migrating properly to this. Make this an event
// // This check is for testing purposes and for a test that to be able to dynamically turn
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityVersionDeletedHandler.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityVersionDeletedHandler.java
index f0dd136c03..4fa5ce18ee 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityVersionDeletedHandler.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityVersionDeletedHandler.java
@@ -24,23 +24,17 @@
import org.slf4j.LoggerFactory;
import org.apache.usergrid.corepersistence.CpEntityManagerFactory;
+import org.apache.usergrid.exception.NotImplementedException;
import org.apache.usergrid.persistence.EntityManagerFactory;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.event.EntityVersionDeleted;
-import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.index.ApplicationEntityIndex;
-import org.apache.usergrid.persistence.index.EntityIndex;
-import org.apache.usergrid.persistence.index.IndexScope;
-import org.apache.usergrid.persistence.index.impl.IndexScopeImpl;
import org.apache.usergrid.persistence.model.entity.Id;
-import org.apache.usergrid.persistence.model.entity.SimpleId;
import com.google.inject.Inject;
import com.google.inject.Singleton;
-import rx.Observable;
-
import static org.apache.usergrid.corepersistence.CoreModule.EVENTS_DISABLED;
@@ -62,7 +56,7 @@ public class EntityVersionDeletedHandler implements EntityVersionDeleted {
@Override
- public void versionDeleted( final CollectionScope scope, final Id entityId,
+ public void versionDeleted( final ApplicationScope scope, final Id entityId,
final List entityVersions ) {
@@ -74,8 +68,8 @@ public void versionDeleted( final CollectionScope scope, final Id entityId,
if ( logger.isDebugEnabled() ) {
logger.debug( "Handling versionDeleted count={} event for entity {}:{} v {} "
- + "scope\n name: {}\n owner: {}\n app: {}", new Object[] {
- entityVersions.size(), entityId.getType(), entityId.getUuid(), scope.getName(), scope.getOwner(),
+ + " app: {}", new Object[] {
+ entityVersions.size(), entityId.getType(), entityId.getUuid(),
scope.getApplication()
} );
}
@@ -84,17 +78,21 @@ public void versionDeleted( final CollectionScope scope, final Id entityId,
final ApplicationEntityIndex ei = cpemf.getManagerCache().getEntityIndex( scope );
- final IndexScope indexScope =
- new IndexScopeImpl( new SimpleId( scope.getOwner().getUuid(), scope.getOwner().getType() ),
- scope.getName() );
-
- //create our batch, and then collect all of them into a single batch
- Observable.from( entityVersions ).collect( () -> ei.createBatch(), ( entityIndexBatch, mvccLogEntry ) -> {
- entityIndexBatch.deindex( indexScope, mvccLogEntry.getEntityId(), mvccLogEntry.getVersion() );
- } )
- //after our batch is collected, execute it
- .doOnNext( entityIndexBatch -> {
- entityIndexBatch.execute();
- } ).toBlocking().last();
+
+ throw new NotImplementedException( "Fix this" );
+
+
+// final IndexScope indexScope =
+// new IndexScopeImpl( new SimpleId( scope.getOwner().getUuid(), scope.getOwner().getType() ),
+// scope.getName() );
+//
+// //create our batch, and then collect all of them into a single batch
+// Observable.from( entityVersions ).collect( () -> ei.createBatch(), ( entityIndexBatch, mvccLogEntry ) -> {
+// entityIndexBatch.deindex( indexScope, mvccLogEntry.getEntityId(), mvccLogEntry.getVersion() );
+// } )
+// //after our batch is collected, execute it
+// .doOnNext( entityIndexBatch -> {
+// entityIndexBatch.execute();
+// } ).toBlocking().last();
}
}
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/results/FilteringLoader.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/results/FilteringLoader.java
index 0a0f71afda..2eb6675bb5 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/results/FilteringLoader.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/results/FilteringLoader.java
@@ -30,18 +30,15 @@
import javax.annotation.Nullable;
-import org.apache.usergrid.persistence.index.ApplicationEntityIndex;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.usergrid.corepersistence.ManagerCache;
import org.apache.usergrid.corepersistence.util.CpNamingUtils;
import org.apache.usergrid.persistence.Results;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.EntityCollectionManager;
-import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
-import org.apache.usergrid.persistence.index.EntityIndex;
+import org.apache.usergrid.persistence.index.ApplicationEntityIndex;
import org.apache.usergrid.persistence.index.EntityIndexBatch;
import org.apache.usergrid.persistence.index.IndexScope;
import org.apache.usergrid.persistence.index.query.CandidateResult;
@@ -211,10 +208,10 @@ public Id apply( @Nullable final CandidateResult input ) {
// Get the collection scope and batch load all the versions. We put all entities in
// app/app for easy retrieval/ unless persistence changes, we never want to read from
// any scope other than the app, app, scope name scope
- final CollectionScope collScope = new CollectionScopeImpl(
- applicationScope.getApplication(), applicationScope.getApplication(), scopeName);
+// final CollectionScope collScope = new CollectionScopeImpl(
+// applicationScope.getApplication(), applicationScope.getApplication(), scopeName);
- final EntityCollectionManager ecm = managerCache.getEntityCollectionManager( collScope);
+ final EntityCollectionManager ecm = managerCache.getEntityCollectionManager( applicationScope);
//load the results into the loader for this scope for validation
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/rx/impl/AllApplicationsObservableImpl.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/rx/impl/AllApplicationsObservableImpl.java
index 0fc54524b8..0e5fcc56f1 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/rx/impl/AllApplicationsObservableImpl.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/rx/impl/AllApplicationsObservableImpl.java
@@ -28,10 +28,8 @@
import org.apache.usergrid.corepersistence.AllApplicationsObservable;
import org.apache.usergrid.corepersistence.util.CpNamingUtils;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.EntityCollectionManager;
import org.apache.usergrid.persistence.collection.EntityCollectionManagerFactory;
-import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.graph.Edge;
import org.apache.usergrid.persistence.graph.GraphManager;
@@ -81,12 +79,9 @@ public Observable getAllApplications() {
final ApplicationScope appScope = getApplicationScope( CpNamingUtils.SYSTEM_APP_ID );
- final CollectionScope appInfoCollectionScope =
- new CollectionScopeImpl( appScope.getApplication(), appScope.getApplication(),
- CpNamingUtils.getCollectionScopeNameFromCollectionName( CpNamingUtils.APPINFOS ) );
final EntityCollectionManager collectionManager =
- entityCollectionManagerFactory.createCollectionManager( appInfoCollectionScope );
+ entityCollectionManagerFactory.createCollectionManager( appScope );
final GraphManager gm = graphManagerFactory.createEdgeManager(appScope);
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/rx/impl/AllEntitiesInSystemImpl.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/rx/impl/AllEntitiesInSystemImpl.java
index 758a8aa6ac..83f7d84181 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/rx/impl/AllEntitiesInSystemImpl.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/rx/impl/AllEntitiesInSystemImpl.java
@@ -21,8 +21,6 @@
import org.apache.usergrid.corepersistence.AllApplicationsObservable;
-import org.apache.usergrid.corepersistence.util.CpNamingUtils;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.serialization.impl.migration.EntityIdScope;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.graph.GraphManagerFactory;
@@ -34,9 +32,8 @@
/**
- * An observable that will emit every entity Id stored in our entire system across all apps.
- * Note that this only walks each application applicationId graph, and emits edges from the applicationId and it's edges as the s
- * source node
+ * An observable that will emit every entity Id stored in our entire system across all apps. Note that this only walks
+ * each application applicationId graph, and emits edges from the applicationId and it's edges as the s source node
*/
@Singleton
public class AllEntitiesInSystemImpl extends AbstractGraphVisitorImpl {
@@ -52,11 +49,9 @@ public AllEntitiesInSystemImpl( final AllApplicationsObservable applicationObser
@Override
protected EntityIdScope generateData( final ApplicationScope applicationScope, final Id nodeId ) {
- CollectionScope scope =
- CpNamingUtils.getCollectionScopeNameFromEntityType( applicationScope.getApplication(), nodeId.getType() );
- final EntityIdScope idScope = new EntityIdScope( scope, nodeId );
+ final EntityIdScope idScope = new EntityIdScope( applicationScope, nodeId );
- return idScope;
+ return idScope;
}
}
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/util/CpNamingUtils.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/util/CpNamingUtils.java
index 58605e010a..2e9fb55012 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/util/CpNamingUtils.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/util/CpNamingUtils.java
@@ -22,8 +22,6 @@
import java.util.UUID;
import org.apache.usergrid.persistence.Schema;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
import org.apache.usergrid.persistence.entities.Application;
@@ -31,7 +29,6 @@
import org.apache.usergrid.persistence.map.impl.MapScopeImpl;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.entity.SimpleId;
-import rx.functions.Func1;
/**
@@ -77,15 +74,6 @@ public class CpNamingUtils {
- /**
- * Generate a collection scope for a collection within the application's Id for the given type
- * @param applicationId The applicationId that owns this entity
- * @param type The type in the collection
- * @return The collectionScope
- */
- public static CollectionScope getCollectionScopeNameFromEntityType(final Id applicationId, final String type){
- return new CollectionScopeImpl( applicationId, applicationId, getCollectionScopeNameFromEntityType( type ) );
- }
/**
* Get the collection name from the entity/id type
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManager.java b/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManager.java
index 7108472d73..d636cfcdf0 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManager.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManager.java
@@ -685,7 +685,7 @@ Mutator batchUpdateProperties(Mutator batch,
/** @return the cass */
CassandraService getCass();
- public void init( EntityManagerFactory emf, EntityIndex entityIndex, UUID applicationId);
+ public void init( EntityManagerFactory emf, UUID applicationId);
/** For testing purposes */
public void flushManagerCaches();
@@ -695,10 +695,6 @@ void reindexCollection(
public void reindex( final EntityManagerFactory.ProgressObserver po ) throws Exception;
- /**
- * Get health status of application's index.
- */
- public Health getIndexHealth();
public Entity getUniqueEntityFromAlias( String aliasType, String aliasValue );
}
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManagerFactory.java b/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManagerFactory.java
index 2a74c7456d..95e7e349b0 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManagerFactory.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManagerFactory.java
@@ -147,11 +147,13 @@ void rebuildCollectionIndex(
public Health getEntityStoreHealth();
+ public Health getIndexHealth();
+
void restoreApplication(UUID applicationId) throws Exception;
public interface ProgressObserver {
- public void onProgress( EntityRef entity);
+ public void onProgress( EntityRef entity);
}
}
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/EntityManagerFactoryImpl.java b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/EntityManagerFactoryImpl.java
index 0e1e62aec1..6627fa4cda 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/EntityManagerFactoryImpl.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/EntityManagerFactoryImpl.java
@@ -444,6 +444,13 @@ public Health getEntityStoreHealth() {
throw new UnsupportedOperationException("Not supported in v1.");
}
+
+ @Override
+ public Health getIndexHealth() {
+ return null;
+ }
+
+
@Override
public void restoreApplication(UUID applicationId) throws Exception {
throw new UnsupportedOperationException("Not supported in v1");
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/EntityManagerImpl.java b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/EntityManagerImpl.java
index 30872c9e51..82dfdd4c4c 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/EntityManagerImpl.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/EntityManagerImpl.java
@@ -215,7 +215,7 @@ public EntityManagerImpl() {
@Override
- public void init(EntityManagerFactory emf, EntityIndex entityIndex, UUID applicationId) {
+ public void init(EntityManagerFactory emf, UUID applicationId) {
init( (EntityManagerFactoryImpl)emf, null, null, applicationId, false);
}
@@ -2908,10 +2908,6 @@ public void reindex(EntityManagerFactory.ProgressObserver po) throws Exception {
throw new UnsupportedOperationException("Not supported.");
}
- @Override
- public Health getIndexHealth() {
- return Health.GREEN; // no good way to assess index status using old-school entity manager
- }
@Override
diff --git a/stack/core/src/test/java/org/apache/usergrid/corepersistence/StaleIndexCleanupTest.java b/stack/core/src/test/java/org/apache/usergrid/corepersistence/StaleIndexCleanupTest.java
index e27420b8b7..5c166c546c 100644
--- a/stack/core/src/test/java/org/apache/usergrid/corepersistence/StaleIndexCleanupTest.java
+++ b/stack/core/src/test/java/org/apache/usergrid/corepersistence/StaleIndexCleanupTest.java
@@ -24,7 +24,6 @@
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
-import org.apache.usergrid.persistence.index.*;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
@@ -42,11 +41,14 @@
import org.apache.usergrid.persistence.EntityManager;
import org.apache.usergrid.persistence.EntityRef;
import org.apache.usergrid.persistence.Results;
-import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.EntityCollectionManager;
import org.apache.usergrid.persistence.collection.EntityCollectionManagerFactory;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
+import org.apache.usergrid.persistence.index.ApplicationEntityIndex;
+import org.apache.usergrid.persistence.index.EntityIndexFactory;
+import org.apache.usergrid.persistence.index.IndexScope;
+import org.apache.usergrid.persistence.index.SearchTypes;
import org.apache.usergrid.persistence.index.impl.IndexScopeImpl;
import org.apache.usergrid.persistence.index.query.CandidateResults;
import org.apache.usergrid.persistence.index.query.Query;
@@ -58,7 +60,6 @@
import net.jcip.annotations.NotThreadSafe;
import static org.apache.usergrid.corepersistence.CoreModule.EVENTS_DISABLED;
-import static org.apache.usergrid.corepersistence.util.CpNamingUtils.getCollectionScopeNameFromEntityType;
import static org.apache.usergrid.persistence.Schema.TYPE_APPLICATION;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -462,13 +463,11 @@ private org.apache.usergrid.persistence.model.entity.Entity getCpEntity( EntityR
EntityManager em = app.getEntityManager();
- CollectionScope cs = getCollectionScopeNameFromEntityType(
- new SimpleId( em.getApplicationId(), TYPE_APPLICATION ), eref.getType() );
EntityCollectionManagerFactory ecmf =
SpringResource.getInstance().getBean( Injector.class ).getInstance( EntityCollectionManagerFactory.class );
- EntityCollectionManager ecm = ecmf.createCollectionManager( cs );
+ EntityCollectionManager ecm = ecmf.createCollectionManager( new ApplicationScopeImpl( new SimpleId(em.getApplicationId(), "application" ) ) );
return ecm.load( new SimpleId( eref.getUuid(), eref.getType() ) )
.toBlocking().lastOrDefault( null );
diff --git a/stack/core/src/test/java/org/apache/usergrid/corepersistence/migration/EntityTypeMappingMigrationIT.java b/stack/core/src/test/java/org/apache/usergrid/corepersistence/migration/EntityTypeMappingMigrationIT.java
index 88f56c85b0..84215a1ba3 100644
--- a/stack/core/src/test/java/org/apache/usergrid/corepersistence/migration/EntityTypeMappingMigrationIT.java
+++ b/stack/core/src/test/java/org/apache/usergrid/corepersistence/migration/EntityTypeMappingMigrationIT.java
@@ -25,11 +25,11 @@
import org.apache.usergrid.AbstractCoreIT;
import org.apache.usergrid.corepersistence.ManagerCache;
import org.apache.usergrid.corepersistence.util.CpNamingUtils;
-import org.apache.usergrid.persistence.collection.CollectionScope;
-import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
import org.apache.usergrid.persistence.collection.serialization.impl.migration.EntityIdScope;
import org.apache.usergrid.persistence.core.migration.data.TestMigrationDataProvider;
import org.apache.usergrid.persistence.core.migration.data.TestProgressObserver;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
import org.apache.usergrid.persistence.map.MapManager;
import org.apache.usergrid.persistence.map.MapScope;
import org.apache.usergrid.persistence.map.impl.MapScopeImpl;
@@ -56,7 +56,7 @@ public void testIdMapping() throws Throwable {
final Id applicationId = createId("application");
- final CollectionScope scope1 = new CollectionScopeImpl( applicationId, applicationId, "things" );
+ final ApplicationScope scope1 = new ApplicationScopeImpl( applicationId );
final Id entityId1 = createId("thing");
@@ -66,9 +66,7 @@ public void testIdMapping() throws Throwable {
- final Id subCollectionOwner = createId("owners");
-
- final CollectionScope scope2 = new CollectionScopeImpl( applicationId, subCollectionOwner, "foos" );
+ final ApplicationScope scope2 = new ApplicationScopeImpl( applicationId);
final Id entityId2 = createId("foo");
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/RootResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/RootResource.java
index e4086f9567..2a78fc6e94 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/RootResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/RootResource.java
@@ -186,8 +186,8 @@ public JSONWithPadding getStatus(
throw new RuntimeException("Error connecting to datastore");
}
- EntityManager em = emf.getEntityManager( emf.getManagementAppId() );
- if ( em.getIndexHealth().equals( Health.RED) ) {
+
+ if ( emf.getIndexHealth().equals( Health.RED) ) {
throw new RuntimeException("Management app index is status RED");
}
}
@@ -205,7 +205,7 @@ public JSONWithPadding getStatus(
// Core Persistence Query Index module status for Management App Index
EntityManager em = emf.getEntityManager( emf.getManagementAppId() );
- node.put( "managementAppIndexStatus", em.getIndexHealth().toString() );
+ node.put( "managementAppIndexStatus", emf.getIndexHealth().toString() );
dumpMetrics( node );
response.setProperty( "status", node );
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
index d7dcd87b4b..eef577571d 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
@@ -390,7 +390,7 @@ public Response getStatus() {
Map statusMap = new HashMap();
EntityManager em = emf.getEntityManager( applicationId );
- if ( !em.getIndexHealth().equals( Health.RED ) ) {
+ if ( !emf.getIndexHealth().equals( Health.RED ) ) {
statusMap.put("message", "Index Health Status RED for application " + applicationId );
return Response.status( SC_INTERNAL_SERVER_ERROR ).entity( statusMap ).build();
}
From 7975e4f3b204253a52a81c9e398f0e9e9ffb79c2 Mon Sep 17 00:00:00 2001
From: Todd Nine
Date: Fri, 27 Mar 2015 09:47:29 -0600
Subject: [PATCH 04/12] Merged from 2.0
---
.../persistence/index/impl/EsIndexBufferConsumerImpl.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsIndexBufferConsumerImpl.java b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsIndexBufferConsumerImpl.java
index d064b97f6f..6d5a4d853d 100644
--- a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsIndexBufferConsumerImpl.java
+++ b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsIndexBufferConsumerImpl.java
@@ -177,7 +177,8 @@ public void call( final Subscriber super List> subscrib
timer.stop();
}
-
+ //DO NOT add any doOnError* functions to this subscription. We want the producer
+ //to receive these exceptions and sleep before a retry
catch ( Throwable t ) {
final long sleepTime = config.getFailureRetryTime();
@@ -187,7 +188,6 @@ public void call( final Subscriber super List> subscrib
inFlight.addAndGet( -1 * drainList.size() );
}
-
try {
Thread.sleep( sleepTime );
}
From d20267bb5bc179e77f5174f1c338fbf7c7df9b99 Mon Sep 17 00:00:00 2001
From: ryan bridges
Date: Fri, 27 Mar 2015 12:48:43 -0400
Subject: [PATCH 05/12] [USERGRID-342] Added unimplemented remove method to
ElasticSearchQueryExecutor. Fixed merge artifact in AdminEmailEncodingIT
---
.../corepersistence/results/ElasticSearchQueryExecutor.java | 5 +++++
.../rest/management/organizations/AdminEmailEncodingIT.java | 6 +-----
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/results/ElasticSearchQueryExecutor.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/results/ElasticSearchQueryExecutor.java
index 535af36f53..2b1b75eb76 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/results/ElasticSearchQueryExecutor.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/results/ElasticSearchQueryExecutor.java
@@ -208,4 +208,9 @@ public Results next() {
return toReturn;
}
+
+ @Override
+ public void remove() {
+ throw new RuntimeException("Remove not implemented!!");
+ }
}
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/organizations/AdminEmailEncodingIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/organizations/AdminEmailEncodingIT.java
index 379a359567..eab98642ef 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/organizations/AdminEmailEncodingIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/organizations/AdminEmailEncodingIT.java
@@ -88,13 +88,9 @@ public void getTokenQuote() throws Exception {
* Given an organization name and an arbitrary character or string,
* ensure that an organization and admin user can be created when
* the given string is a part of the admin email address
-<<<<<<< HEAD
- * @param symbol
-=======
*
* @param symbol
- * @throws IOException
->>>>>>> b4727f1db4b3e3e312b6f40d25a42ee66246cfd7
+ * @throws UniformInterfaceException
*/
private void doTest(String symbol) throws UniformInterfaceException {
From cf3f7abee29d4bee17313d00fe3abf863260e685 Mon Sep 17 00:00:00 2001
From: Todd Nine
Date: Fri, 27 Mar 2015 16:08:32 -0600
Subject: [PATCH 06/12] Fixes hystrix thread pool size issue
---
.../mvcc/stage/write/WriteUniqueVerify.java | 4 ++--
.../impl/shard/count/NodeShardApproximationImpl.java | 11 ++++++++++-
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java
index b984ad8c73..564d036cb6 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java
@@ -218,6 +218,6 @@ public Map executeStrategy(ConsistencyLevel consistencyLevel){
*/
public static final HystrixCommand.Setter
REPLAY_GROUP = HystrixCommand.Setter.withGroupKey(
- HystrixCommandGroupKey.Factory.asKey( "user" ) ).andThreadPoolPropertiesDefaults(
- HystrixThreadPoolProperties.Setter().withCoreSize( 1000 ) );
+ HystrixCommandGroupKey.Factory.asKey( "uniqueVerify" ) ).andThreadPoolPropertiesDefaults(
+ HystrixThreadPoolProperties.Setter().withCoreSize( 100 ) );
}
diff --git a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/shard/count/NodeShardApproximationImpl.java b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/shard/count/NodeShardApproximationImpl.java
index a47d528ffc..fceb32ce0c 100644
--- a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/shard/count/NodeShardApproximationImpl.java
+++ b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/shard/count/NodeShardApproximationImpl.java
@@ -39,6 +39,7 @@
import com.netflix.astyanax.MutationBatch;
import com.netflix.hystrix.HystrixCommand;
import com.netflix.hystrix.HystrixCommandGroupKey;
+import com.netflix.hystrix.HystrixThreadPoolProperties;
import rx.functions.Action0;
import rx.schedulers.Schedulers;
@@ -75,6 +76,14 @@ public class NodeShardApproximationImpl implements NodeShardApproximation {
private final FlushWorker worker;
+ /**
+ * Command group used for realtime user commands
+ */
+ public static final HystrixCommand.Setter
+ COUNT_GROUP = HystrixCommand.Setter.withGroupKey(
+ HystrixCommandGroupKey.Factory.asKey( "BatchCounterRollup" ) ).andThreadPoolPropertiesDefaults(
+ HystrixThreadPoolProperties.Setter().withCoreSize( 100 ) );
+
/**
* Create a time shard approximation with the correct configuration.
@@ -229,7 +238,7 @@ public void call() {
/**
* Execute the command in hystrix to avoid slamming cassandra
*/
- new HystrixCommand( HystrixCommandGroupKey.Factory.asKey("BatchCounterRollup") ) {
+ new HystrixCommand( COUNT_GROUP ) {
@Override
protected Void run() throws Exception {
From 7c356d8b2ab256bb20c498c11924820441f5495f Mon Sep 17 00:00:00 2001
From: Todd Nine
Date: Mon, 30 Mar 2015 09:45:46 -0600
Subject: [PATCH 07/12] Refactored index scope generation to be more consistent
and clean
Moved some newly private methods to test utils
Added onStart event to the observable iterator
Removes group by collection type from filtering loader
---
.../corepersistence/CpEntityManager.java | 29 +---
.../corepersistence/CpRelationManager.java | 61 +++-----
.../usergrid/corepersistence/CpWalker.java | 4 +-
.../events/EntityDeletedHandler.java | 31 ++--
.../events/EntityVersionCreatedHandler.java | 2 +-
.../events/EntityVersionDeletedHandler.java | 87 +++++++++---
.../results/FilteringLoader.java | 108 ++++++--------
.../corepersistence/util/CpNamingUtils.java | 134 +++++++++++++++---
.../StaleIndexCleanupTest.java | 10 +-
.../rx/EdgesFromSourceObservableIT.java | 9 +-
.../rx/EdgesToTargetObservableIT.java | 53 ++++---
.../apache/usergrid/utils/EdgeTestUtils.java | 50 +++++++
.../core/rx/ObservableIterator.java | 2 +
13 files changed, 347 insertions(+), 233 deletions(-)
create mode 100644 stack/core/src/test/java/org/apache/usergrid/utils/EdgeTestUtils.java
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java
index c45c39038a..a7dda13626 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java
@@ -69,7 +69,6 @@
import org.apache.usergrid.persistence.collection.exception.WriteUniqueVerifyException;
import org.apache.usergrid.persistence.core.metrics.MetricsFactory;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
-import org.apache.usergrid.persistence.core.util.Health;
import org.apache.usergrid.persistence.entities.Application;
import org.apache.usergrid.persistence.entities.Event;
import org.apache.usergrid.persistence.entities.Group;
@@ -80,10 +79,8 @@
import org.apache.usergrid.persistence.exceptions.RequiredPropertyNotFoundException;
import org.apache.usergrid.persistence.exceptions.UnexpectedEntityTypeException;
import org.apache.usergrid.persistence.index.ApplicationEntityIndex;
-import org.apache.usergrid.persistence.index.EntityIndex;
import org.apache.usergrid.persistence.index.EntityIndexBatch;
import org.apache.usergrid.persistence.index.IndexScope;
-import org.apache.usergrid.persistence.index.impl.IndexScopeImpl;
import org.apache.usergrid.persistence.index.query.CounterResolution;
import org.apache.usergrid.persistence.index.query.Identifier;
import org.apache.usergrid.persistence.index.query.Query;
@@ -104,7 +101,6 @@
import com.codahale.metrics.Meter;
import com.codahale.metrics.Timer;
import com.google.common.base.Preconditions;
-import com.netflix.hystrix.exception.HystrixRuntimeException;
import me.prettyprint.hector.api.Keyspace;
import me.prettyprint.hector.api.beans.ColumnSlice;
@@ -129,7 +125,7 @@
import static org.apache.commons.lang.StringUtils.capitalize;
import static org.apache.commons.lang.StringUtils.isBlank;
import static org.apache.usergrid.corepersistence.util.CpEntityMapUtils.entityToCpEntity;
-import static org.apache.usergrid.corepersistence.util.CpNamingUtils.getCollectionScopeNameFromEntityType;
+import static org.apache.usergrid.corepersistence.util.CpNamingUtils.generateScopeFromCollection;
import static org.apache.usergrid.persistence.Schema.COLLECTION_ROLES;
import static org.apache.usergrid.persistence.Schema.COLLECTION_USERS;
import static org.apache.usergrid.persistence.Schema.DICTIONARY_PERMISSIONS;
@@ -602,15 +598,6 @@ public void update( Entity entity ) throws Exception {
catch ( WriteUniqueVerifyException wuve ) {
handleWriteUniqueVerifyException( entity, wuve );
}
- catch ( HystrixRuntimeException hre ) {
-
- if ( hre.getCause() instanceof WriteUniqueVerifyException ) {
- WriteUniqueVerifyException wuve = ( WriteUniqueVerifyException ) hre.getCause();
- handleWriteUniqueVerifyException( entity, wuve );
- }
-
- throw hre;
- }
// update in all containing collections and connection indexes
CpRelationManager rm = ( CpRelationManager ) getRelationManager( entity );
@@ -1040,10 +1027,6 @@ public void updateProperties( EntityRef ref, Map properties ) th
@Override
public void deleteProperty( EntityRef entityRef, String propertyName ) throws Exception {
- IndexScope defaultIndexScope = new IndexScopeImpl( getApplicationScope().getApplication(),
- getCollectionScopeNameFromEntityType( entityRef.getType() ) );
-
-
Id entityId = new SimpleId( entityRef.getUuid(), entityRef.getType() );
// if ( !UUIDUtils.isTimeBased( entityId.getUuid() ) ) {
@@ -2614,13 +2597,7 @@ else if ( ( v instanceof String ) && isBlank( ( String ) v ) ) {
catch ( WriteUniqueVerifyException wuve ) {
handleWriteUniqueVerifyException( entity, wuve );
}
- catch ( HystrixRuntimeException hre ) {
- if ( hre.getCause() instanceof WriteUniqueVerifyException ) {
- WriteUniqueVerifyException wuve = ( WriteUniqueVerifyException ) hre.getCause();
- handleWriteUniqueVerifyException( entity, wuve );
- }
- }
// Index CP entity into default collection scope
// IndexScope defaultIndexScope = new IndexScopeImpl(
@@ -2915,9 +2892,7 @@ void indexEntityIntoCollection( org.apache.usergrid.persistence.model.entity.Ent
final EntityIndexBatch batch = aie.createBatch();
// index member into entity collection | type scope
- IndexScope collectionIndexScope = new IndexScopeImpl( collectionEntity.getId(),
- CpNamingUtils.getCollectionScopeNameFromCollectionName( collName ) );
-
+ IndexScope collectionIndexScope = generateScopeFromCollection( collectionEntity.getId(), collName );
batch.index( collectionIndexScope, memberEntity );
//TODO REMOVE INDEX CODE
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
index 3427684cb8..b76f38f05e 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
@@ -79,7 +79,6 @@
import org.apache.usergrid.persistence.index.EntityIndexBatch;
import org.apache.usergrid.persistence.index.IndexScope;
import org.apache.usergrid.persistence.index.SearchTypes;
-import org.apache.usergrid.persistence.index.impl.IndexScopeImpl;
import org.apache.usergrid.persistence.index.query.Identifier;
import org.apache.usergrid.persistence.index.query.Query;
import org.apache.usergrid.persistence.index.query.Query.Level;
@@ -118,6 +117,11 @@
import static java.util.Arrays.asList;
import static me.prettyprint.hector.api.factory.HFactory.createMutator;
+import static org.apache.usergrid.corepersistence.util.CpNamingUtils.createId;
+import static org.apache.usergrid.corepersistence.util.CpNamingUtils.generateScopeFromSource;
+import static org.apache.usergrid.corepersistence.util.CpNamingUtils.generateScopeFromCollection;
+import static org.apache.usergrid.corepersistence.util.CpNamingUtils.generateScopeFromConnection;
+import static org.apache.usergrid.corepersistence.util.CpNamingUtils.getNameFromEdgeType;
import static org.apache.usergrid.persistence.Schema.COLLECTION_ROLES;
import static org.apache.usergrid.persistence.Schema.DICTIONARY_CONNECTED_ENTITIES;
import static org.apache.usergrid.persistence.Schema.DICTIONARY_CONNECTED_TYPES;
@@ -342,13 +346,7 @@ public Observable call( final String edgeType ) {
final EntityRef eref =
new SimpleEntityRef( edge.getSourceNode().getType(), edge.getSourceNode().getUuid() );
- String name;
- if ( CpNamingUtils.isConnectionEdgeType( edge.getType() ) ) {
- name = CpNamingUtils.getConnectionType( edge.getType() );
- }
- else {
- name = CpNamingUtils.getCollectionName( edge.getType() );
- }
+ String name = getNameFromEdgeType(edge.getType());
addMapSet( entityRefSetMap, eref, name );
}
).toBlocking().last();
@@ -398,26 +396,11 @@ public Observable call( final String etype ) {
@Override
public void call( final Edge edge ) {
- EntityRef sourceEntity =
- new SimpleEntityRef( edge.getSourceNode().getType(), edge.getSourceNode().getUuid() );
// reindex the entity in the source entity's collection or connection index
- IndexScope indexScope;
- if ( CpNamingUtils.isCollectionEdgeType( edge.getType() ) ) {
-
- String collName = CpNamingUtils.getCollectionName( edge.getType() );
- indexScope = new IndexScopeImpl(
- new SimpleId( sourceEntity.getUuid(), sourceEntity.getType()),
- CpNamingUtils.getCollectionScopeNameFromCollectionName( collName ));
- }
- else {
+ IndexScope indexScope = generateScopeFromSource(edge);
- String connName = CpNamingUtils.getConnectionType( edge.getType() );
- indexScope = new IndexScopeImpl(
- new SimpleId( sourceEntity.getUuid(), sourceEntity.getType() ),
- CpNamingUtils.getConnectionScopeName( connName ) );
- }
entityIndexBatch.index( indexScope, cpEntity );
@@ -551,7 +534,7 @@ public Set getCollections() throws Exception {
Iterator iter = str.toBlocking().getIterator();
while ( iter.hasNext() ) {
String edgeType = iter.next();
- indexes.add( CpNamingUtils.getCollectionName( edgeType ) );
+ indexes.add( getNameFromEdgeType( edgeType ) );
}
return indexes;
@@ -796,22 +779,18 @@ public void removeFromCollection( String collName, EntityRef itemRef ) throws Ex
final EntityIndexBatch batch = ei.createBatch();
// remove item from collection index
- IndexScope indexScope = new IndexScopeImpl(
- cpHeadEntity.getId(),
- CpNamingUtils.getCollectionScopeNameFromCollectionName( collName ) );
+ IndexScope indexScope = generateScopeFromCollection( cpHeadEntity.getId(), collName );
batch.deindex( indexScope, memberEntity );
// remove collection from item index
- IndexScope itemScope = new IndexScopeImpl(
- memberEntity.getId(),
- CpNamingUtils.getCollectionScopeNameFromCollectionName(
- Schema.defaultCollectionName( cpHeadEntity.getId().getType() ) ) );
+ IndexScope itemScope = generateScopeFromCollection( memberEntity.getId(),
+ Schema.defaultCollectionName( cpHeadEntity.getId().getType() ) );
batch.deindex( itemScope, cpHeadEntity );
- BetterFuture future = batch.execute();
+ batch.execute();
// remove edge from collection to item
GraphManager gm = managerCache.getGraphManager( applicationScope );
@@ -905,9 +884,7 @@ public Results searchCollection( String collName, Query query ) throws Exception
+ "' of " + headEntity.getType() + ":" + headEntity .getUuid() );
}
- final IndexScope indexScope = new IndexScopeImpl(
- cpHeadEntity.getId(),
- CpNamingUtils.getCollectionScopeNameFromCollectionName( collName ) );
+ final IndexScope indexScope = generateScopeFromCollection( cpHeadEntity.getId(), collName );
final ApplicationEntityIndex ei = managerCache.getEntityIndex( applicationScope );
@@ -978,8 +955,7 @@ public ConnectionRef createConnection( String connectionType, EntityRef connecte
EntityIndexBatch batch = ei.createBatch();
// Index the new connection in app|source|type context
- IndexScope indexScope = new IndexScopeImpl( cpHeadEntity.getId(),
- CpNamingUtils.getConnectionScopeName( connectionType ) );
+ IndexScope indexScope = generateScopeFromConnection( cpHeadEntity.getId(), connectionType );
batch.index( indexScope, targetEntity );
@@ -1208,10 +1184,8 @@ public void deleteConnection( ConnectionRef connectionRef ) throws Exception {
final EntityIndexBatch batch = ei.createBatch();
// Deindex the connection in app|source|type context
- IndexScope indexScope = new IndexScopeImpl(
- new SimpleId( connectingEntityRef.getUuid(),
- connectingEntityRef.getType() ),
- CpNamingUtils.getConnectionScopeName( connectionType ) );
+ final Id cpId = createId( connectingEntityRef );
+ IndexScope indexScope = generateScopeFromConnection( cpId, connectionType );
batch.deindex( indexScope, targetEntity );
// Deindex the connection in app|source|type context
@@ -1334,8 +1308,7 @@ public Results searchConnectedEntities( Query query ) throws Exception {
headEntity = em.validate( headEntity );
- final IndexScope indexScope = new IndexScopeImpl( cpHeadEntity.getId(),
- CpNamingUtils.getConnectionScopeName( connection ) );
+ final IndexScope indexScope = generateScopeFromConnection( cpHeadEntity.getId(), connection );
final SearchTypes searchTypes = SearchTypes.fromNullableTypes( query.getEntityType() );
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpWalker.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpWalker.java
index c14447dd1b..3f2c9d69b2 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpWalker.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpWalker.java
@@ -36,6 +36,8 @@
import rx.functions.Func1;
import rx.schedulers.Schedulers;
+import static org.apache.usergrid.corepersistence.util.CpNamingUtils.getNameFromEdgeType;
+
/**
* Takes a visitor to all collections and entities.
@@ -128,7 +130,7 @@ private void doWalkCollections(
if ( entity == null ) {
return;
}
- String collName = CpNamingUtils.getCollectionName( edgeValue.getType() );
+ String collName = getNameFromEdgeType( edgeValue.getType() );
visitor.visitCollectionEntry( em, collName, entity );
} ).subscribeOn( Schedulers.io() );
}, 100 );
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityDeletedHandler.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityDeletedHandler.java
index 78c1ca7cfd..57d69bc12e 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityDeletedHandler.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityDeletedHandler.java
@@ -65,21 +65,22 @@ public void deleted( ApplicationScope scope, Id entityId, UUID version ) {
return;
}
-
-
- if(logger.isDebugEnabled()) {
- logger.debug(
- "Handling deleted event for entity {}:{} v {} " + " app: {}",
- new Object[] {
- entityId.getType(), entityId.getUuid(), version,
- scope.getApplication()
- } );
- }
-
- CpEntityManagerFactory cpemf = ( CpEntityManagerFactory ) emf;
- final ApplicationEntityIndex ei = cpemf.getManagerCache().getEntityIndex( scope );
-
- throw new NotImplementedException( "Fix this" );
+// This is a NO-OP now, it's handled by the EntityVersionDeletedHandler
+
+//
+// if(logger.isDebugEnabled()) {
+// logger.debug(
+// "Handling deleted event for entity {}:{} v {} " + " app: {}",
+// new Object[] {
+// entityId.getType(), entityId.getUuid(), version,
+// scope.getApplication()
+// } );
+// }
+//
+// CpEntityManagerFactory cpemf = ( CpEntityManagerFactory ) emf;
+// final ApplicationEntityIndex ei = cpemf.getManagerCache().getEntityIndex( scope );
+
+// throw new NotImplementedException( "Fix this" );
//read all edges to this node and de-index them
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityVersionCreatedHandler.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityVersionCreatedHandler.java
index c00050046d..0163fc237a 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityVersionCreatedHandler.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityVersionCreatedHandler.java
@@ -55,7 +55,7 @@ public EntityVersionCreatedHandler( final EntityManagerFactory emf,
@Override
public void versionCreated( final ApplicationScope scope, final Entity entity ) {
- //not op, we're not migrating properly to this. Make this an event
+ //not op, we're not migrating properly to this. Make this an event At the moment this is happening on write
// // This check is for testing purposes and for a test that to be able to dynamically turn
// // off and on delete previous versions so that it can test clean-up on read.
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityVersionDeletedHandler.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityVersionDeletedHandler.java
index 4fa5ce18ee..a2e9b3064c 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityVersionDeletedHandler.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/events/EntityVersionDeletedHandler.java
@@ -24,18 +24,30 @@
import org.slf4j.LoggerFactory;
import org.apache.usergrid.corepersistence.CpEntityManagerFactory;
-import org.apache.usergrid.exception.NotImplementedException;
+import org.apache.usergrid.corepersistence.util.CpNamingUtils;
import org.apache.usergrid.persistence.EntityManagerFactory;
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.event.EntityVersionDeleted;
+import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.graph.Edge;
+import org.apache.usergrid.persistence.graph.GraphManager;
+import org.apache.usergrid.persistence.graph.serialization.EdgesObservable;
import org.apache.usergrid.persistence.index.ApplicationEntityIndex;
+import org.apache.usergrid.persistence.index.EntityIndexBatch;
+import org.apache.usergrid.persistence.index.IndexBatchBuffer;
+import org.apache.usergrid.persistence.index.IndexScope;
+import org.apache.usergrid.persistence.index.impl.IndexScopeImpl;
import org.apache.usergrid.persistence.model.entity.Id;
import com.google.inject.Inject;
import com.google.inject.Singleton;
+import rx.Observable;
+
import static org.apache.usergrid.corepersistence.CoreModule.EVENTS_DISABLED;
+import static org.apache.usergrid.corepersistence.util.CpNamingUtils.generateScopeFromSource;
+import static org.apache.usergrid.corepersistence.util.CpNamingUtils.generateScopeToTarget;
/**
@@ -49,10 +61,17 @@ public class EntityVersionDeletedHandler implements EntityVersionDeleted {
private final EntityManagerFactory emf;
+ private final EdgesObservable edgesObservable;
+ private final SerializationFig serializationFig;
@Inject
- public EntityVersionDeletedHandler( final EntityManagerFactory emf ) {this.emf = emf;}
+ public EntityVersionDeletedHandler( final EntityManagerFactory emf, final EdgesObservable edgesObservable,
+ final SerializationFig serializationFig ) {
+ this.emf = emf;
+ this.edgesObservable = edgesObservable;
+ this.serializationFig = serializationFig;
+ }
@Override
@@ -67,32 +86,60 @@ public void versionDeleted( final ApplicationScope scope, final Id entityId,
}
if ( logger.isDebugEnabled() ) {
- logger.debug( "Handling versionDeleted count={} event for entity {}:{} v {} "
- + " app: {}", new Object[] {
- entityVersions.size(), entityId.getType(), entityId.getUuid(),
- scope.getApplication()
- } );
+ logger.debug( "Handling versionDeleted count={} event for entity {}:{} v {} " + " app: {}", new Object[] {
+ entityVersions.size(), entityId.getType(), entityId.getUuid(), scope.getApplication()
+ } );
}
CpEntityManagerFactory cpemf = ( CpEntityManagerFactory ) emf;
final ApplicationEntityIndex ei = cpemf.getManagerCache().getEntityIndex( scope );
+ final GraphManager gm = cpemf.getManagerCache().getGraphManager( scope );
+
+
+ //create an observable of all scopes to deIndex
+ //remove all indexes pointing to this
+ final Observable targetScopes = edgesObservable.edgesToTarget( gm, entityId ).map(
+ edge -> generateScopeFromSource( edge) );
+
+
+ //Remove all double indexes
+ final Observable sourceScopes = edgesObservable.edgesFromSource( gm, entityId ).map(
+ edge -> generateScopeToTarget( edge ) );
+
+
+ //create a stream of scopes
+ final Observable versions = Observable.merge( targetScopes, sourceScopes ).flatMap(
+ indexScope -> Observable.from( entityVersions )
+ .map( version -> new IndexScopeVersion( indexScope, version ) ) );
+
+ //create a set of batches
+ final Observable batches = versions.buffer( serializationFig.getBufferSize() ).flatMap(
+ bufferedVersions -> Observable.from( bufferedVersions ).collect( () -> ei.createBatch(),
+ ( EntityIndexBatch batch, IndexScopeVersion version ) -> {
+ //deindex in this batch
+ batch.deindex( version.scope, version.version.getEntityId(), version.version.getVersion() );
+ } ) );
- throw new NotImplementedException( "Fix this" );
+ //execute the batches
+ batches.doOnNext( batch -> batch.execute() ).toBlocking().last();
-// final IndexScope indexScope =
-// new IndexScopeImpl( new SimpleId( scope.getOwner().getUuid(), scope.getOwner().getType() ),
-// scope.getName() );
-//
-// //create our batch, and then collect all of them into a single batch
-// Observable.from( entityVersions ).collect( () -> ei.createBatch(), ( entityIndexBatch, mvccLogEntry ) -> {
-// entityIndexBatch.deindex( indexScope, mvccLogEntry.getEntityId(), mvccLogEntry.getVersion() );
-// } )
-// //after our batch is collected, execute it
-// .doOnNext( entityIndexBatch -> {
-// entityIndexBatch.execute();
-// } ).toBlocking().last();
+ }
+
+
+
+
+
+ private static final class IndexScopeVersion{
+ private final IndexScope scope;
+ private final MvccLogEntry version;
+
+
+ private IndexScopeVersion( final IndexScope scope, final MvccLogEntry version ) {
+ this.scope = scope;
+ this.version = version;
+ }
}
}
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/results/FilteringLoader.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/results/FilteringLoader.java
index 2eb6675bb5..c12bb2c551 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/results/FilteringLoader.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/results/FilteringLoader.java
@@ -24,7 +24,6 @@
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
-import java.util.Set;
import java.util.TreeMap;
import java.util.UUID;
@@ -34,7 +33,6 @@
import org.slf4j.LoggerFactory;
import org.apache.usergrid.corepersistence.ManagerCache;
-import org.apache.usergrid.corepersistence.util.CpNamingUtils;
import org.apache.usergrid.persistence.Results;
import org.apache.usergrid.persistence.collection.EntityCollectionManager;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
@@ -48,7 +46,6 @@
import com.fasterxml.uuid.UUIDComparator;
import com.google.common.base.Function;
import com.google.common.collect.Collections2;
-import com.google.common.collect.HashMultimap;
public class FilteringLoader implements ResultsLoader {
@@ -64,16 +61,14 @@ public class FilteringLoader implements ResultsLoader {
/**
* Create an instance of a filter loader
+ *
* @param managerCache The manager cache to load
- * @param resultsVerifier The verifier to verify the candidate results
+ * @param resultsVerifier The verifier to verify the candidate results
* @param applicationScope The application scope to perform the load
* @param indexScope The index scope used in the search
*/
- protected FilteringLoader(
- final ManagerCache managerCache,
- final ResultsVerifier resultsVerifier,
- final ApplicationScope applicationScope,
- final IndexScope indexScope ) {
+ protected FilteringLoader( final ManagerCache managerCache, final ResultsVerifier resultsVerifier,
+ final ApplicationScope applicationScope, final IndexScope indexScope ) {
this.managerCache = managerCache;
this.resultsVerifier = resultsVerifier;
@@ -90,7 +85,7 @@ protected FilteringLoader(
public Results loadResults( final CandidateResults crs ) {
- if(crs.size() == 0){
+ if ( crs.size() == 0 ) {
return new Results();
}
@@ -101,11 +96,6 @@ public Results loadResults( final CandidateResults crs ) {
// Maps the entity ids to our candidates
final Map maxCandidateMapping = new HashMap<>( crs.size() );
- // Groups all candidate results by types. When search connections there will be multiple
- // types, so we want to batch fetch them more efficiently
-
- final HashMultimap groupedByScopes =
- HashMultimap.create( crs.size(), crs.size() );
final Iterator iter = crs.iterator();
@@ -119,9 +109,6 @@ public Results loadResults( final CandidateResults crs ) {
final CandidateResult currentCandidate = iter.next();
- final String collectionType = CpNamingUtils.getCollectionScopeNameFromEntityType(
- currentCandidate.getId().getType() );
-
final Id entityId = currentCandidate.getId();
//check if we've seen this candidate by id
@@ -131,7 +118,6 @@ public Results loadResults( final CandidateResults crs ) {
if ( previousMax == null ) {
maxCandidateMapping.put( entityId, currentCandidate );
orderIndex.put( entityId, i );
- groupedByScopes.put( collectionType, currentCandidate );
continue;
}
@@ -146,12 +132,12 @@ public Results loadResults( final CandidateResults crs ) {
final CandidateResult toKeep;
//current is newer than previous. Remove previous and keep current
- if(UUIDComparator.staticCompare( currentVersion, previousMaxVersion ) > 0 ){
+ if ( UUIDComparator.staticCompare( currentVersion, previousMaxVersion ) > 0 ) {
toRemove = previousMax;
toKeep = currentCandidate;
}
//previously seen value is newer than current. Remove the current and keep the previously seen value
- else{
+ else {
toRemove = currentCandidate;
toKeep = previousMax;
}
@@ -160,17 +146,13 @@ public Results loadResults( final CandidateResults crs ) {
//de-index it
- logger.warn( "Stale version of Entity uuid:{} type:{}, stale v:{}, latest v:{}",
- new Object[] {
- entityId.getUuid(),
- entityId.getType(),
- toRemove.getVersion(),
- toKeep.getVersion() } );
+ logger.warn( "Stale version of Entity uuid:{} type:{}, stale v:{}, latest v:{}", new Object[] {
+ entityId.getUuid(), entityId.getType(), toRemove.getVersion(), toKeep.getVersion()
+ } );
//deindex this document, and remove the previous maxVersion
//we have to deindex this from our ownerId, since this is what gave us the reference
indexBatch.deindex( indexScope, toRemove );
- groupedByScopes.remove( collectionType, toRemove );
//TODO, fire the entity repair cleanup task here instead of de-indexing
@@ -178,7 +160,6 @@ public Results loadResults( final CandidateResults crs ) {
//replace the value with a more current version
maxCandidateMapping.put( entityId, toKeep );
orderIndex.put( entityId, i );
- groupedByScopes.put( collectionType, toKeep );
}
@@ -187,57 +168,52 @@ public Results loadResults( final CandidateResults crs ) {
final TreeMap sortedResults = new TreeMap<>();
- for ( final String scopeName : groupedByScopes.keySet() ) {
-
- final Set candidateResults = groupedByScopes.get( scopeName );
-
- final Collection idsToLoad =
- Collections2.transform( candidateResults, new Function() {
- @Nullable
- @Override
- public Id apply( @Nullable final CandidateResult input ) {
- //NOTE this is never null, we won't need to check
- return input.getId();
- }
- } );
+ final Collection idsToLoad =
+ Collections2.transform( maxCandidateMapping.values(), new Function() {
+ @Nullable
+ @Override
+ public Id apply( @Nullable final CandidateResult input ) {
+ //NOTE this is never null, we won't need to check
+ return input.getId();
+ }
+ } );
- //now using the scope, load the collection
+ //now using the scope, load the collection
- // Get the collection scope and batch load all the versions. We put all entities in
- // app/app for easy retrieval/ unless persistence changes, we never want to read from
- // any scope other than the app, app, scope name scope
-// final CollectionScope collScope = new CollectionScopeImpl(
-// applicationScope.getApplication(), applicationScope.getApplication(), scopeName);
+ // Get the collection scope and batch load all the versions. We put all entities in
+ // app/app for easy retrieval/ unless persistence changes, we never want to read from
+ // any scope other than the app, app, scope name scope
+ // final CollectionScope collScope = new CollectionScopeImpl(
+ // applicationScope.getApplication(), applicationScope.getApplication(), scopeName);
- final EntityCollectionManager ecm = managerCache.getEntityCollectionManager( applicationScope);
+ final EntityCollectionManager ecm = managerCache.getEntityCollectionManager( applicationScope );
- //load the results into the loader for this scope for validation
- resultsVerifier.loadResults( idsToLoad, ecm );
+ //load the results into the loader for this scope for validation
+ resultsVerifier.loadResults( idsToLoad, ecm );
- //now let the loader validate each candidate. For instance, the "max" in this candidate
- //could still be a stale result, so it needs validated
- for ( final Id requestedId : idsToLoad ) {
+ //now let the loader validate each candidate. For instance, the "max" in this candidate
+ //could still be a stale result, so it needs validated
+ for ( final Id requestedId : idsToLoad ) {
- final CandidateResult cr = maxCandidateMapping.get( requestedId );
+ final CandidateResult cr = maxCandidateMapping.get( requestedId );
- //ask the loader if this is valid, if not discard it and de-index it
- if ( !resultsVerifier.isValid( cr ) ) {
- indexBatch.deindex( indexScope, cr );
- continue;
- }
+ //ask the loader if this is valid, if not discard it and de-index it
+ if ( !resultsVerifier.isValid( cr ) ) {
+ indexBatch.deindex( indexScope, cr );
+ continue;
+ }
- //if we get here we're good, we need to add this to our results
- final int candidateIndex = orderIndex.get( requestedId );
+ //if we get here we're good, we need to add this to our results
+ final int candidateIndex = orderIndex.get( requestedId );
- sortedResults.put( candidateIndex, requestedId );
- }
+ sortedResults.put( candidateIndex, requestedId );
}
- // NOTE DO NOT execute the batch here.
+ // NOTE DO NOT execute the batch here.
// It changes the results and we need consistent paging until we aggregate all results
return resultsVerifier.getResults( sortedResults.values() );
}
@@ -247,6 +223,4 @@ public Id apply( @Nullable final CandidateResult input ) {
public void postProcess() {
this.indexBatch.execute();
}
-
-
}
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/util/CpNamingUtils.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/util/CpNamingUtils.java
index 2e9fb55012..652742b95a 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/util/CpNamingUtils.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/util/CpNamingUtils.java
@@ -21,15 +21,21 @@
import java.util.UUID;
+import org.apache.usergrid.persistence.EntityRef;
import org.apache.usergrid.persistence.Schema;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
import org.apache.usergrid.persistence.entities.Application;
+import org.apache.usergrid.persistence.graph.Edge;
+import org.apache.usergrid.persistence.index.IndexScope;
+import org.apache.usergrid.persistence.index.impl.IndexScopeImpl;
import org.apache.usergrid.persistence.map.MapScope;
import org.apache.usergrid.persistence.map.impl.MapScopeImpl;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.entity.SimpleId;
+import com.clearspring.analytics.util.Preconditions;
+
/**
* Utilises for constructing standard naming conventions for collections and connections
@@ -80,66 +86,150 @@ public class CpNamingUtils {
* @param type
* @return
*/
- public static String getCollectionScopeNameFromEntityType( String type ) {
+ private static String getCollectionScopeNameFromEntityType( String type ) {
String csn = EDGE_COLL_SUFFIX + Schema.defaultCollectionName( type );
return csn.toLowerCase();
}
- public static String getCollectionScopeNameFromCollectionName( String name ) {
+ private static String getCollectionScopeNameFromCollectionName( String name ) {
String csn = EDGE_COLL_SUFFIX + name;
return csn.toLowerCase();
}
- public static String getConnectionScopeName( String connectionType ) {
+ private static String getConnectionScopeName( String connectionType ) {
String csn = EDGE_CONN_SUFFIX + connectionType ;
return csn.toLowerCase();
}
- public static boolean isCollectionEdgeType( String type ) {
+ /**
+ * Get the index scope for the edge from the source
+ * @param edge
+ * @return
+ */
+ public static IndexScope generateScopeFromSource(final Edge edge ){
+
+
+ final Id nodeId = edge.getSourceNode();
+ final String scopeName = getNameFromEdgeType( edge.getType() );
+
+
+ return new IndexScopeImpl( nodeId, scopeName );
+
+ }
+
+
+
+
+
+ /**
+ * Get the index scope for the edge from the source
+ * @param edge
+ * @return
+ */
+ public static IndexScope generateScopeToTarget(final Edge edge ){
+
+
+
+ final Id nodeId = edge.getTargetNode();
+ final String scopeName = getNameFromEdgeType( edge.getType() );
+
+
+ return new IndexScopeImpl( nodeId, scopeName );
+
+ }
+
+
+ /**
+ * Generate either the collection name or connection name from the edgeName
+ * @param edgeName
+ * @return
+ */
+ public static String getNameFromEdgeType(final String edgeName){
+
+
+ if(isCollectionEdgeType( edgeName )){
+ return getCollectionScopeNameFromCollectionName(getCollectionName(edgeName) );
+ }
+
+ return getConnectionScopeName(getConnectionType( edgeName ) );
+
+ }
+
+
+ /**
+ * Get the index scope from the colleciton name
+ * @param nodeId The source or target node id
+ * @param collectionName The name of the collection. Ex "users"
+ * @return
+ */
+ public static IndexScope generateScopeFromCollection( final Id nodeId, final String collectionName ){
+ return new IndexScopeImpl( nodeId, getCollectionScopeNameFromCollectionName( collectionName ) );
+ }
+
+
+ /**
+ * Get the scope from the connection
+ * @param nodeId
+ * @param connectionName
+ * @return
+ */
+ public static IndexScope generateScopeFromConnection( final Id nodeId, final String connectionName ){
+ return new IndexScopeImpl( nodeId, getConnectionScopeName( connectionName ) );
+ }
+
+
+ /**
+ * Create an Id object from the entity ref
+ * @param entityRef
+ * @return
+ */
+ public static Id createId(final EntityRef entityRef){
+ return new SimpleId( entityRef.getUuid(), entityRef.getType() );
+ }
+
+ private static boolean isCollectionEdgeType( String type ) {
return type.startsWith( EDGE_COLL_SUFFIX );
}
- public static boolean isConnectionEdgeType( String type ) {
+ private static boolean isConnectionEdgeType( String type ) {
return type.startsWith( EDGE_CONN_SUFFIX );
}
- static public String getConnectionType( String edgeType ) {
+
+ private static String getConnectionType( String edgeType ) {
String[] parts = edgeType.split( "\\|" );
return parts[1];
}
- static public String getCollectionName( String edgeType ) {
+ private static String getCollectionName( String edgeType ) {
String[] parts = edgeType.split( "\\|" );
return parts[1];
}
+ /**
+ * Generate a standard edge name for our graph using the connection name
+ * @param connectionType The type of connection made
+ * @return
+ */
public static String getEdgeTypeFromConnectionType( String connectionType ) {
-
- if ( connectionType != null ) {
- String csn = EDGE_CONN_SUFFIX + "|" + connectionType;
- return csn;
- }
-
- return null;
+ return (EDGE_CONN_SUFFIX + "|" + connectionType).toLowerCase();
}
+ /**
+ * Generate a standard edges from for a collection
+ * @param collectionName
+ * @return
+ */
public static String getEdgeTypeFromCollectionName( String collectionName ) {
-
- if ( collectionName != null ) {
- String csn = EDGE_COLL_SUFFIX + "|" + collectionName;
- return csn;
- }
-
-
- return null;
+ return (EDGE_COLL_SUFFIX + "|" + collectionName).toLowerCase();
}
diff --git a/stack/core/src/test/java/org/apache/usergrid/corepersistence/StaleIndexCleanupTest.java b/stack/core/src/test/java/org/apache/usergrid/corepersistence/StaleIndexCleanupTest.java
index 5c166c546c..f743f0bcae 100644
--- a/stack/core/src/test/java/org/apache/usergrid/corepersistence/StaleIndexCleanupTest.java
+++ b/stack/core/src/test/java/org/apache/usergrid/corepersistence/StaleIndexCleanupTest.java
@@ -52,6 +52,7 @@
import org.apache.usergrid.persistence.index.impl.IndexScopeImpl;
import org.apache.usergrid.persistence.index.query.CandidateResults;
import org.apache.usergrid.persistence.index.query.Query;
+import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.entity.SimpleId;
import com.fasterxml.uuid.UUIDComparator;
@@ -60,7 +61,9 @@
import net.jcip.annotations.NotThreadSafe;
import static org.apache.usergrid.corepersistence.CoreModule.EVENTS_DISABLED;
+import static org.apache.usergrid.corepersistence.util.CpNamingUtils.generateScopeFromCollection;
import static org.apache.usergrid.persistence.Schema.TYPE_APPLICATION;
+import static org.apache.usergrid.persistence.core.util.IdGenerator.createId;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -483,14 +486,15 @@ private CandidateResults queryCollectionCp(
EntityManager em = app.getEntityManager();
- EntityIndexFactory eif = SpringResource.getInstance().getBean( Injector.class ).getInstance( EntityIndexFactory.class );
+ EntityIndexFactory eif = SpringResource.getInstance().getBean( Injector.class ).getInstance(
+ EntityIndexFactory.class );
ApplicationScope as = new ApplicationScopeImpl(
new SimpleId( em.getApplicationId(), TYPE_APPLICATION ) );
ApplicationEntityIndex ei = eif.createApplicationEntityIndex(as);
- IndexScope is = new IndexScopeImpl( new SimpleId( em.getApplicationId(), TYPE_APPLICATION ),
- CpNamingUtils.getCollectionScopeNameFromCollectionName( collName ) );
+ final Id rootId = createId(em.getApplicationId(), TYPE_APPLICATION);
+ IndexScope is = generateScopeFromCollection(rootId, collName );
Query rcq = Query.fromQL( query );
// TODO: why does this have no effect; max we ever get is 1000 entities
diff --git a/stack/core/src/test/java/org/apache/usergrid/corepersistence/rx/EdgesFromSourceObservableIT.java b/stack/core/src/test/java/org/apache/usergrid/corepersistence/rx/EdgesFromSourceObservableIT.java
index 50c2cd9d8f..3bfe46071f 100644
--- a/stack/core/src/test/java/org/apache/usergrid/corepersistence/rx/EdgesFromSourceObservableIT.java
+++ b/stack/core/src/test/java/org/apache/usergrid/corepersistence/rx/EdgesFromSourceObservableIT.java
@@ -41,6 +41,7 @@
import org.apache.usergrid.persistence.graph.GraphManager;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.entity.SimpleId;
+import org.apache.usergrid.utils.EdgeTestUtils;
import com.google.inject.Injector;
@@ -98,8 +99,8 @@ public void call( final Edge edge ) {
final Id source = edge.getSourceNode();
//test if we're a collection, if so
- if ( CpNamingUtils.isCollectionEdgeType( edgeType ) ) {
- final String collectionName = CpNamingUtils.getCollectionName( edgeType );
+ if ( EdgeTestUtils.isCollectionEdgeType( edgeType ) ) {
+ final String collectionName = EdgeTestUtils.getNameForEdge( edgeType );
assertEquals("application source returned", createdApplication.getUuid(), source.getUuid());
@@ -112,11 +113,11 @@ public void call( final Edge edge ) {
- if ( !CpNamingUtils.isConnectionEdgeType( edgeType ) ) {
+ if ( !EdgeTestUtils.isConnectionEdgeType( edgeType ) ) {
fail( "Only connection edges should be encountered" );
}
- final String connectionType = CpNamingUtils.getConnectionType( edgeType );
+ final String connectionType = EdgeTestUtils.getNameForEdge( edgeType );
assertEquals( "Same connection type expected", "likes", connectionType );
diff --git a/stack/core/src/test/java/org/apache/usergrid/corepersistence/rx/EdgesToTargetObservableIT.java b/stack/core/src/test/java/org/apache/usergrid/corepersistence/rx/EdgesToTargetObservableIT.java
index 9f1bb176f5..6d228b2741 100644
--- a/stack/core/src/test/java/org/apache/usergrid/corepersistence/rx/EdgesToTargetObservableIT.java
+++ b/stack/core/src/test/java/org/apache/usergrid/corepersistence/rx/EdgesToTargetObservableIT.java
@@ -38,6 +38,7 @@
import org.apache.usergrid.persistence.graph.Edge;
import org.apache.usergrid.persistence.graph.GraphManager;
import org.apache.usergrid.persistence.model.entity.Id;
+import org.apache.usergrid.utils.EdgeTestUtils;
import com.google.inject.Injector;
@@ -92,29 +93,26 @@ public void testEntities() throws Exception {
final GraphManager gm = managerCache.getGraphManager( scope );
- edgesFromSourceObservable.edgesFromSource( gm, applicationId ).doOnNext( new Action1() {
- @Override
- public void call( final Edge edge ) {
- final String edgeType = edge.getType();
- final Id target = edge.getTargetNode();
+ edgesFromSourceObservable.edgesFromSource( gm, applicationId ).doOnNext( edge -> {
+ final String edgeType = edge.getType();
+ final Id target = edge.getTargetNode();
- //test if we're a collection, if so remove ourselves fro the types
- if ( !CpNamingUtils.isCollectionEdgeType( edgeType ) ) {
- fail( "Connections should be the only type encountered" );
- }
+ //test if we're a collection, if so remove ourselves fro the types
+ if ( !EdgeTestUtils.isCollectionEdgeType( edgeType ) ) {
+ fail( "Connections should be the only type encountered" );
+ }
- final String collectionType = CpNamingUtils.getCollectionName( edgeType );
+ final String collectionType = EdgeTestUtils.getNameForEdge( edgeType );
- if ( collectionType.equals( type1 ) ) {
- assertTrue( "Element should be present on removal", type1Identities.remove( target ) );
- }
- else if ( collectionType.equals( type2 ) ) {
- assertTrue( "Element should be present on removal", type2Identities.remove( target ) );
- }
+ if ( collectionType.equals( type1 ) ) {
+ assertTrue( "Element should be present on removal", type1Identities.remove( target ) );
+ }
+ else if ( collectionType.equals( type2 ) ) {
+ assertTrue( "Element should be present on removal", type2Identities.remove( target ) );
+ }
- }
} ).toBlocking().lastOrDefault( null );
@@ -124,23 +122,20 @@ else if ( collectionType.equals( type2 ) ) {
//test connections
- edgesFromSourceObservable.edgesFromSource( gm, source).doOnNext( new Action1() {
- @Override
- public void call( final Edge edge ) {
- final String edgeType = edge.getType();
- final Id target = edge.getTargetNode();
+ edgesFromSourceObservable.edgesFromSource( gm, source).doOnNext( edge -> {
+ final String edgeType = edge.getType();
+ final Id target = edge.getTargetNode();
- if ( !CpNamingUtils.isConnectionEdgeType( edgeType ) ) {
- fail( "Only connection edges should be encountered" );
- }
+ if ( !EdgeTestUtils.isConnectionEdgeType( edgeType ) ) {
+ fail( "Only connection edges should be encountered" );
+ }
- final String connectionType = CpNamingUtils.getConnectionType( edgeType );
+ final String connectionType = EdgeTestUtils.getNameForEdge( edgeType );
- assertEquals( "Same connection type expected", "likes", connectionType );
+ assertEquals( "Same connection type expected", "likes", connectionType );
- assertTrue( "Element should be present on removal", connections.remove( target ) );
- }
+ assertTrue( "Element should be present on removal", connections.remove( target ) );
} ).toBlocking().lastOrDefault( null );
assertEquals( "Every connection should have been encountered", 0, connections.size() );
diff --git a/stack/core/src/test/java/org/apache/usergrid/utils/EdgeTestUtils.java b/stack/core/src/test/java/org/apache/usergrid/utils/EdgeTestUtils.java
new file mode 100644
index 0000000000..f217338f63
--- /dev/null
+++ b/stack/core/src/test/java/org/apache/usergrid/utils/EdgeTestUtils.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.usergrid.utils;
+
+
+import org.apache.usergrid.corepersistence.util.CpNamingUtils;
+
+import static org.junit.Assert.assertEquals;
+
+
+public class EdgeTestUtils {
+
+ /**
+ * Get the name for an edge
+ */
+ public static String getNameForEdge( final String edgeName ) {
+ final String[] parts = edgeName.split( "\\|" );
+
+ assertEquals( "there should be 2 parts", parts.length, 2 );
+
+ return parts[1];
+ }
+
+
+ public static boolean isCollectionEdgeType( String type ) {
+ return type.startsWith( CpNamingUtils.EDGE_COLL_SUFFIX );
+ }
+
+
+ public static boolean isConnectionEdgeType( String type ) {
+ return type.startsWith( CpNamingUtils.EDGE_CONN_SUFFIX );
+ }
+}
diff --git a/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/rx/ObservableIterator.java b/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/rx/ObservableIterator.java
index 2bd1edb335..84a7fc35a7 100644
--- a/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/rx/ObservableIterator.java
+++ b/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/rx/ObservableIterator.java
@@ -53,6 +53,8 @@ public void call( final Subscriber super T> subscriber ) {
try {
+ subscriber.onStart();
+
//get our iterator and push data to the observer
final Iterator itr = getIterator();
From 6e3fab6e475862798174a86eb244ab987ddb215f Mon Sep 17 00:00:00 2001
From: Todd Nine
Date: Mon, 30 Mar 2015 17:57:14 -0600
Subject: [PATCH 08/12] Implemented the new row key without collection scope
for the log entries
Implemented the proxy for log entries
Remove redundant proxy annotation
---
.../EntityCollectionManagerFactoryImpl.java | 3 +-
.../impl/EntityCollectionManagerImpl.java | 3 +-
.../collection/impl/EntityDeletedTask.java | 3 +-
.../mvcc/stage/delete/MarkCommit.java | 3 +-
.../mvcc/stage/delete/MarkStart.java | 2 +-
.../mvcc/stage/write/RollbackAction.java | 2 +-
.../mvcc/stage/write/WriteCommit.java | 3 +-
.../MvccEntitySerializationStrategy.java | 16 +-
.../MvccLogEntrySerializationStrategy.java | 3 +-
.../impl/CollectionDataVersions.java | 2 +-
...MvccEntitySerializationStrategyV3Impl.java | 35 ++---
.../MvccLogEntrySerializationProxyImpl.java | 147 ++++++++++++++++++
...MvccLogEntrySerializationStrategyImpl.java | 79 +++-------
...ccLogEntrySerializationStrategyV1Impl.java | 118 ++++++++++++++
...ccLogEntrySerializationStrategyV2Impl.java | 106 +++++++++++++
.../impl/SerializationModule.java | 117 +++++++++-----
.../collection/EntityCollectionManagerIT.java | 2 -
...itySerializationStrategyProxyV1_3Test.java | 2 -
...itySerializationStrategyProxyV2_3Test.java | 2 -
...LogEntrySerializationStrategyImplTest.java | 20 ++-
...trySerializationStrategyProxyImplTest.java | 90 +++++++++++
...gEntrySerializationStrategyV1ImplTest.java | 55 +++++++
...gEntrySerializationStrategyV2ImplTest.java | 53 +++++++
.../persistence/core/guice/ProxyImpl.java | 42 -----
.../core/migration/data/VersionedData.java | 2 +-
.../core/migration/schema/Migration.java | 2 +-
.../persistence/graph/guice/GraphModule.java | 5 +-
.../graph/impl/GraphManagerImpl.java | 3 +-
.../graph/impl/stage/EdgeMetaRepairImpl.java | 3 +-
.../impl/stage/NodeDeleteListenerImpl.java | 3 +-
.../graph/impl/EdgeDeleteListenerTest.java | 3 -
.../graph/impl/NodeDeleteListenerTest.java | 3 -
.../graph/impl/stage/EdgeMetaRepairTest.java | 3 -
.../EdgeMetaDataSerializationProxyV1Test.java | 3 -
.../EdgeMetaDataSerializationProxyV2Test.java | 2 -
.../apache/usergrid/rest/MigrateResource.java | 2 +
36 files changed, 721 insertions(+), 221 deletions(-)
create mode 100644 stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationProxyImpl.java
create mode 100644 stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyV1Impl.java
create mode 100644 stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyV2Impl.java
create mode 100644 stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyProxyImplTest.java
create mode 100644 stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyV1ImplTest.java
create mode 100644 stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyV2ImplTest.java
delete mode 100644 stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/guice/ProxyImpl.java
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java
index 857432475e..9191c06a10 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java
@@ -38,7 +38,6 @@
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
-import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.metrics.MetricsFactory;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.task.TaskExecutor;
@@ -100,7 +99,7 @@ public EntityCollectionManagerFactoryImpl( final WriteStart writeStart,
final WriteUniqueVerify writeVerifyUnique,
final WriteOptimisticVerify writeOptimisticVerify,
final WriteCommit writeCommit, final RollbackAction rollback,
- final MarkStart markStart, final MarkCommit markCommit, @ProxyImpl
+ final MarkStart markStart, final MarkCommit markCommit,
final MvccEntitySerializationStrategy entitySerializationStrategy,
final UniqueValueSerializationStrategy uniqueValueSerializationStrategy,
final MvccLogEntrySerializationStrategy mvccLogEntrySerializationStrategy,
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerImpl.java
index 8e29f4ad70..f0b070c093 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerImpl.java
@@ -48,7 +48,6 @@
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSet;
import org.apache.usergrid.persistence.collection.serialization.impl.MutableFieldSet;
-import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.metrics.MetricsFactory;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.task.Task;
@@ -134,7 +133,7 @@ public EntityCollectionManagerImpl(
final RollbackAction rollback,
final MarkStart markStart,
final MarkCommit markCommit,
- @ProxyImpl final MvccEntitySerializationStrategy entitySerializationStrategy,
+ final MvccEntitySerializationStrategy entitySerializationStrategy,
final UniqueValueSerializationStrategy uniqueValueSerializationStrategy,
final MvccLogEntrySerializationStrategy mvccLogEntrySerializationStrategy,
final Keyspace keyspace,
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityDeletedTask.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityDeletedTask.java
index d858930320..1753d26a89 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityDeletedTask.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityDeletedTask.java
@@ -28,7 +28,6 @@
import org.apache.usergrid.persistence.collection.event.EntityDeleted;
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
-import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.task.Task;
import org.apache.usergrid.persistence.model.entity.Id;
@@ -60,7 +59,7 @@ public class EntityDeletedTask implements Task {
public EntityDeletedTask(
EntityVersionTaskFactory entityVersionTaskFactory,
final MvccLogEntrySerializationStrategy logEntrySerializationStrategy,
- @ProxyImpl final MvccEntitySerializationStrategy entitySerializationStrategy,
+ final MvccEntitySerializationStrategy entitySerializationStrategy,
final Set listeners, // MUST be a set or Guice will not inject
@Assisted final ApplicationScope collectionScope,
@Assisted final Id entityId,
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkCommit.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkCommit.java
index 14977eb999..a0d0c1a1e7 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkCommit.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkCommit.java
@@ -34,7 +34,6 @@
import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
-import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Id;
@@ -65,7 +64,7 @@ public class MarkCommit implements Action1> {
@Inject
public MarkCommit( final MvccLogEntrySerializationStrategy logStrat,
- @ProxyImpl final MvccEntitySerializationStrategy entityStrat,
+ final MvccEntitySerializationStrategy entityStrat,
final UniqueValueSerializationStrategy uniqueValueStrat, final SerializationFig serializationFig,
final Keyspace keyspace ) {
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkStart.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkStart.java
index 4ab1b0947e..040e89327a 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkStart.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/delete/MarkStart.java
@@ -67,7 +67,7 @@ public class MarkStart implements Func1, CollectionIoEvent
* Create a new stage with the current context
*/
@Inject
- public MarkStart( final MvccLogEntrySerializationStrategy logStrategy, final UUIDService uuidService ) {
+ public MarkStart(final MvccLogEntrySerializationStrategy logStrategy, final UUIDService uuidService ) {
Preconditions.checkNotNull( logStrategy, "logStrategy is required" );
Preconditions.checkNotNull( uuidService, "uuidService is required" );
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/RollbackAction.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/RollbackAction.java
index a54bf77b60..cd15c26267 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/RollbackAction.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/RollbackAction.java
@@ -55,7 +55,7 @@ public class RollbackAction implements Action1 {
@Inject
- public RollbackAction( MvccLogEntrySerializationStrategy logEntryStrat,
+ public RollbackAction(MvccLogEntrySerializationStrategy logEntryStrat,
UniqueValueSerializationStrategy uniqueValueStrat ) {
scheduler = Schedulers.io();
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteCommit.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteCommit.java
index 647f29e2ca..2afb1445fa 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteCommit.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteCommit.java
@@ -35,7 +35,6 @@
import org.apache.usergrid.persistence.collection.serialization.UniqueValue;
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.impl.UniqueValueImpl;
-import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.util.ValidationUtils;
import org.apache.usergrid.persistence.model.entity.Entity;
@@ -71,7 +70,7 @@ public class WriteCommit implements Func1, Entity>
@Inject
public WriteCommit( final MvccLogEntrySerializationStrategy logStrat,
- @ProxyImpl final MvccEntitySerializationStrategy entryStrat,
+ final MvccEntitySerializationStrategy entryStrat,
final UniqueValueSerializationStrategy uniqueValueStrat) {
Preconditions.checkNotNull( logStrat, "MvccLogEntrySerializationStrategy is required" );
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccEntitySerializationStrategy.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccEntitySerializationStrategy.java
index fab0db6989..3e57447200 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccEntitySerializationStrategy.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccEntitySerializationStrategy.java
@@ -45,7 +45,7 @@ public interface MvccEntitySerializationStrategy extends Migration, VersionedDat
* @param entity The entity to persist
* @return The MutationBatch operations for this update
*/
- public MutationBatch write(ApplicationScope context, MvccEntity entity);
+ MutationBatch write( ApplicationScope context, MvccEntity entity );
/**
@@ -55,7 +55,7 @@ public interface MvccEntitySerializationStrategy extends Migration, VersionedDat
* @param entityIds
* @return
*/
- public EntitySet load(ApplicationScope scope, Collection entityIds, UUID maxVersion);
+ EntitySet load( ApplicationScope scope, Collection entityIds, UUID maxVersion );
/**
* Load a list, from highest to lowest of the entity with versions <= version up to maxSize elements
@@ -69,8 +69,7 @@ public interface MvccEntitySerializationStrategy extends Migration, VersionedDat
*/
@Deprecated
//this has been made obsolete in the latest version, only use the load methods
- public Iterator loadDescendingHistory( ApplicationScope context, Id entityId, UUID version,
- int fetchSize );
+ Iterator loadDescendingHistory( ApplicationScope context, Id entityId, UUID version, int fetchSize );
/**
* Load a historical list of entities, from lowest to highest entity with versions < version up to maxSize elements
@@ -85,8 +84,7 @@ public Iterator loadDescendingHistory( ApplicationScope context, Id
*/
@Deprecated
//this has been made obsolete in the latest version, only use the load methods
- public Iterator loadAscendingHistory( ApplicationScope context, Id entityId, UUID version,
- int fetchSize );
+ Iterator loadAscendingHistory( ApplicationScope context, Id entityId, UUID version, int fetchSize );
/**
@@ -96,7 +94,7 @@ public Iterator loadAscendingHistory( ApplicationScope context, Id e
* @param entityId
* @return The MvccEntity if it exists. Null otherwise
*/
- public Optional load(ApplicationScope scope, Id entityId);
+ Optional load( ApplicationScope scope, Id entityId );
/**
@@ -104,7 +102,7 @@ public Iterator loadAscendingHistory( ApplicationScope context, Id e
* can be used in a mark+sweep system. The entity with the given version will exist in the context, but no data
* will be stored
*/
- public MutationBatch mark(ApplicationScope context, Id entityId, UUID version);
+ MutationBatch mark( ApplicationScope context, Id entityId, UUID version );
/**
@@ -114,6 +112,6 @@ public Iterator loadAscendingHistory( ApplicationScope context, Id e
* @param entityId The entity id to delete
* @param version The version to delete
*/
- public MutationBatch delete(ApplicationScope context, Id entityId, UUID version);
+ MutationBatch delete( ApplicationScope context, Id entityId, UUID version );
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccLogEntrySerializationStrategy.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccLogEntrySerializationStrategy.java
index d0292497bc..92669a7f1a 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccLogEntrySerializationStrategy.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccLogEntrySerializationStrategy.java
@@ -25,6 +25,7 @@
import org.apache.usergrid.persistence.collection.MvccLogEntry;
import org.apache.usergrid.persistence.collection.VersionSet;
+import org.apache.usergrid.persistence.core.migration.data.VersionedData;
import org.apache.usergrid.persistence.core.migration.schema.Migration;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Id;
@@ -35,7 +36,7 @@
/**
* The interface that allows us to serialize a log entry to disk
*/
-public interface MvccLogEntrySerializationStrategy extends Migration {
+public interface MvccLogEntrySerializationStrategy extends Migration, VersionedData {
/**
* Serialize the entity to the data store with the given collection context
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/CollectionDataVersions.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/CollectionDataVersions.java
index 76d35d7ace..84028d6502 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/CollectionDataVersions.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/CollectionDataVersions.java
@@ -35,7 +35,7 @@ public enum CollectionDataVersions{
private final int version;
- private CollectionDataVersions( final int version ) {this.version = version;}
+ CollectionDataVersions( final int version ) {this.version = version;}
public int getVersion() {
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV3Impl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV3Impl.java
index 9867621a9b..be08da8fd0 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV3Impl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV3Impl.java
@@ -34,6 +34,7 @@
import org.apache.usergrid.persistence.core.astyanax.MultiTennantColumnFamily;
import org.apache.usergrid.persistence.core.astyanax.MultiTennantColumnFamilyDefinition;
import org.apache.usergrid.persistence.core.astyanax.ScopedRowKey;
+import org.apache.usergrid.persistence.core.astyanax.ScopedRowKeySerializer;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.EntityMap;
@@ -67,12 +68,10 @@
public class MvccEntitySerializationStrategyV3Impl implements MvccEntitySerializationStrategy {
private static final IdRowCompositeSerializer ID_SER = IdRowCompositeSerializer.get();
+ private static final ScopedRowKeySerializer ROW_KEY_SER = new ScopedRowKeySerializer<>( ID_SER );
- private static final CollectionScopedRowKeySerializer ROW_KEY_SER =
- new CollectionScopedRowKeySerializer<>( ID_SER );
-
- private static final MultiTennantColumnFamily>, Boolean> CF_ENTITY_DATA =
+ private static final MultiTennantColumnFamily, Boolean> CF_ENTITY_DATA =
new MultiTennantColumnFamily<>( "Entity_Version_Data_V3", ROW_KEY_SER, BooleanSerializer.get() );
private static final FieldBufferSerializer FIELD_BUFFER_SERIALIZER = FieldBufferSerializer.get();
@@ -139,19 +138,13 @@ public EntitySet load( final ApplicationScope applicationScope, final Collection
final Id ownerId = applicationId;
- final List>> rowKeys = new ArrayList<>( entityIds.size() );
+ final List> rowKeys = new ArrayList<>( entityIds.size() );
for ( final Id entityId : entityIds ) {
- final String collectionName = LegacyScopeUtils.getCollectionScopeNameFromEntityType( entityId.getType() );
-
- final CollectionPrefixedKey collectionPrefixedKey =
- new CollectionPrefixedKey<>( collectionName, ownerId, entityId );
-
-
- final ScopedRowKey> rowKey =
- ScopedRowKey.fromKey( applicationId, collectionPrefixedKey );
+ final ScopedRowKey rowKey =
+ ScopedRowKey.fromKey( applicationId, entityId );
rowKeys.add( rowKey );
@@ -206,11 +199,11 @@ public EntitySet load( final ApplicationScope applicationScope, final Collection
}, 10 )
.reduce( new EntitySetImpl( entityIds.size() ), ( entitySet, rows ) -> {
- final Iterator>, Boolean>> latestEntityColumns =
+ final Iterator, Boolean>> latestEntityColumns =
rows.iterator();
while ( latestEntityColumns.hasNext() ) {
- final Row>, Boolean> row = latestEntityColumns.next();
+ final Row, Boolean> row = latestEntityColumns.next();
final ColumnList columns = row.getColumns();
@@ -218,7 +211,7 @@ public EntitySet load( final ApplicationScope applicationScope, final Collection
continue;
}
- final Id entityId = row.getKey().getKey().getSubKey();
+ final Id entityId = row.getKey().getKey();
final Column column = columns.getColumnByIndex( 0 );
@@ -330,15 +323,9 @@ private MutationBatch doWrite( final ApplicationScope applicationScope, final Id
final MutationBatch batch = keyspace.prepareMutationBatch();
final Id applicationId = applicationScope.getApplication();
- final Id ownerId = applicationId;
- final String collectionName = LegacyScopeUtils.getCollectionScopeNameFromEntityType( entityId.getType() );
-
- final CollectionPrefixedKey collectionPrefixedKey =
- new CollectionPrefixedKey<>( collectionName, ownerId, entityId );
-
- final ScopedRowKey> rowKey =
- ScopedRowKey.fromKey( applicationId, collectionPrefixedKey );
+ final ScopedRowKey rowKey =
+ ScopedRowKey.fromKey( applicationId, entityId );
final long timestamp = version.timestamp();
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationProxyImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationProxyImpl.java
new file mode 100644
index 0000000000..e0f6f036ee
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationProxyImpl.java
@@ -0,0 +1,147 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.usergrid.persistence.collection.serialization.impl;
+
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.usergrid.persistence.collection.MvccLogEntry;
+import org.apache.usergrid.persistence.collection.VersionSet;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.impl.migration.CollectionMigrationPlugin;
+import org.apache.usergrid.persistence.core.astyanax.MultiTennantColumnFamilyDefinition;
+import org.apache.usergrid.persistence.core.migration.data.MigrationInfoCache;
+import org.apache.usergrid.persistence.core.migration.data.MigrationRelationship;
+import org.apache.usergrid.persistence.core.migration.data.VersionedMigrationSet;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.model.entity.Id;
+
+import com.google.inject.Inject;
+import com.netflix.astyanax.Keyspace;
+import com.netflix.astyanax.MutationBatch;
+
+
+/**
+ * The proxy for performing log entry serialization
+ */
+public class MvccLogEntrySerializationProxyImpl implements MvccLogEntrySerializationStrategy {
+
+ protected final Keyspace keyspace;
+ private final VersionedMigrationSet versions;
+ private final MigrationInfoCache migrationInfoCache;
+
+
+ @Inject
+ public MvccLogEntrySerializationProxyImpl( final Keyspace keyspace,
+ final VersionedMigrationSet
+ allVersions,
+ final MigrationInfoCache migrationInfoCache ) {
+
+ this.keyspace = keyspace;
+ this.migrationInfoCache = migrationInfoCache;
+ this.versions = allVersions;
+ }
+
+
+ @Override
+ public MutationBatch write( final ApplicationScope applicationScope, final MvccLogEntry entry ) {
+ final MigrationRelationship migration = getMigrationRelationShip();
+
+ if ( migration.needsMigration() ) {
+ final MutationBatch aggregateBatch = keyspace.prepareMutationBatch();
+
+ aggregateBatch.mergeShallow( migration.from.write( applicationScope, entry ) );
+ aggregateBatch.mergeShallow( migration.to.write( applicationScope, entry ) );
+
+ return aggregateBatch;
+ }
+
+ return migration.to.write( applicationScope, entry );
+ }
+
+
+ @Override
+ public VersionSet load( final ApplicationScope applicationScope, final Collection entityIds,
+ final UUID version ) {
+
+
+ final MigrationRelationship migration = getMigrationRelationShip();
+
+ if ( migration.needsMigration() ) {
+ return migration.from.load( applicationScope, entityIds, version );
+ }
+
+ return migration.to.load( applicationScope, entityIds, version );
+ }
+
+
+ @Override
+ public List load( final ApplicationScope applicationScope, final Id entityId, final UUID version,
+ final int maxSize ) {
+ final MigrationRelationship migration = getMigrationRelationShip();
+
+ if ( migration.needsMigration() ) {
+ return migration.from.load( applicationScope, entityId, version, maxSize );
+ }
+
+ return migration.to.load( applicationScope, entityId, version, maxSize );
+ }
+
+
+ @Override
+ public MutationBatch delete( final ApplicationScope applicationScope, final Id entityId, final UUID version ) {
+ final MigrationRelationship migration = getMigrationRelationShip();
+
+ if ( migration.needsMigration() ) {
+ final MutationBatch aggregateBatch = keyspace.prepareMutationBatch();
+
+ aggregateBatch.mergeShallow( migration.from.delete( applicationScope, entityId, version ) );
+ aggregateBatch.mergeShallow( migration.to.delete( applicationScope, entityId, version ) );
+
+ return aggregateBatch;
+ }
+
+ return migration.to.delete( applicationScope, entityId, version );
+ }
+
+
+ @Override
+ public Collection getColumnFamilies() {
+ return Collections.emptyList();
+ }
+
+
+ @Override
+ public int getImplementationVersion() {
+ throw new UnsupportedOperationException( "Not supported in the proxy" );
+ }
+
+
+ /**
+ * Return true if we're on an old version
+ */
+ private MigrationRelationship getMigrationRelationShip() {
+ return this.versions
+ .getMigrationRelationship( migrationInfoCache.getVersion( CollectionMigrationPlugin.PLUGIN_NAME ) );
+ }
+}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java
index 866b87c432..d6baa3ce8d 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java
@@ -52,8 +52,6 @@
import org.apache.usergrid.persistence.model.entity.Id;
import com.google.common.base.Preconditions;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
import com.netflix.astyanax.ColumnListMutation;
import com.netflix.astyanax.Keyspace;
import com.netflix.astyanax.MutationBatch;
@@ -62,7 +60,6 @@
import com.netflix.astyanax.model.ColumnList;
import com.netflix.astyanax.model.Row;
import com.netflix.astyanax.serializers.AbstractSerializer;
-import com.netflix.astyanax.serializers.UUIDSerializer;
/**
@@ -70,30 +67,23 @@
*
* @author tnine
*/
-@Singleton
-public class MvccLogEntrySerializationStrategyImpl implements MvccLogEntrySerializationStrategy {
+public abstract class MvccLogEntrySerializationStrategyImpl implements MvccLogEntrySerializationStrategy {
private static final Logger LOG = LoggerFactory.getLogger( MvccLogEntrySerializationStrategyImpl.class );
private static final StageSerializer SER = new StageSerializer();
- private static final IdRowCompositeSerializer ID_SER = IdRowCompositeSerializer.get();
-
- private static final CollectionScopedRowKeySerializer ROW_KEY_SER =
- new CollectionScopedRowKeySerializer( ID_SER );
-
- private static final MultiTennantColumnFamily>, UUID> CF_ENTITY_LOG =
- new MultiTennantColumnFamily<>( "Entity_Log", ROW_KEY_SER, UUIDSerializer.get() );
+ private final MultiTennantColumnFamily, UUID> CF_ENTITY_LOG;
protected final Keyspace keyspace;
protected final SerializationFig fig;
- @Inject
public MvccLogEntrySerializationStrategyImpl( final Keyspace keyspace, final SerializationFig fig ) {
this.keyspace = keyspace;
this.fig = fig;
+ CF_ENTITY_LOG = getColumnFamily();
}
@@ -144,26 +134,18 @@ public VersionSet load( final ApplicationScope collectionScope, final Collection
- final List>> rowKeys = new ArrayList<>( entityIds.size() );
+ final List> rowKeys = new ArrayList<>( entityIds.size() );
for ( final Id entityId : entityIds ) {
-
- final String collectionName = LegacyScopeUtils.getCollectionScopeNameFromEntityType( entityId.getType() );
-
- final CollectionPrefixedKey collectionPrefixedKey =
- new CollectionPrefixedKey<>( collectionName, ownerId, entityId );
-
-
- final ScopedRowKey> rowKey =
- ScopedRowKey.fromKey( applicationId, collectionPrefixedKey );
+ final ScopedRowKey rowKey = createKey( applicationId, entityId );
rowKeys.add( rowKey );
}
- final Iterator>, UUID>> latestEntityColumns;
+ final Iterator, UUID>> latestEntityColumns;
try {
@@ -180,7 +162,7 @@ public VersionSet load( final ApplicationScope collectionScope, final Collection
final VersionSetImpl versionResults = new VersionSetImpl( entityIds.size() );
while ( latestEntityColumns.hasNext() ) {
- final Row>, UUID> row = latestEntityColumns.next();
+ final Row, UUID> row = latestEntityColumns.next();
final ColumnList columns = row.getColumns();
@@ -189,7 +171,7 @@ public VersionSet load( final ApplicationScope collectionScope, final Collection
}
- final Id entityId = row.getKey().getKey().getSubKey();
+ final Id entityId = getEntityIdFromKey( row.getKey() );
final Column column = columns.getColumnByIndex( 0 );
@@ -222,16 +204,8 @@ public List load( final ApplicationScope collectionScope, final Id
try {
final Id applicationId = collectionScope.getApplication();
- final Id ownerId = applicationId;
- final String collectionName = LegacyScopeUtils.getCollectionScopeNameFromEntityType( entityId.getType() );
-
-
- final CollectionPrefixedKey collectionPrefixedKey =
- new CollectionPrefixedKey<>( collectionName, ownerId, entityId );
-
- final ScopedRowKey> rowKey =
- ScopedRowKey.fromKey( applicationId, collectionPrefixedKey );
+ final ScopedRowKey rowKey = createKey( applicationId, entityId );
columns = keyspace.prepareQuery( CF_ENTITY_LOG ).getKey( rowKey )
@@ -271,24 +245,12 @@ public void doOp( final ColumnListMutation colMutation ) {
}
- @Override
- public Collection getColumnFamilies() {
- //create the CF entity data. We want it reversed b/c we want the most recent version at the top of the
- //row for fast seeks
- MultiTennantColumnFamilyDefinition cf =
- new MultiTennantColumnFamilyDefinition( CF_ENTITY_LOG, BytesType.class.getSimpleName(),
- ReversedType.class.getSimpleName() + "(" + UUIDType.class.getSimpleName() + ")",
- IntegerType.class.getSimpleName(), MultiTennantColumnFamilyDefinition.CacheOption.KEYS );
-
-
- return Collections.singleton( cf );
- }
/**
* Simple callback to perform puts and deletes with a common row setup code
*/
- private static interface RowOp {
+ private interface RowOp {
/**
* The operation to perform on the row
@@ -314,20 +276,27 @@ private MutationBatch doWrite( ApplicationScope collectionScope, Id entityId, UU
final Id ownerId = applicationId;
final String collectionName = LegacyScopeUtils.getCollectionScopeNameFromEntityType( entityId.getType() );
+ final ScopedRowKey key = createKey( applicationId, entityId );
+//
+// final CollectionPrefixedKey collectionPrefixedKey =
+// new CollectionPrefixedKey<>( collectionName, ownerId, entityId );
+//
+//
+// final ScopedRowKey> rowKey =
+// ScopedRowKey.fromKey( applicationId, collectionPrefixedKey );
- final CollectionPrefixedKey collectionPrefixedKey =
- new CollectionPrefixedKey<>( collectionName, ownerId, entityId );
+ op.doOp( batch.withRow( CF_ENTITY_LOG, key ) );
- final ScopedRowKey> rowKey =
- ScopedRowKey.fromKey( applicationId, collectionPrefixedKey );
+ return batch;
+ }
+ protected abstract MultiTennantColumnFamily, UUID> getColumnFamily();
- op.doOp( batch.withRow( CF_ENTITY_LOG, rowKey ) );
- return batch;
- }
+ protected abstract ScopedRowKey createKey(final Id applicationId, final Id entityId);
+ protected abstract Id getEntityIdFromKey(final ScopedRowKey key);
/**
* Internal stage shard
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyV1Impl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyV1Impl.java
new file mode 100644
index 0000000000..57e7421ee7
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyV1Impl.java
@@ -0,0 +1,118 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.usergrid.persistence.collection.serialization.impl;
+
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.UUID;
+
+import org.apache.cassandra.db.marshal.BytesType;
+import org.apache.cassandra.db.marshal.IntegerType;
+import org.apache.cassandra.db.marshal.ReversedType;
+import org.apache.cassandra.db.marshal.UUIDType;
+
+import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
+import org.apache.usergrid.persistence.collection.serialization.impl.util.LegacyScopeUtils;
+import org.apache.usergrid.persistence.core.astyanax.IdRowCompositeSerializer;
+import org.apache.usergrid.persistence.core.astyanax.MultiTennantColumnFamily;
+import org.apache.usergrid.persistence.core.astyanax.MultiTennantColumnFamilyDefinition;
+import org.apache.usergrid.persistence.core.astyanax.ScopedRowKey;
+import org.apache.usergrid.persistence.model.entity.Id;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import com.netflix.astyanax.Keyspace;
+import com.netflix.astyanax.serializers.UUIDSerializer;
+
+
+/**
+ * Our v1 row key implementation
+ */
+@Singleton
+public class MvccLogEntrySerializationStrategyV1Impl
+ extends MvccLogEntrySerializationStrategyImpl> {
+
+
+ private static final IdRowCompositeSerializer ID_SER = IdRowCompositeSerializer.get();
+
+ private static final CollectionScopedRowKeySerializer ROW_KEY_SER =
+ new CollectionScopedRowKeySerializer( ID_SER );
+
+ private static final MultiTennantColumnFamily>, UUID> CF_ENTITY_LOG =
+ new MultiTennantColumnFamily<>( "Entity_Log", ROW_KEY_SER, UUIDSerializer.get() );
+
+
+ @Inject
+ public MvccLogEntrySerializationStrategyV1Impl( final Keyspace keyspace, final SerializationFig fig ) {
+ super( keyspace, fig );
+ }
+
+
+ @Override
+ public int getImplementationVersion() {
+ return CollectionDataVersions.INITIAL.getVersion();
+ }
+
+
+ @Override
+ protected MultiTennantColumnFamily>, UUID> getColumnFamily() {
+ return CF_ENTITY_LOG;
+ }
+
+
+ @Override
+ protected ScopedRowKey> createKey( final Id applicationId, final Id entityId ) {
+ final Id ownerId = applicationId;
+
+
+ final String collectionName = LegacyScopeUtils.getCollectionScopeNameFromEntityType( entityId.getType() );
+
+ final CollectionPrefixedKey collectionPrefixedKey =
+ new CollectionPrefixedKey<>( collectionName, ownerId, entityId );
+
+
+ final ScopedRowKey> rowKey =
+ ScopedRowKey.fromKey( applicationId, collectionPrefixedKey );
+
+ return rowKey;
+
+ }
+
+
+ @Override
+ protected Id getEntityIdFromKey( final ScopedRowKey> key ) {
+ return key.getKey().getSubKey();
+ }
+
+
+ @Override
+ public Collection getColumnFamilies() {
+ //create the CF entity data. We want it reversed b/c we want the most recent version at the top of the
+ //row for fast seeks
+ MultiTennantColumnFamilyDefinition cf =
+ new MultiTennantColumnFamilyDefinition( CF_ENTITY_LOG, BytesType.class.getSimpleName(),
+ ReversedType.class.getSimpleName() + "(" + UUIDType.class.getSimpleName() + ")",
+ IntegerType.class.getSimpleName(), MultiTennantColumnFamilyDefinition.CacheOption.KEYS );
+
+
+ return Collections.singleton( cf );
+ }
+}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyV2Impl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyV2Impl.java
new file mode 100644
index 0000000000..99cc97fc10
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyV2Impl.java
@@ -0,0 +1,106 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.usergrid.persistence.collection.serialization.impl;
+
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.UUID;
+
+import org.apache.cassandra.db.marshal.BytesType;
+import org.apache.cassandra.db.marshal.IntegerType;
+import org.apache.cassandra.db.marshal.ReversedType;
+import org.apache.cassandra.db.marshal.UUIDType;
+
+import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
+import org.apache.usergrid.persistence.core.astyanax.IdRowCompositeSerializer;
+import org.apache.usergrid.persistence.core.astyanax.MultiTennantColumnFamily;
+import org.apache.usergrid.persistence.core.astyanax.MultiTennantColumnFamilyDefinition;
+import org.apache.usergrid.persistence.core.astyanax.ScopedRowKey;
+import org.apache.usergrid.persistence.core.astyanax.ScopedRowKeySerializer;
+import org.apache.usergrid.persistence.model.entity.Id;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import com.netflix.astyanax.Keyspace;
+import com.netflix.astyanax.serializers.UUIDSerializer;
+
+
+/**
+ * Serialization strategy V2 that doesn't contain collection scope
+ */
+@Singleton
+public class MvccLogEntrySerializationStrategyV2Impl extends MvccLogEntrySerializationStrategyImpl {
+
+
+ private static final IdRowCompositeSerializer ID_SER = IdRowCompositeSerializer.get();
+
+ private static final ScopedRowKeySerializer ROW_KEY_SER = new ScopedRowKeySerializer<>( ID_SER );
+
+
+ private static final MultiTennantColumnFamily, UUID> CF_ENTITY_LOG_V2 =
+ new MultiTennantColumnFamily<>( "Entity_Log_V2", ROW_KEY_SER, UUIDSerializer.get() );
+
+
+ @Inject
+ public MvccLogEntrySerializationStrategyV2Impl( final Keyspace keyspace, final SerializationFig fig ) {
+ super( keyspace, fig );
+ }
+
+
+ @Override
+ public int getImplementationVersion() {
+ return CollectionDataVersions.LOG_REMOVAL.getVersion();
+ }
+
+
+ @Override
+ protected MultiTennantColumnFamily, UUID> getColumnFamily() {
+ return CF_ENTITY_LOG_V2;
+ }
+
+
+ @Override
+ protected ScopedRowKey createKey( final Id applicationId, final Id entityId ) {
+ final ScopedRowKey rowKey = ScopedRowKey.fromKey( applicationId, entityId );
+
+ return rowKey;
+ }
+
+
+ @Override
+ protected Id getEntityIdFromKey( final ScopedRowKey key ) {
+ return key.getKey();
+ }
+
+
+ @Override
+ public Collection getColumnFamilies() {
+ //create the CF entity data. We want it reversed b/c we want the most recent version at the top of the
+ //row for fast seeks
+ MultiTennantColumnFamilyDefinition cf =
+ new MultiTennantColumnFamilyDefinition( CF_ENTITY_LOG_V2, BytesType.class.getSimpleName(),
+ ReversedType.class.getSimpleName() + "(" + UUIDType.class.getSimpleName() + ")",
+ IntegerType.class.getSimpleName(), MultiTennantColumnFamilyDefinition.CacheOption.KEYS );
+
+
+ return Collections.singleton( cf );
+ }
+}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/SerializationModule.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/SerializationModule.java
index f248af60dd..fa1991ac7b 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/SerializationModule.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/SerializationModule.java
@@ -25,7 +25,6 @@
import org.apache.usergrid.persistence.collection.serialization.impl.migration.CollectionMigrationPlugin;
import org.apache.usergrid.persistence.collection.serialization.impl.migration.EntityIdScope;
import org.apache.usergrid.persistence.collection.serialization.impl.migration.MvccEntityDataMigrationImpl;
-import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.migration.data.DataMigration;
import org.apache.usergrid.persistence.core.migration.data.MigrationPlugin;
import org.apache.usergrid.persistence.core.migration.data.MigrationRelationship;
@@ -52,24 +51,46 @@ protected void configure() {
// bind the serialization strategies
- //We've migrated this one, so we need to set up the previous, current, and proxy
-
-
- bind( MvccEntitySerializationStrategy.class ).annotatedWith( ProxyImpl.class )
- .to( MvccEntitySerializationStrategyProxyImpl.class );
-
//bind all 3 implementations
bind( MvccEntitySerializationStrategyV1Impl.class );
bind( MvccEntitySerializationStrategyV2Impl.class );
bind( MvccEntitySerializationStrategyV3Impl.class );
+ //We've migrated this one, so we need to set up the previous, current, and proxy
+
+
+ bind( MvccEntitySerializationStrategy.class ).to( MvccEntitySerializationStrategyProxyImpl.class );
+
+
+ //bind 2 implementations
+ bind( MvccLogEntrySerializationStrategyV1Impl.class );
+ bind( MvccLogEntrySerializationStrategyV2Impl.class );
+
+
+ bind( MvccLogEntrySerializationStrategy.class )
+ .to( MvccLogEntrySerializationProxyImpl.class );
+
+
+ bind( UniqueValueSerializationStrategy.class ).to( UniqueValueSerializationStrategyImpl.class );
+
+ //do multibindings for migrations
+ Multibinder migrationBinder = Multibinder.newSetBinder( binder(), Migration.class );
+ migrationBinder.addBinding().to( Key.get( MvccEntitySerializationStrategyV1Impl.class ) );
+ migrationBinder.addBinding().to( Key.get( MvccEntitySerializationStrategyV2Impl.class ) );
+ migrationBinder.addBinding().to( Key.get( MvccEntitySerializationStrategyV3Impl.class ) );
+ migrationBinder.addBinding().to( Key.get( MvccLogEntrySerializationStrategyV1Impl.class ) );
+ migrationBinder.addBinding().to( Key.get( MvccLogEntrySerializationStrategyV2Impl.class ) );
+ migrationBinder.addBinding().to( Key.get( UniqueValueSerializationStrategy.class ) );
+
+
+ //bind our settings as an eager singleton so it's checked on startup
+ bind( SettingsValidation.class ).asEagerSingleton();
//migrations
//we want to make sure our generics are retained, so we use a typeliteral
- Multibinder> dataMigrationMultibinder =
- Multibinder.newSetBinder( binder(), new TypeLiteral>() {},
- CollectionMigration.class );
+ Multibinder> dataMigrationMultibinder = Multibinder
+ .newSetBinder( binder(), new TypeLiteral>() {}, CollectionMigration.class );
dataMigrationMultibinder.addBinding().to( MvccEntityDataMigrationImpl.class );
@@ -77,56 +98,66 @@ protected void configure() {
//wire up the collection migration plugin
Multibinder.newSetBinder( binder(), MigrationPlugin.class ).addBinding().to( CollectionMigrationPlugin.class );
+ }
+ /**
+ * Configure via explicit declaration the migration path we can follow
+ */
+ @Singleton
+ @Inject
+ @Provides
+ public VersionedMigrationSet getVersions(
+ final MvccEntitySerializationStrategyV1Impl v1, final MvccEntitySerializationStrategyV2Impl v2,
+ final MvccEntitySerializationStrategyV3Impl v3 ) {
- bind( MvccLogEntrySerializationStrategy.class ).to( MvccLogEntrySerializationStrategyImpl.class );
- bind( UniqueValueSerializationStrategy.class ).to( UniqueValueSerializationStrategyImpl.class );
+ //we must perform a migration from v1 to v3 in order to maintain consistency
+ MigrationRelationship v1Tov3 = new MigrationRelationship<>( v1, v3 );
- //do multibindings for migrations
- Multibinder uriBinder = Multibinder.newSetBinder( binder(), Migration.class );
- uriBinder.addBinding().to( Key.get( MvccEntitySerializationStrategyV1Impl.class ) );
- uriBinder.addBinding().to( Key.get( MvccEntitySerializationStrategyV2Impl.class ) );
- uriBinder.addBinding().to( Key.get( MvccEntitySerializationStrategyV3Impl.class ) );
- uriBinder.addBinding().to( Key.get( MvccLogEntrySerializationStrategy.class ) );
- uriBinder.addBinding().to( Key.get( UniqueValueSerializationStrategy.class ) );
+ //we must migrate from 2 to 3, this is a bridge that must happen to maintain data consistency
+ MigrationRelationship v2Tov3 = new MigrationRelationship<>( v2, v3 );
- //bind our settings as an eager singleton so it's checked on startup
- bind( SettingsValidation.class ).asEagerSingleton();
- }
- /**
- * Configure via explicit declaration the migration path we can follow
- * @param v1
- * @param v2
- * @param v3
- * @return
- */
- @Singleton
- @Inject
- @Provides
- public VersionedMigrationSet getVersions(final MvccEntitySerializationStrategyV1Impl v1, final MvccEntitySerializationStrategyV2Impl v2, final MvccEntitySerializationStrategyV3Impl v3){
+ //note that we MUST migrate to v3 before our next migration, if v4 and v5 is implemented we will need a
+ // v3->v5 and a v4->v5 set
+ MigrationRelationship current =
+ new MigrationRelationship( v3, v3 );
- //we must perform a migration from v1 to v3 in order to maintain consistency
- MigrationRelationship v1Tov3 = new MigrationRelationship<>( v1, v3 );
+ //now create our set of versions
+ VersionedMigrationSet set =
+ new VersionedMigrationSet<>( v1Tov3, v2Tov3, current );
+
+ return set;
+ }
- //we must migrate from 2 to 3, this is a bridge that must happen to maintain data consistency
- MigrationRelationship v2Tov3 = new MigrationRelationship<>( v2, v3 );
+ /**
+ * Configure via explicit declaration the migration path we can follow
+ */
+ @Singleton
+ @Inject
+ @Provides
+ public VersionedMigrationSet getVersions(
+ final MvccLogEntrySerializationStrategyV1Impl v1, final MvccLogEntrySerializationStrategyV2Impl v2) {
- //note that we MUST migrate to v3 before our next migration, if v4 and v5 is implemented we will need a v3->v5 and a v4->v5 set
- MigrationRelationship current = new MigrationRelationship( v3, v3 );
+ //we must perform a migration from v1 to v3 in order to maintain consistency
+ MigrationRelationship v1Tov2 = new MigrationRelationship<>( v1, v2 );
- //now create our set of versions
- VersionedMigrationSet set = new VersionedMigrationSet<>( v1Tov3, v2Tov3, current );
+ //note that we MUST migrate to v3 before our next migration, if v4 and v5 is implemented we will need a
+ // v3->v5 and a v4->v5 set
+ MigrationRelationship current =
+ new MigrationRelationship( v2, v2 );
- return set;
- }
+ //now create our set of versions
+ VersionedMigrationSet set =
+ new VersionedMigrationSet<>( v1Tov2, current );
+ return set;
+ }
}
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerIT.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerIT.java
index 945cebdf80..252ce1f190 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerIT.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerIT.java
@@ -36,7 +36,6 @@
import org.apache.usergrid.persistence.collection.serialization.UniqueValueSet;
import org.apache.usergrid.persistence.collection.util.EntityHelper;
import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
-import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.guicyfig.SetConfigTestBypass;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
@@ -85,7 +84,6 @@ public class EntityCollectionManagerIT {
private UniqueValueSerializationStrategy uniqueValueSerializationStrategy;
@Inject
- @ProxyImpl
private MvccEntitySerializationStrategy entitySerializationStrategy;
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyProxyV1_3Test.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyProxyV1_3Test.java
index 56abfd8e9a..452086aee0 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyProxyV1_3Test.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyProxyV1_3Test.java
@@ -27,7 +27,6 @@
import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.impl.migration.CollectionMigrationPlugin;
-import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.migration.data.MigrationInfoSerialization;
import org.apache.usergrid.persistence.core.test.ITRunner;
import org.apache.usergrid.persistence.core.test.UseModules;
@@ -43,7 +42,6 @@
public class MvccEntitySerializationStrategyProxyV1_3Test extends MvccEntitySerializationStrategyImplTest {
@Inject
- @ProxyImpl
private MvccEntitySerializationStrategy serializationStrategy;
@Inject
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyProxyV2_3Test.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyProxyV2_3Test.java
index b372fbf40b..221b1d3e52 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyProxyV2_3Test.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyProxyV2_3Test.java
@@ -27,7 +27,6 @@
import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
import org.apache.usergrid.persistence.collection.serialization.impl.migration.CollectionMigrationPlugin;
-import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.migration.data.MigrationInfoSerialization;
import org.apache.usergrid.persistence.core.test.ITRunner;
import org.apache.usergrid.persistence.core.test.UseModules;
@@ -43,7 +42,6 @@
public class MvccEntitySerializationStrategyProxyV2_3Test extends MvccEntitySerializationStrategyV2Test {
@Inject
- @ProxyImpl
private MvccEntitySerializationStrategy serializationStrategy;
@Inject
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImplTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImplTest.java
index 19a75fa0b0..107b2a0ac7 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImplTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImplTest.java
@@ -24,6 +24,7 @@
import java.util.List;
import java.util.UUID;
+import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -54,16 +55,29 @@
/** @author tnine */
@RunWith( ITRunner.class )
@UseModules( TestCollectionModule.class )
-public class MvccLogEntrySerializationStrategyImplTest {
+public abstract class MvccLogEntrySerializationStrategyImplTest {
- @Inject
- private MvccLogEntrySerializationStrategy logEntryStrategy;
@Inject
@Rule
public MigrationManagerRule migrationManagerRule;
+ private MvccLogEntrySerializationStrategy logEntryStrategy;
+
+ @Before
+ public void wireLogEntryStrategy(){
+ logEntryStrategy = getLogEntryStrategy();
+ }
+
+
+ /**
+ * Get the log entry strategy from
+ * @return
+ */
+ protected abstract MvccLogEntrySerializationStrategy getLogEntryStrategy();
+
+
@Test
public void createAndDelete() throws ConnectionException {
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyProxyImplTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyProxyImplTest.java
new file mode 100644
index 0000000000..a5efce370e
--- /dev/null
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyProxyImplTest.java
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.usergrid.persistence.collection.serialization.impl;
+
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.runner.RunWith;
+
+import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.collection.serialization.impl.migration.CollectionMigrationPlugin;
+import org.apache.usergrid.persistence.core.migration.data.MigrationInfoSerialization;
+import org.apache.usergrid.persistence.core.test.ITRunner;
+import org.apache.usergrid.persistence.core.test.UseModules;
+
+import com.google.inject.Inject;
+
+import net.jcip.annotations.NotThreadSafe;
+
+
+@RunWith( ITRunner.class )
+@UseModules( TestCollectionModule.class )
+@NotThreadSafe//anything that changes the system version state is not safe to be run concurrently
+public class MvccLogEntrySerializationStrategyProxyImplTest extends MvccLogEntrySerializationStrategyImplTest {
+
+
+ @Inject
+ private MvccLogEntrySerializationStrategy logEntryStrategy;
+
+
+
+ @Inject
+ private MvccLogEntrySerializationStrategyV1Impl v1Impl;
+
+
+ @Inject
+ protected MigrationInfoSerialization migrationInfoSerialization;
+
+ private int existingVersion;
+
+
+
+ @Override
+ protected MvccLogEntrySerializationStrategy getLogEntryStrategy() {
+ return logEntryStrategy;
+ }
+
+
+
+
+
+ /**
+ * We need to run our migration to ensure that we are on the current version, and everything still functions
+ * correctly
+ */
+ @Before
+ public void setMigrationVersion() {
+ existingVersion = migrationInfoSerialization.getVersion( CollectionMigrationPlugin.PLUGIN_NAME);
+
+ //set our migration version to be v1
+ migrationInfoSerialization.setVersion( CollectionMigrationPlugin.PLUGIN_NAME, v1Impl.getImplementationVersion() );
+ }
+
+
+
+
+ @After
+ public void reSetMigrationVersion() {
+ migrationInfoSerialization.setVersion(CollectionMigrationPlugin.PLUGIN_NAME, existingVersion );
+ }
+
+}
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyV1ImplTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyV1ImplTest.java
new file mode 100644
index 0000000000..d87e2169f7
--- /dev/null
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyV1ImplTest.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.usergrid.persistence.collection.serialization.impl;
+
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.core.test.ITRunner;
+import org.apache.usergrid.persistence.core.test.UseModules;
+
+import com.google.inject.Inject;
+
+import static org.junit.Assert.assertEquals;
+
+
+@RunWith( ITRunner.class )
+@UseModules( TestCollectionModule.class )
+public class MvccLogEntrySerializationStrategyV1ImplTest extends MvccLogEntrySerializationStrategyImplTest {
+
+
+ @Inject
+ private MvccLogEntrySerializationStrategyV1Impl logEntryStrategy;
+
+
+ @Override
+ protected MvccLogEntrySerializationStrategy getLogEntryStrategy() {
+ return logEntryStrategy;
+ }
+
+
+ @Test
+ public void checkVersion() {
+ assertEquals( CollectionDataVersions.INITIAL.getVersion(), logEntryStrategy.getImplementationVersion() );
+ }
+}
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyV2ImplTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyV2ImplTest.java
new file mode 100644
index 0000000000..5e906e00ad
--- /dev/null
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyV2ImplTest.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.usergrid.persistence.collection.serialization.impl;
+
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
+import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
+import org.apache.usergrid.persistence.core.test.ITRunner;
+import org.apache.usergrid.persistence.core.test.UseModules;
+
+import com.google.inject.Inject;
+
+import static org.junit.Assert.assertEquals;
+
+
+@RunWith( ITRunner.class )
+@UseModules( TestCollectionModule.class )
+public class MvccLogEntrySerializationStrategyV2ImplTest extends MvccLogEntrySerializationStrategyImplTest {
+
+
+ @Inject
+ private MvccLogEntrySerializationStrategyV2Impl logEntryStrategy;
+
+ @Override
+ protected MvccLogEntrySerializationStrategy getLogEntryStrategy() {
+ return logEntryStrategy;
+ }
+
+ @Test
+ public void checkVersion(){
+ assertEquals(CollectionDataVersions.LOG_REMOVAL.getVersion(), logEntryStrategy.getImplementationVersion());
+ }
+}
diff --git a/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/guice/ProxyImpl.java b/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/guice/ProxyImpl.java
deleted file mode 100644
index 0bebd6cf19..0000000000
--- a/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/guice/ProxyImpl.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- *
- * * Licensed to the Apache Software Foundation (ASF) under one
- * * or more contributor license agreements. See the NOTICE file
- * * distributed with this work for additional information
- * * regarding copyright ownership. The ASF licenses this file
- * * to you under the Apache License, Version 2.0 (the
- * * "License"); you may not use this file except in compliance
- * * with the License. You may obtain a copy of the License at
- * *
- * * http://www.apache.org/licenses/LICENSE-2.0
- * *
- * * Unless required by applicable law or agreed to in writing,
- * * software distributed under the License is distributed on an
- * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * * KIND, either express or implied. See the License for the
- * * specific language governing permissions and limitations
- * * under the License.
- *
- */
-
-package org.apache.usergrid.persistence.core.guice;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import com.google.inject.BindingAnnotation;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-
-
-/**
- * Represents 2 versions of an impl. Generally used for online migration. This represents the version of the impl
- * that is responsible for bridging the versions from previous to current during the migration.
- */
-@BindingAnnotation
-@Target({ FIELD, PARAMETER, METHOD }) @Retention(RUNTIME)
-public @interface ProxyImpl {}
diff --git a/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/data/VersionedData.java b/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/data/VersionedData.java
index 266697a87d..16fd17ffc9 100644
--- a/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/data/VersionedData.java
+++ b/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/data/VersionedData.java
@@ -33,6 +33,6 @@ public interface VersionedData {
* Get the version of the implementation
* @return
*/
- public int getImplementationVersion();
+ int getImplementationVersion();
}
diff --git a/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/schema/Migration.java b/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/schema/Migration.java
index fdf483a862..7343f07f33 100644
--- a/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/schema/Migration.java
+++ b/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/schema/Migration.java
@@ -32,5 +32,5 @@ public interface Migration {
/**
* Get the column families required for this implementation. If one does not exist it will be created.
*/
- public Collection getColumnFamilies();
+ Collection getColumnFamilies();
}
diff --git a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/guice/GraphModule.java b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/guice/GraphModule.java
index 91a0b88330..6cdaef0b28 100644
--- a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/guice/GraphModule.java
+++ b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/guice/GraphModule.java
@@ -23,7 +23,6 @@
import org.apache.usergrid.persistence.core.consistency.TimeService;
import org.apache.usergrid.persistence.core.consistency.TimeServiceImpl;
-import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.migration.data.DataMigration;
import org.apache.usergrid.persistence.core.migration.data.MigrationPlugin;
import org.apache.usergrid.persistence.core.migration.data.MigrationRelationship;
@@ -46,7 +45,6 @@
import org.apache.usergrid.persistence.graph.serialization.EdgesObservable;
import org.apache.usergrid.persistence.graph.serialization.NodeSerialization;
import org.apache.usergrid.persistence.graph.serialization.TargetIdObservable;
-import org.apache.usergrid.persistence.graph.serialization.impl.migration.EdgeDataMigrationImpl;
import org.apache.usergrid.persistence.graph.serialization.impl.EdgeMetadataSerializationProxyImpl;
import org.apache.usergrid.persistence.graph.serialization.impl.EdgeMetadataSerializationV1Impl;
import org.apache.usergrid.persistence.graph.serialization.impl.EdgeMetadataSerializationV2Impl;
@@ -55,6 +53,7 @@
import org.apache.usergrid.persistence.graph.serialization.impl.GraphManagerFactoryImpl;
import org.apache.usergrid.persistence.graph.serialization.impl.NodeSerializationImpl;
import org.apache.usergrid.persistence.graph.serialization.impl.TargetIdObservableImpl;
+import org.apache.usergrid.persistence.graph.serialization.impl.migration.EdgeDataMigrationImpl;
import org.apache.usergrid.persistence.graph.serialization.impl.migration.GraphMigration;
import org.apache.usergrid.persistence.graph.serialization.impl.migration.GraphMigrationPlugin;
import org.apache.usergrid.persistence.graph.serialization.impl.migration.GraphNode;
@@ -189,7 +188,7 @@ protected void configure() {
bind( EdgeMetadataSerializationV1Impl.class );
bind( EdgeMetadataSerializationV2Impl.class );
- bind(EdgeMetadataSerialization.class).annotatedWith( ProxyImpl.class ).to( EdgeMetadataSerializationProxyImpl.class );
+ bind( EdgeMetadataSerialization.class ).to( EdgeMetadataSerializationProxyImpl.class );
//invoke the migration plugin config
configureMigrationProvider();
diff --git a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/GraphManagerImpl.java b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/GraphManagerImpl.java
index ef258f4794..9c0c62df97 100644
--- a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/GraphManagerImpl.java
+++ b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/GraphManagerImpl.java
@@ -28,7 +28,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.metrics.MetricsFactory;
import org.apache.usergrid.persistence.core.rx.ObservableIterator;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
@@ -119,7 +118,7 @@ public class GraphManagerImpl implements GraphManager {
@Inject
- public GraphManagerImpl( @ProxyImpl final EdgeMetadataSerialization edgeMetadataSerialization,
+ public GraphManagerImpl( final EdgeMetadataSerialization edgeMetadataSerialization,
final EdgeSerialization storageEdgeSerialization,
final NodeSerialization nodeSerialization,
final GraphFig graphFig,
diff --git a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/stage/EdgeMetaRepairImpl.java b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/stage/EdgeMetaRepairImpl.java
index bfaeaaa886..a371b24f9a 100644
--- a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/stage/EdgeMetaRepairImpl.java
+++ b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/stage/EdgeMetaRepairImpl.java
@@ -27,7 +27,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.rx.ObservableIterator;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.util.ValidationUtils;
@@ -71,7 +70,7 @@ public class EdgeMetaRepairImpl implements EdgeMetaRepair {
@Inject
- public EdgeMetaRepairImpl( @ProxyImpl final EdgeMetadataSerialization edgeMetadataSerialization, final Keyspace keyspace,
+ public EdgeMetaRepairImpl( final EdgeMetadataSerialization edgeMetadataSerialization, final Keyspace keyspace,
final GraphFig graphFig, final EdgeSerialization storageEdgeSerialization ) {
diff --git a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/stage/NodeDeleteListenerImpl.java b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/stage/NodeDeleteListenerImpl.java
index 6236a1604d..13187a7889 100644
--- a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/stage/NodeDeleteListenerImpl.java
+++ b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/stage/NodeDeleteListenerImpl.java
@@ -28,7 +28,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.rx.ObservableIterator;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.graph.GraphFig;
@@ -75,7 +74,7 @@ public class NodeDeleteListenerImpl implements NodeDeleteListener {
*/
@Inject
public NodeDeleteListenerImpl( final NodeSerialization nodeSerialization,
- @ProxyImpl final EdgeMetadataSerialization edgeMetadataSerialization,
+ final EdgeMetadataSerialization edgeMetadataSerialization,
final EdgeMetaRepair edgeMetaRepair, final GraphFig graphFig,
final EdgeSerialization storageSerialization,
final Keyspace keyspace ) {
diff --git a/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/impl/EdgeDeleteListenerTest.java b/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/impl/EdgeDeleteListenerTest.java
index 84783e56e2..a795485f70 100644
--- a/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/impl/EdgeDeleteListenerTest.java
+++ b/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/impl/EdgeDeleteListenerTest.java
@@ -32,7 +32,6 @@
import org.slf4j.LoggerFactory;
import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
-import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.test.ITRunner;
import org.apache.usergrid.persistence.core.test.UseModules;
@@ -51,7 +50,6 @@
import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
import static org.apache.usergrid.persistence.graph.test.util.EdgeTestUtils.createGetByEdge;
-import static org.apache.usergrid.persistence.core.util.IdGenerator.createId;
import static org.apache.usergrid.persistence.graph.test.util.EdgeTestUtils.createMarkedEdge;
import static org.apache.usergrid.persistence.graph.test.util.EdgeTestUtils.createSearchByEdge;
import static org.apache.usergrid.persistence.graph.test.util.EdgeTestUtils.createSearchByEdgeAndId;
@@ -74,7 +72,6 @@ public class EdgeDeleteListenerTest {
public MigrationManagerRule migrationManagerRule;
@Inject
- @ProxyImpl
protected EdgeMetadataSerialization edgeMetadataSerialization;
@Inject
diff --git a/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/impl/NodeDeleteListenerTest.java b/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/impl/NodeDeleteListenerTest.java
index ad433e9d62..3382507523 100644
--- a/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/impl/NodeDeleteListenerTest.java
+++ b/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/impl/NodeDeleteListenerTest.java
@@ -31,7 +31,6 @@
import org.slf4j.LoggerFactory;
import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
-import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.test.ITRunner;
import org.apache.usergrid.persistence.core.test.UseModules;
@@ -54,7 +53,6 @@
import static org.apache.usergrid.persistence.graph.test.util.EdgeTestUtils.createEdge;
import static org.apache.usergrid.persistence.graph.test.util.EdgeTestUtils.createGetByEdge;
-import static org.apache.usergrid.persistence.core.util.IdGenerator.createId;
import static org.apache.usergrid.persistence.graph.test.util.EdgeTestUtils.createSearchByEdge;
import static org.apache.usergrid.persistence.graph.test.util.EdgeTestUtils.createSearchEdge;
import static org.apache.usergrid.persistence.graph.test.util.EdgeTestUtils.createSearchIdType;
@@ -87,7 +85,6 @@ public class NodeDeleteListenerTest {
protected EdgeSerialization edgeSerialization;
@Inject
- @ProxyImpl
protected EdgeMetadataSerialization edgeMetadataSerialization;
@Inject
diff --git a/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/impl/stage/EdgeMetaRepairTest.java b/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/impl/stage/EdgeMetaRepairTest.java
index f729f33329..4974552d3b 100644
--- a/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/impl/stage/EdgeMetaRepairTest.java
+++ b/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/impl/stage/EdgeMetaRepairTest.java
@@ -30,7 +30,6 @@
import org.junit.runner.RunWith;
import org.apache.usergrid.persistence.core.guice.MigrationManagerRule;
-import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.core.test.ITRunner;
import org.apache.usergrid.persistence.core.test.UseModules;
@@ -49,7 +48,6 @@
import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
import static org.apache.usergrid.persistence.graph.test.util.EdgeTestUtils.createEdge;
-import static org.apache.usergrid.persistence.core.util.IdGenerator.createId;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.mockito.Mockito.mock;
@@ -77,7 +75,6 @@ public class EdgeMetaRepairTest {
protected EdgeSerialization storageEdgeSerialization;
@Inject
- @ProxyImpl
protected EdgeMetadataSerialization edgeMetadataSerialization;
@Inject
diff --git a/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/serialization/EdgeMetaDataSerializationProxyV1Test.java b/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/serialization/EdgeMetaDataSerializationProxyV1Test.java
index 3c1b4c42ec..da140a1911 100644
--- a/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/serialization/EdgeMetaDataSerializationProxyV1Test.java
+++ b/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/serialization/EdgeMetaDataSerializationProxyV1Test.java
@@ -26,14 +26,12 @@
import org.junit.Before;
import org.junit.runner.RunWith;
-import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.migration.data.MigrationInfoSerialization;
import org.apache.usergrid.persistence.core.test.ITRunner;
import org.apache.usergrid.persistence.core.test.UseModules;
import org.apache.usergrid.persistence.graph.guice.TestGraphModule;
import org.apache.usergrid.persistence.graph.serialization.impl.EdgeMetadataSerializationProxyImpl;
import org.apache.usergrid.persistence.graph.serialization.impl.EdgeMetadataSerializationV1Impl;
-import org.apache.usergrid.persistence.graph.serialization.impl.GraphDataVersions;
import org.apache.usergrid.persistence.graph.serialization.impl.migration.GraphMigrationPlugin;
import com.google.inject.Inject;
@@ -50,7 +48,6 @@ public class EdgeMetaDataSerializationProxyV1Test extends EdgeMetadataSerializat
@Inject
- @ProxyImpl
protected EdgeMetadataSerialization serialization;
@Inject
diff --git a/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/serialization/EdgeMetaDataSerializationProxyV2Test.java b/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/serialization/EdgeMetaDataSerializationProxyV2Test.java
index 35a304d3ed..9e4d93eff5 100644
--- a/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/serialization/EdgeMetaDataSerializationProxyV2Test.java
+++ b/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/serialization/EdgeMetaDataSerializationProxyV2Test.java
@@ -26,7 +26,6 @@
import org.junit.Before;
import org.junit.runner.RunWith;
-import org.apache.usergrid.persistence.core.guice.ProxyImpl;
import org.apache.usergrid.persistence.core.migration.data.MigrationInfoSerialization;
import org.apache.usergrid.persistence.core.test.ITRunner;
import org.apache.usergrid.persistence.core.test.UseModules;
@@ -49,7 +48,6 @@ public class EdgeMetaDataSerializationProxyV2Test extends EdgeMetadataSerializat
@Inject
- @ProxyImpl
protected EdgeMetadataSerialization serialization;
@Inject
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/MigrateResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/MigrateResource.java
index a6d2daa18f..c1dfb185b1 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/MigrateResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/MigrateResource.java
@@ -163,6 +163,8 @@ public JSONWithPadding migrateStatus( @Context UriInfo ui,
node.put( pluginName, dataMigrationManager.getCurrentVersion( pluginName ) );
}
+ response.setData( node );
+
response.setSuccess();
return new JSONWithPadding( response, callback );
From d145eb4b8e97c2eb4cb02fa568f357e5f8e7c5e2 Mon Sep 17 00:00:00 2001
From: Todd Nine
Date: Tue, 31 Mar 2015 11:35:31 -0600
Subject: [PATCH 09/12] Implemented new row key for unique values.
---
.../collection/guice/CollectionModule.java | 1 -
.../UniqueValueSerializationStrategy.java | 10 +-
.../impl/CollectionDataVersions.java | 10 +
...cEntitySerializationStrategyProxyImpl.java | 2 +
.../MvccLogEntrySerializationProxyImpl.java | 2 +
...MvccLogEntrySerializationStrategyImpl.java | 10 -
.../impl/SerializationModule.java | 48 ++++-
.../UniqueValueSerializationStrategyImpl.java | 190 +++++++++---------
...ueValueSerializationStrategyProxyImpl.java | 179 +++++++++++++++++
...niqueValueSerializationStrategyV1Impl.java | 159 +++++++++++++++
...niqueValueSerializationStrategyV2Impl.java | 139 +++++++++++++
...queValueSerializationStrategyImplTest.java | 22 +-
...lueSerializationStrategyProxyImplTest.java | 100 +++++++++
...eValueSerializationStrategyV1ImplTest.java | 57 ++++++
...eValueSerializationStrategyV2ImplTest.java | 58 ++++++
15 files changed, 871 insertions(+), 116 deletions(-)
create mode 100644 stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueSerializationStrategyProxyImpl.java
create mode 100644 stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueSerializationStrategyV1Impl.java
create mode 100644 stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueSerializationStrategyV2Impl.java
rename stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/{mvcc/stage/write => serialization/impl}/UniqueValueSerializationStrategyImplTest.java (96%)
create mode 100644 stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueSerializationStrategyProxyImplTest.java
create mode 100644 stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueSerializationStrategyV1ImplTest.java
create mode 100644 stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueSerializationStrategyV2ImplTest.java
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/guice/CollectionModule.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/guice/CollectionModule.java
index eaf89eff8c..b256a4481d 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/guice/CollectionModule.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/guice/CollectionModule.java
@@ -76,7 +76,6 @@ protected void configure() {
//bind this to our factory
install( new GuicyFigModule( EntityCacheFig.class ) );
- bind( UniqueValueSerializationStrategy.class ).to( UniqueValueSerializationStrategyImpl.class );
bind( ChangeLogGenerator.class).to( ChangeLogGeneratorImpl.class);
configureMigrationProvider();
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValueSerializationStrategy.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValueSerializationStrategy.java
index 71af4603c5..3645107f2c 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValueSerializationStrategy.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValueSerializationStrategy.java
@@ -21,6 +21,7 @@
import java.util.Collection;
import java.util.Iterator;
+import org.apache.usergrid.persistence.core.migration.data.VersionedData;
import org.apache.usergrid.persistence.core.migration.schema.Migration;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.model.entity.Id;
@@ -34,7 +35,7 @@
/**
* Reads and writes to UniqueValues column family.
*/
-public interface UniqueValueSerializationStrategy extends Migration {
+public interface UniqueValueSerializationStrategy extends Migration, VersionedData {
/**
@@ -73,14 +74,14 @@ public interface UniqueValueSerializationStrategy extends Migration {
/**
* Load UniqueValue that matches field from collection or null if that value does not exist.
*
- * @param colScope Collection scope in which to look for field name/value
+ * @param applicationScope Collection scope in which to look for field name/value
* @param consistencyLevel Consistency level of query
* @param type The type the unique value exists within
* @param fields Field name/value to search for
* @return UniqueValueSet containing fields from the collection that exist in cassandra
* @throws ConnectionException on error connecting to Cassandra
*/
- UniqueValueSet load( ApplicationScope colScope, ConsistencyLevel consistencyLevel, String type,
+ UniqueValueSet load( ApplicationScope applicationScope, ConsistencyLevel consistencyLevel, String type,
Collection fields ) throws ConnectionException;
@@ -98,10 +99,11 @@ UniqueValueSet load( ApplicationScope colScope, ConsistencyLevel consistencyLeve
/**
* Delete the specified Unique Value from Cassandra.
*
+ * @param applicationScope The scope of the application
* @param uniqueValue Object to be deleted.
* @return MutatationBatch that encapsulates operation, caller may or may not execute.
*/
- MutationBatch delete( ApplicationScope scope, UniqueValue uniqueValue );
+ MutationBatch delete( ApplicationScope applicationScope, UniqueValue uniqueValue );
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/CollectionDataVersions.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/CollectionDataVersions.java
index 84028d6502..b1ce98bfc2 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/CollectionDataVersions.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/CollectionDataVersions.java
@@ -28,8 +28,18 @@
* Versions of data as they exist across our system
*/
public enum CollectionDataVersions{
+ /**
+ * The initial released version
+ */
INITIAL(0),
+ /**
+ * The version where serialization was changed from using a short in the composite to an integer
+ */
BUFFER_SHORT_FIX(1),
+
+ /**
+ * The change where we move unique field versions to their own CF, and then only store our latest object version
+ */
LOG_REMOVAL(2);
private final int version;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyProxyImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyProxyImpl.java
index bb143a42af..b45f68b9c6 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyProxyImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyProxyImpl.java
@@ -35,6 +35,7 @@
import com.google.common.base.Optional;
import com.google.inject.Inject;
+import com.google.inject.Singleton;
import com.netflix.astyanax.Keyspace;
import com.netflix.astyanax.MutationBatch;
@@ -44,6 +45,7 @@
* migration data goes to both sources and is read from the old source. After the upgrade completes,
* it will be available from the new source
*/
+@Singleton
public class MvccEntitySerializationStrategyProxyImpl implements MvccEntitySerializationStrategy {
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationProxyImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationProxyImpl.java
index e0f6f036ee..81c0248755 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationProxyImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationProxyImpl.java
@@ -37,6 +37,7 @@
import org.apache.usergrid.persistence.model.entity.Id;
import com.google.inject.Inject;
+import com.google.inject.Singleton;
import com.netflix.astyanax.Keyspace;
import com.netflix.astyanax.MutationBatch;
@@ -44,6 +45,7 @@
/**
* The proxy for performing log entry serialization
*/
+@Singleton
public class MvccLogEntrySerializationProxyImpl implements MvccLogEntrySerializationStrategy {
protected final Keyspace keyspace;
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java
index d6baa3ce8d..76e9dba87d 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java
@@ -273,18 +273,8 @@ private MutationBatch doWrite( ApplicationScope collectionScope, Id entityId, UU
LOG.debug( "Writing version with timestamp '{}'", timestamp );
final Id applicationId = collectionScope.getApplication();
- final Id ownerId = applicationId;
- final String collectionName = LegacyScopeUtils.getCollectionScopeNameFromEntityType( entityId.getType() );
final ScopedRowKey key = createKey( applicationId, entityId );
-//
-// final CollectionPrefixedKey collectionPrefixedKey =
-// new CollectionPrefixedKey<>( collectionName, ownerId, entityId );
-//
-//
-// final ScopedRowKey> rowKey =
-// ScopedRowKey.fromKey( applicationId, collectionPrefixedKey );
-
op.doOp( batch.withRow( CF_ENTITY_LOG, key ) );
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/SerializationModule.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/SerializationModule.java
index fa1991ac7b..bd2728b79a 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/SerializationModule.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/SerializationModule.java
@@ -67,21 +67,28 @@ protected void configure() {
bind( MvccLogEntrySerializationStrategyV2Impl.class );
- bind( MvccLogEntrySerializationStrategy.class )
- .to( MvccLogEntrySerializationProxyImpl.class );
+ bind( MvccLogEntrySerializationStrategy.class ).to( MvccLogEntrySerializationProxyImpl.class );
- bind( UniqueValueSerializationStrategy.class ).to( UniqueValueSerializationStrategyImpl.class );
+ bind( UniqueValueSerializationStrategyV1Impl.class );
+ bind(UniqueValueSerializationStrategyV2Impl.class);
+
+ bind( UniqueValueSerializationStrategy.class ).to( UniqueValueSerializationStrategyProxyImpl.class );
//do multibindings for migrations
Multibinder migrationBinder = Multibinder.newSetBinder( binder(), Migration.class );
+ //entity serialization versions
migrationBinder.addBinding().to( Key.get( MvccEntitySerializationStrategyV1Impl.class ) );
migrationBinder.addBinding().to( Key.get( MvccEntitySerializationStrategyV2Impl.class ) );
migrationBinder.addBinding().to( Key.get( MvccEntitySerializationStrategyV3Impl.class ) );
+
+ //log serialization versions
migrationBinder.addBinding().to( Key.get( MvccLogEntrySerializationStrategyV1Impl.class ) );
migrationBinder.addBinding().to( Key.get( MvccLogEntrySerializationStrategyV2Impl.class ) );
- migrationBinder.addBinding().to( Key.get( UniqueValueSerializationStrategy.class ) );
+ //unique value serialization versions
+ migrationBinder.addBinding().to( Key.get( UniqueValueSerializationStrategyV1Impl.class ) );
+ migrationBinder.addBinding().to( Key.get( UniqueValueSerializationStrategyV2Impl.class ) );
//bind our settings as an eager singleton so it's checked on startup
@@ -123,7 +130,7 @@ public VersionedMigrationSet getVersions(
//note that we MUST migrate to v3 before our next migration, if v4 and v5 is implemented we will need a
// v3->v5 and a v4->v5 set
MigrationRelationship current =
- new MigrationRelationship( v3, v3 );
+ new MigrationRelationship<>( v3, v3 );
//now create our set of versions
@@ -151,7 +158,7 @@ public VersionedMigrationSet getVersions(
//note that we MUST migrate to v3 before our next migration, if v4 and v5 is implemented we will need a
// v3->v5 and a v4->v5 set
MigrationRelationship current =
- new MigrationRelationship( v2, v2 );
+ new MigrationRelationship<>( v2, v2 );
//now create our set of versions
@@ -160,4 +167,33 @@ public VersionedMigrationSet getVersions(
return set;
}
+
+
+
+ /**
+ * Configure via explicit declaration the migration path we can follow
+ */
+ @Singleton
+ @Inject
+ @Provides
+ public VersionedMigrationSet getVersions(
+ final UniqueValueSerializationStrategyV1Impl v1, final UniqueValueSerializationStrategyV2Impl v2) {
+
+
+ //we must perform a migration from v1 to v3 in order to maintain consistency
+ MigrationRelationship v1Tov2 = new MigrationRelationship<>( v1, v2 );
+
+
+ //note that we MUST migrate to v3 before our next migration, if v4 and v5 is implemented we will need a
+ // v3->v5 and a v4->v5 set
+ MigrationRelationship current =
+ new MigrationRelationship<>( v2, v2 );
+
+
+ //now create our set of versions
+ VersionedMigrationSet set =
+ new VersionedMigrationSet<>( v1Tov2, current );
+
+ return set;
+ }
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueSerializationStrategyImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueSerializationStrategyImpl.java
index bd35c7a41a..a1fb4cc4f9 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueSerializationStrategyImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/UniqueValueSerializationStrategyImpl.java
@@ -39,7 +39,6 @@
import org.apache.usergrid.persistence.core.astyanax.ColumnNameIterator;
import org.apache.usergrid.persistence.core.astyanax.ColumnParser;
import org.apache.usergrid.persistence.core.astyanax.ColumnTypes;
-import org.apache.usergrid.persistence.core.astyanax.IdRowCompositeSerializer;
import org.apache.usergrid.persistence.core.astyanax.MultiTennantColumnFamily;
import org.apache.usergrid.persistence.core.astyanax.MultiTennantColumnFamilyDefinition;
import org.apache.usergrid.persistence.core.astyanax.ScopedRowKey;
@@ -64,53 +63,42 @@
/**
* Reads and writes to UniqueValues column family.
*/
-public class UniqueValueSerializationStrategyImpl implements UniqueValueSerializationStrategy {
+public abstract class UniqueValueSerializationStrategyImpl
+ implements UniqueValueSerializationStrategy {
private static final Logger log = LoggerFactory.getLogger( UniqueValueSerializationStrategyImpl.class );
- private static final CollectionScopedRowKeySerializer ROW_KEY_SER =
- new CollectionScopedRowKeySerializer<>( UniqueFieldRowKeySerializer.get() );
+ private final MultiTennantColumnFamily, EntityVersion>
+ CF_UNIQUE_VALUES;
- private static final EntityVersionSerializer ENTITY_VERSION_SER = new EntityVersionSerializer();
- private static final MultiTennantColumnFamily>, EntityVersion>
- CF_UNIQUE_VALUES = new MultiTennantColumnFamily<>( "Unique_Values", ROW_KEY_SER, ENTITY_VERSION_SER );
-
-
-
- private static final IdRowCompositeSerializer ID_SER = IdRowCompositeSerializer.get();
-
-
- private static final CollectionScopedRowKeySerializer