Work in progress. Initial interface changes complete.
Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/a849912b Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/a849912b Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/a849912b Branch: refs/heads/USERGRID-509 Commit: a849912b44d36231c165fa8789d965f84c9c576d Parents: adf19ed Author: Todd Nine <[email protected]> Authored: Tue Mar 24 18:13:04 2015 -0600 Committer: Todd Nine <[email protected]> Committed: Tue Mar 24 18:13:04 2015 -0600 ---------------------------------------------------------------------- .../collection/CollectionMembers.java | 72 ++++++++++++++++++++ .../collection/EntityCollectionManager.java | 8 +-- .../persistence/collection/ScopeSet.java | 42 +++++++----- .../cache/CachedEntityCollectionManager.java | 6 +- .../exception/CollectionRuntimeException.java | 2 +- .../impl/EntityCollectionManagerImpl.java | 26 ++++--- .../mvcc/MvccLogEntrySerializationStrategy.java | 4 +- .../mvcc/stage/write/WriteUniqueVerify.java | 27 +++++--- .../MvccEntitySerializationStrategy.java | 4 +- .../UniqueValueSerializationStrategy.java | 6 +- .../MvccEntitySerializationStrategyImpl.java | 13 ++-- ...vccEntitySerializationStrategyProxyImpl.java | 4 +- .../MvccEntitySerializationStrategyV3Impl.java | 18 ++--- .../MvccLogEntrySerializationStrategyImpl.java | 17 ++--- .../serialization/impl/ScopeSetImpl.java | 67 ------------------ 15 files changed, 164 insertions(+), 152 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a849912b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/CollectionMembers.java ---------------------------------------------------------------------- diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/CollectionMembers.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/CollectionMembers.java new file mode 100644 index 0000000..11cf39a --- /dev/null +++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/CollectionMembers.java @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.usergrid.persistence.collection; + + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; + +import org.apache.usergrid.persistence.model.entity.Id; + + +/** + * A set that contains the collection scope and the ids + */ +public class CollectionMembers<T> { + + + public final CollectionScope scope; + public final Collection<T> identifiers; + + + public CollectionMembers( final CollectionScope scope, final Collection<T> identifiers ) { + this.scope = scope; + this.identifiers = identifiers; + } + + + public CollectionMembers( final CollectionScope scope, final T identifier ) { + this.scope = scope; + this.identifiers = Collections.singleton( identifier ); + } + + + + public CollectionMembers( final CollectionScope scope ) { + this.scope = scope; + this.identifiers = new ArrayList<>( ); + } + + + public CollectionScope getScope() { + return scope; + } + + + public Collection<T> getIdentifiers() { + return identifiers; + } + + + public void addIdentifier( final T identifier ) { + this.identifiers.add( identifier ); + } +} http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a849912b/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 index 3a13b77..0e5fa33 100644 --- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManager.java +++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManager.java @@ -57,9 +57,9 @@ public interface EntityCollectionManager { /** * Return the latest versions of the specified entityIds * - * @param entityId A collection of scopes with the entity Ids set + * @param entityIds A collection of scopes with the entity Ids set */ - Observable<VersionSet> getLatestVersion( Collection<ScopeSet<Id>> entityId ); + Observable<VersionSet> getLatestVersion( ScopeSet<Id> entityIds ); /** @@ -67,7 +67,7 @@ public interface EntityCollectionManager { * @param fields The collection of scopes for fields to use * @return */ - Observable<FieldSet> getEntitiesFromFields( Collection<ScopeSet<Field>> fields ); + Observable<FieldSet> getEntitiesFromFields( ScopeSet<Field> fields ); /** * Gets the Id for a field @@ -84,7 +84,7 @@ public interface EntityCollectionManager { * * @param entityIds The entity ids */ - Observable<EntitySet> load(Collection<ScopeSet<Id>> entityIds); + Observable<EntitySet> load(ScopeSet<Id> entityIds); /** http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a849912b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/ScopeSet.java ---------------------------------------------------------------------- diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/ScopeSet.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/ScopeSet.java index 059c7cb..ebcd927 100644 --- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/ScopeSet.java +++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/ScopeSet.java @@ -20,31 +20,39 @@ package org.apache.usergrid.persistence.collection; -import java.util.Collection; - -import org.apache.usergrid.persistence.model.entity.Id; +import java.util.HashMap; +import java.util.Map; /** - * A set that contains the collection scope and the ids + * A set of scopes, keyed by collectionScope. + * + * @param <T> The type of value to encapsulate within the scope. Examples would be Id objects or Fields */ -public interface ScopeSet<T> { +public class ScopeSet<T> { + + private Map<CollectionScope, CollectionMembers<T>> members = new HashMap<>( ); - /** - * Get the scope for this set of ids - * @return - */ - CollectionScope getScope(); /** - * Get the set of Ids to load for this scope + * A factory method to generate a collection member with the given scope. If one exists, it will be returned + * @param scope * @return */ - Collection<T> getIdentifiers(); + public CollectionMembers<T> getMembers(final CollectionScope scope){ + final CollectionMembers<T> existing = members.get( scope ); + + if(existing != null){ + return existing; + } + + final CollectionMembers<T> newInstance = new CollectionMembers<T>( scope ); + + members.put( scope, newInstance ); + + return newInstance; + } + + - /** - * Add the itentifier to the list - * @param identifier - */ - void addIdentifier(T identifier); } http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a849912b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/cache/CachedEntityCollectionManager.java ---------------------------------------------------------------------- diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/cache/CachedEntityCollectionManager.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/cache/CachedEntityCollectionManager.java index 20a269b..823cbc7 100644 --- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/cache/CachedEntityCollectionManager.java +++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/cache/CachedEntityCollectionManager.java @@ -70,7 +70,7 @@ public class CachedEntityCollectionManager implements EntityCollectionManager { } @Override - public Observable<FieldSet> getEntitiesFromFields( final Collection<ScopeSet<Field>> fields ) { + public Observable<FieldSet> getEntitiesFromFields( final Collection<CollectionMembers<Field>> fields ) { return targetEntityCollectionManager.getEntitiesFromFields( fields ); } @@ -105,7 +105,7 @@ public class CachedEntityCollectionManager implements EntityCollectionManager { @Override - public Observable<VersionSet> getLatestVersion( final Collection<ScopeSet<Id>> entityId ) { + public Observable<VersionSet> getLatestVersion( final Collection<CollectionMembers<Id>> entityId ) { return targetEntityCollectionManager.getLatestVersion( entityId ); } @@ -117,7 +117,7 @@ public class CachedEntityCollectionManager implements EntityCollectionManager { @Override - public Observable<EntitySet> load( final Collection<ScopeSet<Id>> entityIds ) { + public Observable<EntitySet> load( final Collection<CollectionMembers<Id>> entityIds ) { return targetEntityCollectionManager.load( entityIds ); } http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a849912b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/CollectionRuntimeException.java ---------------------------------------------------------------------- diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/CollectionRuntimeException.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/CollectionRuntimeException.java index fc4cac5..69f4dee 100644 --- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/CollectionRuntimeException.java +++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/exception/CollectionRuntimeException.java @@ -23,7 +23,7 @@ import org.apache.usergrid.persistence.collection.MvccEntity; import org.apache.usergrid.persistence.core.scope.ApplicationScope; -public class CollectionRuntimeException extends RuntimeException { +public abstract class CollectionRuntimeException extends RuntimeException { private MvccEntity entity; private ApplicationScope applicationScope; http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a849912b/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 index 9453c65..007fc5c 100644 --- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerImpl.java +++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerImpl.java @@ -19,11 +19,8 @@ package org.apache.usergrid.persistence.collection.impl; -import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.List; -import java.util.UUID; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,7 +32,7 @@ import org.apache.usergrid.persistence.collection.EntityCollectionManager; import org.apache.usergrid.persistence.collection.EntitySet; import org.apache.usergrid.persistence.collection.FieldSet; import org.apache.usergrid.persistence.collection.MvccEntity; -import org.apache.usergrid.persistence.collection.ScopeSet; +import org.apache.usergrid.persistence.collection.CollectionMembers; import org.apache.usergrid.persistence.collection.VersionSet; import org.apache.usergrid.persistence.collection.guice.CollectionTaskExecutor; import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy; @@ -51,8 +48,7 @@ import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerial import org.apache.usergrid.persistence.collection.serialization.UniqueValue; import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy; import org.apache.usergrid.persistence.collection.serialization.UniqueValueSet; -import org.apache.usergrid.persistence.collection.serialization.impl.MutableFieldSet; -import org.apache.usergrid.persistence.collection.serialization.impl.ScopeSetImpl; +import org.apache.usergrid.persistence.collection.serialization.impl.CollectionMembersImpl; import org.apache.usergrid.persistence.core.guice.ProxyImpl; import org.apache.usergrid.persistence.core.metrics.MetricsFactory; import org.apache.usergrid.persistence.core.scope.ApplicationScope; @@ -71,7 +67,6 @@ import com.google.common.base.Preconditions; import com.google.inject.Inject; import com.google.inject.assistedinject.Assisted; import com.netflix.astyanax.Keyspace; -import com.netflix.astyanax.MutationBatch; import com.netflix.astyanax.connectionpool.OperationResult; import com.netflix.astyanax.connectionpool.exceptions.ConnectionException; import com.netflix.astyanax.model.ColumnFamily; @@ -281,9 +276,10 @@ public class EntityCollectionManagerImpl implements EntityCollectionManager { final Timer.Context timer = loadTimer.time(); - final ScopeSet<Id> entityScopeSet = new ScopeSetImpl<>( collectionScope, Collections.singleton( entityId ) ); + final CollectionMembers<Id> + entityCollectionMembers = new CollectionMembersImpl<>( collectionScope, Collections.singleton( entityId ) ); - return load( Collections.singleton( entityScopeSet) ).flatMap(new Func1<EntitySet, Observable<Entity>>() { + return load( Collections.singleton( entityCollectionMembers ) ).flatMap(new Func1<EntitySet, Observable<Entity>>() { @Override public Observable<Entity> call(final EntitySet entitySet) { final MvccEntity entity = entitySet.getEntity(entityId); @@ -314,7 +310,7 @@ public class EntityCollectionManagerImpl implements EntityCollectionManager { @Override - public Observable<EntitySet> load( final Collection<ScopeSet<Id>> entityIds ) { + public Observable<EntitySet> load( final Collection<CollectionMembers<Id>> entityIds ) { Preconditions.checkNotNull( entityIds, "entityIds cannot be null" ); @@ -359,8 +355,10 @@ public class EntityCollectionManagerImpl implements EntityCollectionManager { public Id call( Field field ) { try { - final ScopeSet<Field> scopeSet = new ScopeSetImpl<>( collectionScope, field ); - final UniqueValueSet set = uniqueValueSerializationStrategy.load(applicationScope, Collections.singleton( scopeSet ) ); + final CollectionMembers<Field> + collectionMembers = new CollectionMembersImpl<>( collectionScope, field ); + final UniqueValueSet set = uniqueValueSerializationStrategy.load(applicationScope, Collections.singleton( + collectionMembers ) ); final UniqueValue value = set.getValue(collectionScope, field.getName() ); return value == null ? null : value.getEntityId(); } @@ -379,7 +377,7 @@ public class EntityCollectionManagerImpl implements EntityCollectionManager { * @return */ @Override - public Observable<FieldSet> getEntitiesFromFields( final Collection<ScopeSet<Field>> fields ) { + public Observable<FieldSet> getEntitiesFromFields( final Collection<CollectionMembers<Field>> fields ) { // return rx.Observable.just(fields).map( new Func1<Collection<ScopeSet<Field>>, FieldSet>() { // @Override // public FieldSet call( Collection<ScopeSet<Field>> fields ) { @@ -508,7 +506,7 @@ public class EntityCollectionManagerImpl implements EntityCollectionManager { @Override - public Observable<VersionSet> getLatestVersion( final Collection<ScopeSet<Id>> entityIds ) { + public Observable<VersionSet> getLatestVersion( final Collection<CollectionMembers<Id>> entityIds ) { final Timer.Context timer = getLatestTimer.time(); return Observable.create( new Observable.OnSubscribe<VersionSet>() { http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a849912b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/MvccLogEntrySerializationStrategy.java ---------------------------------------------------------------------- diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/MvccLogEntrySerializationStrategy.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/MvccLogEntrySerializationStrategy.java index 9f85f8c..daf9ee1 100644 --- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/MvccLogEntrySerializationStrategy.java +++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/MvccLogEntrySerializationStrategy.java @@ -25,7 +25,7 @@ import java.util.UUID; import org.apache.usergrid.persistence.collection.CollectionScope; import org.apache.usergrid.persistence.collection.MvccLogEntry; -import org.apache.usergrid.persistence.collection.ScopeSet; +import org.apache.usergrid.persistence.collection.CollectionMembers; import org.apache.usergrid.persistence.collection.VersionSet; import org.apache.usergrid.persistence.core.migration.schema.Migration; import org.apache.usergrid.persistence.core.scope.ApplicationScope; @@ -59,7 +59,7 @@ public interface MvccLogEntrySerializationStrategy extends Migration { * * @return The deserialized version of the log entry */ - VersionSet load( ApplicationScope applicationScope, Collection<ScopeSet<Id>> entityIds, UUID version ); + VersionSet load( ApplicationScope applicationScope, Collection<CollectionMembers<Id>> entityIds, UUID version ); /** * Load a list, from highest to lowest of the stage with versions <= version up to maxSize elements http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a849912b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java ---------------------------------------------------------------------- diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java index a881cbb..12c11a0 100644 --- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java +++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java @@ -19,6 +19,8 @@ package org.apache.usergrid.persistence.collection.mvcc.stage.write; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -28,8 +30,8 @@ import com.netflix.hystrix.HystrixCommand; import com.netflix.hystrix.HystrixCommandGroupKey; import com.netflix.hystrix.HystrixThreadPoolProperties; -import org.apache.usergrid.persistence.collection.ScopeSet; -import org.apache.usergrid.persistence.collection.serialization.impl.ScopeSetImpl; +import org.apache.usergrid.persistence.collection.CollectionMembers; +import org.apache.usergrid.persistence.collection.serialization.impl.CollectionMembersImpl; import org.apache.usergrid.persistence.core.scope.ApplicationScope; import org.apache.usergrid.persistence.model.util.EntityUtils; import org.apache.usergrid.persistence.core.astyanax.CassandraConfig; @@ -155,18 +157,18 @@ public class WriteUniqueVerify implements Action1<CollectionIoEvent<MvccEntity>> private final UniqueValueSerializationStrategy uniqueValueSerializationStrategy; private final CassandraConfig fig; private final ApplicationScope applicationScope; -// private final CollectionScope scope; - private final ScopeSet<Field> uniqueFields; + private final CollectionScope collectionScope; + private final Collection<Field> uniqueFields; private final Entity entity; public ConsistentReplayCommand( UniqueValueSerializationStrategy uniqueValueSerializationStrategy, - CassandraConfig fig, final ApplicationScope applicationScope, CollectionScope - scope, List<Field> uniqueFields, Entity entity ){ + CassandraConfig fig, final ApplicationScope applicationScope, final CollectionScope collectionScope, Collection<Field> uniqueFields, Entity entity ){ super(REPLAY_GROUP); this.uniqueValueSerializationStrategy = uniqueValueSerializationStrategy; this.fig = fig; this.applicationScope = applicationScope; - uniqueFields = new ScopeSetImpl<Field>(scope, uniqueFields); + this.collectionScope = collectionScope; + this.uniqueFields = uniqueFields; this.entity = entity; } @@ -184,8 +186,14 @@ public class WriteUniqueVerify implements Action1<CollectionIoEvent<MvccEntity>> //allocate our max size, worst case //now get the set of fields back final UniqueValueSet uniqueValues; + + final CollectionMembers<Field> + collectionMembers = new CollectionMembersImpl<Field>( collectionScope, uniqueFields ); + try { - uniqueValues = uniqueValueSerializationStrategy.load( applicationScope, scope,consistencyLevel, uniqueFields ); + + uniqueValues = uniqueValueSerializationStrategy.load( applicationScope ,consistencyLevel, + Collections.singleton( collectionMembers )); } catch ( ConnectionException e ) { throw new RuntimeException( "Unable to read from cassandra", e ); @@ -196,7 +204,8 @@ public class WriteUniqueVerify implements Action1<CollectionIoEvent<MvccEntity>> //loop through each field that was unique for ( final Field field : uniqueFields ) { - final UniqueValue uniqueValue = uniqueValues.getValue( field.getName() ); + + final UniqueValue uniqueValue = uniqueValues.getValue( collectionScope, field.getName() ); if ( uniqueValue == null ) { throw new RuntimeException( http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a849912b/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 65be537..84b0a7e 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 @@ -26,7 +26,7 @@ import java.util.UUID; import org.apache.usergrid.persistence.collection.CollectionScope; import org.apache.usergrid.persistence.collection.EntitySet; import org.apache.usergrid.persistence.collection.MvccEntity; -import org.apache.usergrid.persistence.collection.ScopeSet; +import org.apache.usergrid.persistence.collection.CollectionMembers; import org.apache.usergrid.persistence.core.migration.data.VersionedData; import org.apache.usergrid.persistence.core.migration.schema.Migration; import org.apache.usergrid.persistence.core.scope.ApplicationScope; @@ -57,7 +57,7 @@ public interface MvccEntitySerializationStrategy extends Migration, VersionedDat * @param entityIds * @return */ - public EntitySet load(ApplicationScope applicationScope, Collection<ScopeSet<Id>> entityIds, UUID maxVersion); + public EntitySet load(ApplicationScope applicationScope, Collection<CollectionMembers<Id>> entityIds, UUID maxVersion); /** * Load a list, from highest to lowest of the entity with versions <= version up to maxSize elements http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a849912b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValueSerializationStrategy.java ---------------------------------------------------------------------- diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValueSerializationStrategy.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValueSerializationStrategy.java index ab1f24b..9bcbde3 100644 --- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValueSerializationStrategy.java +++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/UniqueValueSerializationStrategy.java @@ -25,7 +25,7 @@ import com.netflix.astyanax.MutationBatch; import com.netflix.astyanax.connectionpool.exceptions.ConnectionException; import com.netflix.astyanax.model.ConsistencyLevel; import org.apache.usergrid.persistence.collection.CollectionScope; -import org.apache.usergrid.persistence.collection.ScopeSet; +import org.apache.usergrid.persistence.collection.CollectionMembers; import org.apache.usergrid.persistence.core.migration.schema.Migration; import org.apache.usergrid.persistence.core.scope.ApplicationScope; import org.apache.usergrid.persistence.model.entity.Id; @@ -65,7 +65,7 @@ public interface UniqueValueSerializationStrategy extends Migration { * * @throws ConnectionException on error connecting to Cassandra */ - UniqueValueSet load(ApplicationScope applicationScope, Collection<ScopeSet<Field>> fields ) throws ConnectionException; + UniqueValueSet load(ApplicationScope applicationScope, Collection<CollectionMembers<Field>> fields ) throws ConnectionException; /** * Load UniqueValue that matches field from collection or null if that value does not exist. @@ -76,7 +76,7 @@ public interface UniqueValueSerializationStrategy extends Migration { * @return UniqueValueSet containing fields from the collection that exist in cassandra * @throws ConnectionException on error connecting to Cassandra */ - UniqueValueSet load(ApplicationScope applicationScope, ConsistencyLevel consistencyLevel, Collection<ScopeSet<Field>> fields ) throws ConnectionException; + UniqueValueSet load(ApplicationScope applicationScope, ConsistencyLevel consistencyLevel, Collection<CollectionMembers<Field>> fields ) throws ConnectionException; /** http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a849912b/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 bfabf60..c1806da 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 @@ -35,8 +35,7 @@ import org.apache.cassandra.db.marshal.UUIDType; import org.apache.usergrid.persistence.collection.CollectionScope; import org.apache.usergrid.persistence.collection.EntitySet; import org.apache.usergrid.persistence.collection.MvccEntity; -import org.apache.usergrid.persistence.collection.ScopeSet; -import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException; +import org.apache.usergrid.persistence.collection.CollectionMembers; import org.apache.usergrid.persistence.collection.exception.DataCorruptionException; import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccEntityImpl; import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy; @@ -114,7 +113,7 @@ public abstract class MvccEntitySerializationStrategyImpl implements MvccEntityS @Override - public EntitySet load(final ApplicationScope applicationScope, final Collection<ScopeSet<Id>> entityIds, + public EntitySet load(final ApplicationScope applicationScope, final Collection<CollectionMembers<Id>> entityIds, final UUID maxVersion ) { @@ -177,8 +176,7 @@ public abstract class MvccEntitySerializationStrategyImpl implements MvccEntityS .withColumnRange( maxVersion, null, false, 1 ).execute().getResult(); } catch ( ConnectionException e ) { - throw new CollectionRuntimeException( null, applicationScope, - "An error occurred connecting to cassandra", e ); + throw new RuntimeException("An error occurred connecting to cassandra", e ); } } ).subscribeOn( scheduler ); }, 10 ) @@ -279,8 +277,9 @@ public abstract class MvccEntitySerializationStrategyImpl implements MvccEntityS @Override public Optional<MvccEntity> load( final ApplicationScope applicationScope, final CollectionScope scope, final Id entityId ) { - final ScopeSet<Id> scopeSet = new ScopeSetImpl<>( scope, Collections.singleton( entityId ) ); - final EntitySet results = load(applicationScope, Collections.singleton( scopeSet ) , UUIDGenerator.newTimeUUID() ); + final CollectionMembers<Id> + collectionMembers = new CollectionMembersImpl<>( scope, Collections.singleton( entityId ) ); + final EntitySet results = load(applicationScope, Collections.singleton( collectionMembers ) , UUIDGenerator.newTimeUUID() ); return Optional.fromNullable( results.getEntity( entityId )); } http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a849912b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyProxyImpl.java ---------------------------------------------------------------------- diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyProxyImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyProxyImpl.java index 4d60f5d..cb2f89e 100644 --- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyProxyImpl.java +++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyProxyImpl.java @@ -25,7 +25,7 @@ import java.util.UUID; import org.apache.usergrid.persistence.collection.CollectionScope; import org.apache.usergrid.persistence.collection.EntitySet; import org.apache.usergrid.persistence.collection.MvccEntity; -import org.apache.usergrid.persistence.collection.ScopeSet; +import org.apache.usergrid.persistence.collection.CollectionMembers; import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy; import org.apache.usergrid.persistence.collection.serialization.impl.migration.CollectionMigrationPlugin; import org.apache.usergrid.persistence.core.astyanax.MultiTennantColumnFamilyDefinition; @@ -84,7 +84,7 @@ public class MvccEntitySerializationStrategyProxyImpl implements MvccEntitySeria @Override - public EntitySet load( final ApplicationScope applicationScope, final Collection<ScopeSet<Id>> entityIds, final UUID maxVersion ) { + public EntitySet load( final ApplicationScope applicationScope, final Collection<CollectionMembers<Id>> entityIds, final UUID maxVersion ) { final MigrationRelationship<MvccEntitySerializationStrategy> migration = getMigrationRelationShip(); http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a849912b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV3Impl.java ---------------------------------------------------------------------- diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV3Impl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV3Impl.java index 7b6124e..110311b 100644 --- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV3Impl.java +++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyV3Impl.java @@ -18,8 +18,7 @@ import org.apache.cassandra.db.marshal.BytesType; import org.apache.usergrid.persistence.collection.CollectionScope; import org.apache.usergrid.persistence.collection.EntitySet; import org.apache.usergrid.persistence.collection.MvccEntity; -import org.apache.usergrid.persistence.collection.ScopeSet; -import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException; +import org.apache.usergrid.persistence.collection.CollectionMembers; import org.apache.usergrid.persistence.collection.exception.DataCorruptionException; import org.apache.usergrid.persistence.collection.exception.EntityTooLargeException; import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccEntityImpl; @@ -54,14 +53,11 @@ import com.netflix.astyanax.connectionpool.exceptions.ConnectionException; import com.netflix.astyanax.model.Column; import com.netflix.astyanax.model.ColumnList; import com.netflix.astyanax.model.Row; -import com.netflix.astyanax.model.Rows; import com.netflix.astyanax.serializers.AbstractSerializer; import com.netflix.astyanax.serializers.BooleanSerializer; import rx.Observable; import rx.Scheduler; -import rx.functions.Func1; -import rx.functions.Func2; import rx.schedulers.Schedulers; @@ -123,7 +119,7 @@ public class MvccEntitySerializationStrategyV3Impl implements MvccEntitySerializ @Override - public EntitySet load( final ApplicationScope applicationScope, final Collection<ScopeSet<Id>> entityIds, + public EntitySet load( final ApplicationScope applicationScope, final Collection<CollectionMembers<Id>> entityIds, final UUID maxVersion ) { @@ -144,7 +140,7 @@ public class MvccEntitySerializationStrategyV3Impl implements MvccEntitySerializ final List<ScopedRowKey<CollectionPrefixedKey<Id>>> rowKeys = new ArrayList<>( entityIds.size() ); - for(ScopeSet<Id> collectionScope: entityIds) { + for(CollectionMembers<Id> collectionScope: entityIds) { final Id ownerId = collectionScope.getScope().getOwner(); final String collectionName = collectionScope.getScope().getName(); @@ -206,8 +202,7 @@ public class MvccEntitySerializationStrategyV3Impl implements MvccEntitySerializ .withColumnSlice( COL_VALUE ).execute().getResult(); } catch ( ConnectionException e ) { - throw new CollectionRuntimeException( null, applicationScope, - "An error occurred connecting to cassandra", e ); + throw new RuntimeException("An error occurred connecting to cassandra", e ); } } ).subscribeOn( scheduler ); }, 10 ) @@ -278,9 +273,10 @@ public class MvccEntitySerializationStrategyV3Impl implements MvccEntitySerializ public Optional<MvccEntity> load( final ApplicationScope applicationScope, final CollectionScope scope, final Id entityId ) { - final ScopeSet<Id> scopeSet = new ScopeSetImpl<>( scope, Collections.singleton( entityId ) ); + final CollectionMembers<Id> + collectionMembers = new CollectionMembersImpl<>( scope, Collections.singleton( entityId ) ); - final EntitySet results = load( applicationScope, Collections.singleton( scopeSet ), UUIDGenerator.newTimeUUID() ); + final EntitySet results = load( applicationScope, Collections.singleton( collectionMembers ), UUIDGenerator.newTimeUUID() ); return Optional.fromNullable( results.getEntity( entityId )); } http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a849912b/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 4e71e38..8a628b6 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 @@ -38,9 +38,8 @@ import org.apache.cassandra.db.marshal.UUIDType; import org.apache.usergrid.persistence.collection.CollectionScope; import org.apache.usergrid.persistence.collection.MvccLogEntry; -import org.apache.usergrid.persistence.collection.ScopeSet; +import org.apache.usergrid.persistence.collection.CollectionMembers; import org.apache.usergrid.persistence.collection.VersionSet; -import org.apache.usergrid.persistence.collection.exception.CollectionRuntimeException; import org.apache.usergrid.persistence.collection.mvcc.MvccLogEntrySerializationStrategy; import org.apache.usergrid.persistence.collection.mvcc.entity.Stage; import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccLogEntryImpl; @@ -49,7 +48,6 @@ import org.apache.usergrid.persistence.core.astyanax.IdRowCompositeSerializer; import org.apache.usergrid.persistence.core.astyanax.MultiTennantColumnFamily; import org.apache.usergrid.persistence.core.astyanax.MultiTennantColumnFamilyDefinition; import org.apache.usergrid.persistence.core.astyanax.ScopedRowKey; -import org.apache.usergrid.persistence.core.migration.schema.Migration; import org.apache.usergrid.persistence.core.scope.ApplicationScope; import org.apache.usergrid.persistence.model.entity.Id; @@ -128,7 +126,7 @@ public class MvccLogEntrySerializationStrategyImpl implements MvccLogEntrySerial @Override - public VersionSet load( final ApplicationScope applicationScope, final Collection<ScopeSet<Id>> entityIds, + public VersionSet load( final ApplicationScope applicationScope, final Collection<CollectionMembers<Id>> entityIds, final UUID maxVersion ) { Preconditions.checkNotNull( applicationScope, "applicationScope is required" ); Preconditions.checkNotNull( entityIds, "entityIds is required" ); @@ -148,11 +146,11 @@ public class MvccLogEntrySerializationStrategyImpl implements MvccLogEntrySerial final List<ScopedRowKey<CollectionPrefixedKey<Id>>> rowKeys = new ArrayList<>( entityIds.size() ); - for(ScopeSet<Id> scopeSet: entityIds) { - final Id ownerId = scopeSet.getScope().getOwner(); - final String collectionName = scopeSet.getScope().getName(); + for(CollectionMembers<Id> collectionMembers : entityIds) { + final Id ownerId = collectionMembers.getScope().getOwner(); + final String collectionName = collectionMembers.getScope().getName(); - for ( final Id entityId : scopeSet.getIdentifiers() ) { + for ( final Id entityId : collectionMembers.getIdentifiers() ) { final CollectionPrefixedKey<Id> collectionPrefixedKey = new CollectionPrefixedKey<>( collectionName, ownerId, entityId ); @@ -175,8 +173,7 @@ public class MvccLogEntrySerializationStrategyImpl implements MvccLogEntrySerial .iterator(); } catch ( ConnectionException e ) { - throw new CollectionRuntimeException( null, applicationScope, "An error occurred connecting to cassandra", - e ); + throw new RuntimeException( "An error occurred connecting to cassandra", e ); } http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a849912b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/ScopeSetImpl.java ---------------------------------------------------------------------- diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/ScopeSetImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/ScopeSetImpl.java deleted file mode 100644 index 98abb4b..0000000 --- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/ScopeSetImpl.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.usergrid.persistence.collection.serialization.impl; - - -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -import org.apache.usergrid.persistence.collection.CollectionScope; -import org.apache.usergrid.persistence.collection.ScopeSet; - - -public class ScopeSetImpl<T> implements ScopeSet<T> { - - - public final CollectionScope scope; - public final Collection<T> identifiers; - - - public ScopeSetImpl( final CollectionScope scope, final Collection<T> identifiers ) { - this.scope = scope; - this.identifiers = identifiers; - } - - - public ScopeSetImpl( final CollectionScope scope, final T identifier ) { - this.scope = scope; - this.identifiers = Collections.singleton(identifier); - } - - - - @Override - public CollectionScope getScope() { - return scope; - } - - - @Override - public Collection<T> getIdentifiers() { - return identifiers; - } - - - @Override - public void addIdentifier( final T identifier ) { - this.identifiers.add( identifier ); - } -}
