You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by to...@apache.org on 2013/12/05 18:35:32 UTC

[1/4] Example using google’s event bus. Seems events are getting dispatched multiple times.

Updated Branches:
  refs/heads/two-dot-o 44072d594 -> ce2bfd82d


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccEntitySerializationStrategy.java
----------------------------------------------------------------------
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 4aefbae..b873fb6 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
@@ -8,7 +8,6 @@ import org.apache.usergrid.persistence.collection.CollectionContext;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
 
 import com.netflix.astyanax.MutationBatch;
-import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
 
 
 /** The interface that allows us to serialize an entity to disk */

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java
----------------------------------------------------------------------
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 1ce64aa..d4663b9 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
@@ -17,8 +17,8 @@ import org.apache.usergrid.persistence.collection.CollectionContext;
 import org.apache.usergrid.persistence.collection.migration.CollectionColumnFamily;
 import org.apache.usergrid.persistence.collection.migration.Migration;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccLogEntry;
-import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccLogEntryImpl;
 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 com.google.common.base.Preconditions;

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/SerializationModule.java
----------------------------------------------------------------------
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 f27b6ad..9a12b7d 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
@@ -2,7 +2,6 @@ package org.apache.usergrid.persistence.collection.serialization.impl;
 
 
 import org.apache.usergrid.persistence.collection.astynax.AstynaxKeyspaceProvider;
-import org.apache.usergrid.persistence.collection.guice.PropertyUtils;
 import org.apache.usergrid.persistence.collection.migration.Migration;
 import org.apache.usergrid.persistence.collection.migration.MigrationManager;
 import org.apache.usergrid.persistence.collection.migration.MigrationManagerImpl;
@@ -11,7 +10,6 @@ import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySeri
 
 import com.google.inject.AbstractModule;
 import com.google.inject.multibindings.Multibinder;
-import com.google.inject.name.Names;
 import com.netflix.astyanax.Keyspace;
 
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/service/impl/ServiceModule.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/service/impl/ServiceModule.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/service/impl/ServiceModule.java
index 858aed7..9f6835d 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/service/impl/ServiceModule.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/service/impl/ServiceModule.java
@@ -1,20 +1,10 @@
 package org.apache.usergrid.persistence.collection.service.impl;
 
 
-import org.apache.usergrid.persistence.collection.astynax.AstynaxKeyspaceProvider;
-import org.apache.usergrid.persistence.collection.migration.Migration;
-import org.apache.usergrid.persistence.collection.migration.MigrationManager;
-import org.apache.usergrid.persistence.collection.migration.MigrationManagerImpl;
-import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
-import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
-import org.apache.usergrid.persistence.collection.serialization.impl.MvccEntitySerializationStrategyImpl;
-import org.apache.usergrid.persistence.collection.serialization.impl.MvccLogEntrySerializationStrategyImpl;
 import org.apache.usergrid.persistence.collection.service.TimeService;
 import org.apache.usergrid.persistence.collection.service.UUIDService;
 
 import com.google.inject.AbstractModule;
-import com.google.inject.multibindings.Multibinder;
-import com.netflix.astyanax.Keyspace;
 
 
 /** @author tnine */

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerIT.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerIT.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerIT.java
index 9672a6b..a9dd579 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerIT.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerIT.java
@@ -6,11 +6,13 @@ import org.junit.Test;
 
 import org.apache.usergrid.persistence.collection.guice.CassandraTestCollectionModule;
 import org.apache.usergrid.persistence.collection.impl.CollectionContextImpl;
+import org.apache.usergrid.persistence.collection.mvcc.stage.impl.write.EventCreate;
 import org.apache.usergrid.persistence.model.entity.Entity;
 import org.apache.usergrid.persistence.model.field.IntegerField;
 import org.apache.usergrid.persistence.model.util.UUIDGenerator;
 import org.apache.usergrid.persistence.test.CassandraRule;
 
+import com.google.common.eventbus.EventBus;
 import com.google.guiceberry.junit4.GuiceBerryRule;
 import com.google.inject.Inject;
 
@@ -18,6 +20,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
 
 
 /** @author tnine */
@@ -33,6 +36,9 @@ public class CollectionManagerIT {
     @Inject
     private CollectionManagerFactory factory;
 
+    @Inject
+    private EventBus eventBus;
+
 
     @Test
     public void create() {
@@ -135,4 +141,6 @@ public class CollectionManagerIT {
 
         assertEquals("Field value correct", createReturned.getField( "counter" ), loadReturned.getField( "counter" ));
     }
+
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerTest.java
index fed0663..e3bb133 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerTest.java
@@ -7,9 +7,8 @@ import org.mockito.ArgumentCaptor;
 import org.apache.usergrid.persistence.collection.impl.CollectionContextImpl;
 import org.apache.usergrid.persistence.collection.impl.CollectionManagerImpl;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
-import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccEntityImpl;
 import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionContext;
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionStage;
+import org.apache.usergrid.persistence.collection.mvcc.stage.EventStage;
 import org.apache.usergrid.persistence.collection.mvcc.stage.StagePipeline;
 import org.apache.usergrid.persistence.model.entity.Entity;
 import org.apache.usergrid.persistence.model.util.UUIDGenerator;
@@ -24,44 +23,44 @@ import static org.mockito.Mockito.when;
 
 /** @author tnine */
 public class CollectionManagerTest {
-
-    @Test
-    public void create(){
-
-        ExecutionStage mockExecutionStage = mock(ExecutionStage.class);
-
-        StagePipeline createPipeline = mock(StagePipeline.class);
-        StagePipeline updatePipeline = mock(StagePipeline.class);
-        StagePipeline deletePipeline = mock(StagePipeline.class);
-        StagePipeline loadPipeline = mock(StagePipeline.class);
-
-
-
-        //mock up returning the first stage
-        when(createPipeline.first()).thenReturn( mockExecutionStage );
-
-
-        CollectionContext context = new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" );
-
-        CollectionManager collectionManager = new CollectionManagerImpl(createPipeline, updatePipeline, deletePipeline, loadPipeline, context);
-
-        Entity create = new Entity();
-
-        MvccEntity mvccEntity = mock(MvccEntity.class);
-
-
-        Entity returned = collectionManager.create( create );
-
-        //verify the first stage was asked for
-        verify(createPipeline).first();
-
-        ArgumentCaptor<ExecutionContext> contextArg = ArgumentCaptor.forClass(ExecutionContext.class);
-
-        //verify the first perform stage was invoked
-        verify( mockExecutionStage ).performStage( contextArg.capture() );
-
-        //verify we set the passed entity into the ExecutionContext
-        assertEquals("Entity should be present in the write context", create, contextArg.getValue().getMessage( Entity.class ));
-
-    }
+//
+//    @Test
+//    public void create(){
+//
+//        EventStage mockEventStage = mock(EventStage.class);
+//
+//        StagePipeline createPipeline = mock(StagePipeline.class);
+//        StagePipeline updatePipeline = mock(StagePipeline.class);
+//        StagePipeline deletePipeline = mock(StagePipeline.class);
+//        StagePipeline loadPipeline = mock(StagePipeline.class);
+//
+//
+//
+//        //mock up returning the first stage
+//        when(createPipeline.first()).thenReturn( mockEventStage );
+//
+//
+//        CollectionContext context = new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" );
+//
+//        CollectionManager collectionManager = new CollectionManagerImpl(createPipeline, updatePipeline, deletePipeline, loadPipeline, context);
+//
+//        Entity create = new Entity();
+//
+//        MvccEntity mvccEntity = mock(MvccEntity.class);
+//
+//
+//        Entity returned = collectionManager.create( create );
+//
+//        //verify the first stage was asked for
+//        verify(createPipeline).first();
+//
+//        ArgumentCaptor<ExecutionContext> contextArg = ArgumentCaptor.forClass(ExecutionContext.class);
+//
+//        //verify the first perform stage was invoked
+//        verify( mockEventStage ).performStage( contextArg.capture() );
+//
+//        //verify we set the passed entity into the ExecutionContext
+//        assertEquals("Entity should be present in the write context", create, contextArg.getValue().getMessage( Entity.class ));
+//
+//    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/ExecutionContextTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/ExecutionContextTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/ExecutionContextTest.java
deleted file mode 100644
index 1730107..0000000
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/ExecutionContextTest.java
+++ /dev/null
@@ -1,217 +0,0 @@
-package org.apache.usergrid.persistence.collection.mvcc.stage;
-
-
-import org.junit.Test;
-
-import org.apache.usergrid.persistence.collection.CollectionContext;
-import org.apache.usergrid.persistence.collection.mvcc.stage.impl.ExecutionContextImpl;
-
-import static junit.framework.TestCase.assertSame;
-import static org.junit.Assert.assertNull;
-import static org.mockito.Matchers.same;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-
-/** @author tnine */
-public class ExecutionContextTest {
-
-    @Test
-    public void performWrite() {
-
-        CollectionContext collectionContext = mock( CollectionContext.class );
-
-        StagePipeline pipeline = mock( StagePipeline.class );
-
-        ExecutionStage executionStage = mock( ExecutionStage.class );
-
-        when( pipeline.first() ).thenReturn( executionStage );
-
-        ExecutionContext executionContext = new ExecutionContextImpl( pipeline, collectionContext );
-
-        Object test = new Object();
-
-        executionContext.execute( test );
-
-        //verify we called first in the pipeline to get the first value
-        verify( pipeline ).first();
-
-        //verify the first executionStage was invoked
-        verify( executionStage ).performStage( same( executionContext ) );
-
-        //verify the bean value was set
-        assertSame( test, executionContext.getMessage( Object.class ) );
-    }
-
-
-    @Test
-    public void setAndGet() {
-        Object test = new Object();
-
-        CollectionContext collectionContext = mock( CollectionContext.class );
-
-        StagePipeline pipeline = mock( StagePipeline.class );
-
-
-        ExecutionContext executionContext = new ExecutionContextImpl( pipeline, collectionContext );
-
-        executionContext.setMessage( test );
-
-        assertSame( "Same value returned", test, executionContext.getMessage( Object.class ) );
-    }
-
-
-    @Test
-    public void setAndGetTypeSafe() {
-        TestBean test = new TestBean();
-
-        CollectionContext collectionContext = mock( CollectionContext.class );
-
-        StagePipeline pipeline = mock( StagePipeline.class );
-
-
-        ExecutionContext executionContext = new ExecutionContextImpl( pipeline, collectionContext );
-
-        executionContext.setMessage( test );
-
-        //works because Test is an instance of object
-        assertSame( "Test instance of object", test, executionContext.getMessage( Object.class ) );
-
-        assertSame( "Test instance of object", test, executionContext.getMessage( TestBean.class ) );
-    }
-
-
-    @Test( expected = ClassCastException.class )
-    public void setAndGetBadType() {
-        Object test = new Object();
-
-        CollectionContext collectionContext = mock( CollectionContext.class );
-
-        StagePipeline pipeline = mock( StagePipeline.class );
-
-
-        ExecutionContext executionContext = new ExecutionContextImpl( pipeline, collectionContext );
-
-        executionContext.setMessage( test );
-
-        //works because Test is an instance of object
-        assertSame( "Test instance of object", test, executionContext.getMessage( Object.class ) );
-
-        //should blow up, not type save.  The object test is not an instance of TestBean
-        executionContext.getMessage( TestBean.class );
-    }
-
-
-    @Test
-    public void nullMessage() {
-
-        CollectionContext collectionContext = mock( CollectionContext.class );
-
-        StagePipeline pipeline = mock( StagePipeline.class );
-
-
-        ExecutionContext executionContext = new ExecutionContextImpl( pipeline, collectionContext );
-
-        executionContext.setMessage( null );
-
-        //works because Test is an instance of object
-        assertNull( "Null message returned", executionContext.getMessage( Object.class ) );
-    }
-
-
-    @Test
-    public void proceedHasNextStep() {
-
-        CollectionContext collectionContext = mock( CollectionContext.class );
-
-        StagePipeline pipeline = mock( StagePipeline.class );
-
-        ExecutionStage firstExecutionStage = mock( ExecutionStage.class );
-
-        ExecutionStage secondExecutionStage = mock( ExecutionStage.class );
-
-
-        when( pipeline.first() ).thenReturn( firstExecutionStage );
-
-        when( pipeline.nextStage( same( firstExecutionStage ) ) ).thenReturn( secondExecutionStage );
-
-
-        ExecutionContext executionContext = new ExecutionContextImpl( pipeline, collectionContext );
-
-        Object test = new Object();
-
-        executionContext.execute( test );
-
-        //now proceed and validate we were called
-        executionContext.proceed();
-
-        verify( secondExecutionStage ).performStage( same( executionContext ) );
-    }
-
-
-    @Test
-    public void proceedNoNextStep() {
-
-        CollectionContext collectionContext = mock( CollectionContext.class );
-
-        StagePipeline pipeline = mock( StagePipeline.class );
-
-        ExecutionStage firstExecutionStage = mock( ExecutionStage.class );
-
-        when( pipeline.first() ).thenReturn( firstExecutionStage );
-
-        when( pipeline.nextStage( same( firstExecutionStage ) ) ).thenReturn( null );
-
-
-        ExecutionContext executionContext = new ExecutionContextImpl( pipeline, collectionContext );
-
-        Object test = new Object();
-
-        executionContext.execute( test );
-
-        //now proceed and validate we were called
-        executionContext.proceed();
-    }
-
-
-    @Test
-    public void getContextCorrect() {
-
-        CollectionContext collectionContext = mock( CollectionContext.class );
-
-        StagePipeline pipeline = mock( StagePipeline.class );
-
-
-        ExecutionContext executionContext = new ExecutionContextImpl( pipeline, collectionContext );
-
-        assertSame( "Collection context pointer correct", collectionContext, executionContext.getCollectionContext() );
-    }
-
-
-
-
-    @Test( expected = NullPointerException.class )
-    public void nullContextFails() {
-
-        CollectionContext collectionContext = mock( CollectionContext.class );
-
-
-        new ExecutionContextImpl( null, collectionContext );
-    }
-
-
-    @Test( expected = NullPointerException.class )
-    public void nullPipelineFails() {
-
-        CollectionContext collectionContext = mock( CollectionContext.class );
-
-
-        new ExecutionContextImpl( null, collectionContext );
-    }
-
-
-    private static class TestBean {
-
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/StagePipelineTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/StagePipelineTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/StagePipelineTest.java
deleted file mode 100644
index 86a2a3a..0000000
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/StagePipelineTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package org.apache.usergrid.persistence.collection.mvcc.stage;
-
-
-import org.junit.Test;
-
-import org.apache.usergrid.persistence.collection.mvcc.stage.impl.StagePipelineImpl;
-
-import static junit.framework.TestCase.assertSame;
-import static org.junit.Assert.assertNull;
-import static org.mockito.Mockito.mock;
-
-
-/** @author tnine */
-public class StagePipelineTest {
-
-    @Test
-    public void oneStage() {
-        ExecutionStage first = mock( ExecutionStage.class );
-
-        StagePipeline pipeline = StagePipelineImpl.fromStages( first );
-
-        assertSame( "Correct stage returned", first, pipeline.first() );
-
-        ExecutionStage next = pipeline.nextStage( first );
-
-        assertNull( "No next stage", next );
-    }
-
-
-    @Test
-    public void threeStages() {
-        ExecutionStage first = mock( ExecutionStage.class );
-        ExecutionStage second = mock( ExecutionStage.class );
-        ExecutionStage third = mock( ExecutionStage.class );
-
-        StagePipeline pipeline = StagePipelineImpl.fromStages( first, second, third );
-
-        assertSame( "Correct stage returned", first, pipeline.first() );
-
-        ExecutionStage next = pipeline.nextStage( first );
-
-        assertSame( "Correct stage returned", second, next );
-
-        next = pipeline.nextStage( next );
-
-        assertSame( "Correct stage returned", third, next );
-
-        next = pipeline.nextStage( next );
-
-        assertNull( "No next stage", next );
-    }
-
-
-    /**
-     * Test seeking without calling .first() just to make sure there's no side effects
-     */
-    @Test
-    public void stageSeek() {
-        ExecutionStage first = mock( ExecutionStage.class );
-        ExecutionStage second = mock( ExecutionStage.class );
-        ExecutionStage third = mock( ExecutionStage.class );
-
-        StagePipeline pipeline = StagePipelineImpl.fromStages( first, second, third );
-
-
-        ExecutionStage next = pipeline.nextStage( second );
-
-        assertSame( "Correct stage returned", third, next );
-
-        next = pipeline.nextStage( next );
-
-        assertNull( "No next stage", next );
-    }
-
-
-    @Test( expected = NullPointerException.class )
-    public void invalidStageInput() {
-        ExecutionStage first = mock( ExecutionStage.class );
-
-        StagePipeline pipeline = StagePipelineImpl.fromStages( first );
-        pipeline.nextStage( null );
-    }
-
-
-    @Test( expected = IllegalArgumentException.class )
-    public void noStagesErrors() {
-        StagePipelineImpl.fromStages();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/CreateTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/CreateTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/CreateTest.java
index 41152c1..54fadc9 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/CreateTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/CreateTest.java
@@ -7,7 +7,10 @@ import java.util.concurrent.ExecutionException;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
 
+import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
 import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionContext;
+import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
 import org.apache.usergrid.persistence.collection.mvcc.stage.impl.write.Create;
 import org.apache.usergrid.persistence.collection.service.TimeService;
 import org.apache.usergrid.persistence.collection.service.UUIDService;
@@ -29,14 +32,6 @@ public class CreateTest {
     @Test
     public void testValidInput() throws ConnectionException, ExecutionException, InterruptedException {
 
-        final ExecutionContext executionContext = mock( ExecutionContext.class );
-
-
-        //set up the mock to return the entity from the start phase
-        final Entity entity = new Entity();
-
-        when( executionContext.getMessage( Entity.class ) ).thenReturn( entity );
-
 
         //mock returning the time
         final TimeService timeService = mock( TimeService.class );
@@ -56,20 +51,34 @@ public class CreateTest {
         //mock the uuid service
         when( uuidService.newTimeUUID() ).thenReturn( newEntityId );
 
+        final CollectionEventBus eventBus = mock(CollectionEventBus.class);
+
+        Result result = new Result();
+
 
         //perform the stage
-        final Create create = new Create( timeService, uuidService );
+        final Create create = new Create(eventBus,  timeService, uuidService );
+
+
+
+        //set up the mock to return the entity from the start phase
+        final Entity entity = new Entity();
+
+
+        final CollectionContext context = mock(CollectionContext.class);
+
+        EventCreate createEvent = new EventCreate(context,  entity, result );
+        create.performStage( createEvent );
 
-        create.performStage( executionContext );
 
 
         //now verify our output was correct
-        ArgumentCaptor<Entity> mvccEntity = ArgumentCaptor.forClass( Entity.class );
+        ArgumentCaptor<EventStart> event = ArgumentCaptor.forClass( EventStart.class );
 
 
-        verify( executionContext ).setMessage( mvccEntity.capture() );
+        verify( eventBus ).post( event.capture() );
 
-        Entity created = mvccEntity.getValue();
+        Entity created = event.getValue().getData();
 
         //verify uuid and version in both the MvccEntity and the entity itself
         assertEquals( "Entity re-set into context", entity, created );
@@ -81,8 +90,6 @@ public class CreateTest {
         assertEquals( "updated time matches generator", time, created.getUpdated() );
 
 
-        //now verify the proceed was called
-        verify( executionContext ).proceed();
     }
 
 
@@ -103,12 +110,15 @@ public class CreateTest {
         //mock the uuid service
         final UUIDService uuidService = mock( UUIDService.class );
 
+        final CollectionEventBus eventBus = mock(CollectionEventBus.class);
+
+
 
         //perform the stage
-        final Create create = new Create( timeService, uuidService );
+        final Create create = new Create( eventBus, timeService, uuidService );
 
         //should throw an NPE
-        create.performStage( executionContext );
+        create.performStage( null );
 
 
     }
@@ -116,31 +126,46 @@ public class CreateTest {
 
     /** Test no time service */
     @Test(expected = NullPointerException.class)
-    public void testNoTimeService() throws ConnectionException, ExecutionException, InterruptedException {
+    public void testNoEventBus() throws ConnectionException, ExecutionException, InterruptedException {
 
-        final ExecutionContext executionContext = mock( ExecutionContext.class );
 
 
-        when( executionContext.getMessage( Entity.class ) ).thenReturn( null );
-
 
         //mock the uuid service
         final UUIDService uuidService = mock( UUIDService.class );
 
+        final TimeService timeService = mock(TimeService.class);
+
+
 
         //perform the stage
-        new Create( null, uuidService );
+        new Create( null, timeService, uuidService );
     }
 
 
+
     /** Test no time service */
     @Test(expected = NullPointerException.class)
-    public void testNoUUIDService() throws ConnectionException, ExecutionException, InterruptedException {
+    public void testNoTimeService() throws ConnectionException, ExecutionException, InterruptedException {
 
-        final ExecutionContext executionContext = mock( ExecutionContext.class );
 
+        final CollectionEventBus eventBus = mock(CollectionEventBus.class);
 
-        when( executionContext.getMessage( Entity.class ) ).thenReturn( null );
+        //mock the uuid service
+        final UUIDService uuidService = mock( UUIDService.class );
+
+
+
+        //perform the stage
+        new Create( eventBus, null, uuidService );
+    }
+
+
+    /** Test no time service */
+    @Test(expected = NullPointerException.class)
+    public void testNoUUIDService() throws ConnectionException, ExecutionException, InterruptedException {
+
+        final CollectionEventBus eventBus = mock(CollectionEventBus.class);
 
 
         //mock returning the time
@@ -148,6 +173,6 @@ public class CreateTest {
 
 
         //throw NPE
-        new Create( timeService, null );
+        new Create(eventBus,  timeService, null );
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/StartWriteTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/StartWriteTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/StartWriteTest.java
index 006dda9..5dc8de7 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/StartWriteTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/StartWriteTest.java
@@ -9,11 +9,11 @@ import org.mockito.ArgumentCaptor;
 import org.apache.commons.lang3.reflect.FieldUtils;
 
 import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccLogEntry;
 import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionContext;
-import org.apache.usergrid.persistence.collection.mvcc.stage.impl.write.StartWrite;
+import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
 import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
 import org.apache.usergrid.persistence.model.entity.Entity;
 import org.apache.usergrid.persistence.model.util.UUIDGenerator;
@@ -36,19 +36,9 @@ public class StartWriteTest {
     public void testStartStage() throws Exception {
 
 
-        final ExecutionContext executionContext = mock( ExecutionContext.class );
         final CollectionContext context = mock( CollectionContext.class );
 
-
-        //mock returning the context
-        when( executionContext.getCollectionContext() ).thenReturn( context );
-
-
-        //set up the mock to return the entity from the start phase
-        final Entity entity = generateEntity();
-
-        //mock returning the entity from the write context
-        when( executionContext.getMessage( Entity.class ) ).thenReturn( entity );
+        final CollectionEventBus bus = mock( CollectionEventBus.class );
 
 
         //mock returning a mock mutation when we do a log entry write
@@ -61,14 +51,22 @@ public class StartWriteTest {
         when( logStrategy.write( same( context ), logEntry.capture() ) ).thenReturn( mutation );
 
 
+        Result result = new Result();
+
+        //set up the mock to return the entity from the start phase
+        final Entity entity = generateEntity();
+
+
+        EventStart start = new EventStart( context, entity, result );
+
         //run the stage
-        StartWrite newStage = new StartWrite( logStrategy );
+        StartWrite newStage = new StartWrite( bus, logStrategy );
 
-        newStage.performStage( executionContext );
+        newStage.performStage( start );
 
 
         //now verify our output was correct
-        ArgumentCaptor<MvccEntity> mvccEntity = ArgumentCaptor.forClass( MvccEntity.class );
+        ArgumentCaptor<EventVerify> eventVerify = ArgumentCaptor.forClass( EventVerify.class );
 
 
         //verify the log entry is correct
@@ -76,44 +74,18 @@ public class StartWriteTest {
 
         assertEquals( "entity id did not match ", entity.getUuid(), entry.getEntityId() );
         assertEquals( "version did not not match entityId", entity.getVersion(), entry.getVersion() );
-        assertEquals( "ExecutionStage is correct", Stage.ACTIVE, entry.getStage() );
+        assertEquals( "EventStage is correct", Stage.ACTIVE, entry.getStage() );
 
 
         //now verify we set the message into the write context
-        verify( executionContext ).setMessage( mvccEntity.capture() );
+        verify( bus ).post( eventVerify.capture() );
 
-        MvccEntity created = mvccEntity.getValue();
+        MvccEntity created = eventVerify.getValue().getData();
 
         //verify uuid and version in both the MvccEntity and the entity itself
         assertEquals( "entity id did not match generator", entity.getUuid(), created.getUuid() );
         assertEquals( "version did not not match entityId", entity.getVersion(), created.getVersion() );
         assertSame( "Entity correct", entity, created.getEntity().get() );
-
-
-        //now verify the proceed was called
-        verify( executionContext ).proceed();
-    }
-
-
-    /** Test no entity in the pipeline */
-    @Test( expected = NullPointerException.class )
-    public void testNoEntity() throws Exception {
-
-
-        final ExecutionContext executionContext = mock( ExecutionContext.class );
-
-
-        //mock returning the entity from the write context
-        when( executionContext.getMessage( Entity.class ) ).thenReturn( null );
-
-
-        //mock returning a mock mutation when we do a log entry write
-        final MvccLogEntrySerializationStrategy logStrategy = mock( MvccLogEntrySerializationStrategy.class );
-
-        //run the stage
-        StartWrite newStage = new StartWrite( logStrategy );
-
-        newStage.performStage( executionContext );
     }
 
 
@@ -122,25 +94,22 @@ public class StartWriteTest {
     public void testNoEntityId() throws Exception {
 
 
-        final ExecutionContext executionContext = mock( ExecutionContext.class );
-
-
         final Entity entity = new Entity();
         final UUID version = UUIDGenerator.newTimeUUID();
 
         entity.setVersion( version );
 
-        //mock returning the entity from the write context
-        when( executionContext.getMessage( Entity.class ) ).thenReturn( entity );
 
+        final CollectionContext context = mock( CollectionContext.class );
+        final CollectionEventBus eventBus = mock( CollectionEventBus.class );
 
         //mock returning a mock mutation when we do a log entry write
         final MvccLogEntrySerializationStrategy logStrategy = mock( MvccLogEntrySerializationStrategy.class );
 
         //run the stage
-        StartWrite newStage = new StartWrite( logStrategy );
+        StartWrite newStage = new StartWrite( eventBus, logStrategy );
 
-        newStage.performStage( executionContext );
+        newStage.performStage( new EventStart( context, entity, new Result() ) );
     }
 
 
@@ -149,9 +118,6 @@ public class StartWriteTest {
     public void testNoEntityVersion() throws Exception {
 
 
-        final ExecutionContext executionContext = mock( ExecutionContext.class );
-
-
         final Entity entity = new Entity();
         final UUID entityId = UUIDGenerator.newTimeUUID();
 
@@ -159,17 +125,17 @@ public class StartWriteTest {
         FieldUtils.writeDeclaredField( entity, "uuid", entityId, true );
 
 
-        //mock returning the entity from the write context
-        when( executionContext.getMessage( Entity.class ) ).thenReturn( entity );
+        final CollectionContext context = mock( CollectionContext.class );
+        final CollectionEventBus eventBus = mock( CollectionEventBus.class );
 
 
         //mock returning a mock mutation when we do a log entry write
         final MvccLogEntrySerializationStrategy logStrategy = mock( MvccLogEntrySerializationStrategy.class );
 
         //run the stage
-        StartWrite newStage = new StartWrite( logStrategy );
+        StartWrite newStage = new StartWrite( eventBus, logStrategy );
 
-        newStage.performStage( executionContext );
+        newStage.performStage( new EventStart( context, entity, new Result() ) );
     }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/UpdateTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/UpdateTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/UpdateTest.java
index 24ec265..910eb38 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/UpdateTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/UpdateTest.java
@@ -9,7 +9,10 @@ import org.mockito.ArgumentCaptor;
 
 import org.apache.commons.lang3.reflect.FieldUtils;
 
+import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
 import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionContext;
+import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
 import org.apache.usergrid.persistence.collection.service.TimeService;
 import org.apache.usergrid.persistence.collection.service.UUIDService;
 import org.apache.usergrid.persistence.model.entity.Entity;
@@ -31,8 +34,6 @@ public class UpdateTest {
     @Test
     public void testValidInput() throws Exception {
 
-        final ExecutionContext executionContext = mock( ExecutionContext.class );
-
 
         //set up the mock to return the entity from the start phase
         final Entity entity = new Entity();
@@ -42,9 +43,8 @@ public class UpdateTest {
         FieldUtils.writeDeclaredField( entity, "uuid", existingEntityId, true );
         entity.setCreated( createdTime );
 
-
-        when( executionContext.getMessage( Entity.class ) ).thenReturn( entity );
-
+        final CollectionEventBus eventBus = mock( CollectionEventBus.class );
+        final CollectionContext context = mock( CollectionContext.class );
 
         //mock returning the time
         final TimeService timeService = mock( TimeService.class );
@@ -66,19 +66,18 @@ public class UpdateTest {
 
 
         //perform the stage
-        final Update create = new Update( timeService, uuidService );
-
+        final Update create = new Update( eventBus, timeService, uuidService );
 
-        create.performStage( executionContext );
+        create.performStage( new EventUpdate( context, entity, new Result() ) );
 
 
         //now verify our output was correct
-        ArgumentCaptor<Entity> mvccEntity = ArgumentCaptor.forClass( Entity.class );
+        ArgumentCaptor<EventStart> mvccEntity = ArgumentCaptor.forClass( EventStart.class );
 
 
-        verify( executionContext ).setMessage( mvccEntity.capture() );
+        verify( eventBus ).post( mvccEntity.capture() );
 
-        Entity created = mvccEntity.getValue();
+        Entity created = mvccEntity.getValue().getData();
 
         //verify uuid and version in both the MvccEntity and the entity itself
         assertEquals( "Entity re-set into context", entity, created );
@@ -88,15 +87,11 @@ public class UpdateTest {
         //check the time
         assertEquals( "created time matches generator", createdTime, created.getCreated() );
         assertEquals( "updated time matches generator", updateTime, created.getUpdated() );
-
-
-        //now verify the proceed was called
-        verify( executionContext ).proceed();
     }
 
 
     /** Test the start stage for happy path */
-    @Test(expected = NullPointerException.class)
+    @Test( expected = NullPointerException.class )
     public void testInvalidInput() throws ConnectionException, ExecutionException, InterruptedException {
 
         final ExecutionContext executionContext = mock( ExecutionContext.class );
@@ -112,51 +107,48 @@ public class UpdateTest {
         //mock the uuid service
         final UUIDService uuidService = mock( UUIDService.class );
 
+        final CollectionEventBus eventBus = mock( CollectionEventBus.class );
+
 
         //perform the stage
-        final Update create = new Update( timeService, uuidService );
+        final Update create = new Update( eventBus, timeService, uuidService );
 
         //should throw an NPE
-        create.performStage( executionContext );
-
-
+        create.performStage( null );
     }
 
-    @Test(expected = NullPointerException.class)
-     public void testInvalidInputNoId() throws ConnectionException, ExecutionException, InterruptedException {
 
-         final ExecutionContext executionContext = mock( ExecutionContext.class );
+    @Test( expected = NullPointerException.class )
+    public void testInvalidInputNoId() throws ConnectionException, ExecutionException, InterruptedException {
 
 
-         when( executionContext.getMessage( Entity.class ) ).thenReturn( new Entity(  ) );
+        //mock returning the time
+        final TimeService timeService = mock( TimeService.class );
 
 
-         //mock returning the time
-         final TimeService timeService = mock( TimeService.class );
+        //mock the uuid service
+        final UUIDService uuidService = mock( UUIDService.class );
 
+        final CollectionEventBus eventBus = mock( CollectionEventBus.class );
 
-         //mock the uuid service
-         final UUIDService uuidService = mock( UUIDService.class );
+        final CollectionContext context = mock( CollectionContext.class );
 
 
-         //perform the stage
-         final Update create = new Update( timeService, uuidService );
-
-         //should throw an NPE
-         create.performStage( executionContext );
+        //perform the stage
+        final Update create = new Update( eventBus, timeService, uuidService );
 
+        final Entity entity = new Entity();
 
-     }
+        //should throw an NPE  due to no entity id
+        create.performStage( new EventUpdate(context, entity, new Result()  ) );
+    }
 
 
-    /** Test no time service */
-    @Test(expected = NullPointerException.class)
+    /** Test no uuid service */
+    @Test( expected = NullPointerException.class )
     public void testNoTimeService() throws ConnectionException, ExecutionException, InterruptedException {
 
-        final ExecutionContext executionContext = mock( ExecutionContext.class );
-
-
-        when( executionContext.getMessage( Entity.class ) ).thenReturn( null );
+        final CollectionEventBus eventBus = mock( CollectionEventBus.class );
 
 
         //mock the uuid service
@@ -164,26 +156,38 @@ public class UpdateTest {
 
 
         //perform the stage
-        new Update( null, uuidService );
+        new Update(eventBus,  null, uuidService );
     }
 
 
     /** Test no time service */
-    @Test(expected = NullPointerException.class)
+    @Test( expected = NullPointerException.class )
     public void testNoUUIDService() throws ConnectionException, ExecutionException, InterruptedException {
 
-        final ExecutionContext executionContext = mock( ExecutionContext.class );
+        final CollectionEventBus eventBus = mock( CollectionEventBus.class );
 
+        //mock returning the time
+        final TimeService timeService = mock( TimeService.class );
 
-        when( executionContext.getMessage( Entity.class ) ).thenReturn( null );
 
+        //throw NPE
+        new Update(eventBus,  timeService, null );
+    }
 
-        //mock returning the time
+
+    /** Test no bus service */
+    @Test( expected = NullPointerException.class )
+    public void testNoBusService() throws ConnectionException, ExecutionException, InterruptedException {
+
+       //mock returning the time
         final TimeService timeService = mock( TimeService.class );
 
+         //mock the uuid service
+        final UUIDService uuidService = mock( UUIDService.class );
+
+
 
         //throw NPE
-        new Update( timeService, null );
+        new Update(null,  timeService, uuidService );
     }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/index/src/main/java/org/apache/usergrid/persistence/index/stage/Complete.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/index/src/main/java/org/apache/usergrid/persistence/index/stage/Complete.java b/stack/corepersistence/index/src/main/java/org/apache/usergrid/persistence/index/stage/Complete.java
deleted file mode 100644
index 5cc021c..0000000
--- a/stack/corepersistence/index/src/main/java/org/apache/usergrid/persistence/index/stage/Complete.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.apache.usergrid.persistence.index.stage;
-
-
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionContext;
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionStage;
-
-
-/**
- *
- * @author: tnine
- *
- */
-public class Complete implements ExecutionStage
-{
-
-    @Override
-        public void performStage( final ExecutionContext context ) {
-            //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/index/src/main/java/org/apache/usergrid/persistence/index/stage/Start.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/index/src/main/java/org/apache/usergrid/persistence/index/stage/Start.java b/stack/corepersistence/index/src/main/java/org/apache/usergrid/persistence/index/stage/Start.java
deleted file mode 100644
index ddaa0f3..0000000
--- a/stack/corepersistence/index/src/main/java/org/apache/usergrid/persistence/index/stage/Start.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.apache.usergrid.persistence.index.stage;
-
-
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionContext;
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionStage;
-
-
-/** This state should signal an index update has started */
-public class Start implements ExecutionStage
-{
-
-    @Override
-    public void performStage( final ExecutionContext context ) {
-        //To change body of implemented methods use File | Settings | File Templates.
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/index/src/main/java/org/apache/usergrid/persistence/index/stage/Write.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/index/src/main/java/org/apache/usergrid/persistence/index/stage/Write.java b/stack/corepersistence/index/src/main/java/org/apache/usergrid/persistence/index/stage/Write.java
deleted file mode 100644
index 252f5af..0000000
--- a/stack/corepersistence/index/src/main/java/org/apache/usergrid/persistence/index/stage/Write.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.apache.usergrid.persistence.index.stage;
-
-
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionStage;
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionContext;
-
-
-/** This state should perform an update of the index. */
-public class Write implements ExecutionStage
-{
-
-
-@Override
-       public void performStage( final ExecutionContext context ) {
-           //To change body of implemented methods use File | Settings | File Templates.
-       }
-}
-


[3/4] Renamed interfaces to be clearer

Posted by to...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactoryTest.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..db79db7
--- /dev/null
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactoryTest.java
@@ -0,0 +1,52 @@
+package org.apache.usergrid.persistence.collection;
+
+
+import org.junit.Rule;
+import org.junit.Test;
+
+import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
+import org.apache.usergrid.persistence.collection.impl.EntityCollectionImpl;
+import org.apache.usergrid.persistence.model.util.UUIDGenerator;
+
+import com.google.guiceberry.junit4.GuiceBerryRule;
+import com.google.inject.Inject;
+import com.google.inject.ProvisionException;
+
+import static org.junit.Assert.assertNotNull;
+
+
+/**
+ * Basic tests
+ *
+ * @author tnine
+ */
+public class EntityCollectionManagerFactoryTest {
+
+
+    @Rule
+    public final GuiceBerryRule guiceBerry = new GuiceBerryRule( TestCollectionModule.class );
+
+
+    @Inject
+    private EntityCollectionManagerFactory entityCollectionManagerFactory;
+
+
+
+
+    @Test
+    public void validInput() {
+
+        EntityCollectionImpl context =
+                new EntityCollectionImpl( UUIDGenerator.newTimeUUID(), "test" );
+
+        EntityCollectionManager entityCollectionManager = entityCollectionManagerFactory.createCollectionManager( context );
+
+        assertNotNull( "A collection manager must be returned", entityCollectionManager );
+    }
+
+
+    @Test( expected = ProvisionException.class )
+    public void nullInput() {
+           EntityCollectionManager entityCollectionManager = entityCollectionManagerFactory.createCollectionManager( null );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerTest.java
new file mode 100644
index 0000000..13b2834
--- /dev/null
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerTest.java
@@ -0,0 +1,53 @@
+package org.apache.usergrid.persistence.collection;
+
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
+
+/** @author tnine */
+public class EntityCollectionManagerTest {
+//
+//    @Test
+//    public void create(){
+//
+//        EventStage mockEventStage = mock(EventStage.class);
+//
+//        StagePipeline createPipeline = mock(StagePipeline.class);
+//        StagePipeline updatePipeline = mock(StagePipeline.class);
+//        StagePipeline deletePipeline = mock(StagePipeline.class);
+//        StagePipeline loadPipeline = mock(StagePipeline.class);
+//
+//
+//
+//        //mock up returning the first stage
+//        when(createPipeline.first()).thenReturn( mockEventStage );
+//
+//
+//        EntityCollection context = new EntityCollectionImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" );
+//
+//        EntityCollectionManager collectionManager = new EntityCollectionManagerImpl(createPipeline, updatePipeline, deletePipeline, loadPipeline, context);
+//
+//        Entity create = new Entity();
+//
+//        MvccEntity mvccEntity = mock(MvccEntity.class);
+//
+//
+//        Entity returned = collectionManager.create( create );
+//
+//        //verify the first stage was asked for
+//        verify(createPipeline).first();
+//
+//        ArgumentCaptor<ExecutionContext> contextArg = ArgumentCaptor.forClass(ExecutionContext.class);
+//
+//        //verify the first perform stage was invoked
+//        verify( mockEventStage ).performStage( contextArg.capture() );
+//
+//        //verify we set the passed entity into the ExecutionContext
+//        assertEquals("Entity should be present in the write context", create, contextArg.getValue().getMessage( Entity.class ));
+//
+//    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccLogEntryImplTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccLogEntryImplTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccLogEntryImplTest.java
index 947541f..642fec5 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccLogEntryImplTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccLogEntryImplTest.java
@@ -5,11 +5,8 @@ import java.util.UUID;
 
 import org.junit.Test;
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
-import org.apache.usergrid.persistence.collection.impl.CollectionContextImpl;
 import org.apache.usergrid.persistence.collection.mvcc.entity.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.util.UUIDGenerator;
 
 import static org.junit.Assert.assertEquals;
@@ -21,27 +18,18 @@ public class MvccLogEntryImplTest {
 
     @Test( expected = NullPointerException.class )
     public void entityIdRequired() {
-        final CollectionContext context =
-                new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" );
-
         new MvccLogEntryImpl( null, UUIDGenerator.newTimeUUID(), Stage.ACTIVE );
     }
 
 
     @Test( expected = NullPointerException.class )
     public void versionRequired() {
-        final CollectionContext context =
-                new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" );
-
         new MvccLogEntryImpl( UUIDGenerator.newTimeUUID(), null, Stage.ACTIVE );
     }
 
 
     @Test( expected = NullPointerException.class )
     public void stageRequired() {
-        final CollectionContext context =
-                new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" );
-
         new MvccLogEntryImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), null );
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/CreateTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/CreateTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/CreateTest.java
index 54fadc9..7322d74 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/CreateTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/CreateTest.java
@@ -7,11 +7,10 @@ import java.util.concurrent.ExecutionException;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
 import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionContext;
 import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
-import org.apache.usergrid.persistence.collection.mvcc.stage.impl.write.Create;
 import org.apache.usergrid.persistence.collection.service.TimeService;
 import org.apache.usergrid.persistence.collection.service.UUIDService;
 import org.apache.usergrid.persistence.model.entity.Entity;
@@ -51,7 +50,7 @@ public class CreateTest {
         //mock the uuid service
         when( uuidService.newTimeUUID() ).thenReturn( newEntityId );
 
-        final CollectionEventBus eventBus = mock(CollectionEventBus.class);
+        final CollectionEventBus eventBus = mock( CollectionEventBus.class );
 
         Result result = new Result();
 
@@ -65,7 +64,7 @@ public class CreateTest {
         final Entity entity = new Entity();
 
 
-        final CollectionContext context = mock(CollectionContext.class);
+        final EntityCollection context = mock(EntityCollection.class);
 
         EventCreate createEvent = new EventCreate(context,  entity, result );
         create.performStage( createEvent );

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/StartWriteTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/StartWriteTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/StartWriteTest.java
index 5dc8de7..5b8d4cd 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/StartWriteTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/StartWriteTest.java
@@ -8,7 +8,7 @@ import org.mockito.ArgumentCaptor;
 
 import org.apache.commons.lang3.reflect.FieldUtils;
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccLogEntry;
@@ -36,7 +36,7 @@ public class StartWriteTest {
     public void testStartStage() throws Exception {
 
 
-        final CollectionContext context = mock( CollectionContext.class );
+        final EntityCollection context = mock( EntityCollection.class );
 
         final CollectionEventBus bus = mock( CollectionEventBus.class );
 
@@ -100,7 +100,7 @@ public class StartWriteTest {
         entity.setVersion( version );
 
 
-        final CollectionContext context = mock( CollectionContext.class );
+        final EntityCollection context = mock( EntityCollection.class );
         final CollectionEventBus eventBus = mock( CollectionEventBus.class );
 
         //mock returning a mock mutation when we do a log entry write
@@ -125,7 +125,7 @@ public class StartWriteTest {
         FieldUtils.writeDeclaredField( entity, "uuid", entityId, true );
 
 
-        final CollectionContext context = mock( CollectionContext.class );
+        final EntityCollection context = mock( EntityCollection.class );
         final CollectionEventBus eventBus = mock( CollectionEventBus.class );
 
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/UpdateTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/UpdateTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/UpdateTest.java
index 910eb38..68d6a27 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/UpdateTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/UpdateTest.java
@@ -9,7 +9,7 @@ import org.mockito.ArgumentCaptor;
 
 import org.apache.commons.lang3.reflect.FieldUtils;
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
 import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionContext;
 import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
@@ -44,7 +44,7 @@ public class UpdateTest {
         entity.setCreated( createdTime );
 
         final CollectionEventBus eventBus = mock( CollectionEventBus.class );
-        final CollectionContext context = mock( CollectionContext.class );
+        final EntityCollection context = mock( EntityCollection.class );
 
         //mock returning the time
         final TimeService timeService = mock( TimeService.class );
@@ -131,7 +131,7 @@ public class UpdateTest {
 
         final CollectionEventBus eventBus = mock( CollectionEventBus.class );
 
-        final CollectionContext context = mock( CollectionContext.class );
+        final EntityCollection context = mock( EntityCollection.class );
 
 
         //perform the stage

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImplTest.java
----------------------------------------------------------------------
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 1c38963..6a6f694 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
@@ -11,9 +11,9 @@ import org.junit.Test;
 
 import org.apache.cassandra.db.marshal.UUIDType;
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 import org.apache.usergrid.persistence.collection.guice.CassandraTestCollectionModule;
-import org.apache.usergrid.persistence.collection.impl.CollectionContextImpl;
+import org.apache.usergrid.persistence.collection.impl.EntityCollectionImpl;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
 import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccEntityImpl;
 import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
@@ -61,7 +61,7 @@ public class MvccEntitySerializationStrategyImplTest {
         final UUID applicationId = UUIDGenerator.newTimeUUID();
         final String name = "test";
 
-        CollectionContext context = new CollectionContextImpl( applicationId, applicationId, name );
+        EntityCollection context = new EntityCollectionImpl( applicationId, name );
 
 
         final UUID entityId = UUIDGenerator.newTimeUUID();
@@ -171,7 +171,7 @@ public class MvccEntitySerializationStrategyImplTest {
         final UUID applicationId = UUIDGenerator.newTimeUUID();
         final String name = "test";
 
-        CollectionContext context = new CollectionContextImpl( applicationId, applicationId, name );
+        EntityCollection context = new EntityCollectionImpl( applicationId, name );
 
 
         final UUID entityId = UUIDGenerator.newTimeUUID();
@@ -233,7 +233,7 @@ public class MvccEntitySerializationStrategyImplTest {
         final UUID applicationId = UUIDGenerator.newTimeUUID();
         final String name = "test";
 
-        CollectionContext context = new CollectionContextImpl( applicationId, applicationId, name );
+        EntityCollection context = new EntityCollectionImpl( applicationId, name );
 
 
         final UUID entityId = UUIDGenerator.newTimeUUID();
@@ -351,7 +351,7 @@ public class MvccEntitySerializationStrategyImplTest {
     @Test( expected = NullPointerException.class )
     public void writeParamsEntity() throws ConnectionException {
         serializationStrategy
-                .write( new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" ),
+                .write( new EntityCollectionImpl( UUIDGenerator.newTimeUUID(), "test" ),
                         null );
     }
 
@@ -366,7 +366,7 @@ public class MvccEntitySerializationStrategyImplTest {
     public void deleteParamEntityId() throws ConnectionException {
 
         serializationStrategy
-                .delete( new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" ),
+                .delete( new EntityCollectionImpl( UUIDGenerator.newTimeUUID(), "test" ),
                         null, UUIDGenerator.newTimeUUID() );
     }
 
@@ -375,7 +375,7 @@ public class MvccEntitySerializationStrategyImplTest {
     public void deleteParamVersion() throws ConnectionException {
 
         serializationStrategy
-                .delete( new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" ),
+                .delete( new EntityCollectionImpl( UUIDGenerator.newTimeUUID(), "test" ),
                         UUIDGenerator.newTimeUUID(), null );
     }
 
@@ -390,7 +390,7 @@ public class MvccEntitySerializationStrategyImplTest {
     public void loadParamEntityId() throws ConnectionException {
 
         serializationStrategy
-                .load( new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" ),
+                .load( new EntityCollectionImpl(  UUIDGenerator.newTimeUUID(), "test" ),
                         null, UUIDGenerator.newTimeUUID() );
     }
 
@@ -399,7 +399,7 @@ public class MvccEntitySerializationStrategyImplTest {
     public void loadParamVersion() throws ConnectionException {
 
         serializationStrategy
-                .load( new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" ),
+                .load( new EntityCollectionImpl( UUIDGenerator.newTimeUUID(), "test" ),
                         UUIDGenerator.newTimeUUID(), null );
     }
 
@@ -414,7 +414,7 @@ public class MvccEntitySerializationStrategyImplTest {
     public void loadListParamEntityId() throws ConnectionException {
 
         serializationStrategy
-                .load( new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" ),
+                .load( new EntityCollectionImpl( UUIDGenerator.newTimeUUID(), "test" ),
                         null, UUIDGenerator.newTimeUUID(), 1 );
     }
 
@@ -423,7 +423,7 @@ public class MvccEntitySerializationStrategyImplTest {
     public void loadListParamVersion() throws ConnectionException {
 
         serializationStrategy
-                .load( new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" ),
+                .load( new EntityCollectionImpl( UUIDGenerator.newTimeUUID(), "test" ),
                         UUIDGenerator.newTimeUUID(), null, 1 );
     }
 
@@ -432,7 +432,7 @@ public class MvccEntitySerializationStrategyImplTest {
     public void loadListParamSize() throws ConnectionException {
 
         serializationStrategy
-                .load( new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" ),
+                .load( new EntityCollectionImpl( UUIDGenerator.newTimeUUID(), "test" ),
                         UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), 0 );
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImplTest.java
----------------------------------------------------------------------
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 3261c40..a786138 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
@@ -9,9 +9,9 @@ import java.util.UUID;
 import org.junit.Rule;
 import org.junit.Test;
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 import org.apache.usergrid.persistence.collection.guice.CassandraTestCollectionModule;
-import org.apache.usergrid.persistence.collection.impl.CollectionContextImpl;
+import org.apache.usergrid.persistence.collection.impl.EntityCollectionImpl;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccLogEntry;
 import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
 import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccLogEntryImpl;
@@ -58,7 +58,7 @@ public class MvccLogEntrySerializationStrategyImplTest {
         final String name = "test";
 
 
-        CollectionContext context = new CollectionContextImpl( applicationId, applicationId, name );
+        EntityCollection context = new EntityCollectionImpl( applicationId, name );
 
 
         final UUID uuid = UUIDGenerator.newTimeUUID();
@@ -86,7 +86,7 @@ public class MvccLogEntrySerializationStrategyImplTest {
         final String name = "test";
 
 
-        CollectionContext context = new CollectionContextImpl( applicationId, applicationId, name );
+        EntityCollection context = new EntityCollectionImpl(  applicationId, name );
 
 
         final UUID uuid = UUIDGenerator.newTimeUUID();
@@ -106,7 +106,7 @@ public class MvccLogEntrySerializationStrategyImplTest {
         final String name = "test";
 
 
-        CollectionContext context = new CollectionContextImpl( applicationId, applicationId, name );
+        EntityCollection context = new EntityCollectionImpl(  applicationId, name );
 
 
         final UUID uuid = UUIDGenerator.newTimeUUID();
@@ -164,7 +164,7 @@ public class MvccLogEntrySerializationStrategyImplTest {
         final String name = "test";
 
 
-        CollectionContext context = new CollectionContextImpl( applicationId, applicationId, name );
+        EntityCollection context = new EntityCollectionImpl( applicationId, name );
 
 
         final UUID uuid = UUIDGenerator.newTimeUUID();
@@ -203,7 +203,7 @@ public class MvccLogEntrySerializationStrategyImplTest {
 
     @Test( expected = NullPointerException.class )
     public void writeParams() throws ConnectionException {
-        logEntryStrategy.write( mock( CollectionContext.class ), null );
+        logEntryStrategy.write( mock( EntityCollection.class ), null );
     }
 
 
@@ -217,7 +217,7 @@ public class MvccLogEntrySerializationStrategyImplTest {
     public void deleteParamEntityId() throws ConnectionException {
 
         logEntryStrategy
-                .delete( new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" ),
+                .delete( new EntityCollectionImpl( UUIDGenerator.newTimeUUID(), "test" ),
                         null, UUIDGenerator.newTimeUUID() );
     }
 
@@ -226,7 +226,7 @@ public class MvccLogEntrySerializationStrategyImplTest {
     public void deleteParamVersion() throws ConnectionException {
 
         logEntryStrategy
-                .delete( new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" ),
+                .delete( new EntityCollectionImpl(  UUIDGenerator.newTimeUUID(), "test" ),
                         UUIDGenerator.newTimeUUID(), null );
     }
 
@@ -241,7 +241,7 @@ public class MvccLogEntrySerializationStrategyImplTest {
     public void loadParamEntityId() throws ConnectionException {
 
         logEntryStrategy
-                .load( new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" ),
+                .load( new EntityCollectionImpl( UUIDGenerator.newTimeUUID(), "test" ),
                         null, UUIDGenerator.newTimeUUID() );
     }
 
@@ -250,7 +250,7 @@ public class MvccLogEntrySerializationStrategyImplTest {
     public void loadParamVersion() throws ConnectionException {
 
         logEntryStrategy
-                .load( new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" ),
+                .load( new EntityCollectionImpl( UUIDGenerator.newTimeUUID(), "test" ),
                         UUIDGenerator.newTimeUUID(), null );
     }
 
@@ -265,7 +265,7 @@ public class MvccLogEntrySerializationStrategyImplTest {
     public void loadListParamEntityId() throws ConnectionException {
 
         logEntryStrategy
-                .load( new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" ),
+                .load( new EntityCollectionImpl( UUIDGenerator.newTimeUUID(), "test" ),
                         null, UUIDGenerator.newTimeUUID(), 1 );
     }
 
@@ -274,7 +274,7 @@ public class MvccLogEntrySerializationStrategyImplTest {
     public void loadListParamVersion() throws ConnectionException {
 
         logEntryStrategy
-                .load( new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" ),
+                .load( new EntityCollectionImpl( UUIDGenerator.newTimeUUID(), "test" ),
                         UUIDGenerator.newTimeUUID(), null, 1 );
     }
 
@@ -283,7 +283,7 @@ public class MvccLogEntrySerializationStrategyImplTest {
     public void loadListParamSize() throws ConnectionException {
 
         logEntryStrategy
-                .load( new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" ),
+                .load( new EntityCollectionImpl(  UUIDGenerator.newTimeUUID(), "test" ),
                         UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), 0 );
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/index/src/main/java/org/apache/usergrid/persistence/index/QueryEngineFactory.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/index/src/main/java/org/apache/usergrid/persistence/index/QueryEngineFactory.java b/stack/corepersistence/index/src/main/java/org/apache/usergrid/persistence/index/QueryEngineFactory.java
index 1358a4e..bb80e3a 100644
--- a/stack/corepersistence/index/src/main/java/org/apache/usergrid/persistence/index/QueryEngineFactory.java
+++ b/stack/corepersistence/index/src/main/java/org/apache/usergrid/persistence/index/QueryEngineFactory.java
@@ -1,7 +1,7 @@
 package org.apache.usergrid.persistence.index;
 
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 
 
 /**
@@ -17,5 +17,5 @@ public interface QueryEngineFactory
      *
      * @param context The context to use when creating the index manager
      */
-    public QueryEngineFactory createIndexManager( CollectionContext context );
+    public QueryEngineFactory createIndexManager( EntityCollection context );
 }


[2/4] git commit: Example using google’s event bus. Seems events are getting dispatched multiple times.

Posted by to...@apache.org.
Example using google’s event bus. Seems events are getting dispatched multiple times.


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/56c415f2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/56c415f2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/56c415f2

Branch: refs/heads/two-dot-o
Commit: 56c415f2bd6ac784b5e5d71a6f92bbbc11f82b86
Parents: 44072d5
Author: Todd Nine <to...@apache.org>
Authored: Wed Dec 4 21:14:42 2013 -0700
Committer: Todd Nine <to...@apache.org>
Committed: Wed Dec 4 21:14:42 2013 -0700

----------------------------------------------------------------------
 .../collection/impl/CollectionManagerImpl.java  |  61 +++---
 .../mvcc/entity/CollectionEventBus.java         |  38 ++++
 .../collection/mvcc/entity/MvccEntity.java      |   1 -
 .../collection/mvcc/entity/MvccLogEntry.java    |   2 -
 .../entity/impl/CollectionEventBusImpl.java     |  20 ++
 .../mvcc/entity/impl/MvccEntityImpl.java        |   1 -
 .../mvcc/entity/impl/MvccLogEntryImpl.java      |   1 -
 .../mvcc/event/PostProcessListener.java         |   3 -
 .../collection/mvcc/stage/CollectionEvent.java  |  43 ++++
 .../collection/mvcc/stage/EventStage.java       |  18 ++
 .../collection/mvcc/stage/ExecutionContext.java |   5 -
 .../collection/mvcc/stage/ExecutionStage.java   |  15 --
 .../collection/mvcc/stage/Result.java           |  48 ++++
 .../collection/mvcc/stage/StagePipeline.java    |   8 +-
 .../stage/impl/CollectionPipelineModule.java    |  72 ++----
 .../mvcc/stage/impl/ExecutionContextImpl.java   |  92 --------
 .../mvcc/stage/impl/StagePipelineImpl.java      |  61 ------
 .../mvcc/stage/impl/delete/Delete.java          |  27 ++-
 .../mvcc/stage/impl/delete/DeletePipeline.java  |  23 --
 .../mvcc/stage/impl/delete/DeleteStart.java     |  17 ++
 .../mvcc/stage/impl/delete/Deletecommit.java    |  16 ++
 .../mvcc/stage/impl/delete/StartDelete.java     |  36 +--
 .../mvcc/stage/impl/read/EventLoad.java         |  17 ++
 .../collection/mvcc/stage/impl/read/Load.java   |  35 ++-
 .../mvcc/stage/impl/read/PipelineLoad.java      |  23 --
 .../mvcc/stage/impl/write/Commit.java           |  34 +--
 .../mvcc/stage/impl/write/Create.java           |  29 +--
 .../mvcc/stage/impl/write/EventCommit.java      |  16 ++
 .../mvcc/stage/impl/write/EventCreate.java      |  17 ++
 .../mvcc/stage/impl/write/EventStart.java       |  17 ++
 .../mvcc/stage/impl/write/EventUpdate.java      |  16 ++
 .../mvcc/stage/impl/write/EventVerify.java      |  17 ++
 .../mvcc/stage/impl/write/PipelineCreate.java   |  23 --
 .../mvcc/stage/impl/write/PipelineUpdate.java   |  23 --
 .../mvcc/stage/impl/write/StartWrite.java       |  40 ++--
 .../mvcc/stage/impl/write/Update.java           |  29 +--
 .../mvcc/stage/impl/write/Verify.java           |  20 +-
 .../MvccEntitySerializationStrategy.java        |   1 -
 .../MvccLogEntrySerializationStrategyImpl.java  |   2 +-
 .../serialization/impl/SerializationModule.java |   2 -
 .../collection/service/impl/ServiceModule.java  |  10 -
 .../collection/CollectionManagerIT.java         |   8 +
 .../collection/CollectionManagerTest.java       |  83 ++++---
 .../mvcc/stage/ExecutionContextTest.java        | 217 -------------------
 .../mvcc/stage/StagePipelineTest.java           |  89 --------
 .../mvcc/stage/impl/write/CreateTest.java       |  77 ++++---
 .../mvcc/stage/impl/write/StartWriteTest.java   |  84 +++----
 .../mvcc/stage/impl/write/UpdateTest.java       |  98 +++++----
 .../persistence/index/stage/Complete.java       |  21 --
 .../usergrid/persistence/index/stage/Start.java |  16 --
 .../usergrid/persistence/index/stage/Write.java |  18 --
 51 files changed, 659 insertions(+), 1031 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/CollectionManagerImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/CollectionManagerImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/CollectionManagerImpl.java
index e20ba62..7de8f50 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/CollectionManagerImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/CollectionManagerImpl.java
@@ -8,16 +8,17 @@ import org.slf4j.LoggerFactory;
 
 import org.apache.usergrid.persistence.collection.CollectionContext;
 import org.apache.usergrid.persistence.collection.CollectionManager;
+import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionContext;
-import org.apache.usergrid.persistence.collection.mvcc.stage.StagePipeline;
-import org.apache.usergrid.persistence.collection.mvcc.stage.impl.read.PipelineLoad;
-import org.apache.usergrid.persistence.collection.mvcc.stage.impl.write.PipelineCreate;
-import org.apache.usergrid.persistence.collection.mvcc.stage.impl.delete.DeletePipeline;
-import org.apache.usergrid.persistence.collection.mvcc.stage.impl.ExecutionContextImpl;
-import org.apache.usergrid.persistence.collection.mvcc.stage.impl.write.PipelineUpdate;
+import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
+import org.apache.usergrid.persistence.collection.mvcc.stage.impl.delete.DeleteStart;
+import org.apache.usergrid.persistence.collection.mvcc.stage.impl.read.EventLoad;
+import org.apache.usergrid.persistence.collection.mvcc.stage.impl.write.EventCreate;
+import org.apache.usergrid.persistence.collection.mvcc.stage.impl.write.EventUpdate;
 import org.apache.usergrid.persistence.model.entity.Entity;
 
+import com.google.common.base.Preconditions;
+import com.google.common.eventbus.EventBus;
 import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
 
@@ -32,23 +33,16 @@ public class CollectionManagerImpl implements CollectionManager {
     private static final Logger logger = LoggerFactory.getLogger( CollectionManagerImpl.class );
 
     private final CollectionContext context;
-    private final StagePipeline createPipeline;
-    private final StagePipeline updatePipeline;
-    private final StagePipeline deletePipeline;
-    private final StagePipeline loadPipeline;
+    private final CollectionEventBus eventBus;
 
 
     @Inject
-    public CollectionManagerImpl( @PipelineCreate final StagePipeline createPipeline,
-                                  @PipelineUpdate final StagePipeline updatePipeline,
-                                  @DeletePipeline final StagePipeline deletePipeline,
-                                  @PipelineLoad final StagePipeline loadPipeline,
+    public CollectionManagerImpl(  final CollectionEventBus eventBus,
                                   @Assisted final CollectionContext context ) {
 
-        this.createPipeline = createPipeline;
-        this.updatePipeline = updatePipeline;
-        this.deletePipeline = deletePipeline;
-        this.loadPipeline = loadPipeline;
+        Preconditions.checkNotNull( eventBus, "eventBus must be defined" );
+        Preconditions.checkNotNull( context, "context must be defined" );
+        this.eventBus = eventBus;
         this.context = context;
     }
 
@@ -56,46 +50,43 @@ public class CollectionManagerImpl implements CollectionManager {
     @Override
     public Entity create( final Entity entity ) {
         // Create a new context for the write
-        ExecutionContext executionContext = new ExecutionContextImpl( createPipeline, context );
+        Result result = new Result();
 
-        //perform the write
-        executionContext.execute( entity );
+        eventBus.post( new EventCreate( context, entity, result ) );
 
-        MvccEntity result = executionContext.getMessage( MvccEntity.class );
+        MvccEntity completed = result.getLast( MvccEntity.class );
 
-        return result.getEntity().get();
+        return completed.getEntity().get();
     }
 
 
     @Override
     public Entity update( final Entity entity ) {
         // Create a new context for the write
-        ExecutionContext executionContext = new ExecutionContextImpl( updatePipeline, context );
+        Result result = new Result();
 
-        //perform the write
-        executionContext.execute( entity );
+        eventBus.post( new EventUpdate( context, entity, result ) );
 
-        MvccEntity result = executionContext.getMessage( MvccEntity.class );
+        MvccEntity completed = result.getLast( MvccEntity.class );
 
-         return result.getEntity().get();
+        return completed.getEntity().get();
     }
 
 
     @Override
     public void delete( final UUID entityId ) {
-        ExecutionContext deleteContext = new ExecutionContextImpl( deletePipeline, context );
-
-        deleteContext.execute( entityId );
+        eventBus.post( new DeleteStart( context, entityId, null ) );
     }
 
 
     @Override
     public Entity load( final UUID entityId ) {
-        ExecutionContext loadContext = new ExecutionContextImpl( loadPipeline, context );
+        Result result = new Result();
 
-        loadContext.execute( entityId );
+        eventBus.post( new EventLoad( context, entityId, result ) );
 
-        return loadContext.getMessage( Entity.class );
+        MvccEntity completed = result.getLast( MvccEntity.class );
 
+        return completed.getEntity().get();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/CollectionEventBus.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/CollectionEventBus.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/CollectionEventBus.java
new file mode 100644
index 0000000..c53f5ce
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/CollectionEventBus.java
@@ -0,0 +1,38 @@
+package org.apache.usergrid.persistence.collection.mvcc.entity;
+
+
+/** A dup of the Guava EventBus so we can easily mock and test
+ *  @author tnine */
+public interface CollectionEventBus {
+
+    /**
+     * Registers all handler methods on {@code object} to receive events.
+     * Handler methods are selected and classified using this EventBus's
+     * {@link com.google.common.eventbus.HandlerFindingStrategy}; the default strategy is the
+     * {@link com.google.common.eventbus.AnnotatedHandlerFinder}.
+     *
+     * @param object  object whose handler methods should be registered.
+     */
+    void register(Object object);
+
+    /**
+     * Unregisters all handler methods on a registered {@code object}.
+     *
+     * @param object  object whose handler methods should be unregistered.
+     * @throws IllegalArgumentException if the object was not previously registered.
+     */
+    void unregister(Object object);
+
+    /**
+      * Posts an event to all registered handlers.  This method will return
+      * successfully after the event has been posted to all handlers, and
+      * regardless of any exceptions thrown by handlers.
+      *
+      * <p>If no handlers have been subscribed for {@code event}'s class, and
+      * {@code event} is not already a {@link com.google.common.eventbus.DeadEvent}, it will be wrapped in a
+      * DeadEvent and reposted.
+      *
+      * @param event  event to post.
+      */
+     void post(Object event);
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/MvccEntity.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/MvccEntity.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/MvccEntity.java
index cc212c8..59197e8 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/MvccEntity.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/MvccEntity.java
@@ -3,7 +3,6 @@ package org.apache.usergrid.persistence.collection.mvcc.entity;
 
 import java.util.UUID;
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
 import org.apache.usergrid.persistence.model.entity.Entity;
 
 import com.google.common.base.Optional;

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/MvccLogEntry.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/MvccLogEntry.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/MvccLogEntry.java
index c6886d1..d14b35c 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/MvccLogEntry.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/MvccLogEntry.java
@@ -3,8 +3,6 @@ package org.apache.usergrid.persistence.collection.mvcc.entity;
 
 import java.util.UUID;
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
-
 
 /**
  * A Marker interface for an in flight update to allow context information to be passed between states

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/CollectionEventBusImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/CollectionEventBusImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/CollectionEventBusImpl.java
new file mode 100644
index 0000000..3278218
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/CollectionEventBusImpl.java
@@ -0,0 +1,20 @@
+package org.apache.usergrid.persistence.collection.mvcc.entity.impl;
+
+
+import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
+
+import com.google.common.eventbus.EventBus;
+
+
+/** @author tnine */
+public class CollectionEventBusImpl extends EventBus implements CollectionEventBus{
+
+    public CollectionEventBusImpl() {
+        super();
+    }
+
+
+    public CollectionEventBusImpl( final String identifier ) {
+        super( identifier );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccEntityImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccEntityImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccEntityImpl.java
index 1179dad..2d9f2f9 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccEntityImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccEntityImpl.java
@@ -3,7 +3,6 @@ package org.apache.usergrid.persistence.collection.mvcc.entity.impl;
 
 import java.util.UUID;
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
 import org.apache.usergrid.persistence.model.entity.Entity;
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccLogEntryImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccLogEntryImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccLogEntryImpl.java
index 2f0b4d7..dee56ae 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccLogEntryImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/entity/impl/MvccLogEntryImpl.java
@@ -3,7 +3,6 @@ package org.apache.usergrid.persistence.collection.mvcc.entity.impl;
 
 import java.util.UUID;
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccLogEntry;
 import org.apache.usergrid.persistence.collection.mvcc.entity.Stage;
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/event/PostProcessListener.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/event/PostProcessListener.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/event/PostProcessListener.java
index 29e6515..68479e8 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/event/PostProcessListener.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/event/PostProcessListener.java
@@ -1,9 +1,6 @@
 package org.apache.usergrid.persistence.collection.mvcc.event;
 
 
-import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
-
-
 /**
  *
  * @author: tnine

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/CollectionEvent.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/CollectionEvent.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/CollectionEvent.java
new file mode 100644
index 0000000..84df2d0
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/CollectionEvent.java
@@ -0,0 +1,43 @@
+package org.apache.usergrid.persistence.collection.mvcc.stage;
+
+
+import org.apache.usergrid.persistence.collection.CollectionContext;
+
+import com.google.common.base.Preconditions;
+
+
+/** @author tnine */
+public abstract class CollectionEvent<T> {
+
+    private final CollectionContext context;
+    private final T data;
+    private final Result result;
+
+
+    protected CollectionEvent( final CollectionContext context, final T data, final Result result ) {
+        Preconditions.checkNotNull( context, "context is required" );
+        Preconditions.checkNotNull( data, "context is required" );
+        Preconditions.checkNotNull( context, "context is required" );
+        this.context = context;
+        this.data = data;
+        this.result = result;
+    }
+
+
+
+
+    /** Get the collection context for this event */
+    public CollectionContext getCollectionContext() {
+        return this.context;
+    }
+
+
+    public T getData() {
+        return data;
+    }
+
+
+    public Result getResult() {
+        return result;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/EventStage.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/EventStage.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/EventStage.java
new file mode 100644
index 0000000..c62eb36
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/EventStage.java
@@ -0,0 +1,18 @@
+package org.apache.usergrid.persistence.collection.mvcc.stage;
+
+
+import com.google.common.eventbus.Subscribe;
+
+
+/** The possible stages in our write flow. */
+public interface EventStage<T extends CollectionEvent> {
+
+    /**
+     * Run this stage.  This will return the MvccEntity that should be returned or passed to the next stage
+     *
+     * @param event The event to receive
+     *
+     */
+    @Subscribe
+    public void performStage(T event );
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/ExecutionContext.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/ExecutionContext.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/ExecutionContext.java
index f124dcf..0fb9ced 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/ExecutionContext.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/ExecutionContext.java
@@ -1,12 +1,7 @@
 package org.apache.usergrid.persistence.collection.mvcc.stage;
 
 
-import java.util.Collection;
-import java.util.List;
-
 import org.apache.usergrid.persistence.collection.CollectionContext;
-import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
-import org.apache.usergrid.persistence.collection.mvcc.event.PostProcessListener;
 
 
 /** @author tnine */

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/ExecutionStage.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/ExecutionStage.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/ExecutionStage.java
deleted file mode 100644
index a98c813..0000000
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/ExecutionStage.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.apache.usergrid.persistence.collection.mvcc.stage;
-
-
-/** The possible stages in our write flow. */
-public interface ExecutionStage {
-
-    /**
-     * Run this stage.  This will return the MvccEntity that should be returned or passed to the next stage
-     *
-     * @param context The context of the current write operation
-     *
-     * @return The asynchronous listener to signal success
-     */
-    public void performStage( ExecutionContext context );
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/Result.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/Result.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/Result.java
new file mode 100644
index 0000000..1887c71
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/Result.java
@@ -0,0 +1,48 @@
+package org.apache.usergrid.persistence.collection.mvcc.stage;
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/** @author tnine */
+public class Result {
+
+    private List<Object> results;
+
+
+    public Result() {
+        results = new ArrayList<Object>();
+    }
+
+
+    public List<Object> getResults() {
+        return results;
+    }
+
+
+    public void addResult( final Object result ) {
+        this.results.add( result );
+    }
+
+
+    /**
+     * Get the last occurrence of an instance that implements the type provided.
+     * @param clazz  The class that the value should be an instance of
+     * @param <T> The type of class
+     * @return The value if one is found, null otherwise
+     */
+    public <T> T getLast( Class<T> clazz ) {
+
+        final int size = results.size();
+
+        for ( int i = size - 1; i > -1; i-- ) {
+            final Object value = results.get( i );
+            if ( clazz.isInstance( value ) ) {
+                return ( T ) value;
+            }
+        }
+
+        return null;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/StagePipeline.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/StagePipeline.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/StagePipeline.java
index 9d68e10..33a2264 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/StagePipeline.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/StagePipeline.java
@@ -13,14 +13,14 @@ public interface StagePipeline {
     /**
      * Get the first stage in this pipeline.
      */
-    ExecutionStage first();
+    EventStage first();
 
 
     /**
-     * get the next executionStage after the executionStage specified
-     * @param executionStage The executionStage to seek in our pipeline
+     * get the next eventStage after the eventStage specified
+     * @param eventStage The eventStage to seek in our pipeline
      */
-    ExecutionStage nextStage(ExecutionStage executionStage );
+    EventStage nextStage(EventStage eventStage );
 
 
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/CollectionPipelineModule.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/CollectionPipelineModule.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/CollectionPipelineModule.java
index 68dab72..7ef260b 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/CollectionPipelineModule.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/CollectionPipelineModule.java
@@ -1,23 +1,19 @@
 package org.apache.usergrid.persistence.collection.mvcc.stage.impl;
 
 
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionStage;
-import org.apache.usergrid.persistence.collection.mvcc.stage.StagePipeline;
+import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
+import org.apache.usergrid.persistence.collection.mvcc.entity.impl.CollectionEventBusImpl;
+import org.apache.usergrid.persistence.collection.mvcc.stage.EventStage;
 import org.apache.usergrid.persistence.collection.mvcc.stage.impl.delete.Delete;
-import org.apache.usergrid.persistence.collection.mvcc.stage.impl.delete.DeletePipeline;
 import org.apache.usergrid.persistence.collection.mvcc.stage.impl.delete.StartDelete;
 import org.apache.usergrid.persistence.collection.mvcc.stage.impl.read.Load;
-import org.apache.usergrid.persistence.collection.mvcc.stage.impl.read.PipelineLoad;
 import org.apache.usergrid.persistence.collection.mvcc.stage.impl.write.Commit;
 import org.apache.usergrid.persistence.collection.mvcc.stage.impl.write.Create;
-import org.apache.usergrid.persistence.collection.mvcc.stage.impl.write.PipelineCreate;
-import org.apache.usergrid.persistence.collection.mvcc.stage.impl.write.PipelineUpdate;
 import org.apache.usergrid.persistence.collection.mvcc.stage.impl.write.StartWrite;
 import org.apache.usergrid.persistence.collection.mvcc.stage.impl.write.Update;
 import org.apache.usergrid.persistence.collection.mvcc.stage.impl.write.Verify;
 
 import com.google.inject.AbstractModule;
-import com.google.inject.Inject;
 import com.google.inject.Provides;
 import com.google.inject.Singleton;
 import com.google.inject.multibindings.Multibinder;
@@ -31,45 +27,12 @@ import com.google.inject.multibindings.Multibinder;
 public class CollectionPipelineModule extends AbstractModule {
 
 
-    /**
-     * Wire the pipeline of operations for create.  This should create a new instance every time, since StagePipeline
-     * objects are mutable
-     */
     @Provides
-    @PipelineCreate
-    @Inject
     @Singleton
-    public StagePipeline createPipeline( final Create create, final StartWrite startWrite, final Verify write,
-                                         final Commit commit ) {
-        return StagePipelineImpl.fromStages( create, startWrite, write, commit );
-    }
-
+    public CollectionEventBus eventBus(){
+        CollectionEventBus bus =  new CollectionEventBusImpl( "collection" );
 
-    @Provides
-    @PipelineUpdate
-    @Inject
-    @Singleton
-    public StagePipeline updatePipeline( final Update update, final StartWrite startWrite, final Verify write,
-                                         final Commit commit ) {
-        return StagePipelineImpl.fromStages( update, startWrite, write, commit );
-    }
-
-
-    @Provides
-    @DeletePipeline
-    @Inject
-    @Singleton
-    public StagePipeline deletePipeline(final StartDelete startDelete,  final Delete delete ) {
-        return StagePipelineImpl.fromStages(startDelete, delete );
-    }
-
-
-    @Provides
-    @PipelineLoad
-    @Inject
-    @Singleton
-    public StagePipeline deletePipeline( final Load load ) {
-        return StagePipelineImpl.fromStages( load );
+        return bus;
     }
 
 
@@ -79,22 +42,27 @@ public class CollectionPipelineModule extends AbstractModule {
         /**
          * Configure all stages here
          */
-        Multibinder<ExecutionStage> stageBinder = Multibinder.newSetBinder( binder(), ExecutionStage.class );
+        Multibinder<EventStage> stageBinder = Multibinder.newSetBinder( binder(), EventStage.class );
 
 
+        /**
+         * Note we have to have the .asEagerSingleton(); or guice never loads these impls b/c they aren't
+         * directly referenced
+         */
 
         //creation stages
-        stageBinder.addBinding().to( Commit.class );
-        stageBinder.addBinding().to( Create.class );
-        stageBinder.addBinding().to( StartWrite.class );
-        stageBinder.addBinding().to( Update.class );
-        stageBinder.addBinding().to( Verify.class );
+        stageBinder.addBinding().to( Commit.class ).asEagerSingleton();
+        stageBinder.addBinding().to( Create.class ).asEagerSingleton();;
+        stageBinder.addBinding().to( StartWrite.class ).asEagerSingleton();;
+        stageBinder.addBinding().to( Update.class ).asEagerSingleton();;
+        stageBinder.addBinding().to( Verify.class ).asEagerSingleton();;
 
         //delete stages
-        stageBinder.addBinding().to( Delete.class );
-        stageBinder.addBinding().to( StartDelete.class );
+        stageBinder.addBinding().to( Delete.class ).asEagerSingleton();;
+        stageBinder.addBinding().to( StartDelete.class ).asEagerSingleton();;
 
         //loading stages
-        stageBinder.addBinding().to(Load.class);
+        stageBinder.addBinding().to(Load.class).asEagerSingleton();;
+
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/ExecutionContextImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/ExecutionContextImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/ExecutionContextImpl.java
deleted file mode 100644
index 805d1e3..0000000
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/ExecutionContextImpl.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package org.apache.usergrid.persistence.collection.mvcc.stage.impl;
-
-
-import org.apache.usergrid.persistence.collection.CollectionContext;
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionContext;
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionStage;
-import org.apache.usergrid.persistence.collection.mvcc.stage.StagePipeline;
-
-import com.google.common.base.Preconditions;
-import com.google.inject.Inject;
-
-
-/** @author tnine */
-public class ExecutionContextImpl implements ExecutionContext {
-
-    private final StagePipeline pipeline;
-    private final CollectionContext context;
-
-    private Object message;
-    private ExecutionStage current;
-
-
-    @Inject
-    public ExecutionContextImpl( final StagePipeline pipeline, final CollectionContext context ) {
-        Preconditions.checkNotNull( pipeline, "pipeline cannot be null" );
-        Preconditions.checkNotNull( context, "context cannot be null" );
-
-        this.pipeline = pipeline;
-        this.context = context;
-    }
-
-
-    @Override
-    public void execute( Object input ) {
-
-        current = this.pipeline.first();
-
-        setMessage( input );
-
-        current.performStage( this );
-    }
-
-
-    @Override
-    public <T> T getMessage( final Class<T> clazz ) {
-        Preconditions.checkNotNull( clazz, "Class must be specified" );
-
-        if ( message == null ) {
-            return null;
-        }
-
-        if ( !clazz.isInstance( message ) ) {
-            throw new ClassCastException(
-                    "Message must be an instance of class " + clazz + ".  However it was of type '" + message.getClass()
-                            + "'" );
-        }
-
-
-        return ( T ) message;
-    }
-
-
-    @Override
-    public Object setMessage( final Object object ) {
-        Object original = message;
-
-        this.message = object;
-
-        return original;
-    }
-
-
-    @Override
-    public void proceed() {
-        ExecutionStage next = this.pipeline.nextStage( current );
-
-        //Nothing to do
-        if ( next == null ) {
-            return;
-        }
-
-        current = next;
-        current.performStage( this );
-    }
-
-
-
-    @Override
-    public CollectionContext getCollectionContext() {
-        return this.context;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/StagePipelineImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/StagePipelineImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/StagePipelineImpl.java
deleted file mode 100644
index 1f3a0fe..0000000
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/StagePipelineImpl.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package org.apache.usergrid.persistence.collection.mvcc.stage.impl;
-
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionStage;
-import org.apache.usergrid.persistence.collection.mvcc.stage.StagePipeline;
-
-import com.google.common.base.Preconditions;
-
-
-/** @author tnine */
-public class StagePipelineImpl implements StagePipeline {
-
-    private final List<ExecutionStage> executionStages;
-
-
-    protected StagePipelineImpl( List<ExecutionStage> executionStages ) {
-        Preconditions.checkNotNull( executionStages, "executionStages is required");
-        Preconditions.checkArgument(  executionStages.size() > 0, "executionStages must have more than 1 element" );
-
-        this.executionStages = executionStages;
-    }
-
-
-    @Override
-    public ExecutionStage first() {
-
-        if ( executionStages.size() == 0 ) {
-            return null;
-        }
-
-        return executionStages.get( 0 );
-    }
-
-
-
-
-
-    @Override
-    public ExecutionStage nextStage( final ExecutionStage executionStage ) {
-
-        Preconditions.checkNotNull( executionStage, "ExecutionStage cannot be null" );
-
-        int index = executionStages.indexOf( executionStage );
-
-        //we're done, do nothing
-        if ( index == executionStages.size() -1  ) {
-            return null;
-        }
-
-        return  executionStages.get( index + 1 );
-    }
-
-
-    /** Factory to create a new instance. */
-    public static StagePipelineImpl fromStages( ExecutionStage... executionStages ) {
-        return new StagePipelineImpl(Arrays.asList( executionStages ));
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/Delete.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/Delete.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/Delete.java
index 7810beb..feed7fa 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/Delete.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/Delete.java
@@ -8,22 +8,23 @@ import org.slf4j.LoggerFactory;
 
 import org.apache.usergrid.persistence.collection.CollectionContext;
 import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException;
+import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccLogEntry;
 import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccLogEntryImpl;
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionStage;
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionContext;
+import org.apache.usergrid.persistence.collection.mvcc.stage.EventStage;
 import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
 import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
 
 import com.google.common.base.Preconditions;
+import com.google.common.eventbus.Subscribe;
 import com.google.inject.Inject;
 import com.netflix.astyanax.MutationBatch;
 import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
 
 
 /** This phase should invoke any finalization, and mark the entity as committed in the data store before returning */
-public class Delete implements ExecutionStage {
+public class Delete implements EventStage<DeleteCommit> {
 
 
     private static final Logger LOG = LoggerFactory.getLogger( Delete.class );
@@ -34,20 +35,24 @@ public class Delete implements ExecutionStage {
 
     @Inject
     public Delete( final MvccLogEntrySerializationStrategy logEntrySerializationStrategy,
-                   final MvccEntitySerializationStrategy entitySerializationStrategy ) {
+                   final MvccEntitySerializationStrategy entitySerializationStrategy,
+                   final CollectionEventBus eventBus ) {
 
         Preconditions.checkNotNull( logEntrySerializationStrategy, "logEntrySerializationStrategy is required" );
-              Preconditions.checkNotNull( entitySerializationStrategy, "entitySerializationStrategy is required" );
+        Preconditions.checkNotNull( entitySerializationStrategy, "entitySerializationStrategy is required" );
 
 
         this.logEntrySerializationStrategy = logEntrySerializationStrategy;
         this.entitySerializationStrategy = entitySerializationStrategy;
+        eventBus.register( this );
     }
 
 
     @Override
-    public void performStage( final ExecutionContext executionContext ) {
-        final MvccEntity entity = executionContext.getMessage( MvccEntity.class );
+    @Subscribe
+    public void performStage( final DeleteCommit event ) {
+
+        final MvccEntity entity = event.getData();
 
         Preconditions.checkNotNull( entity, "Entity is required in the new stage of the mvcc write" );
 
@@ -58,11 +63,11 @@ public class Delete implements ExecutionStage {
         Preconditions.checkNotNull( version, "Entity version is required in this stage" );
 
 
-        final CollectionContext collectionContext = executionContext.getCollectionContext();
+        final CollectionContext collectionContext = event.getCollectionContext();
 
 
-        final MvccLogEntry startEntry = new MvccLogEntryImpl( entityId, version, org.apache.usergrid.persistence
-                .collection.mvcc.entity.Stage.COMMITTED );
+        final MvccLogEntry startEntry = new MvccLogEntryImpl( entityId, version,
+                org.apache.usergrid.persistence.collection.mvcc.entity.Stage.COMMITTED );
 
         MutationBatch logMutation = logEntrySerializationStrategy.write( collectionContext, startEntry );
 
@@ -84,8 +89,6 @@ public class Delete implements ExecutionStage {
         /**
          * We're done executing.
          */
-        executionContext.proceed();
 
-        //TODO connect to post processors via listener
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/DeletePipeline.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/DeletePipeline.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/DeletePipeline.java
deleted file mode 100644
index 52fe4b9..0000000
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/DeletePipeline.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.apache.usergrid.persistence.collection.mvcc.stage.impl.delete;
-
-
-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;
-
-
-/**
- * Marks the delete pipeline
- *
- * @author tnine
- */
-@BindingAnnotation
-@Target({ FIELD, PARAMETER, METHOD })
-@Retention(RUNTIME)
-public @interface DeletePipeline {}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/DeleteStart.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/DeleteStart.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/DeleteStart.java
new file mode 100644
index 0000000..5f8840b
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/DeleteStart.java
@@ -0,0 +1,17 @@
+package org.apache.usergrid.persistence.collection.mvcc.stage.impl.delete;
+
+
+import java.util.UUID;
+
+import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionEvent;
+import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
+
+
+/** @author tnine */
+public class DeleteStart extends CollectionEvent<UUID> {
+
+    public DeleteStart( final CollectionContext context, final UUID data, final Result result ) {
+        super( context, data, result );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/Deletecommit.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/Deletecommit.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/Deletecommit.java
new file mode 100644
index 0000000..dfdebba
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/Deletecommit.java
@@ -0,0 +1,16 @@
+package org.apache.usergrid.persistence.collection.mvcc.stage.impl.delete;
+
+
+import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
+import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionEvent;
+import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
+
+
+/** @author tnine */
+public class DeleteCommit extends CollectionEvent<MvccEntity> {
+    public DeleteCommit( final CollectionContext context, final MvccEntity data, final Result result ) {
+
+        super( context, data, result );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/StartDelete.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/StartDelete.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/StartDelete.java
index 4208662..ca1865b 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/StartDelete.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/StartDelete.java
@@ -8,17 +8,18 @@ import org.slf4j.LoggerFactory;
 
 import org.apache.usergrid.persistence.collection.CollectionContext;
 import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException;
+import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccLogEntry;
 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.ExecutionContext;
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionStage;
+import org.apache.usergrid.persistence.collection.mvcc.stage.EventStage;
 import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
 import org.apache.usergrid.persistence.collection.service.UUIDService;
 import org.apache.usergrid.persistence.model.entity.Entity;
 
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
+import com.google.common.eventbus.Subscribe;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 import com.netflix.astyanax.MutationBatch;
@@ -30,36 +31,37 @@ import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
  * new write in the data store for a checkpoint and recovery
  */
 @Singleton
-public class StartDelete implements ExecutionStage {
+public class StartDelete implements EventStage<DeleteStart> {
 
     private static final Logger LOG = LoggerFactory.getLogger( StartDelete.class );
 
+    private final CollectionEventBus eventBus;
     private final MvccLogEntrySerializationStrategy logStrategy;
     private final UUIDService uuidService;
 
 
     /** Create a new stage with the current context */
     @Inject
-    public StartDelete( final MvccLogEntrySerializationStrategy logStrategy, final UUIDService uuidService ) {
-
+    public StartDelete( final CollectionEventBus eventBus, final MvccLogEntrySerializationStrategy logStrategy,
+                        final UUIDService uuidService ) {
+        Preconditions.checkNotNull( eventBus, "eventBus is required" );
         Preconditions.checkNotNull( logStrategy, "logStrategy is required" );
         Preconditions.checkNotNull( uuidService, "uuidService is required" );
 
 
+        this.eventBus = eventBus;
         this.logStrategy = logStrategy;
         this.uuidService = uuidService;
+
+        this.eventBus.register( this );
     }
 
 
-    /**
-     * Create the entity Id  and inject it, as well as set the timestamp versions
-     *
-     * @param executionContext The context of the current write operation
-     */
     @Override
-    public void performStage( final ExecutionContext executionContext ) {
+    @Subscribe
+    public void performStage( final DeleteStart event ) {
 
-        final UUID entityId = executionContext.getMessage( UUID.class );
+        final UUID entityId = event.getData();
 
 
         final UUID version = uuidService.newTimeUUID();
@@ -68,12 +70,11 @@ public class StartDelete implements ExecutionStage {
         Preconditions.checkNotNull( version, "Entity version is required in this stage" );
 
 
-
-        final CollectionContext collectionContext = executionContext.getCollectionContext();
+        final CollectionContext collectionContext = event.getCollectionContext();
 
 
-        final MvccLogEntry startEntry = new MvccLogEntryImpl( entityId, version, org.apache.usergrid.persistence
-                .collection.mvcc.entity.Stage.ACTIVE );
+        final MvccLogEntry startEntry = new MvccLogEntryImpl( entityId, version,
+                org.apache.usergrid.persistence.collection.mvcc.entity.Stage.ACTIVE );
 
         MutationBatch write = logStrategy.write( collectionContext, startEntry );
 
@@ -90,7 +91,6 @@ public class StartDelete implements ExecutionStage {
         //create the mvcc entity for the next stage
         final MvccEntityImpl nextStage = new MvccEntityImpl( entityId, version, Optional.<Entity>absent() );
 
-        executionContext.setMessage( nextStage );
-        executionContext.proceed();
+        eventBus.post( new DeleteCommit( collectionContext, nextStage, event.getResult() ) );
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/EventLoad.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/EventLoad.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/EventLoad.java
new file mode 100644
index 0000000..6f3fab9
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/EventLoad.java
@@ -0,0 +1,17 @@
+package org.apache.usergrid.persistence.collection.mvcc.stage.impl.read;
+
+
+import java.util.UUID;
+
+import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionEvent;
+import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
+
+
+/** @author tnine */
+public class EventLoad extends CollectionEvent<UUID> {
+    public EventLoad( final CollectionContext context, final UUID data, final Result result ) {
+
+        super( context, data, result );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/Load.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/Load.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/Load.java
index 00a2d43..a2acf3e 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/Load.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/Load.java
@@ -8,22 +8,21 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionContext;
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionStage;
+import org.apache.usergrid.persistence.collection.mvcc.stage.EventStage;
 import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
 import org.apache.usergrid.persistence.collection.service.UUIDService;
 import org.apache.usergrid.persistence.model.entity.Entity;
 
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
+import com.google.common.eventbus.Subscribe;
 import com.google.inject.Inject;
 
 
-/**
- * This stage is a load stage to load a single entity
- */
-public class Load implements ExecutionStage {
+/** This stage is a load stage to load a single entity */
+public class Load implements EventStage<EventLoad> {
 
 
     private static final Logger LOG = LoggerFactory.getLogger( Load.class );
@@ -33,24 +32,26 @@ public class Load implements ExecutionStage {
 
 
     @Inject
-    public Load( final UUIDService uuidService, final MvccEntitySerializationStrategy entitySerializationStrategy ) {
+    public Load(final CollectionEventBus eventBus, final UUIDService uuidService, final MvccEntitySerializationStrategy entitySerializationStrategy ) {
         Preconditions.checkNotNull( entitySerializationStrategy, "entitySerializationStrategy is required" );
         Preconditions.checkNotNull( uuidService, "uuidService is required" );
 
 
         this.uuidService = uuidService;
         this.entitySerializationStrategy = entitySerializationStrategy;
+        eventBus.register( this );
     }
 
 
     @Override
-    public void performStage( final ExecutionContext executionContext ) {
-        final UUID entityId = executionContext.getMessage( UUID.class );
+    @Subscribe
+    public void performStage( final EventLoad event ) {
+        final UUID entityId = event.getData();
 
         Preconditions.checkNotNull( entityId, "Entity id required in the read stage" );
 
 
-        final CollectionContext collectionContext = executionContext.getCollectionContext();
+        final CollectionContext collectionContext = event.getCollectionContext();
 
         //generate  a version that represents now
         final UUID versionMax = uuidService.newTimeUUID();
@@ -58,25 +59,21 @@ public class Load implements ExecutionStage {
         List<MvccEntity> results = entitySerializationStrategy.load( collectionContext, entityId, versionMax, 1 );
 
         //nothing to do, we didn't get a result back
-        if(results.size() != 1){
-            executionContext.setMessage( null );
-            executionContext.proceed();
+        if ( results.size() != 1 ) {
             return;
         }
 
-        final Optional<Entity> targetVersion = results.get(0).getEntity();
+        final Optional<Entity> targetVersion = results.get( 0 ).getEntity();
 
         //this entity has been marked as cleared.  The version exists, but does not have entity data
-        if(!targetVersion.isPresent()){
+        if ( !targetVersion.isPresent() ) {
 
             //TODO, a lazy async repair/cleanup here?
 
-            executionContext.setMessage( null );
-            executionContext.proceed();
             return;
         }
 
-        executionContext.setMessage( targetVersion.get() );
-        executionContext.proceed();
+        //this feels like a hack.  Not sure I like this
+        event.getResult().addResult( targetVersion.get() );
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/PipelineLoad.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/PipelineLoad.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/PipelineLoad.java
deleted file mode 100644
index 0d24b27..0000000
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/PipelineLoad.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.apache.usergrid.persistence.collection.mvcc.stage.impl.read;
-
-
-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;
-
-
-/**
- * Marks the delete pipeline
- *
- * @author tnine
- */
-@BindingAnnotation
-@Target({ FIELD, PARAMETER, METHOD })
-@Retention(RUNTIME)
-public @interface PipelineLoad {}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Commit.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Commit.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Commit.java
index 4780ff1..65af8cf 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Commit.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Commit.java
@@ -8,22 +8,23 @@ import org.slf4j.LoggerFactory;
 
 import org.apache.usergrid.persistence.collection.CollectionContext;
 import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException;
+import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccLogEntry;
 import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccLogEntryImpl;
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionStage;
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionContext;
+import org.apache.usergrid.persistence.collection.mvcc.stage.EventStage;
 import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy;
 import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
 
 import com.google.common.base.Preconditions;
+import com.google.common.eventbus.Subscribe;
 import com.google.inject.Inject;
 import com.netflix.astyanax.MutationBatch;
 import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
 
 
 /** This phase should invoke any finalization, and mark the entity as committed in the data store before returning */
-public class Commit implements ExecutionStage {
+public class Commit implements EventStage<EventCommit> {
 
 
     private static final Logger LOG = LoggerFactory.getLogger( Commit.class );
@@ -33,20 +34,22 @@ public class Commit implements ExecutionStage {
 
 
     @Inject
-    public Commit( final MvccLogEntrySerializationStrategy logEntrySerializationStrategy,
+    public Commit( final CollectionEventBus eventBus, final MvccLogEntrySerializationStrategy logEntrySerializationStrategy,
                    final MvccEntitySerializationStrategy entitySerializationStrategy ) {
         Preconditions.checkNotNull( logEntrySerializationStrategy, "logEntrySerializationStrategy is required" );
-                      Preconditions.checkNotNull( entitySerializationStrategy, "entitySerializationStrategy is required" );
+        Preconditions.checkNotNull( entitySerializationStrategy, "entitySerializationStrategy is required" );
 
 
         this.logEntrySerializationStrategy = logEntrySerializationStrategy;
         this.entitySerializationStrategy = entitySerializationStrategy;
+        eventBus.register( this );
     }
 
 
     @Override
-    public void performStage( final ExecutionContext executionContext ) {
-        final MvccEntity entity = executionContext.getMessage( MvccEntity.class );
+    @Subscribe
+    public void performStage( final EventCommit event ) {
+        final MvccEntity entity = event.getData();
 
         Preconditions.checkNotNull( entity, "Entity is required in the new stage of the mvcc write" );
 
@@ -57,11 +60,11 @@ public class Commit implements ExecutionStage {
         Preconditions.checkNotNull( version, "Entity version is required in this stage" );
 
 
-        final CollectionContext collectionContext = executionContext.getCollectionContext();
+        final CollectionContext collectionContext = event.getCollectionContext();
 
 
-        final MvccLogEntry startEntry = new MvccLogEntryImpl( entityId, version, org.apache.usergrid.persistence
-                .collection.mvcc.entity.Stage.COMMITTED );
+        final MvccLogEntry startEntry = new MvccLogEntryImpl( entityId, version,
+                org.apache.usergrid.persistence.collection.mvcc.entity.Stage.COMMITTED );
 
         MutationBatch logMutation = logEntrySerializationStrategy.write( collectionContext, startEntry );
 
@@ -80,11 +83,10 @@ public class Commit implements ExecutionStage {
             throw new CollectionRuntimeException( "Failed to execute write asynchronously ", e );
         }
 
-        /**
-         * We're done executing.
-         */
-        executionContext.proceed();
-
-        //TODO connect to post processors via listener
+        //add the mvccEntity to the result
+        event.getResult().addResult( entity );
     }
+
+
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Create.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Create.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Create.java
index cbd7d9b..971e9f4 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Create.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Create.java
@@ -9,14 +9,15 @@ import org.slf4j.LoggerFactory;
 import org.apache.commons.lang3.reflect.FieldUtils;
 
 import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException;
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionStage;
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionContext;
+import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
+import org.apache.usergrid.persistence.collection.mvcc.stage.EventStage;
 import org.apache.usergrid.persistence.collection.service.TimeService;
 import org.apache.usergrid.persistence.collection.service.UUIDService;
 import org.apache.usergrid.persistence.collection.util.Verify;
 import org.apache.usergrid.persistence.model.entity.Entity;
 
 import com.google.common.base.Preconditions;
+import com.google.common.eventbus.Subscribe;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 
@@ -26,35 +27,37 @@ import com.google.inject.Singleton;
  * present, and this should set the entityId, version, created, and updated dates
  */
 @Singleton
-public class Create implements ExecutionStage {
+public class Create implements EventStage<EventCreate> {
 
     private static final Logger LOG = LoggerFactory.getLogger( Create.class );
 
 
+    private final CollectionEventBus eventBus;
     private final TimeService timeService;
     private final UUIDService uuidService;
 
 
     @Inject
-    public Create( final TimeService timeService, final UUIDService uuidService ) {
+    public Create( final CollectionEventBus eventBus, final TimeService timeService, final UUIDService uuidService ) {
+
+        Preconditions.checkNotNull( eventBus, "eventBus is required" );
         Preconditions.checkNotNull( timeService, "timeService is required" );
         Preconditions.checkNotNull( uuidService, "uuidService is required" );
 
 
+        this.eventBus = eventBus;
         this.timeService = timeService;
         this.uuidService = uuidService;
+        this.eventBus.register( this );
     }
 
 
-    /**
-     * Create the entity Id  and inject it, as well as set the timestamp versions
-     *
-     * @param executionContext The context of the current write operation
-     */
     @Override
-    public void performStage( final ExecutionContext executionContext ) {
+    @Subscribe
+    public void performStage( final EventCreate event ) {
+        Preconditions.checkNotNull(event,  "event is required" );
 
-        final Entity entity = executionContext.getMessage( Entity.class );
+        final Entity entity = event.getData();
 
         Preconditions.checkNotNull( entity, "Entity is required in the new stage of the mvcc write" );
 
@@ -78,8 +81,6 @@ public class Create implements ExecutionStage {
         entity.setCreated( created );
         entity.setUpdated( created );
 
-        //set the updated entity for the next stage
-        executionContext.setMessage( entity );
-        executionContext.proceed();
+        eventBus.post( new EventStart( event.getCollectionContext(), entity, event.getResult() ) );
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventCommit.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventCommit.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventCommit.java
new file mode 100644
index 0000000..0091770
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventCommit.java
@@ -0,0 +1,16 @@
+package org.apache.usergrid.persistence.collection.mvcc.stage.impl.write;
+
+
+import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
+import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionEvent;
+import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
+
+
+public class EventCommit extends CollectionEvent<MvccEntity> {
+
+
+    protected EventCommit( final CollectionContext context, final MvccEntity data, final Result result ) {
+        super( context, data, result );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventCreate.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventCreate.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventCreate.java
new file mode 100644
index 0000000..d5a609f
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventCreate.java
@@ -0,0 +1,17 @@
+package org.apache.usergrid.persistence.collection.mvcc.stage.impl.write;
+
+
+import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionEvent;
+import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
+import org.apache.usergrid.persistence.model.entity.Entity;
+
+
+/** @author tnine */
+public class EventCreate extends CollectionEvent<Entity> {
+
+
+    public EventCreate( final CollectionContext context, final Entity data, final Result result ) {
+        super( context, data, result );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventStart.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventStart.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventStart.java
new file mode 100644
index 0000000..87e2488
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventStart.java
@@ -0,0 +1,17 @@
+package org.apache.usergrid.persistence.collection.mvcc.stage.impl.write;
+
+
+import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionEvent;
+import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
+import org.apache.usergrid.persistence.model.entity.Entity;
+
+
+/** @author tnine */
+public class EventStart extends CollectionEvent<Entity> {
+
+    public EventStart( final CollectionContext context, final Entity data, final Result result ) {
+
+        super( context, data, result );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventUpdate.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventUpdate.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventUpdate.java
new file mode 100644
index 0000000..68fb6ab
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventUpdate.java
@@ -0,0 +1,16 @@
+package org.apache.usergrid.persistence.collection.mvcc.stage.impl.write;
+
+
+import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionEvent;
+import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
+import org.apache.usergrid.persistence.model.entity.Entity;
+
+
+/** @author tnine */
+public class EventUpdate extends CollectionEvent<Entity> {
+
+    public EventUpdate( final CollectionContext context, final Entity data, final Result result ) {
+        super( context, data, result );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventVerify.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventVerify.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventVerify.java
new file mode 100644
index 0000000..f078aa5
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventVerify.java
@@ -0,0 +1,17 @@
+package org.apache.usergrid.persistence.collection.mvcc.stage.impl.write;
+
+
+import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
+import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionEvent;
+import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
+
+
+/** @author tnine */
+public class EventVerify extends CollectionEvent<MvccEntity> {
+
+
+    public EventVerify( final CollectionContext context, final MvccEntity data, final Result result ) {
+        super( context, data, result );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/PipelineCreate.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/PipelineCreate.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/PipelineCreate.java
deleted file mode 100644
index f3af972..0000000
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/PipelineCreate.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.apache.usergrid.persistence.collection.mvcc.stage.impl.write;
-
-
-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;
-
-
-/**
- * Marks the create pipeline
- *
- * @author tnine
- */
-@BindingAnnotation
-@Target({ FIELD, PARAMETER, METHOD })
-@Retention(RUNTIME)
-public @interface PipelineCreate {}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/PipelineUpdate.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/PipelineUpdate.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/PipelineUpdate.java
deleted file mode 100644
index 85bc56d..0000000
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/PipelineUpdate.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.apache.usergrid.persistence.collection.mvcc.stage.impl.write;
-
-
-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;
-
-
-/**
- * Marks the create pipeline
- *
- * @author tnine
- */
-@BindingAnnotation
-@Target( { FIELD, PARAMETER, METHOD } )
-@Retention( RUNTIME )
-public @interface PipelineUpdate {}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/StartWrite.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/StartWrite.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/StartWrite.java
index d6e7d49..ac153f8 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/StartWrite.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/StartWrite.java
@@ -8,15 +8,16 @@ import org.slf4j.LoggerFactory;
 
 import org.apache.usergrid.persistence.collection.CollectionContext;
 import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException;
+import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccLogEntry;
 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.ExecutionContext;
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionStage;
+import org.apache.usergrid.persistence.collection.mvcc.stage.EventStage;
 import org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
 import org.apache.usergrid.persistence.model.entity.Entity;
 
 import com.google.common.base.Preconditions;
+import com.google.common.eventbus.Subscribe;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 import com.netflix.astyanax.MutationBatch;
@@ -28,32 +29,32 @@ import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
  * new write in the data store for a checkpoint and recovery
  */
 @Singleton
-public class StartWrite implements ExecutionStage {
+public class StartWrite implements EventStage<EventStart> {
 
     private static final Logger LOG = LoggerFactory.getLogger( StartWrite.class );
 
+    private final CollectionEventBus eventBus;
     private final MvccLogEntrySerializationStrategy logStrategy;
 
 
     /** Create a new stage with the current context */
     @Inject
-    public StartWrite( final MvccLogEntrySerializationStrategy logStrategy ) {
+    public StartWrite( final CollectionEventBus eventBus,
+                       final MvccLogEntrySerializationStrategy logStrategy ) {
+        Preconditions.checkNotNull( eventBus, "eventBus is required" );
         Preconditions.checkNotNull( logStrategy, "logStrategy is required" );
 
-
+        this.eventBus = eventBus;
         this.logStrategy = logStrategy;
+
+        this.eventBus.register( this );
     }
 
 
-    /**
-     * Create the entity Id  and inject it, as well as set the timestamp versions
-     *
-     * @param executionContext The context of the current write operation
-     */
     @Override
-    public void performStage( final ExecutionContext executionContext ) {
-
-        final Entity entity = executionContext.getMessage( Entity.class );
+    @Subscribe
+    public void performStage( final EventStart event ) {
+        final Entity entity = event.getData();
 
         Preconditions.checkNotNull( entity, "Entity is required in the new stage of the mvcc write" );
 
@@ -64,12 +65,11 @@ public class StartWrite implements ExecutionStage {
         Preconditions.checkNotNull( version, "Entity version is required in this stage" );
 
 
-
-        final CollectionContext collectionContext = executionContext.getCollectionContext();
+        final CollectionContext collectionContext = event.getCollectionContext();
 
 
-        final MvccLogEntry startEntry = new MvccLogEntryImpl( entityId, version, org.apache.usergrid.persistence
-                .collection.mvcc.entity.Stage.ACTIVE );
+        final MvccLogEntry startEntry = new MvccLogEntryImpl( entityId, version,
+                org.apache.usergrid.persistence.collection.mvcc.entity.Stage.ACTIVE );
 
         MutationBatch write = logStrategy.write( collectionContext, startEntry );
 
@@ -86,7 +86,9 @@ public class StartWrite implements ExecutionStage {
         //create the mvcc entity for the next stage
         final MvccEntityImpl nextStage = new MvccEntityImpl( entityId, version, entity );
 
-        executionContext.setMessage( nextStage );
-        executionContext.proceed();
+        eventBus.post( new EventVerify( collectionContext, nextStage, event.getResult() ) );
     }
+
+
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Update.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Update.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Update.java
index 0175b42..a095fb3 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Update.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Update.java
@@ -6,13 +6,14 @@ import java.util.UUID;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionContext;
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionStage;
+import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
+import org.apache.usergrid.persistence.collection.mvcc.stage.EventStage;
 import org.apache.usergrid.persistence.collection.service.TimeService;
 import org.apache.usergrid.persistence.collection.service.UUIDService;
 import org.apache.usergrid.persistence.model.entity.Entity;
 
 import com.google.common.base.Preconditions;
+import com.google.common.eventbus.Subscribe;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 
@@ -22,33 +23,35 @@ import com.google.inject.Singleton;
  * been set correctly
  */
 @Singleton
-public class Update implements ExecutionStage {
+public class Update implements EventStage<EventUpdate> {
 
     private static final Logger LOG = LoggerFactory.getLogger( Update.class );
 
     private final TimeService timeService;
     private final UUIDService uuidService;
+    private final CollectionEventBus eventBus;
 
 
     @Inject
-    public Update( final TimeService timeService, final UUIDService uuidService ) {
+    public Update( final CollectionEventBus eventBus, final TimeService timeService, final UUIDService uuidService ) {
+        Preconditions.checkNotNull( eventBus, "eventBus is required" );
         Preconditions.checkNotNull( timeService, "timeService is required" );
         Preconditions.checkNotNull( uuidService, "uuidService is required" );
 
+        this.eventBus = eventBus;
         this.timeService = timeService;
         this.uuidService = uuidService;
+
+        this.eventBus.register( this );
+
     }
 
 
-    /**
-     * Create the entity Id  and inject it, as well as set the timestamp versions
-     *
-     * @param executionContext The context of the current write operation
-     */
     @Override
-    public void performStage( final ExecutionContext executionContext ) {
+    @Subscribe
+    public void performStage( final EventUpdate event ) {
 
-        final Entity entity = executionContext.getMessage( Entity.class );
+        final Entity entity = event.getData();
 
         Preconditions.checkNotNull( entity, "Entity is required in the new stage of the mvcc write" );
 
@@ -64,7 +67,7 @@ public class Update implements ExecutionStage {
         entity.setVersion( version );
         entity.setUpdated( updated );
 
-        executionContext.setMessage( entity );
-        executionContext.proceed();
+        //fire the start event
+        eventBus.post(new EventStart( event.getCollectionContext(), entity, event.getResult()) );
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/56c415f2/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Verify.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Verify.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Verify.java
index 884c59b..5a05869 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Verify.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Verify.java
@@ -1,25 +1,31 @@
 package org.apache.usergrid.persistence.collection.mvcc.stage.impl.write;
 
 
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionStage;
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionContext;
+import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
+import org.apache.usergrid.persistence.collection.mvcc.stage.EventStage;
 
+import com.google.inject.Inject;
 import com.google.inject.Singleton;
 
 
 /** This phase should execute any verification on the MvccEntity */
 @Singleton
-public class Verify implements ExecutionStage {
+public class Verify implements EventStage<EventVerify> {
 
+    private final CollectionEventBus eventBus;
 
-    public Verify() {
+    @Inject
+    public Verify( final CollectionEventBus eventBus ) {
+        this.eventBus = eventBus;
+        this.eventBus.register( this );
     }
 
 
+
     @Override
-    public void performStage( final ExecutionContext executionContext ) {
-        //TODO no op for now, just continue to the next stage.  Verification logic goes in here
+    public void performStage( final EventVerify event ) {
+        //no op, verification needs to happen here
 
-        executionContext.proceed();
+        eventBus.post( new EventCommit(event.getCollectionContext(), event.getData(), event.getResult()) );
     }
 }


[4/4] git commit: Renamed interfaces to be clearer

Posted by to...@apache.org.
Renamed interfaces to be clearer


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/ce2bfd82
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/ce2bfd82
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/ce2bfd82

Branch: refs/heads/two-dot-o
Commit: ce2bfd82d2aa4499c994b5f0f792deb1c405845b
Parents: 56c415f
Author: Todd Nine <to...@apache.org>
Authored: Thu Dec 5 10:34:53 2013 -0700
Committer: Todd Nine <to...@apache.org>
Committed: Thu Dec 5 10:34:53 2013 -0700

----------------------------------------------------------------------
 stack/corepersistence/README.md                 |  4 +-
 stack/corepersistence/collection/pom.xml        |  2 +-
 .../collection/CollectionContext.java           | 27 ------
 .../collection/CollectionManager.java           | 41 ---------
 .../collection/CollectionManagerFactory.java    | 18 ----
 .../collection/EntityCollection.java            | 24 +++++
 .../collection/EntityCollectionManager.java     | 41 +++++++++
 .../EntityCollectionManagerFactory.java         | 18 ++++
 .../collection/guice/CollectionModule.java      | 10 +--
 .../collection/impl/CollectionContextImpl.java  | 95 --------------------
 .../collection/impl/CollectionManagerImpl.java  | 92 -------------------
 .../collection/impl/EntityCollectionImpl.java   | 81 +++++++++++++++++
 .../impl/EntityCollectionManagerImpl.java       | 90 +++++++++++++++++++
 .../collection/mvcc/stage/CollectionEvent.java  | 11 +--
 .../collection/mvcc/stage/ExecutionContext.java |  4 +-
 .../mvcc/stage/impl/delete/Delete.java          |  8 +-
 .../mvcc/stage/impl/delete/DeleteCommit.java    | 16 ++++
 .../mvcc/stage/impl/delete/DeleteStart.java     |  4 +-
 .../mvcc/stage/impl/delete/Deletecommit.java    | 16 ----
 .../mvcc/stage/impl/delete/StartDelete.java     |  8 +-
 .../mvcc/stage/impl/read/EventLoad.java         |  4 +-
 .../collection/mvcc/stage/impl/read/Load.java   |  6 +-
 .../mvcc/stage/impl/write/Commit.java           |  8 +-
 .../mvcc/stage/impl/write/EventCommit.java      |  4 +-
 .../mvcc/stage/impl/write/EventCreate.java      |  4 +-
 .../mvcc/stage/impl/write/EventStart.java       |  4 +-
 .../mvcc/stage/impl/write/EventUpdate.java      |  4 +-
 .../mvcc/stage/impl/write/EventVerify.java      |  4 +-
 .../mvcc/stage/impl/write/StartWrite.java       |  8 +-
 .../MvccEntitySerializationStrategy.java        | 12 +--
 .../MvccLogEntrySerializationStrategy.java      | 10 +--
 .../MvccEntitySerializationStrategyImpl.java    | 15 ++--
 .../MvccLogEntrySerializationStrategyImpl.java  | 15 ++--
 .../collection/CollectionContextImplTest.java   | 17 ++--
 .../CollectionManagerFactoryTest.java           | 52 -----------
 .../collection/CollectionManagerIT.java         | 29 +++---
 .../collection/CollectionManagerTest.java       | 66 --------------
 .../EntityCollectionManagerFactoryTest.java     | 52 +++++++++++
 .../collection/EntityCollectionManagerTest.java | 53 +++++++++++
 .../mvcc/entity/impl/MvccLogEntryImplTest.java  | 12 ---
 .../mvcc/stage/impl/write/CreateTest.java       |  7 +-
 .../mvcc/stage/impl/write/StartWriteTest.java   |  8 +-
 .../mvcc/stage/impl/write/UpdateTest.java       |  6 +-
 ...MvccEntitySerializationStrategyImplTest.java | 26 +++---
 ...ccLogEntrySerializationStrategyImplTest.java | 28 +++---
 .../persistence/index/QueryEngineFactory.java   |  4 +-
 46 files changed, 507 insertions(+), 561 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/README.md
----------------------------------------------------------------------
diff --git a/stack/corepersistence/README.md b/stack/corepersistence/README.md
index 5f9a44b..e238630 100644
--- a/stack/corepersistence/README.md
+++ b/stack/corepersistence/README.md
@@ -13,7 +13,7 @@ Below are the basic data templates this system should support
 Collections
 -----------
 
-A collection storage and indexing framework.  Properties should be secondary indexed, and should be able to be queried efficiently.
+A entityCollection storage and indexing framework.  Properties should be secondary indexed, and should be able to be queried efficiently.
 
 
 *MVCC Semantics*
@@ -34,7 +34,7 @@ Possible ability to define an operation context where a set of all writes must e
 Graphs
 -----------
 
-A system for creating relationships between collection entities.  The directed edges can be named (a type) and
+A system for creating relationships between entityCollection entities.  The directed edges can be named (a type) and
 an index query can be executed on those edges.
 
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/pom.xml
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/pom.xml b/stack/corepersistence/collection/pom.xml
index 0f4eb6d..eb9daa7 100644
--- a/stack/corepersistence/collection/pom.xml
+++ b/stack/corepersistence/collection/pom.xml
@@ -8,7 +8,7 @@
     <version>1.0-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
-  <description>The module for handling all collection I/O</description>
+  <description>The module for handling all entityCollection I/O</description>
   <properties>
     <guice.version>3.0</guice.version>
   </properties>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/CollectionContext.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/CollectionContext.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/CollectionContext.java
deleted file mode 100644
index fc8c56f..0000000
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/CollectionContext.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.apache.usergrid.persistence.collection;
-
-
-import java.util.UUID;
-
-
-/**
- * A context to use when creating the collection manager.  Typically, this would be something like an application, or an
- * organization.  Some context that "owns" the collection
- */
-public interface CollectionContext {
-
-    /** @return The application that will contain this collection */
-    public UUID getApplication();
-
-    /**
-     * @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 UUID getOwner();
-
-    /** @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
-     * @return
-     */
-    public String getName();
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/CollectionManager.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/CollectionManager.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/CollectionManager.java
deleted file mode 100644
index 53c14d6..0000000
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/CollectionManager.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.apache.usergrid.persistence.collection;
-
-
-import java.util.UUID;
-
-import org.apache.usergrid.persistence.model.entity.Entity;
-
-
-/**
- *
- *
- * @author: tnine
- *
- */
-public interface CollectionManager
-{
-
-    /**
-     * Create the entity in the collection.  Only use for entities your are sure are new.
-     *
-     * @param entity The entity to update
-     */
-    public Entity create( Entity entity );
-
-    /**
-     * Update the entity with the given fields.
-     *
-     * @param entity The entity properties to update
-     */
-    public Entity update( Entity entity );
-
-    /** Delete the entity and remove it's indexes with the given entity id */
-    public void delete( UUID entityId );
-
-    /**
-     * Load the entity with the given entity Id
-     * @param entityId
-     * @return
-     */
-    public Entity load(UUID entityId);
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/CollectionManagerFactory.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/CollectionManagerFactory.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/CollectionManagerFactory.java
deleted file mode 100644
index 7791a0b..0000000
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/CollectionManagerFactory.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.apache.usergrid.persistence.collection;
-
-
-/** A basic factory that creates a collection manager with the given context */
-public interface CollectionManagerFactory
-{
-
-    /**
-     * Create a new CollectionManager for the given context. The CollectionManager can safely be used on the current
-     * thread and will cache responses.  The returned instance should not be shared among threads it will not be
-     * guaranteed to be thread safe
-     *
-     * @param context The context to use when creating the collection manager
-     *
-     * @return The collection manager to perform operations within the provided context
-     */
-    public CollectionManager createCollectionManager( CollectionContext context );
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollection.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollection.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollection.java
new file mode 100644
index 0000000..afeb99e
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollection.java
@@ -0,0 +1,24 @@
+package org.apache.usergrid.persistence.collection;
+
+
+import java.util.UUID;
+
+
+/**
+ * A context to use when creating the collection manager.  Typically, this would be something like an application, or an
+ * organization.  Some context that "owns" the collection
+ */
+public interface EntityCollection {
+
+    /**
+     * @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 UUID getOwner();
+
+    /** @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
+     * @return
+     */
+    public String getName();
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManager.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
new file mode 100644
index 0000000..2aac005
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManager.java
@@ -0,0 +1,41 @@
+package org.apache.usergrid.persistence.collection;
+
+
+import java.util.UUID;
+
+import org.apache.usergrid.persistence.model.entity.Entity;
+
+
+/**
+ *
+ *
+ * @author: tnine
+ *
+ */
+public interface EntityCollectionManager
+{
+
+    /**
+     * Create the entity in the collection.  Only use for entities your are sure are new.
+     *
+     * @param entity The entity to update
+     */
+    public Entity create( Entity entity );
+
+    /**
+     * Update the entity with the given fields.
+     *
+     * @param entity The entity properties to update
+     */
+    public Entity update( Entity entity );
+
+    /** Delete the entity and remove it's indexes with the given entity id */
+    public void delete( UUID entityId );
+
+    /**
+     * Load the entity with the given entity Id
+     * @param entityId
+     * @return
+     */
+    public Entity load(UUID entityId);
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactory.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..24a2fdd
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactory.java
@@ -0,0 +1,18 @@
+package org.apache.usergrid.persistence.collection;
+
+
+/** A basic factory that creates a collection manager with the given context */
+public interface EntityCollectionManagerFactory
+{
+
+    /**
+     * Create a new EntityCollectionManager for the given context. The EntityCollectionManager can safely be used on the current
+     * thread and will cache responses.  The returned instance should not be shared among threads it will not be
+     * guaranteed to be thread safe
+     *
+     * @param entityCollection The entityCollection scope to use when creating the entityCollection manager
+     *
+     * @return The entityCollection manager to perform operations within the provided context
+     */
+    public EntityCollectionManager createCollectionManager( EntityCollection entityCollection );
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/guice/CollectionModule.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 293e79a..41f1128 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
@@ -3,10 +3,10 @@ package org.apache.usergrid.persistence.collection.guice;
 
 import java.util.Properties;
 
-import org.apache.usergrid.persistence.collection.CollectionManager;
-import org.apache.usergrid.persistence.collection.CollectionManagerFactory;
+import org.apache.usergrid.persistence.collection.EntityCollectionManager;
+import org.apache.usergrid.persistence.collection.EntityCollectionManagerFactory;
 import org.apache.usergrid.persistence.collection.astynax.AstynaxKeyspaceProvider;
-import org.apache.usergrid.persistence.collection.impl.CollectionManagerImpl;
+import org.apache.usergrid.persistence.collection.impl.EntityCollectionManagerImpl;
 import org.apache.usergrid.persistence.collection.mvcc.stage.impl.CollectionPipelineModule;
 import org.apache.usergrid.persistence.collection.serialization.impl.SerializationModule;
 import org.apache.usergrid.persistence.collection.service.impl.ServiceModule;
@@ -63,8 +63,8 @@ public class CollectionModule extends AbstractModule {
 
         //create a guice factor for getting our collection manager
         install(new FactoryModuleBuilder()
-             .implement( CollectionManager.class, CollectionManagerImpl.class )
-             .build( CollectionManagerFactory.class ));
+             .implement( EntityCollectionManager.class, EntityCollectionManagerImpl.class )
+             .build( EntityCollectionManagerFactory.class ));
 
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/CollectionContextImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/CollectionContextImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/CollectionContextImpl.java
deleted file mode 100644
index 5f2d334..0000000
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/CollectionContextImpl.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package org.apache.usergrid.persistence.collection.impl;
-
-
-import java.util.UUID;
-
-import org.apache.usergrid.persistence.collection.CollectionContext;
-
-import com.google.common.base.Preconditions;
-
-
-/**
- * Simple impl of hte collection context
- * @author tnine
- */
-public class CollectionContextImpl implements CollectionContext {
-
-    private final UUID applicationId;
-    private final UUID ownerId;
-    private final String name;
-
-
-    public CollectionContextImpl( final UUID applicationId, final UUID ownerId, final String name ) {
-        Preconditions.checkNotNull( applicationId , "applicationId is required");
-        Preconditions.checkNotNull( ownerId , "ownerId is required");
-        Preconditions.checkNotNull( name , "name is required");
-        Preconditions.checkArgument( name.length() > 0, "name must have a length" );
-
-
-        this.applicationId = applicationId;
-        this.ownerId = ownerId;
-        this.name = name;
-    }
-
-
-    @Override
-    public UUID getApplication() {
-        return applicationId;
-    }
-
-
-    @Override
-    public UUID getOwner() {
-        return ownerId;
-    }
-
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-
-    @Override
-    public boolean equals( final Object o ) {
-        if ( this == o ) {
-            return true;
-        }
-        if ( o == null || getClass() != o.getClass() ) {
-            return false;
-        }
-
-        final CollectionContextImpl that = ( CollectionContextImpl ) o;
-
-        if ( !applicationId.equals( that.applicationId ) ) {
-            return false;
-        }
-        if ( !name.equals( that.name ) ) {
-            return false;
-        }
-        if ( !ownerId.equals( that.ownerId ) ) {
-            return false;
-        }
-
-        return true;
-    }
-
-
-    @Override
-    public int hashCode() {
-        int result = applicationId.hashCode();
-        result = 31 * result + ownerId.hashCode();
-        result = 31 * result + name.hashCode();
-        return result;
-    }
-
-
-    @Override
-    public String toString() {
-        return "CollectionContextImpl{" +
-                "applicationId=" + applicationId +
-                ", ownerId=" + ownerId +
-                ", name='" + name + '\'' +
-                '}';
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/CollectionManagerImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/CollectionManagerImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/CollectionManagerImpl.java
deleted file mode 100644
index 7de8f50..0000000
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/CollectionManagerImpl.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package org.apache.usergrid.persistence.collection.impl;
-
-
-import java.util.UUID;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.apache.usergrid.persistence.collection.CollectionContext;
-import org.apache.usergrid.persistence.collection.CollectionManager;
-import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
-import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
-import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
-import org.apache.usergrid.persistence.collection.mvcc.stage.impl.delete.DeleteStart;
-import org.apache.usergrid.persistence.collection.mvcc.stage.impl.read.EventLoad;
-import org.apache.usergrid.persistence.collection.mvcc.stage.impl.write.EventCreate;
-import org.apache.usergrid.persistence.collection.mvcc.stage.impl.write.EventUpdate;
-import org.apache.usergrid.persistence.model.entity.Entity;
-
-import com.google.common.base.Preconditions;
-import com.google.common.eventbus.EventBus;
-import com.google.inject.Inject;
-import com.google.inject.assistedinject.Assisted;
-
-
-/**
- * Simple implementation.  Should perform
- *
- * @author tnine
- */
-public class CollectionManagerImpl implements CollectionManager {
-
-    private static final Logger logger = LoggerFactory.getLogger( CollectionManagerImpl.class );
-
-    private final CollectionContext context;
-    private final CollectionEventBus eventBus;
-
-
-    @Inject
-    public CollectionManagerImpl(  final CollectionEventBus eventBus,
-                                  @Assisted final CollectionContext context ) {
-
-        Preconditions.checkNotNull( eventBus, "eventBus must be defined" );
-        Preconditions.checkNotNull( context, "context must be defined" );
-        this.eventBus = eventBus;
-        this.context = context;
-    }
-
-
-    @Override
-    public Entity create( final Entity entity ) {
-        // Create a new context for the write
-        Result result = new Result();
-
-        eventBus.post( new EventCreate( context, entity, result ) );
-
-        MvccEntity completed = result.getLast( MvccEntity.class );
-
-        return completed.getEntity().get();
-    }
-
-
-    @Override
-    public Entity update( final Entity entity ) {
-        // Create a new context for the write
-        Result result = new Result();
-
-        eventBus.post( new EventUpdate( context, entity, result ) );
-
-        MvccEntity completed = result.getLast( MvccEntity.class );
-
-        return completed.getEntity().get();
-    }
-
-
-    @Override
-    public void delete( final UUID entityId ) {
-        eventBus.post( new DeleteStart( context, entityId, null ) );
-    }
-
-
-    @Override
-    public Entity load( final UUID entityId ) {
-        Result result = new Result();
-
-        eventBus.post( new EventLoad( context, entityId, result ) );
-
-        MvccEntity completed = result.getLast( MvccEntity.class );
-
-        return completed.getEntity().get();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionImpl.java
new file mode 100644
index 0000000..4bbf203
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionImpl.java
@@ -0,0 +1,81 @@
+package org.apache.usergrid.persistence.collection.impl;
+
+
+import java.util.UUID;
+
+import org.apache.usergrid.persistence.collection.EntityCollection;
+
+import com.google.common.base.Preconditions;
+
+
+/**
+ * Simple impl of hte collection context
+ * @author tnine
+ */
+public class EntityCollectionImpl implements EntityCollection {
+
+    private final UUID ownerId;
+    private final String name;
+
+
+    public EntityCollectionImpl( final UUID ownerId, final String name ) {
+        Preconditions.checkNotNull( ownerId , "ownerId is required");
+        Preconditions.checkNotNull( name , "name is required");
+        Preconditions.checkArgument( name.length() > 0, "name must have a length" );
+
+
+        this.ownerId = ownerId;
+        this.name = name;
+    }
+
+
+    @Override
+    public UUID getOwner() {
+        return ownerId;
+    }
+
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+
+    @Override
+    public boolean equals( final Object o ) {
+        if ( this == o ) {
+            return true;
+        }
+        if ( o == null || getClass() != o.getClass() ) {
+            return false;
+        }
+
+        final EntityCollectionImpl that = ( EntityCollectionImpl ) o;
+
+        if ( !name.equals( that.name ) ) {
+            return false;
+        }
+        if ( !ownerId.equals( that.ownerId ) ) {
+            return false;
+        }
+
+        return true;
+    }
+
+
+    @Override
+    public int hashCode() {
+        int result = 31 * ownerId.hashCode();
+        result = 31 * result + name.hashCode();
+        return result;
+    }
+
+
+    @Override
+    public String toString() {
+        return "EntityCollectionImpl{" +
+                " ownerId=" + ownerId +
+                ", name='" + name + '\'' +
+                '}';
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerImpl.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..5389687
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerImpl.java
@@ -0,0 +1,90 @@
+package org.apache.usergrid.persistence.collection.impl;
+
+
+import java.util.UUID;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.usergrid.persistence.collection.EntityCollection;
+import org.apache.usergrid.persistence.collection.EntityCollectionManager;
+import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
+import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
+import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
+import org.apache.usergrid.persistence.collection.mvcc.stage.impl.delete.DeleteStart;
+import org.apache.usergrid.persistence.collection.mvcc.stage.impl.read.EventLoad;
+import org.apache.usergrid.persistence.collection.mvcc.stage.impl.write.EventCreate;
+import org.apache.usergrid.persistence.collection.mvcc.stage.impl.write.EventUpdate;
+import org.apache.usergrid.persistence.model.entity.Entity;
+
+import com.google.common.base.Preconditions;
+import com.google.inject.Inject;
+import com.google.inject.assistedinject.Assisted;
+
+
+/**
+ * Simple implementation.  Should perform
+ *
+ * @author tnine
+ */
+public class EntityCollectionManagerImpl implements EntityCollectionManager {
+
+    private static final Logger logger = LoggerFactory.getLogger( EntityCollectionManagerImpl.class );
+
+    private final EntityCollection context;
+    private final CollectionEventBus eventBus;
+
+
+    @Inject
+    public EntityCollectionManagerImpl( final CollectionEventBus eventBus, @Assisted final EntityCollection context ) {
+
+        Preconditions.checkNotNull( eventBus, "eventBus must be defined" );
+        Preconditions.checkNotNull( context, "context must be defined" );
+        this.eventBus = eventBus;
+        this.context = context;
+    }
+
+
+    @Override
+    public Entity create( final Entity entity ) {
+        // Create a new context for the write
+        Result result = new Result();
+
+        eventBus.post( new EventCreate( context, entity, result ) );
+
+        MvccEntity completed = result.getLast( MvccEntity.class );
+
+        return completed.getEntity().get();
+    }
+
+
+    @Override
+    public Entity update( final Entity entity ) {
+        // Create a new context for the write
+        Result result = new Result();
+
+        eventBus.post( new EventUpdate( context, entity, result ) );
+
+        MvccEntity completed = result.getLast( MvccEntity.class );
+
+        return completed.getEntity().get();
+    }
+
+
+    @Override
+    public void delete( final UUID entityId ) {
+        eventBus.post( new DeleteStart( context, entityId, null ) );
+    }
+
+
+    @Override
+    public Entity load( final UUID entityId ) {
+        Result result = new Result();
+
+        eventBus.post( new EventLoad( context, entityId, result ) );
+
+        MvccEntity completed = result.getLast( MvccEntity.class );
+
+        return completed.getEntity().get();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/CollectionEvent.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/CollectionEvent.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/CollectionEvent.java
index 84df2d0..09050a6 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/CollectionEvent.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/CollectionEvent.java
@@ -1,7 +1,7 @@
 package org.apache.usergrid.persistence.collection.mvcc.stage;
 
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 
 import com.google.common.base.Preconditions;
 
@@ -9,15 +9,16 @@ import com.google.common.base.Preconditions;
 /** @author tnine */
 public abstract class CollectionEvent<T> {
 
-    private final CollectionContext context;
+    private final EntityCollection context;
     private final T data;
     private final Result result;
 
 
-    protected CollectionEvent( final CollectionContext context, final T data, final Result result ) {
+    protected CollectionEvent( final EntityCollection context, final T data, final Result result ) {
         Preconditions.checkNotNull( context, "context is required" );
         Preconditions.checkNotNull( data, "context is required" );
-        Preconditions.checkNotNull( context, "context is required" );
+        Preconditions.checkNotNull( result, "result is required" );
+
         this.context = context;
         this.data = data;
         this.result = result;
@@ -27,7 +28,7 @@ public abstract class CollectionEvent<T> {
 
 
     /** Get the collection context for this event */
-    public CollectionContext getCollectionContext() {
+    public EntityCollection getCollectionContext() {
         return this.context;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/ExecutionContext.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/ExecutionContext.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/ExecutionContext.java
index 0fb9ced..9ecdebb 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/ExecutionContext.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/ExecutionContext.java
@@ -1,7 +1,7 @@
 package org.apache.usergrid.persistence.collection.mvcc.stage;
 
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 
 
 /** @author tnine */
@@ -38,7 +38,7 @@ public interface ExecutionContext {
      * Return the current collection context
      * @return
      */
-    CollectionContext getCollectionContext();
+    EntityCollection getCollectionContext();
 
 
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/Delete.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/Delete.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/Delete.java
index feed7fa..21f24e0 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/Delete.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/Delete.java
@@ -6,7 +6,7 @@ import java.util.UUID;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException;
 import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
@@ -63,16 +63,16 @@ public class Delete implements EventStage<DeleteCommit> {
         Preconditions.checkNotNull( version, "Entity version is required in this stage" );
 
 
-        final CollectionContext collectionContext = event.getCollectionContext();
+        final EntityCollection entityCollection = event.getCollectionContext();
 
 
         final MvccLogEntry startEntry = new MvccLogEntryImpl( entityId, version,
                 org.apache.usergrid.persistence.collection.mvcc.entity.Stage.COMMITTED );
 
-        MutationBatch logMutation = logEntrySerializationStrategy.write( collectionContext, startEntry );
+        MutationBatch logMutation = logEntrySerializationStrategy.write( entityCollection, startEntry );
 
         //insert a "cleared" value into the versions.  Post processing should actually delete
-        MutationBatch entityMutation = entitySerializationStrategy.clear( collectionContext, entityId, version );
+        MutationBatch entityMutation = entitySerializationStrategy.clear( entityCollection, entityId, version );
 
         //merge the 2 into 1 mutation
         logMutation.mergeShallow( entityMutation );

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/DeleteCommit.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/DeleteCommit.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/DeleteCommit.java
new file mode 100644
index 0000000..ee0e64c
--- /dev/null
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/DeleteCommit.java
@@ -0,0 +1,16 @@
+package org.apache.usergrid.persistence.collection.mvcc.stage.impl.delete;
+
+
+import org.apache.usergrid.persistence.collection.EntityCollection;
+import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
+import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionEvent;
+import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
+
+
+/** @author tnine */
+public class DeleteCommit extends CollectionEvent<MvccEntity> {
+    public DeleteCommit( final EntityCollection context, final MvccEntity data, final Result result ) {
+
+        super( context, data, result );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/DeleteStart.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/DeleteStart.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/DeleteStart.java
index 5f8840b..7ccfa51 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/DeleteStart.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/DeleteStart.java
@@ -3,7 +3,7 @@ package org.apache.usergrid.persistence.collection.mvcc.stage.impl.delete;
 
 import java.util.UUID;
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionEvent;
 import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
 
@@ -11,7 +11,7 @@ import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
 /** @author tnine */
 public class DeleteStart extends CollectionEvent<UUID> {
 
-    public DeleteStart( final CollectionContext context, final UUID data, final Result result ) {
+    public DeleteStart( final EntityCollection context, final UUID data, final Result result ) {
         super( context, data, result );
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/Deletecommit.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/Deletecommit.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/Deletecommit.java
deleted file mode 100644
index dfdebba..0000000
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/Deletecommit.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.apache.usergrid.persistence.collection.mvcc.stage.impl.delete;
-
-
-import org.apache.usergrid.persistence.collection.CollectionContext;
-import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
-import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionEvent;
-import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
-
-
-/** @author tnine */
-public class DeleteCommit extends CollectionEvent<MvccEntity> {
-    public DeleteCommit( final CollectionContext context, final MvccEntity data, final Result result ) {
-
-        super( context, data, result );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/StartDelete.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/StartDelete.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/StartDelete.java
index ca1865b..ab0fc22 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/StartDelete.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/delete/StartDelete.java
@@ -6,7 +6,7 @@ import java.util.UUID;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException;
 import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccLogEntry;
@@ -70,13 +70,13 @@ public class StartDelete implements EventStage<DeleteStart> {
         Preconditions.checkNotNull( version, "Entity version is required in this stage" );
 
 
-        final CollectionContext collectionContext = event.getCollectionContext();
+        final EntityCollection entityCollection = event.getCollectionContext();
 
 
         final MvccLogEntry startEntry = new MvccLogEntryImpl( entityId, version,
                 org.apache.usergrid.persistence.collection.mvcc.entity.Stage.ACTIVE );
 
-        MutationBatch write = logStrategy.write( collectionContext, startEntry );
+        MutationBatch write = logStrategy.write( entityCollection, startEntry );
 
 
         try {
@@ -91,6 +91,6 @@ public class StartDelete implements EventStage<DeleteStart> {
         //create the mvcc entity for the next stage
         final MvccEntityImpl nextStage = new MvccEntityImpl( entityId, version, Optional.<Entity>absent() );
 
-        eventBus.post( new DeleteCommit( collectionContext, nextStage, event.getResult() ) );
+        eventBus.post( new DeleteCommit( entityCollection, nextStage, event.getResult() ) );
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/EventLoad.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/EventLoad.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/EventLoad.java
index 6f3fab9..e3fa151 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/EventLoad.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/EventLoad.java
@@ -3,14 +3,14 @@ package org.apache.usergrid.persistence.collection.mvcc.stage.impl.read;
 
 import java.util.UUID;
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionEvent;
 import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
 
 
 /** @author tnine */
 public class EventLoad extends CollectionEvent<UUID> {
-    public EventLoad( final CollectionContext context, final UUID data, final Result result ) {
+    public EventLoad( final EntityCollection context, final UUID data, final Result result ) {
 
         super( context, data, result );
     }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/Load.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/Load.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/Load.java
index a2acf3e..fce75d6 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/Load.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/read/Load.java
@@ -7,7 +7,7 @@ import java.util.UUID;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
 import org.apache.usergrid.persistence.collection.mvcc.stage.EventStage;
@@ -51,12 +51,12 @@ public class Load implements EventStage<EventLoad> {
         Preconditions.checkNotNull( entityId, "Entity id required in the read stage" );
 
 
-        final CollectionContext collectionContext = event.getCollectionContext();
+        final EntityCollection entityCollection = event.getCollectionContext();
 
         //generate  a version that represents now
         final UUID versionMax = uuidService.newTimeUUID();
 
-        List<MvccEntity> results = entitySerializationStrategy.load( collectionContext, entityId, versionMax, 1 );
+        List<MvccEntity> results = entitySerializationStrategy.load( entityCollection, entityId, versionMax, 1 );
 
         //nothing to do, we didn't get a result back
         if ( results.size() != 1 ) {

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Commit.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Commit.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Commit.java
index 65af8cf..fa14213 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Commit.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/Commit.java
@@ -6,7 +6,7 @@ import java.util.UUID;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException;
 import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
@@ -60,16 +60,16 @@ public class Commit implements EventStage<EventCommit> {
         Preconditions.checkNotNull( version, "Entity version is required in this stage" );
 
 
-        final CollectionContext collectionContext = event.getCollectionContext();
+        final EntityCollection entityCollection = event.getCollectionContext();
 
 
         final MvccLogEntry startEntry = new MvccLogEntryImpl( entityId, version,
                 org.apache.usergrid.persistence.collection.mvcc.entity.Stage.COMMITTED );
 
-        MutationBatch logMutation = logEntrySerializationStrategy.write( collectionContext, startEntry );
+        MutationBatch logMutation = logEntrySerializationStrategy.write( entityCollection, startEntry );
 
         //now get our actual insert into the entity data
-        MutationBatch entityMutation = entitySerializationStrategy.write( collectionContext, entity );
+        MutationBatch entityMutation = entitySerializationStrategy.write( entityCollection, entity );
 
         //merge the 2 into 1 mutation
         logMutation.mergeShallow( entityMutation );

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventCommit.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventCommit.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventCommit.java
index 0091770..7263049 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventCommit.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventCommit.java
@@ -1,7 +1,7 @@
 package org.apache.usergrid.persistence.collection.mvcc.stage.impl.write;
 
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
 import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionEvent;
 import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
@@ -10,7 +10,7 @@ import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
 public class EventCommit extends CollectionEvent<MvccEntity> {
 
 
-    protected EventCommit( final CollectionContext context, final MvccEntity data, final Result result ) {
+    protected EventCommit( final EntityCollection context, final MvccEntity data, final Result result ) {
         super( context, data, result );
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventCreate.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventCreate.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventCreate.java
index d5a609f..a106117 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventCreate.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventCreate.java
@@ -1,7 +1,7 @@
 package org.apache.usergrid.persistence.collection.mvcc.stage.impl.write;
 
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionEvent;
 import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
 import org.apache.usergrid.persistence.model.entity.Entity;
@@ -11,7 +11,7 @@ import org.apache.usergrid.persistence.model.entity.Entity;
 public class EventCreate extends CollectionEvent<Entity> {
 
 
-    public EventCreate( final CollectionContext context, final Entity data, final Result result ) {
+    public EventCreate( final EntityCollection context, final Entity data, final Result result ) {
         super( context, data, result );
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventStart.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventStart.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventStart.java
index 87e2488..d803870 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventStart.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventStart.java
@@ -1,7 +1,7 @@
 package org.apache.usergrid.persistence.collection.mvcc.stage.impl.write;
 
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionEvent;
 import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
 import org.apache.usergrid.persistence.model.entity.Entity;
@@ -10,7 +10,7 @@ import org.apache.usergrid.persistence.model.entity.Entity;
 /** @author tnine */
 public class EventStart extends CollectionEvent<Entity> {
 
-    public EventStart( final CollectionContext context, final Entity data, final Result result ) {
+    public EventStart( final EntityCollection context, final Entity data, final Result result ) {
 
         super( context, data, result );
     }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventUpdate.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventUpdate.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventUpdate.java
index 68fb6ab..5a43713 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventUpdate.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventUpdate.java
@@ -1,7 +1,7 @@
 package org.apache.usergrid.persistence.collection.mvcc.stage.impl.write;
 
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionEvent;
 import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
 import org.apache.usergrid.persistence.model.entity.Entity;
@@ -10,7 +10,7 @@ import org.apache.usergrid.persistence.model.entity.Entity;
 /** @author tnine */
 public class EventUpdate extends CollectionEvent<Entity> {
 
-    public EventUpdate( final CollectionContext context, final Entity data, final Result result ) {
+    public EventUpdate( final EntityCollection context, final Entity data, final Result result ) {
         super( context, data, result );
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventVerify.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventVerify.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventVerify.java
index f078aa5..3409b14 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventVerify.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/EventVerify.java
@@ -1,7 +1,7 @@
 package org.apache.usergrid.persistence.collection.mvcc.stage.impl.write;
 
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
 import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionEvent;
 import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
@@ -11,7 +11,7 @@ import org.apache.usergrid.persistence.collection.mvcc.stage.Result;
 public class EventVerify extends CollectionEvent<MvccEntity> {
 
 
-    public EventVerify( final CollectionContext context, final MvccEntity data, final Result result ) {
+    public EventVerify( final EntityCollection context, final MvccEntity data, final Result result ) {
         super( context, data, result );
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/StartWrite.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/StartWrite.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/StartWrite.java
index ac153f8..0476db8 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/StartWrite.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/impl/write/StartWrite.java
@@ -6,7 +6,7 @@ import java.util.UUID;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException;
 import org.apache.usergrid.persistence.collection.mvcc.entity.CollectionEventBus;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccLogEntry;
@@ -65,13 +65,13 @@ public class StartWrite implements EventStage<EventStart> {
         Preconditions.checkNotNull( version, "Entity version is required in this stage" );
 
 
-        final CollectionContext collectionContext = event.getCollectionContext();
+        final EntityCollection entityCollection = event.getCollectionContext();
 
 
         final MvccLogEntry startEntry = new MvccLogEntryImpl( entityId, version,
                 org.apache.usergrid.persistence.collection.mvcc.entity.Stage.ACTIVE );
 
-        MutationBatch write = logStrategy.write( collectionContext, startEntry );
+        MutationBatch write = logStrategy.write( entityCollection, startEntry );
 
 
         try {
@@ -86,7 +86,7 @@ public class StartWrite implements EventStage<EventStart> {
         //create the mvcc entity for the next stage
         final MvccEntityImpl nextStage = new MvccEntityImpl( entityId, version, entity );
 
-        eventBus.post( new EventVerify( collectionContext, nextStage, event.getResult() ) );
+        eventBus.post( new EventVerify( entityCollection, nextStage, event.getResult() ) );
     }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccEntitySerializationStrategy.java
----------------------------------------------------------------------
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 b873fb6..85dfcd3 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
@@ -4,7 +4,7 @@ package org.apache.usergrid.persistence.collection.serialization;
 import java.util.List;
 import java.util.UUID;
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
 
 import com.netflix.astyanax.MutationBatch;
@@ -20,7 +20,7 @@ public interface MvccEntitySerializationStrategy
      * @param entity The entity to persist
      * @return The MutationBatch operations for this update
      */
-    public MutationBatch write(CollectionContext context, MvccEntity entity );
+    public MutationBatch write(EntityCollection context, MvccEntity entity );
 
 
     /**
@@ -34,7 +34,7 @@ public interface MvccEntitySerializationStrategy
      * If the entity version has been cleared, the MvccEntity will be returned, but the optional entity
      * will not be set
      */
-    public MvccEntity load( CollectionContext context, UUID entityId, UUID version );
+    public MvccEntity load( EntityCollection context, UUID entityId, UUID version );
 
     /**
      * Load a list, from highest to lowest of the entity with versions <= version up to maxSize elements
@@ -47,7 +47,7 @@ public interface MvccEntitySerializationStrategy
      * @return A list of entities up to max size ordered from max(UUID)=> min(UUID).  The return value should be null safe
      * and return an empty list when there are no matches
      */
-    public List<MvccEntity> load( CollectionContext context, UUID entityId, UUID version, int maxSize );
+    public List<MvccEntity> load( EntityCollection context, UUID entityId, UUID version, int maxSize );
 
 
     /**
@@ -60,7 +60,7 @@ public interface MvccEntitySerializationStrategy
      * @param version
      * @return
      */
-    public MutationBatch clear(CollectionContext context, UUID entityId, UUID version);
+    public MutationBatch clear(EntityCollection context, UUID entityId, UUID version);
 
 
     /**
@@ -70,7 +70,7 @@ public interface MvccEntitySerializationStrategy
      * @param entityId The entity id to delete
      * @param version The version to delete
      */
-    public MutationBatch delete( CollectionContext context, UUID entityId, UUID version );
+    public MutationBatch delete( EntityCollection context, UUID entityId, UUID version );
 
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/MvccLogEntrySerializationStrategy.java
----------------------------------------------------------------------
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 e79e95f..6e2b812 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
@@ -4,7 +4,7 @@ package org.apache.usergrid.persistence.collection.serialization;
 import java.util.List;
 import java.util.UUID;
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccLogEntry;
 
 import com.netflix.astyanax.MutationBatch;
@@ -21,7 +21,7 @@ public interface MvccLogEntrySerializationStrategy
      * @param entry the entry to write
      * @return The mutation batch with the mutation operations for this write.
      */
-    public MutationBatch write( final CollectionContext context, MvccLogEntry entry );
+    public MutationBatch write( final EntityCollection context, MvccLogEntry entry );
 
     /**
      * Load and return the stage with the given id and a version that is <= the version provided
@@ -33,7 +33,7 @@ public interface MvccLogEntrySerializationStrategy
      *
      * @return The deserialized version of the log entry.  Null if no version == the current version exists
      */
-    public MvccLogEntry load( final CollectionContext context, final UUID entityId, final UUID version )
+    public MvccLogEntry load( final EntityCollection context, final UUID entityId, final UUID version )
             throws ConnectionException;
 
     /**
@@ -46,7 +46,7 @@ public interface MvccLogEntrySerializationStrategy
      *
      * @return A list of entities up to max size ordered from max(UUID)=> min(UUID)
      */
-    public List<MvccLogEntry> load( CollectionContext context, UUID entityId, UUID version, int maxSize )
+    public List<MvccLogEntry> load( EntityCollection context, UUID entityId, UUID version, int maxSize )
             throws ConnectionException;
 
     /**
@@ -56,5 +56,5 @@ public interface MvccLogEntrySerializationStrategy
      * @param entityId The entity id to delete
      * @param version The version to delete
      */
-    public MutationBatch delete( CollectionContext context, UUID entityId, UUID version );
+    public MutationBatch delete( EntityCollection context, UUID entityId, UUID version );
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImpl.java
----------------------------------------------------------------------
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 7a5c5c5..3b66ad9 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
@@ -3,7 +3,6 @@ package org.apache.usergrid.persistence.collection.serialization.impl;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.UUID;
@@ -11,7 +10,7 @@ import java.util.UUID;
 import org.apache.cassandra.db.marshal.ReversedType;
 import org.apache.cassandra.db.marshal.UUIDType;
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException;
 import org.apache.usergrid.persistence.collection.migration.CollectionColumnFamily;
 import org.apache.usergrid.persistence.collection.migration.Migration;
@@ -60,7 +59,7 @@ public class MvccEntitySerializationStrategyImpl implements MvccEntitySerializat
 
 
     @Override
-    public MutationBatch write(final CollectionContext context, final MvccEntity entity ) {
+    public MutationBatch write(final EntityCollection context, final MvccEntity entity ) {
         Preconditions.checkNotNull( entity, "entity is required" );
 
         final UUID colName = entity.getVersion();
@@ -78,7 +77,7 @@ public class MvccEntitySerializationStrategyImpl implements MvccEntitySerializat
 
 
     @Override
-    public MvccEntity load( final CollectionContext context, final UUID entityId, final UUID version ) {
+    public MvccEntity load( final EntityCollection context, final UUID entityId, final UUID version ) {
         Preconditions.checkNotNull( context, "context is required" );
         Preconditions.checkNotNull( entityId, "entity id is required" );
         Preconditions.checkNotNull( version, "version is required" );
@@ -105,7 +104,7 @@ public class MvccEntitySerializationStrategyImpl implements MvccEntitySerializat
 
 
     @Override
-    public List<MvccEntity> load( final CollectionContext context, final UUID entityId, final UUID version,
+    public List<MvccEntity> load( final EntityCollection context, final UUID entityId, final UUID version,
                                   final int maxSize ) {
 
         Preconditions.checkNotNull( context, "context is required" );
@@ -135,7 +134,7 @@ public class MvccEntitySerializationStrategyImpl implements MvccEntitySerializat
 
 
     @Override
-    public MutationBatch clear( final CollectionContext context, final UUID entityId, final UUID version ) {
+    public MutationBatch clear( final EntityCollection context, final UUID entityId, final UUID version ) {
         Preconditions.checkNotNull( context, "context is required" );
         Preconditions.checkNotNull( entityId, "entity id is required" );
         Preconditions.checkNotNull( version, "version is required" );
@@ -152,7 +151,7 @@ public class MvccEntitySerializationStrategyImpl implements MvccEntitySerializat
 
 
     @Override
-    public MutationBatch delete( final CollectionContext context, final UUID entityId, final UUID version ) {
+    public MutationBatch delete( final EntityCollection context, final UUID entityId, final UUID version ) {
         Preconditions.checkNotNull( context, "context is required" );
         Preconditions.checkNotNull( entityId, "entity id is required" );
         Preconditions.checkNotNull( version, "version is required" );
@@ -168,7 +167,7 @@ public class MvccEntitySerializationStrategyImpl implements MvccEntitySerializat
 
 
     @Override
-    public Collection<CollectionColumnFamily> getColumnFamilies() {
+    public java.util.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

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java
----------------------------------------------------------------------
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 d4663b9..f80306b 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
@@ -3,7 +3,6 @@ package org.apache.usergrid.persistence.collection.serialization.impl;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -13,7 +12,7 @@ import java.util.UUID;
 import org.apache.cassandra.db.marshal.ReversedType;
 import org.apache.cassandra.db.marshal.UUIDType;
 
-import org.apache.usergrid.persistence.collection.CollectionContext;
+import org.apache.usergrid.persistence.collection.EntityCollection;
 import org.apache.usergrid.persistence.collection.migration.CollectionColumnFamily;
 import org.apache.usergrid.persistence.collection.migration.Migration;
 import org.apache.usergrid.persistence.collection.mvcc.entity.MvccLogEntry;
@@ -65,7 +64,7 @@ public class MvccLogEntrySerializationStrategyImpl implements MvccLogEntrySerial
 
 
     @Override
-    public MutationBatch write( final CollectionContext context, final MvccLogEntry entry ) {
+    public MutationBatch write( final EntityCollection context, final MvccLogEntry entry ) {
 
         Preconditions.checkNotNull( entry, "entry is required" );
 
@@ -91,7 +90,7 @@ public class MvccLogEntrySerializationStrategyImpl implements MvccLogEntrySerial
 
 
     @Override
-    public MvccLogEntry load( final CollectionContext context, final UUID entityId, final UUID version )
+    public MvccLogEntry load( final EntityCollection context, final UUID entityId, final UUID version )
             throws ConnectionException {
         Preconditions.checkNotNull( context, "context is required" );
         Preconditions.checkNotNull( entityId, "entity id is required" );
@@ -116,7 +115,7 @@ public class MvccLogEntrySerializationStrategyImpl implements MvccLogEntrySerial
 
 
     @Override
-    public List<MvccLogEntry> load( final CollectionContext context, final UUID entityId, final UUID version,
+    public List<MvccLogEntry> load( final EntityCollection context, final UUID entityId, final UUID version,
                                     final int maxSize ) throws ConnectionException {
         Preconditions.checkNotNull( context, "context is required" );
         Preconditions.checkNotNull( entityId, "entity id is required" );
@@ -142,7 +141,7 @@ public class MvccLogEntrySerializationStrategyImpl implements MvccLogEntrySerial
 
 
     @Override
-    public MutationBatch delete( final CollectionContext context, final UUID entityId, final UUID version ) {
+    public MutationBatch delete( final EntityCollection context, final UUID entityId, final UUID version ) {
 
         Preconditions.checkNotNull( context, "context is required" );
         Preconditions.checkNotNull( entityId, "entityId is required" );
@@ -158,7 +157,7 @@ public class MvccLogEntrySerializationStrategyImpl implements MvccLogEntrySerial
 
 
     @Override
-    public Collection<CollectionColumnFamily> getColumnFamilies() {
+    public java.util.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
         CollectionColumnFamily cf = new CollectionColumnFamily( CF_ENTITY_LOG,
@@ -182,7 +181,7 @@ public class MvccLogEntrySerializationStrategyImpl implements MvccLogEntrySerial
      *
      * @param context We need to use this when getting the keyspace
      */
-    private MutationBatch doWrite( CollectionContext context, UUID entityId, RowOp op ) {
+    private MutationBatch doWrite( EntityCollection context, UUID entityId, RowOp op ) {
 
         final MutationBatch batch = keyspace.prepareMutationBatch();
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionContextImplTest.java
----------------------------------------------------------------------
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
index dd7770a..a6ca549 100644
--- 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
@@ -5,7 +5,7 @@ import java.util.UUID;
 
 import org.junit.Test;
 
-import org.apache.usergrid.persistence.collection.impl.CollectionContextImpl;
+import org.apache.usergrid.persistence.collection.impl.EntityCollectionImpl;
 import org.apache.usergrid.persistence.model.util.UUIDGenerator;
 
 import static junit.framework.TestCase.assertEquals;
@@ -14,40 +14,33 @@ import static junit.framework.TestCase.assertEquals;
 /** @author tnine */
 public class CollectionContextImplTest {
 
-    @Test( expected = NullPointerException.class )
-    public void appIdRequired() {
-        new CollectionContextImpl( null, UUIDGenerator.newTimeUUID(), "test" );
-    }
-
 
     @Test( expected = NullPointerException.class )
     public void ownerIdRequired() {
-        new CollectionContextImpl( UUIDGenerator.newTimeUUID(), null, "test" );
+        new EntityCollectionImpl( null, "test" );
     }
 
 
     @Test( expected = NullPointerException.class )
     public void collectionRequired() {
-        new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), null );
+        new EntityCollectionImpl( UUIDGenerator.newTimeUUID(), null );
     }
 
 
     @Test( expected = IllegalArgumentException.class )
     public void collectionRequiredLength() {
-        new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "" );
+        new EntityCollectionImpl( UUIDGenerator.newTimeUUID(), "" );
     }
 
 
     @Test
     public void correctValues() {
-        final UUID appId = UUIDGenerator.newTimeUUID();
         final UUID ownerId = UUIDGenerator.newTimeUUID();
 
         final String collection = "tests";
 
-        CollectionContextImpl context = new CollectionContextImpl( appId, ownerId, collection );
+        EntityCollectionImpl context = new EntityCollectionImpl(ownerId, collection );
 
-        assertEquals( appId, context.getApplication() );
         assertEquals( ownerId, context.getOwner() );
         assertEquals( collection, context.getName() );
     }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerFactoryTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerFactoryTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerFactoryTest.java
deleted file mode 100644
index 355cd09..0000000
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerFactoryTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package org.apache.usergrid.persistence.collection;
-
-
-import org.junit.Rule;
-import org.junit.Test;
-
-import org.apache.usergrid.persistence.collection.guice.TestCollectionModule;
-import org.apache.usergrid.persistence.collection.impl.CollectionContextImpl;
-import org.apache.usergrid.persistence.model.util.UUIDGenerator;
-
-import com.google.guiceberry.junit4.GuiceBerryRule;
-import com.google.inject.Inject;
-import com.google.inject.ProvisionException;
-
-import static org.junit.Assert.assertNotNull;
-
-
-/**
- * Basic tests
- *
- * @author tnine
- */
-public class CollectionManagerFactoryTest {
-
-
-    @Rule
-    public final GuiceBerryRule guiceBerry = new GuiceBerryRule( TestCollectionModule.class );
-
-
-    @Inject
-    private CollectionManagerFactory collectionManagerFactory;
-
-
-
-
-    @Test
-    public void validInput() {
-
-        CollectionContextImpl context =
-                new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" );
-
-        CollectionManager collectionManager = collectionManagerFactory.createCollectionManager( context );
-
-        assertNotNull( "A collection manager must be returned", collectionManager );
-    }
-
-
-    @Test( expected = ProvisionException.class )
-    public void nullInput() {
-           CollectionManager collectionManager = collectionManagerFactory.createCollectionManager( null );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerIT.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerIT.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerIT.java
index a9dd579..2723645 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerIT.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerIT.java
@@ -5,8 +5,7 @@ import org.junit.Rule;
 import org.junit.Test;
 
 import org.apache.usergrid.persistence.collection.guice.CassandraTestCollectionModule;
-import org.apache.usergrid.persistence.collection.impl.CollectionContextImpl;
-import org.apache.usergrid.persistence.collection.mvcc.stage.impl.write.EventCreate;
+import org.apache.usergrid.persistence.collection.impl.EntityCollectionImpl;
 import org.apache.usergrid.persistence.model.entity.Entity;
 import org.apache.usergrid.persistence.model.field.IntegerField;
 import org.apache.usergrid.persistence.model.util.UUIDGenerator;
@@ -34,7 +33,7 @@ public class CollectionManagerIT {
 
 
     @Inject
-    private CollectionManagerFactory factory;
+    private EntityCollectionManagerFactory factory;
 
     @Inject
     private EventBus eventBus;
@@ -43,11 +42,11 @@ public class CollectionManagerIT {
     @Test
     public void create() {
 
-        CollectionContext context =
-                new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" );
+        EntityCollection context =
+                new EntityCollectionImpl( UUIDGenerator.newTimeUUID(), "test" );
         Entity newEntity = new Entity( "test" );
 
-        CollectionManager manager = factory.createCollectionManager( context );
+        EntityCollectionManager manager = factory.createCollectionManager( context );
 
         Entity returned = manager.create( newEntity );
 
@@ -62,11 +61,11 @@ public class CollectionManagerIT {
     @Test
     public void createAndLoad() {
 
-        CollectionContext context =
-                new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" );
+        EntityCollection context =
+                new EntityCollectionImpl( UUIDGenerator.newTimeUUID(), "test" );
         Entity newEntity = new Entity( "test" );
 
-        CollectionManager manager = factory.createCollectionManager( context );
+        EntityCollectionManager manager = factory.createCollectionManager( context );
 
         Entity createReturned = manager.create( newEntity );
 
@@ -82,11 +81,11 @@ public class CollectionManagerIT {
     @Test
     public void createLoadDelete() {
 
-        CollectionContext context =
-                new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" );
+        EntityCollection context =
+                new EntityCollectionImpl(  UUIDGenerator.newTimeUUID(), "test" );
         Entity newEntity = new Entity( "test" );
 
-        CollectionManager manager = factory.createCollectionManager( context );
+        EntityCollectionManager manager = factory.createCollectionManager( context );
 
         Entity createReturned = manager.create( newEntity );
 
@@ -108,13 +107,13 @@ public class CollectionManagerIT {
     @Test
     public void createLoadUpdateLoad() {
 
-        CollectionContext context =
-                new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" );
+        EntityCollection context =
+                new EntityCollectionImpl( UUIDGenerator.newTimeUUID(), "test" );
 
         Entity newEntity = new Entity( "test" );
         newEntity.setField( new IntegerField( "counter", 1 ) );
 
-        CollectionManager manager = factory.createCollectionManager( context );
+        EntityCollectionManager manager = factory.createCollectionManager( context );
 
         Entity createReturned = manager.create( newEntity );
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ce2bfd82/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerTest.java
deleted file mode 100644
index e3bb133..0000000
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/CollectionManagerTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.apache.usergrid.persistence.collection;
-
-
-import org.junit.Test;
-import org.mockito.ArgumentCaptor;
-
-import org.apache.usergrid.persistence.collection.impl.CollectionContextImpl;
-import org.apache.usergrid.persistence.collection.impl.CollectionManagerImpl;
-import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
-import org.apache.usergrid.persistence.collection.mvcc.stage.ExecutionContext;
-import org.apache.usergrid.persistence.collection.mvcc.stage.EventStage;
-import org.apache.usergrid.persistence.collection.mvcc.stage.StagePipeline;
-import org.apache.usergrid.persistence.model.entity.Entity;
-import org.apache.usergrid.persistence.model.util.UUIDGenerator;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-
-/** @author tnine */
-public class CollectionManagerTest {
-//
-//    @Test
-//    public void create(){
-//
-//        EventStage mockEventStage = mock(EventStage.class);
-//
-//        StagePipeline createPipeline = mock(StagePipeline.class);
-//        StagePipeline updatePipeline = mock(StagePipeline.class);
-//        StagePipeline deletePipeline = mock(StagePipeline.class);
-//        StagePipeline loadPipeline = mock(StagePipeline.class);
-//
-//
-//
-//        //mock up returning the first stage
-//        when(createPipeline.first()).thenReturn( mockEventStage );
-//
-//
-//        CollectionContext context = new CollectionContextImpl( UUIDGenerator.newTimeUUID(), UUIDGenerator.newTimeUUID(), "test" );
-//
-//        CollectionManager collectionManager = new CollectionManagerImpl(createPipeline, updatePipeline, deletePipeline, loadPipeline, context);
-//
-//        Entity create = new Entity();
-//
-//        MvccEntity mvccEntity = mock(MvccEntity.class);
-//
-//
-//        Entity returned = collectionManager.create( create );
-//
-//        //verify the first stage was asked for
-//        verify(createPipeline).first();
-//
-//        ArgumentCaptor<ExecutionContext> contextArg = ArgumentCaptor.forClass(ExecutionContext.class);
-//
-//        //verify the first perform stage was invoked
-//        verify( mockEventStage ).performStage( contextArg.capture() );
-//
-//        //verify we set the passed entity into the ExecutionContext
-//        assertEquals("Entity should be present in the write context", create, contextArg.getValue().getMessage( Entity.class ));
-//
-//    }
-}