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 2015/01/23 02:13:56 UTC
[7/9] incubator-usergrid git commit: Removed concurrent annotations
Removed concurrent annotations
Refactored singleton to include transitive dependencies on initialization. Class rule order not guaranteed VM versions.
Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/1fbe3e54
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/1fbe3e54
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/1fbe3e54
Branch: refs/heads/USERGRID-273
Commit: 1fbe3e54d27e1a9666626a55f2857654c957f8f9
Parents: e80df0d
Author: Todd Nine <tn...@apigee.com>
Authored: Thu Jan 22 17:04:18 2015 -0700
Committer: Todd Nine <tn...@apigee.com>
Committed: Thu Jan 22 17:04:18 2015 -0700
----------------------------------------------------------------------
stack/core/pom.xml | 2 +-
.../corepersistence/CpEntityManager.java | 135 +-
.../corepersistence/CpEntityManagerFactory.java | 137 +-
.../usergrid/corepersistence/CpSetup.java | 220 +--
.../usergrid/corepersistence/GuiceFactory.java | 157 +-
.../usergrid/corepersistence/GuiceModule.java | 45 +-
.../usergrid/persistence/EntityManager.java | 107 +-
.../persistence/EntityManagerFactory.java | 29 +-
.../cassandra/EntityManagerFactoryImpl.java | 28 +-
.../cassandra/EntityManagerImpl.java | 92 +-
.../usergrid/persistence/cassandra/Setup.java | 20 +
.../persistence/cassandra/SetupImpl.java | 27 +-
.../OrganizationAlreadyExistsException.java | 43 +
.../main/resources/usergrid-core-context.xml | 45 +-
.../org/apache/usergrid/AbstractCoreIT.java | 18 +-
.../java/org/apache/usergrid/Application.java | 3 +-
.../org/apache/usergrid/CoreApplication.java | 19 +-
.../java/org/apache/usergrid/CoreITSetup.java | 1 +
.../org/apache/usergrid/CoreITSetupImpl.java | 77 +-
.../org/apache/usergrid/batch/AppArgsTest.java | 3 -
.../batch/BulkJobExecutionUnitTest.java | 4 +-
.../apache/usergrid/batch/BulkTestUtils.java | 4 +-
.../batch/ConcurrentSchedulerITSuite.java | 47 -
.../batch/ConcurrentSchedulerTestSuite.java | 35 -
.../usergrid/batch/UsergridJobFactoryTest.java | 6 +-
.../batch/job/AbstractSchedulerRuntimeIT.java | 7 +-
.../usergrid/batch/job/CountdownLatchJob.java | 1 +
.../usergrid/batch/job/DelayExecution.java | 1 +
.../usergrid/batch/job/DelayHeartbeat.java | 1 +
.../usergrid/batch/job/FailureJobExecution.java | 1 +
.../usergrid/batch/job/OnlyOnceExceution.java | 1 +
.../job/OnlyOnceUnlockOnFailExceution.java | 1 +
.../usergrid/batch/job/SchedulerRuntime1IT.java | 30 +-
.../usergrid/batch/job/SchedulerRuntime2IT.java | 42 +-
.../usergrid/batch/job/SchedulerRuntime3IT.java | 11 +-
.../usergrid/batch/job/SchedulerRuntime4IT.java | 9 +-
.../usergrid/batch/job/SchedulerRuntime5IT.java | 9 +-
.../usergrid/batch/job/SchedulerRuntime6IT.java | 11 +-
.../usergrid/batch/job/SchedulerRuntime7IT.java | 9 +-
.../usergrid/batch/job/SchedulerRuntime8IT.java | 15 +-
.../batch/job/SchedulerRuntimeIntervalIT.java | 21 +-
.../usergrid/batch/job/TestJobListenerTest.java | 8 +-
.../corepersistence/CpEntityMapUtilsTest.java | 32 +-
.../corepersistence/StaleIndexCleanupTest.java | 59 +-
.../migration/EntityDataMigrationIT.java | 18 +-
.../migration/EntityTypeMappingMigrationIT.java | 18 +-
.../migration/GraphShardVersionMigrationIT.java | 9 +-
.../migration/MigrationTestRule.java | 1 -
.../rx/AllEntitiesInSystemObservableIT.java | 6 +-
.../rx/ApplicationObservableTestIT.java | 9 +-
.../rx/EdgesFromSourceObservableIT.java | 9 +-
.../rx/EdgesToTargetObservableIT.java | 12 +-
.../rx/TargetIdObservableTestIT.java | 14 +-
.../count/BatchCountParallelismTest.java | 7 +-
.../usergrid/count/SimpleBatcherTest.java | 1 +
.../locking/cassandra/HectorLockManagerIT.java | 11 +-
.../SingleNodeLockTestSingleNode.java | 1 +
.../zookeeper/ZookeeperLockManagerTest.java | 2 +-
.../java/org/apache/usergrid/mq/MessagesIT.java | 4 +-
.../org/apache/usergrid/mq/QueuePathsTest.java | 3 +-
.../usergrid/persistence/CollectionIT.java | 17 +-
.../usergrid/persistence/CoreSchemaManager.java | 39 +-
.../apache/usergrid/persistence/CounterIT.java | 27 +-
.../usergrid/persistence/CountingMutatorIT.java | 12 +-
.../persistence/EntityConnectionsIT.java | 24 +-
.../persistence/EntityDictionaryIT.java | 7 +-
.../usergrid/persistence/EntityManagerIT.java | 42 +-
.../apache/usergrid/persistence/EntityTest.java | 4 +-
.../org/apache/usergrid/persistence/GeoIT.java | 34 +-
.../persistence/GeoQueryBooleanTest.java | 36 +-
.../apache/usergrid/persistence/IndexIT.java | 12 +-
.../usergrid/persistence/LargeEntityIT.java | 9 +-
.../usergrid/persistence/PathQueryIT.java | 12 +-
.../persistence/PerformanceEntityReadTest.java | 15 +-
.../PerformanceEntityRebuildIndexTest.java | 43 +-
.../persistence/PerformanceEntityWriteTest.java | 3 +-
.../usergrid/persistence/PermissionsIT.java | 7 +-
.../apache/usergrid/persistence/QueryTest.java | 12 +-
.../usergrid/persistence/QueryUtilsTest.java | 3 +-
.../apache/usergrid/persistence/SchemaTest.java | 6 +-
.../apache/usergrid/persistence/UtilsTest.java | 4 +-
.../cassandra/EntityManagerFactoryImplIT.java | 3 +-
.../cassandra/QueryProcessorTest.java | 41 +-
.../SimpleIndexShardLocatorImplTest.java | 4 +-
...EntityLocationRefDistanceComparatorTest.java | 1 +
.../query/AbstractIteratingQueryIT.java | 1339 ----------------
.../persistence/query/AllInCollectionIT.java | 29 -
.../persistence/query/AllInConnectionIT.java | 29 -
.../query/AllInConnectionNoTypeIT.java | 54 -
.../persistence/query/CollectionIoHelper.java | 61 +
.../persistence/query/ConnectionHelper.java | 85 ++
.../query/IntersectionTransitivePagingIT.java | 17 +-
.../query/IntersectionUnionPagingIT.java | 27 +-
.../usergrid/persistence/query/IoHelper.java | 57 +
.../persistence/query/IteratingQueryIT.java | 1432 ++++++++++++++++++
.../query/MultiOrderByCollectionIT.java | 29 -
.../MultiOrderByComplexUnionCollectionIT.java | 29 -
.../MultiOrderByComplexUnionConnectionIT.java | 29 -
.../query/MultiOrderByConnectionIT.java | 32 -
.../query/NotOrderByCollectionIT.java | 29 -
.../query/NotOrderByConnectionIT.java | 29 -
.../persistence/query/NotSubPropertyIT.java | 157 +-
...gleOrderByBoundRangeScanAscCollectionIT.java | 29 -
...gleOrderByBoundRangeScanAscConnectionIT.java | 29 -
...leOrderByBoundRangeScanDescCollectionIT.java | 29 -
...leOrderByBoundRangeScanDescConnectionIT.java | 29 -
...eOrderByComplexIntersectionCollectionIT.java | 29 -
...eOrderByComplexIntersectionConnectionIT.java | 30 -
.../SingleOrderByComplexUnionCollectionIT.java | 29 -
.../SingleOrderByComplexUnionConnectionIT.java | 29 -
.../SingleOrderByIntersectionCollectionIT.java | 31 -
.../SingleOrderByIntersectionConnectionIT.java | 31 -
.../SingleOrderByLessThanLimitCollectionIT.java | 29 -
.../SingleOrderByLessThanLimitConnectionIT.java | 29 -
.../SingleOrderByMaxLimitCollectionIT.java | 30 -
.../SingleOrderByMaxLimitConnectionIT.java | 30 -
...SingleOrderByNoIntersectionCollectionIT.java | 29 -
...SingleOrderByNoIntersectionConnectionIT.java | 29 -
.../query/SingleOrderByNotCollectionIT.java | 29 -
.../query/SingleOrderByNotConnectionIT.java | 29 -
...OrderBySameRangeScanGreaterCollectionIT.java | 29 -
...OrderBySameRangeScanGreaterConnectionIT.java | 29 -
...meRangeScanGreaterThanEqualCollectionIT.java | 29 -
...gleOrderBySameRangeScanLessCollectionIT.java | 29 -
...gleOrderBySameRangeScanLessConnectionIT.java | 29 -
...ySameRangeScanLessThanEqualCollectionIT.java | 29 -
...ySameRangeScanLessThanEqualConnectionIT.java | 29 -
.../query/ir/result/AbstractScanColumnTest.java | 1 +
.../query/ir/result/InOrderIterator.java | 9 +-
.../ir/result/IntersectionIteratorTest.java | 1 +
.../ir/result/SubtractionIteratorTest.java | 3 +-
.../query/ir/result/UnionIteratorTest.java | 3 +-
.../system/UsergridSystemMonitorIT.java | 2 -
.../usergrid/utils/ImmediateCounterRule.java | 4 +-
.../apache/usergrid/utils/IndexUtilsTest.java | 6 +-
.../apache/usergrid/utils/UUIDUtilsTest.java | 5 +-
.../resources/usergrid-custom-test.properties | 14 +-
.../test/resources/usergrid-test-context.xml | 6 +-
.../usergrid/persistence/index/EntityIndex.java | 10 +-
.../index/impl/ElasticSearchResource.java | 5 +
stack/pom.xml | 5 -
.../collection/DuplicateNameIT.java | 67 +-
.../notifications/NotificationsService.java | 6 +-
.../services/notifications/QueueListener.java | 6 +-
.../org/apache/usergrid/ServiceITSetupImpl.java | 21 +-
.../apache/usergrid/management/EmailFlowIT.java | 7 +-
.../usergrid/management/OrganizationIT.java | 8 +-
.../org/apache/usergrid/management/RoleIT.java | 9 +-
.../cassandra/ApplicationCreatorIT.java | 8 +-
.../management/cassandra/ExportServiceIT.java | 24 +-
.../cassandra/ManagementServiceIT.java | 13 +-
.../security/providers/FacebookProviderIT.java | 10 +-
.../providers/PingIdentityProviderIT.java | 8 +-
.../security/tokens/TokenServiceIT.java | 9 +-
.../usergrid/services/AbstractServiceIT.java | 7 +-
.../usergrid/services/ServiceRequestIT.java | 7 +-
.../usergrid/cassandra/CassandraResource.java | 9 +-
.../apache/usergrid/cassandra/Concurrent.java | 31 -
.../cassandra/ConcurrentJunitRunner.java | 91 --
.../usergrid/cassandra/ConcurrentSuite.java | 117 --
.../usergrid/cassandra/SpringResource.java | 40 +-
.../setup/ConcurrentProcessSingleton.java | 124 ++
.../usergrid/setup/SpringIntegrationRunner.java | 67 -
.../org/apache/usergrid/setup/SystemSetup.java | 90 --
.../usergrid/cassandra/OkThisIsTheLastIT.java | 2 -
.../usergrid/cassandra/SpringResourceTest.java | 1 -
166 files changed, 3106 insertions(+), 4061 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/pom.xml
----------------------------------------------------------------------
diff --git a/stack/core/pom.xml b/stack/core/pom.xml
index 5d9da98..405b622 100644
--- a/stack/core/pom.xml
+++ b/stack/core/pom.xml
@@ -87,7 +87,7 @@
<forkCount>${usergrid.it.forkCount}</forkCount>
<threadCount>${usergrid.it.threads}</threadCount>
<reuseForks>true</reuseForks>
- <argLine>-Dtest.barrier.timestamp=${maven.build.timestamp} -Xmx${ug.heapmax} -Xms${ug.heapmin} -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -javaagent:${settings.localRepository}/com/github/stephenc/jamm/0.2.5/jamm-0.2.5.jar ${ug.argline}</argLine>
+ <argLine>-Dtest.barrier.timestamp=${maven.build.timestamp} -Dtest.clean.storage=true -Xmx${ug.heapmax} -Xms${ug.heapmin} -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -javaagent:${settings.localRepository}/com/github/stephenc/jamm/0.2.5/jamm-0.2.5.jar ${ug.argline}</argLine>
<includes>
<include>**/*IT.java</include>
<include>**/*Test.java</include>
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java
index 3ab767c..0f0d401 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java
@@ -208,8 +208,8 @@ public class CpEntityManager implements EntityManager {
applicationScope = CpNamingUtils.getApplicationScope( applicationId );
- this.cass = this.emf.cass;
- this.counterUtils = this.emf.counterUtils;
+ this.cass = this.emf.getCassandraService();
+ this.counterUtils = this.emf.getCounterUtils();
// set to false for now
this.skipAggregateCounters = false;
@@ -348,7 +348,7 @@ public class CpEntityManager implements EntityManager {
*/
@Metered( group = "core", name = "EntityManager_create" )
@TraceParticipant
- public <A extends Entity> A create( String entityType, Class<A> entityClass,
+ public <A extends Entity> A create( String entityType, Class<A> entityClass,
Map<String, Object> properties, UUID importId ) throws Exception {
UUID timestampUuid = importId != null ? importId : UUIDUtils.newTimeUUID();
@@ -526,12 +526,12 @@ public class CpEntityManager implements EntityManager {
Id entityId = new SimpleId( entity.getUuid(), entity.getType() );
if ( logger.isDebugEnabled() ) {
- logger.debug( "Updating entity {}:{} from scope\n app {}\n owner {}\n name {}",
+ logger.debug( "Updating entity {}:{} from scope\n app {}\n owner {}\n name {}",
new Object[] {
- entityId.getType(),
- entityId.getUuid(),
+ entityId.getType(),
+ entityId.getUuid(),
collectionScope.getApplication(),
- collectionScope.getOwner(),
+ collectionScope.getOwner(),
collectionScope.getName()
} );
}
@@ -821,7 +821,7 @@ public class CpEntityManager implements EntityManager {
}
- private Iterable<EntityRef> getEntityRefsForUniqueProperty(
+ private Iterable<EntityRef> getEntityRefsForUniqueProperty(
String collName, String propName, String alias ) throws Exception {
final Id id = getIdForUniqueEntityField( collName, propName, alias );
@@ -854,16 +854,16 @@ public class CpEntityManager implements EntityManager {
get( entityRef ).getType();
}
catch ( Exception e ) {
- logger.error( "Unable to load entity " + entityRef.getType()
+ logger.error( "Unable to load entity " + entityRef.getType()
+ ":" + entityRef.getUuid(), e );
}
if ( entityRef == null ) {
- throw new EntityNotFoundException(
+ throw new EntityNotFoundException(
"Entity " + entityId.toString() + " cannot be verified" );
}
if ( ( entityType != null ) && !entityType.equalsIgnoreCase( entityRef.getType() ) ) {
throw new UnexpectedEntityTypeException(
- "Entity " + entityId + " is not the expected type, expected "
+ "Entity " + entityId + " is not the expected type, expected "
+ entityType + ", found " + entityRef.getType() );
}
}
@@ -880,7 +880,7 @@ public class CpEntityManager implements EntityManager {
@Override
- public List<Entity> getPartialEntities(
+ public List<Entity> getPartialEntities(
Collection<UUID> ids, Collection<String> properties ) throws Exception {
throw new UnsupportedOperationException( "Not supported yet." );
}
@@ -895,7 +895,7 @@ public class CpEntityManager implements EntityManager {
@Override
- public void setProperty(
+ public void setProperty(
EntityRef entityRef, String propertyName, Object propertyValue ) throws Exception {
setProperty( entityRef, propertyName, propertyValue, false );
@@ -903,8 +903,8 @@ public class CpEntityManager implements EntityManager {
@Override
- public void setProperty( EntityRef entityRef, String propertyName, Object propertyValue,
- boolean override ) throws Exception {
+ public void setProperty( EntityRef entityRef, String propertyName, Object propertyValue,
+ boolean override ) throws Exception {
if ( ( propertyValue instanceof String ) && ( ( String ) propertyValue ).equals( "" ) ) {
propertyValue = null;
@@ -912,7 +912,7 @@ public class CpEntityManager implements EntityManager {
Entity entity = get( entityRef );
- propertyValue = Schema.getDefaultSchema().validateEntityPropertyValue(
+ propertyValue = Schema.getDefaultSchema().validateEntityPropertyValue(
entity.getType(), propertyName, propertyValue );
entity.setProperty( propertyName, propertyValue );
@@ -1017,7 +1017,7 @@ public class CpEntityManager implements EntityManager {
@Override
- public void addToDictionary( EntityRef entityRef, String dictionaryName,
+ public void addToDictionary( EntityRef entityRef, String dictionaryName,
Object elementValue ) throws Exception {
addToDictionary( entityRef, dictionaryName, elementValue, null );
@@ -1025,7 +1025,7 @@ public class CpEntityManager implements EntityManager {
@Override
- public void addToDictionary( EntityRef entityRef, String dictionaryName, Object elementName,
+ public void addToDictionary( EntityRef entityRef, String dictionaryName, Object elementName,
Object elementValue ) throws Exception {
if ( elementName == null ) {
@@ -1344,7 +1344,7 @@ public class CpEntityManager implements EntityManager {
@Override
- public Entity createItemInCollection( EntityRef entityRef, String collectionName,
+ public Entity createItemInCollection( EntityRef entityRef, String collectionName,
String itemType, Map<String, Object> props ) throws Exception {
return getRelationManager( entityRef ).createItemInCollection( collectionName, itemType, props );
@@ -1390,7 +1390,7 @@ public class CpEntityManager implements EntityManager {
@Override
- public ConnectionRef createConnection( EntityRef connectingEntity, String pairedConnectionType,
+ public ConnectionRef createConnection( EntityRef connectingEntity, String pairedConnectionType,
EntityRef pairedEntity, String connectionType, EntityRef connectedEntityRef )
throws Exception {
@@ -1417,7 +1417,7 @@ public class CpEntityManager implements EntityManager {
@Override
- public ConnectionRef connectionRef( EntityRef connectingEntity, String pairedConnectionType,
+ public ConnectionRef connectionRef( EntityRef connectingEntity, String pairedConnectionType,
EntityRef pairedEntity, String connectionType, EntityRef connectedEntityRef ) throws Exception {
return getRelationManager( connectingEntity )
@@ -1449,7 +1449,7 @@ public class CpEntityManager implements EntityManager {
@Override
- public Results getConnectedEntities( EntityRef entityRef, String connectionType,
+ public Results getConnectedEntities( EntityRef entityRef, String connectionType,
String connectedEntityType, Level resultsLevel ) throws Exception {
return getRelationManager( entityRef )
@@ -1458,7 +1458,7 @@ public class CpEntityManager implements EntityManager {
@Override
- public Results getConnectingEntities( EntityRef entityRef, String connectionType,
+ public Results getConnectingEntities( EntityRef entityRef, String connectionType,
String connectedEntityType, Level resultsLevel ) throws Exception {
return getRelationManager( entityRef )
@@ -1562,7 +1562,7 @@ public class CpEntityManager implements EntityManager {
}
- private Entity batchCreateRole( String roleName, String roleTitle, long inactivity,
+ private Entity batchCreateRole( String roleName, String roleTitle, long inactivity,
String propertyName, UUID ownerId, Map<String, Object> additionalProperties ) throws Exception {
UUID timestampUuid = UUIDUtils.newTimeUUID();
@@ -1585,10 +1585,10 @@ public class CpEntityManager implements EntityManager {
Mutator<ByteBuffer> batch = createMutator( cass.getApplicationKeyspace( applicationId ), be );
CassandraPersistenceUtils.addInsertToMutator( batch, ENTITY_DICTIONARIES,
- CassandraPersistenceUtils.key( ownerId,
+ CassandraPersistenceUtils.key( ownerId,
Schema.DICTIONARY_ROLENAMES ), roleName, roleTitle, timestamp );
CassandraPersistenceUtils.addInsertToMutator( batch, ENTITY_DICTIONARIES,
- CassandraPersistenceUtils.key( ownerId,
+ CassandraPersistenceUtils.key( ownerId,
Schema.DICTIONARY_ROLETIMES ), roleName, inactivity,
timestamp );
CassandraPersistenceUtils.addInsertToMutator( batch, ENTITY_DICTIONARIES,
@@ -1607,7 +1607,7 @@ public class CpEntityManager implements EntityManager {
permission = permission.toLowerCase();
long timestamp = cass.createTimestamp();
Mutator<ByteBuffer> batch = createMutator( cass.getApplicationKeyspace( applicationId ), be );
- CassandraPersistenceUtils.addInsertToMutator( batch, ApplicationCF.ENTITY_DICTIONARIES,
+ CassandraPersistenceUtils.addInsertToMutator( batch, ApplicationCF.ENTITY_DICTIONARIES,
getRolePermissionsKey( roleName ), permission, ByteBuffer.allocate( 0 ), timestamp );
CassandraPersistenceUtils.batchExecute( batch, CassandraService.RETRY_COUNT );
}
@@ -1621,7 +1621,7 @@ public class CpEntityManager implements EntityManager {
Mutator<ByteBuffer> batch = createMutator( cass.getApplicationKeyspace( applicationId ), be );
for ( String permission : permissions ) {
permission = permission.toLowerCase();
- CassandraPersistenceUtils.addInsertToMutator( batch, ApplicationCF.ENTITY_DICTIONARIES,
+ CassandraPersistenceUtils.addInsertToMutator( batch, ApplicationCF.ENTITY_DICTIONARIES,
getRolePermissionsKey( roleName ), permission, ByteBuffer.allocate( 0 ), timestamp);
}
CassandraPersistenceUtils.batchExecute( batch, CassandraService.RETRY_COUNT );
@@ -1629,7 +1629,7 @@ public class CpEntityManager implements EntityManager {
private Object getRolePermissionsKey( String roleName ) {
- return CassandraPersistenceUtils.key(
+ return CassandraPersistenceUtils.key(
SimpleRoleRef.getIdForRoleName( roleName ), DICTIONARY_PERMISSIONS );
}
@@ -1652,7 +1652,7 @@ public class CpEntityManager implements EntityManager {
permission = permission.toLowerCase();
long timestamp = cass.createTimestamp();
Mutator<ByteBuffer> batch = createMutator( cass.getApplicationKeyspace( applicationId ), be);
- CassandraPersistenceUtils.addDeleteToMutator( batch, ApplicationCF.ENTITY_DICTIONARIES,
+ CassandraPersistenceUtils.addDeleteToMutator( batch, ApplicationCF.ENTITY_DICTIONARIES,
getRolePermissionsKey( roleName ), permission, timestamp );
CassandraPersistenceUtils.batchExecute( batch, CassandraService.RETRY_COUNT );
}
@@ -1661,7 +1661,7 @@ public class CpEntityManager implements EntityManager {
@Override
public Set<String> getRolePermissions( String roleName ) throws Exception {
roleName = roleName.toLowerCase();
- return cass.getAllColumnNames( cass.getApplicationKeyspace( applicationId ),
+ return cass.getAllColumnNames( cass.getApplicationKeyspace( applicationId ),
ApplicationCF.ENTITY_DICTIONARIES, getRolePermissionsKey( roleName ) );
}
@@ -1737,7 +1737,7 @@ public class CpEntityManager implements EntityManager {
@Override
public Set<String> getGroupRolePermissions( UUID groupId, String roleName ) throws Exception {
roleName = roleName.toLowerCase();
- return cass.getAllColumnNames( cass.getApplicationKeyspace( applicationId ),
+ return cass.getAllColumnNames( cass.getApplicationKeyspace( applicationId ),
ApplicationCF.ENTITY_DICTIONARIES, getRolePermissionsKey( groupId, roleName ) );
}
@@ -1780,7 +1780,7 @@ public class CpEntityManager implements EntityManager {
@Override
public Set<String> getUserPermissions( UUID userId ) throws Exception {
- return cast(getDictionaryAsSet(
+ return cast(getDictionaryAsSet(
new SimpleEntityRef( User.ENTITY_TYPE, userId ), Schema.DICTIONARY_PERMISSIONS ) );
}
@@ -1861,7 +1861,7 @@ public class CpEntityManager implements EntityManager {
@Override
- public void incrementAggregateCounters( UUID userId, UUID groupId, String category,
+ public void incrementAggregateCounters( UUID userId, UUID groupId, String category,
String counterName, long value ) {
long cassandraTimestamp = cass.createTimestamp();
@@ -1869,14 +1869,14 @@ public class CpEntityManager implements EntityManager {
}
- private void incrementAggregateCounters( UUID userId, UUID groupId, String category,
+ private void incrementAggregateCounters( UUID userId, UUID groupId, String category,
String counterName, long value, long cassandraTimestamp ) {
// TODO short circuit
if ( !skipAggregateCounters ) {
Mutator<ByteBuffer> m = createMutator( cass.getApplicationKeyspace( applicationId ), be );
- counterUtils.batchIncrementAggregateCounters( m, applicationId, userId, groupId, null,
+ counterUtils.batchIncrementAggregateCounters( m, applicationId, userId, groupId, null,
category, counterName, value, cassandraTimestamp / 1000, cassandraTimestamp );
CassandraPersistenceUtils.batchExecute( m, CassandraService.RETRY_COUNT );
@@ -1885,15 +1885,15 @@ public class CpEntityManager implements EntityManager {
@Override
- public Results getAggregateCounters( UUID userId, UUID groupId, String category,
+ public Results getAggregateCounters( UUID userId, UUID groupId, String category,
String counterName, CounterResolution resolution, long start, long finish, boolean pad ) {
- return this.getAggregateCounters(
+ return this.getAggregateCounters(
userId, groupId, null, category, counterName, resolution, start, finish, pad );
}
@Override
- public Results getAggregateCounters( UUID userId, UUID groupId, UUID queueId, String category,
+ public Results getAggregateCounters( UUID userId, UUID groupId, UUID queueId, String category,
String counterName, CounterResolution resolution, long start, long finish, boolean pad ) {
start = resolution.round( start );
@@ -2000,7 +2000,7 @@ public class CpEntityManager implements EntityManager {
}
}
CounterUtils.AggregateCounterSelection selection = selections.get( r.getKey() );
- countSets.add( new AggregateCounterSet( selection.getName(), selection.getUserId(),
+ countSets.add( new AggregateCounterSet( selection.getName(), selection.getUserId(),
selection.getGroupId(), selection.getCategory(), counters ) );
}
@@ -2029,7 +2029,7 @@ public class CpEntityManager implements EntityManager {
return new SimpleEntityRef( "user", identifier.getUUID() );
}
if ( identifier.isName() ) {
- return this.getAlias( new SimpleEntityRef(
+ return this.getAlias( new SimpleEntityRef(
Application.ENTITY_TYPE, applicationId ), "user", identifier.getName() );
}
if ( identifier.isEmail() ) {
@@ -2120,7 +2120,7 @@ public class CpEntityManager implements EntityManager {
if ( !skipAggregateCounters ) {
long timestamp = cass.createTimestamp();
Mutator<ByteBuffer> m = createMutator( cass.getApplicationKeyspace( applicationId ), be );
- counterUtils.batchIncrementAggregateCounters(
+ counterUtils.batchIncrementAggregateCounters(
m, applicationId, userId, groupId, null, category, counters, timestamp );
CassandraPersistenceUtils.batchExecute( m, CassandraService.RETRY_COUNT );
@@ -2149,7 +2149,7 @@ public class CpEntityManager implements EntityManager {
final EntityCollectionManager ecm = managerCache.getEntityCollectionManager( collectionScope );
//convert to a string, that's what we store
- final Id results = ecm.getIdField( new StringField(
+ final Id results = ecm.getIdField( new StringField(
propertyName, propertyValue.toString() ) ).toBlocking() .lastOrDefault( null );
return results;
@@ -2341,7 +2341,7 @@ public class CpEntityManager implements EntityManager {
@Override
- public <A extends Entity> A batchCreate( Mutator<ByteBuffer> ignored, String entityType,
+ public <A extends Entity> A batchCreate( Mutator<ByteBuffer> ignored, String entityType,
Class<A> entityClass, Map<String, Object> properties, UUID importId, UUID timestampUuid )
throws Exception {
@@ -2473,13 +2473,13 @@ public class CpEntityManager implements EntityManager {
EntityCollectionManager ecm = managerCache.getEntityCollectionManager( collectionScope );
if ( logger.isDebugEnabled() ) {
- logger.debug( "Writing entity {}:{} into scope\n app {}\n owner {}\n name {} data {}",
+ logger.debug( "Writing entity {}:{} into scope\n app {}\n owner {}\n name {} data {}",
new Object[] {
- entity.getType(),
- entity.getUuid(),
+ entity.getType(),
+ entity.getUuid(),
collectionScope.getApplication(),
- collectionScope.getOwner(),
- collectionScope.getName(),
+ collectionScope.getOwner(),
+ collectionScope.getName(),
CpEntityMapUtils.toMap( cpEntity )
} );
//
@@ -2551,7 +2551,7 @@ public class CpEntityManager implements EntityManager {
private void incrementEntityCollection( String collection_name, long cassandraTimestamp ) {
try {
- incrementAggregateCounters( null, null, null,
+ incrementAggregateCounters( null, null, null,
APPLICATION_COLLECTION + collection_name, ONE_COUNT, cassandraTimestamp );
}
catch ( Exception e ) {
@@ -2559,11 +2559,11 @@ public class CpEntityManager implements EntityManager {
new Object[] { collection_name, e } );
}
try {
- incrementAggregateCounters( null, null, null,
+ incrementAggregateCounters( null, null, null,
APPLICATION_ENTITIES, ONE_COUNT, cassandraTimestamp );
}
catch ( Exception e ) {
- logger.error( "Unable to increment counter application.entities for collection: "
+ logger.error( "Unable to increment counter application.entities for collection: "
+ "{} with timestamp: {}",
new Object[] { collection_name, cassandraTimestamp, e } );
}
@@ -2573,7 +2573,7 @@ public class CpEntityManager implements EntityManager {
private void handleWriteUniqueVerifyException( Entity entity, WriteUniqueVerifyException wuve )
throws DuplicateUniquePropertyExistsException {
- // we may have multiple conflicts, but caller expects only one
+ // we may have multiple conflicts, but caller expects only one
Map<String, Field> violiations = wuve.getVioliations();
if ( violiations != null ) {
@@ -2590,7 +2590,7 @@ public class CpEntityManager implements EntityManager {
@Override
- public Mutator<ByteBuffer> batchSetProperty( Mutator<ByteBuffer> batch, EntityRef entity,
+ public Mutator<ByteBuffer> batchSetProperty( Mutator<ByteBuffer> batch, EntityRef entity,
String propertyName, Object propertyValue, UUID timestampUuid ) throws Exception {
throw new UnsupportedOperationException( "Not supported yet." );
@@ -2598,8 +2598,8 @@ public class CpEntityManager implements EntityManager {
@Override
- public Mutator<ByteBuffer> batchSetProperty( Mutator<ByteBuffer> batch, EntityRef entity,
- String propertyName, Object propertyValue, boolean force, boolean noRead,
+ public Mutator<ByteBuffer> batchSetProperty( Mutator<ByteBuffer> batch, EntityRef entity,
+ String propertyName, Object propertyValue, boolean force, boolean noRead,
UUID timestampUuid ) throws Exception {
throw new UnsupportedOperationException( "Not supported yet." );
@@ -2607,7 +2607,7 @@ public class CpEntityManager implements EntityManager {
@Override
- public Mutator<ByteBuffer> batchUpdateDictionary( Mutator<ByteBuffer> batch, EntityRef entity,
+ public Mutator<ByteBuffer> batchUpdateDictionary( Mutator<ByteBuffer> batch, EntityRef entity,
String dictionaryName, Object elementValue, Object elementCoValue,
boolean removeFromDictionary, UUID timestampUuid )
throws Exception {
@@ -2628,24 +2628,24 @@ public class CpEntityManager implements EntityManager {
batch, dictionaryName, elementValue, removeFromDictionary, timestampUuid );
}
- ApplicationCF dictionary_cf = entityHasDictionary
+ ApplicationCF dictionary_cf = entityHasDictionary
? ENTITY_DICTIONARIES : ENTITY_COMPOSITE_DICTIONARIES;
if ( elementValue != null ) {
if ( !removeFromDictionary ) {
// Set the new value
- elementCoValue = CassandraPersistenceUtils.toStorableBinaryValue(
+ elementCoValue = CassandraPersistenceUtils.toStorableBinaryValue(
elementCoValue, !entityHasDictionary );
CassandraPersistenceUtils.addInsertToMutator( batch, dictionary_cf,
CassandraPersistenceUtils.key( entity.getUuid(), dictionaryName ),
- entityHasDictionary ? elementValue : asList( elementValue ),
+ entityHasDictionary ? elementValue : asList( elementValue ),
elementCoValue, timestamp );
if ( !entityHasDictionary ) {
CassandraPersistenceUtils.addInsertToMutator( batch, ENTITY_DICTIONARIES,
- CassandraPersistenceUtils.key( entity.getUuid(), DICTIONARY_SETS ),
+ CassandraPersistenceUtils.key( entity.getUuid(), DICTIONARY_SETS ),
dictionaryName, null, timestamp );
}
}
@@ -2661,18 +2661,18 @@ public class CpEntityManager implements EntityManager {
@Override
- public Mutator<ByteBuffer> batchUpdateDictionary( Mutator<ByteBuffer> batch, EntityRef entity,
- String dictionaryName, Object elementValue, boolean removeFromDictionary,
+ public Mutator<ByteBuffer> batchUpdateDictionary( Mutator<ByteBuffer> batch, EntityRef entity,
+ String dictionaryName, Object elementValue, boolean removeFromDictionary,
UUID timestampUuid )
throws Exception {
- return batchUpdateDictionary( batch, entity, dictionaryName, elementValue, null,
+ return batchUpdateDictionary( batch, entity, dictionaryName, elementValue, null,
removeFromDictionary, timestampUuid );
}
@Override
- public Mutator<ByteBuffer> batchUpdateProperties( Mutator<ByteBuffer> batch, EntityRef entity,
+ public Mutator<ByteBuffer> batchUpdateProperties( Mutator<ByteBuffer> batch, EntityRef entity,
Map<String, Object> properties, UUID timestampUuid ) throws Exception {
throw new UnsupportedOperationException( "Not supported yet." );
@@ -2750,6 +2750,11 @@ public class CpEntityManager implements EntityManager {
ei.initializeIndex();
}
+ public void deleteIndex(){
+ EntityIndex ei = managerCache.getEntityIndex( applicationScope );
+ ei.deleteIndex();
+ }
+
public static org.apache.usergrid.persistence.model.entity.Entity entityToCpEntity( Entity entity, UUID importId ) {
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManagerFactory.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManagerFactory.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManagerFactory.java
index 7016d3c..e49f46e 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManagerFactory.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManagerFactory.java
@@ -51,7 +51,6 @@ import org.apache.usergrid.persistence.cassandra.CounterUtils;
import org.apache.usergrid.persistence.cassandra.Setup;
import org.apache.usergrid.persistence.collection.CollectionScope;
import org.apache.usergrid.persistence.collection.EntityCollectionManager;
-import org.apache.usergrid.persistence.collection.EntityCollectionManagerFactory;
import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
import org.apache.usergrid.persistence.core.migration.data.DataMigrationManager;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
@@ -59,16 +58,14 @@ import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
import org.apache.usergrid.persistence.core.util.Health;
import org.apache.usergrid.persistence.entities.Application;
import org.apache.usergrid.persistence.exceptions.ApplicationAlreadyExistsException;
+import org.apache.usergrid.persistence.exceptions.DuplicateUniquePropertyExistsException;
+import org.apache.usergrid.persistence.exceptions.OrganizationAlreadyExistsException;
import org.apache.usergrid.persistence.graph.Edge;
import org.apache.usergrid.persistence.graph.GraphManager;
-import org.apache.usergrid.persistence.graph.GraphManagerFactory;
import org.apache.usergrid.persistence.graph.SearchByEdgeType;
import org.apache.usergrid.persistence.graph.impl.SimpleSearchByEdgeType;
-import org.apache.usergrid.persistence.index.AliasedEntityIndex;
import org.apache.usergrid.persistence.index.EntityIndex;
-import org.apache.usergrid.persistence.index.EntityIndexFactory;
import org.apache.usergrid.persistence.index.query.Query;
-import org.apache.usergrid.persistence.map.MapManagerFactory;
import org.apache.usergrid.persistence.model.entity.Id;
import org.apache.usergrid.persistence.model.entity.SimpleId;
import org.apache.usergrid.utils.UUIDUtils;
@@ -89,8 +86,6 @@ public class CpEntityManagerFactory implements EntityManagerFactory, Application
private static final Logger logger = LoggerFactory.getLogger( CpEntityManagerFactory.class );
- public static String IMPLEMENTATION_DESCRIPTION = "Core Persistence Entity Manager Factory 1.0";
-
private ApplicationContext applicationContext;
private Setup setup = null;
@@ -114,17 +109,36 @@ public class CpEntityManagerFactory implements EntityManagerFactory, Application
private ManagerCache managerCache;
private DataMigrationManager dataMigrationManager;
- CassandraService cass;
- CounterUtils counterUtils;
+ private CassandraService cassandraService;
+ private CounterUtils counterUtils;
+ private Injector injector;
public CpEntityManagerFactory(
- CassandraService cass, CounterUtils counterUtils) {
+ final CassandraService cassandraService, final CounterUtils counterUtils, final Injector injector) {
- this.cass = cass;
+ this.cassandraService = cassandraService;
this.counterUtils = counterUtils;
+ this.injector = injector;
+ this.managerCache = injector.getInstance( ManagerCache.class );
+ this.dataMigrationManager = injector.getInstance( DataMigrationManager.class );
+
+
+ }
+
+
+ public CounterUtils getCounterUtils() {
+ return counterUtils;
+ }
+
+
+ public CassandraService getCassandraService() {
+ return cassandraService;
+ }
+ public ManagerCache getManagerCache() {
+ return managerCache;
}
@@ -149,25 +163,15 @@ public class CpEntityManagerFactory implements EntityManagerFactory, Application
}
- public ManagerCache getManagerCache() {
-
- if ( managerCache == null ) {
-
- // TODO: better solution for getting injector?
- Injector injector = CpSetup.getInjector();
-
- managerCache = injector.getInstance( ManagerCache.class );
-
- dataMigrationManager = injector.getInstance( DataMigrationManager.class );
- }
- return managerCache;
- }
-
-
- @Override
- public String getImpementationDescription() throws Exception {
- return IMPLEMENTATION_DESCRIPTION;
- }
+// public ManagerCache getManagerCache() {
+//
+// if ( managerCache == null ) {
+// managerCache = injector.getInstance( ManagerCache.class );
+//
+// dataMigrationManager = injector.getInstance( DataMigrationManager.class );
+// }
+// return managerCache;
+// }
@Override
@@ -187,7 +191,7 @@ public class CpEntityManagerFactory implements EntityManagerFactory, Application
EntityManager em = new CpEntityManager();
em.init( this, applicationId );
- // only need to do this once
+ // only need to do this once
if ( !applicationIndexesCreated.contains( applicationId ) ) {
em.createIndex();
applicationIndexesCreated.add( applicationId );
@@ -251,9 +255,18 @@ public class CpEntityManagerFactory implements EntityManagerFactory, Application
// create new org because the specified one does not exist
final String orgName = organizationName;
- Entity orgInfo = em.create("organization", new HashMap<String, Object>() {{
- put( PROPERTY_NAME, orgName );
- }});
+
+ final Entity orgInfo;
+
+ try {
+ orgInfo = em.create( "organization", new HashMap<String, Object>() {{
+ put( PROPERTY_NAME, orgName );
+ }} );
+ }
+ catch ( DuplicateUniquePropertyExistsException e ) {
+ throw new OrganizationAlreadyExistsException( orgName );
+ }
+
em.refreshIndex();
orgUuid = orgInfo.getUuid();
}
@@ -266,7 +279,12 @@ public class CpEntityManagerFactory implements EntityManagerFactory, Application
put( "applicationUuid", appId );
put( "organizationUuid", orgId );
}};
- Entity appInfo = em.create( "appinfo", appInfoMap );
+
+ try{
+ em.create( "appinfo", appInfoMap );
+ }catch(DuplicateUniquePropertyExistsException e){
+ throw new ApplicationAlreadyExistsException( appName );
+ }
em.refreshIndex();
// create application entity
@@ -460,7 +478,7 @@ public class CpEntityManagerFactory implements EntityManagerFactory, Application
propsEntity = EntityFactory.newEntity( UUIDUtils.newTimeUUID(), "propertymap");
}
- // intentionally going only one-level deep into fields and treating all
+ // intentionally going only one-level deep into fields and treating all
// values as strings because that is all we need for service properties
for ( String key : properties.keySet() ) {
propsEntity.setProperty( key, properties.get(key).toString() );
@@ -530,11 +548,11 @@ public class CpEntityManagerFactory implements EntityManagerFactory, Application
@Override
public void setApplicationContext( ApplicationContext applicationContext ) throws BeansException {
this.applicationContext = applicationContext;
- try {
- setup();
- } catch (Exception ex) {
- logger.error("Error setting up EMF", ex);
- }
+// try {
+// setup();
+// } catch (Exception ex) {
+// logger.error("Error setting up EMF", ex);
+// }
}
@@ -546,13 +564,6 @@ public class CpEntityManagerFactory implements EntityManagerFactory, Application
}
- /**
- * @param managerCache the managerCache to set
- */
- public void setManagerCache(CpManagerCache managerCache) {
- this.managerCache = managerCache;
- }
-
@Override
public UUID getManagementAppId() {
@@ -574,7 +585,7 @@ public class CpEntityManagerFactory implements EntityManagerFactory, Application
*/
public Setup getSetup() {
if ( setup == null ) {
- setup = new CpSetup( this, cass );
+ setup = new CpSetup( this, cassandraService, injector );
}
return setup;
}
@@ -609,17 +620,16 @@ public class CpEntityManagerFactory implements EntityManagerFactory, Application
private List<EntityIndex> getManagementIndexes() {
- return Arrays.asList(
- getManagerCache().getEntityIndex(
- new ApplicationScopeImpl( new SimpleId( CpNamingUtils.SYSTEM_APP_ID, "application" ))),
+ return Arrays.asList( managerCache.getEntityIndex(
+ new ApplicationScopeImpl( new SimpleId( CpNamingUtils.SYSTEM_APP_ID, "application" ) ) ),
// management app
- getManagerCache().getEntityIndex(
- new ApplicationScopeImpl( new SimpleId( getManagementAppId(), "application" ))),
+ managerCache
+ .getEntityIndex( new ApplicationScopeImpl( new SimpleId( getManagementAppId(), "application" ) ) ),
// default app TODO: do we need this in two-dot-o
- getManagerCache().getEntityIndex(
- new ApplicationScopeImpl( new SimpleId( getDefaultAppId(), "application" ))));
+ managerCache
+ .getEntityIndex( new ApplicationScopeImpl( new SimpleId( getDefaultAppId(), "application" ) ) ) );
}
@@ -703,7 +713,7 @@ public class CpEntityManagerFactory implements EntityManagerFactory, Application
@Override
public void addIndex(final UUID applicationId,final String indexSuffix,final int shards,final int replicas){
- EntityIndex entityIndex = getManagerCache().getEntityIndex(CpNamingUtils.getApplicationScope(applicationId));
+ EntityIndex entityIndex = managerCache.getEntityIndex(CpNamingUtils.getApplicationScope(applicationId));
entityIndex.addIndex(indexSuffix, shards, replicas);
}
@@ -711,13 +721,10 @@ public class CpEntityManagerFactory implements EntityManagerFactory, Application
public Health getEntityStoreHealth() {
// could use any collection scope here, does not matter
- EntityCollectionManager ecm = getManagerCache().getEntityCollectionManager(
- new CollectionScopeImpl(
- new SimpleId( CpNamingUtils.SYSTEM_APP_ID, "application"),
- new SimpleId( CpNamingUtils.SYSTEM_APP_ID, "application"),
- "dummy"
- ));
-
+ EntityCollectionManager ecm = managerCache.getEntityCollectionManager(
+ new CollectionScopeImpl( new SimpleId( CpNamingUtils.SYSTEM_APP_ID, "application" ),
+ new SimpleId( CpNamingUtils.SYSTEM_APP_ID, "application" ), "dummy" ) );
+
return ecm.getHealth();
- }
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpSetup.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpSetup.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpSetup.java
index 47f45fe..5efa4a8 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpSetup.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpSetup.java
@@ -17,23 +17,27 @@
package org.apache.usergrid.corepersistence;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.netflix.config.ConfigurationManager;
-import java.util.Properties;
import java.util.UUID;
-import me.prettyprint.cassandra.service.CassandraHost;
-import me.prettyprint.hector.api.ddl.ComparatorType;
-import static me.prettyprint.hector.api.factory.HFactory.createColumnFamilyDefinition;
-import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
-import org.apache.usergrid.corepersistence.util.CpNamingUtils;
import org.apache.usergrid.mq.cassandra.QueuesCF;
import org.apache.usergrid.persistence.EntityManagerFactory;
import org.apache.usergrid.persistence.cassandra.ApplicationCF;
-import static org.apache.usergrid.persistence.cassandra.CassandraPersistenceUtils.getCfDefs;
import org.apache.usergrid.persistence.cassandra.CassandraService;
+import org.apache.usergrid.persistence.cassandra.Setup;
+import org.apache.usergrid.persistence.core.migration.schema.MigrationException;
+import org.apache.usergrid.persistence.core.migration.schema.MigrationManager;
+import org.apache.usergrid.persistence.exceptions.ApplicationAlreadyExistsException;
+import org.apache.usergrid.persistence.exceptions.OrganizationAlreadyExistsException;
+
+import com.google.inject.Injector;
+
+import me.prettyprint.hector.api.ddl.ComparatorType;
+
+import static me.prettyprint.hector.api.factory.HFactory.createColumnFamilyDefinition;
+import static org.apache.usergrid.persistence.cassandra.CassandraPersistenceUtils.getCfDefs;
import static org.apache.usergrid.persistence.cassandra.CassandraService.APPLICATIONS_CF;
import static org.apache.usergrid.persistence.cassandra.CassandraService.DEFAULT_APPLICATION;
import static org.apache.usergrid.persistence.cassandra.CassandraService.DEFAULT_ORGANIZATION;
@@ -45,14 +49,6 @@ import static org.apache.usergrid.persistence.cassandra.CassandraService.SYSTEM_
import static org.apache.usergrid.persistence.cassandra.CassandraService.TOKENS_CF;
import static org.apache.usergrid.persistence.cassandra.CassandraService.USE_VIRTUAL_KEYSPACES;
import static org.apache.usergrid.persistence.cassandra.CassandraService.keyspaceForApplication;
-import org.apache.usergrid.persistence.cassandra.Setup;
-import org.apache.usergrid.persistence.core.migration.data.DataMigrationManager;
-import org.apache.usergrid.persistence.core.migration.schema.MigrationException;
-import org.apache.usergrid.persistence.core.migration.schema.MigrationManager;
-import org.apache.usergrid.persistence.entities.Application;
-import org.apache.usergrid.persistence.exceptions.ApplicationAlreadyExistsException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
@@ -62,151 +58,105 @@ public class CpSetup implements Setup {
private static final Logger logger = LoggerFactory.getLogger( CpSetup.class );
- private static Injector injector = null;
- private static EntityManagerFactory emf;
+
+ private final Injector injector;
+
private final CassandraService cass;
+ private final EntityManagerFactory emf;
+
/**
* Instantiates a new setup object.
*
* @param emf the emf
*/
- public CpSetup( EntityManagerFactory emf, CassandraService cass ) {
+ public CpSetup( final EntityManagerFactory emf, final CassandraService cassandraService, final Injector injector ) {
this.emf = emf;
- this.cass = cass;
- }
-
-
- public static Injector getInjector() {
- if ( injector == null ) {
- injector = Guice.createInjector( new GuiceModule( emf ) );
- }
- return injector;
+ this.cass = cassandraService;
+ this.injector = injector;
}
@Override
public void init() throws Exception {
- cass.init();
-
- try {
- logger.info("Loading Core Persistence properties");
-
- String hostsString = "";
- CassandraHost[] hosts = cass.getCassandraHostConfigurator().buildCassandraHosts();
- if ( hosts.length == 0 ) {
- throw new RuntimeException("Fatal error: no Cassandra hosts configured");
- }
- String sep = "";
- for ( CassandraHost host : hosts ) {
- if (StringUtils.isEmpty(host.getHost())) {
- throw new RuntimeException("Fatal error: Cassandra hostname cannot be empty");
- }
- hostsString = hostsString + sep + host.getHost();
- sep = ",";
- }
-
- logger.info("hostsString: " + hostsString);
+ //a no op, creating the injector creates the connections
- Properties cpProps = new Properties();
+ }
- // Some Usergrid properties must be mapped to Core Persistence properties
- cpProps.put("cassandra.hosts", hostsString);
- cpProps.put("cassandra.port", hosts[0].getPort());
- cpProps.put("cassandra.cluster_name", cass.getProperties().get("cassandra.cluster"));
- String cassRemoteString = (String)cass.getProperties().get("cassandra.use_remote");
- if ( cassRemoteString != null && cassRemoteString.equals("false")) {
- cpProps.put("cassandra.embedded", "true");
- } else {
- cpProps.put("cassandra.embedded", "false");
- }
+ public void createDefaultApplications() throws Exception {
- cpProps.put("collections.keyspace.strategy.class",
- cass.getProperties().get("cassandra.keyspace.strategy"));
+ setupSystemKeyspace();
- cpProps.put("collections.keyspace.strategy.options",
- cass.getProperties().get("cassandra.keyspace.replication"));
+ setupStaticKeyspace();
+ //force the EMF creation of indexes before creating the default applications
+ emf.refreshIndex();
- logger.debug("Set Cassandra properties for Core Persistence: " + cpProps.toString() );
- // Make all Usergrid properties into Core Persistence config
- cpProps.putAll( cass.getProperties() );
- //logger.debug("All properties fed to Core Persistence: " + cpProps.toString() );
+ logger.info( "Setting up default applications" );
- ConfigurationManager.loadProperties( cpProps );
+ try {
+ emf.initializeApplication( DEFAULT_ORGANIZATION, emf.getDefaultAppId(), DEFAULT_APPLICATION, null );
}
- catch ( Exception e ) {
- throw new RuntimeException( "Fatal error loading configuration.", e );
+ catch ( ApplicationAlreadyExistsException ex ) {
+ logger.warn( "Application {}/{} already exists", DEFAULT_ORGANIZATION, DEFAULT_APPLICATION );
+ }
+ catch ( OrganizationAlreadyExistsException oaee ) {
+ logger.warn( "Organization {} already exists", DEFAULT_ORGANIZATION );
}
- Injector injector = CpSetup.getInjector();
- MigrationManager m = injector.getInstance( MigrationManager.class );
try {
- m.migrate();
- } catch (MigrationException ex) {
- throw new RuntimeException("Error migrating Core Persistence", ex);
+ emf.initializeApplication( DEFAULT_ORGANIZATION, emf.getManagementAppId(), MANAGEMENT_APPLICATION, null );
+ }
+ catch ( ApplicationAlreadyExistsException ex ) {
+ logger.warn( "Application {}/{} already exists", DEFAULT_ORGANIZATION, MANAGEMENT_APPLICATION );
+ }
+ catch ( OrganizationAlreadyExistsException oaee ) {
+ logger.warn( "Organization {} already exists", DEFAULT_ORGANIZATION );
}
-
- setupSystemKeyspace();
-
- setupStaticKeyspace();
-
- //force the EMF creation of indexes before creating the default applications
- emf.refreshIndex();
-
- createDefaultApplications();
}
- public void createDefaultApplications() throws Exception {
-
- logger.info("Setting up default applications");
-
+ /**
+ * Perform migration of the 2.0 code
+ */
+ private void migrate() {
+ MigrationManager m = injector.getInstance( MigrationManager.class );
try {
- emf.initializeApplication( DEFAULT_ORGANIZATION,
- emf.getDefaultAppId(), DEFAULT_APPLICATION, null );
- } catch (ApplicationAlreadyExistsException ex) {
- logger.warn("Application {}/{} already exists",
- DEFAULT_ORGANIZATION, DEFAULT_APPLICATION);
+ m.migrate();
}
-
- try {
- emf.initializeApplication( DEFAULT_ORGANIZATION,
- emf.getManagementAppId(), MANAGEMENT_APPLICATION, null );
- } catch (ApplicationAlreadyExistsException ex) {
- logger.warn("Application {}/{} already exists",
- DEFAULT_ORGANIZATION, MANAGEMENT_APPLICATION);
+ catch ( MigrationException ex ) {
+ throw new RuntimeException( "Error migrating Core Persistence", ex );
}
}
-
-
@Override
public void setupSystemKeyspace() throws Exception {
logger.info( "Initialize system keyspace" );
- cass.createColumnFamily( SYSTEM_KEYSPACE, createColumnFamilyDefinition(
- SYSTEM_KEYSPACE, APPLICATIONS_CF, ComparatorType.BYTESTYPE ) );
+ migrate();
- cass.createColumnFamily( SYSTEM_KEYSPACE, createColumnFamilyDefinition(
- SYSTEM_KEYSPACE, PROPERTIES_CF, ComparatorType.BYTESTYPE ) );
+ cass.createColumnFamily( SYSTEM_KEYSPACE,
+ createColumnFamilyDefinition( SYSTEM_KEYSPACE, APPLICATIONS_CF, ComparatorType.BYTESTYPE ) );
- cass.createColumnFamily( SYSTEM_KEYSPACE, createColumnFamilyDefinition(
- SYSTEM_KEYSPACE, TOKENS_CF, ComparatorType.BYTESTYPE ) );
+ cass.createColumnFamily( SYSTEM_KEYSPACE,
+ createColumnFamilyDefinition( SYSTEM_KEYSPACE, PROPERTIES_CF, ComparatorType.BYTESTYPE ) );
- cass.createColumnFamily( SYSTEM_KEYSPACE, createColumnFamilyDefinition(
- SYSTEM_KEYSPACE, PRINCIPAL_TOKEN_CF, ComparatorType.UUIDTYPE ) );
+ cass.createColumnFamily( SYSTEM_KEYSPACE,
+ createColumnFamilyDefinition( SYSTEM_KEYSPACE, TOKENS_CF, ComparatorType.BYTESTYPE ) );
+
+ cass.createColumnFamily( SYSTEM_KEYSPACE,
+ createColumnFamilyDefinition( SYSTEM_KEYSPACE, PRINCIPAL_TOKEN_CF, ComparatorType.UUIDTYPE ) );
logger.info( "System keyspace initialized" );
}
-
+
/**
* Initialize application keyspace.
*
@@ -216,8 +166,9 @@ public class CpSetup implements Setup {
* @throws Exception the exception
*/
- public void setupApplicationKeyspace(
- final UUID applicationId, String applicationName ) throws Exception {
+ public void setupApplicationKeyspace( final UUID applicationId, String applicationName ) throws Exception {
+
+ migrate();
// Need this legacy stuff for queues
@@ -225,18 +176,14 @@ public class CpSetup implements Setup {
String app_keyspace = keyspaceForApplication( applicationId );
- logger.info( "Creating application keyspace " + app_keyspace
- + " for " + applicationName + " application" );
+ logger.info( "Creating application keyspace " + app_keyspace + " for " + applicationName + " application" );
- cass.createColumnFamily( app_keyspace,
- createColumnFamilyDefinition(
- SYSTEM_KEYSPACE, APPLICATIONS_CF, ComparatorType.BYTESTYPE ) );
+ cass.createColumnFamily( app_keyspace,
+ createColumnFamilyDefinition( SYSTEM_KEYSPACE, APPLICATIONS_CF, ComparatorType.BYTESTYPE ) );
- cass.createColumnFamilies( app_keyspace,
- getCfDefs( ApplicationCF.class, app_keyspace ) );
+ cass.createColumnFamilies( app_keyspace, getCfDefs( ApplicationCF.class, app_keyspace ) );
- cass.createColumnFamilies( app_keyspace,
- getCfDefs( QueuesCF.class, app_keyspace ) );
+ cass.createColumnFamilies( app_keyspace, getCfDefs( QueuesCF.class, app_keyspace ) );
}
}
@@ -244,6 +191,8 @@ public class CpSetup implements Setup {
@Override
public void setupStaticKeyspace() throws Exception {
+ migrate();
+
// Need this legacy stuff for queues
if ( USE_VIRTUAL_KEYSPACES ) {
@@ -251,33 +200,20 @@ public class CpSetup implements Setup {
logger.info( "Creating static application keyspace " + STATIC_APPLICATION_KEYSPACE );
cass.createColumnFamily( STATIC_APPLICATION_KEYSPACE,
- createColumnFamilyDefinition( STATIC_APPLICATION_KEYSPACE, APPLICATIONS_CF,
- ComparatorType.BYTESTYPE ) );
+ createColumnFamilyDefinition( STATIC_APPLICATION_KEYSPACE, APPLICATIONS_CF,
+ ComparatorType.BYTESTYPE ) );
cass.createColumnFamilies( STATIC_APPLICATION_KEYSPACE,
- getCfDefs( ApplicationCF.class, STATIC_APPLICATION_KEYSPACE ) );
+ getCfDefs( ApplicationCF.class, STATIC_APPLICATION_KEYSPACE ) );
cass.createColumnFamilies( STATIC_APPLICATION_KEYSPACE,
- getCfDefs( QueuesCF.class, STATIC_APPLICATION_KEYSPACE ) );
+ getCfDefs( QueuesCF.class, STATIC_APPLICATION_KEYSPACE ) );
}
}
+
@Override
public boolean keyspacesExist() {
return true;
}
-
- static class SystemDefaults {
-
- private static final Application managementApp =
- new Application( CpNamingUtils.MANAGEMENT_APPLICATION_ID);
-
-// private static final Application defaultApp =
-// new Application( CpEntityManagerFactory.DEFAULT_APPLICATION_ID );
-
- static {
- managementApp.setName( MANAGEMENT_APPLICATION );
-// defaultApp.setName( DEFAULT_APPLICATION );
- }
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/main/java/org/apache/usergrid/corepersistence/GuiceFactory.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/GuiceFactory.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/GuiceFactory.java
index 89f89a3..edbb1c9 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/GuiceFactory.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/GuiceFactory.java
@@ -1,4 +1,159 @@
+/*
+ * 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.corepersistence;
-public class GuiceFactory {}
+import java.util.Properties;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.FactoryBean;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+
+import org.apache.commons.lang.StringUtils;
+
+import org.apache.usergrid.persistence.cassandra.CassandraService;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Singleton;
+import com.netflix.config.ConfigurationManager;
+
+import me.prettyprint.cassandra.service.CassandraHost;
+
+
+/**
+ * Factory for configuring Guice then returning it
+ */
+@Singleton
+public class GuiceFactory implements FactoryBean<Injector>, ApplicationContextAware {
+
+ private static final Logger logger = LoggerFactory.getLogger( GuiceFactory.class );
+
+
+ private final CassandraService cass;
+
+ private final Properties systemProperties;
+
+
+ private ApplicationContext applicationContext;
+
+ private Injector injector;
+
+
+
+ public GuiceFactory( final CassandraService cass, final Properties systemProperties ) {
+ this.cass = cass;
+ this.systemProperties = systemProperties;
+ }
+
+
+ @Override
+ public Injector getObject() throws Exception {
+
+ if ( this.injector != null ) {
+ return injector;
+ }
+
+
+ try {
+
+ cass.init();
+ logger.info( "Loading Core Persistence properties" );
+
+ String hostsString = "";
+ CassandraHost[] hosts = cass.getCassandraHostConfigurator().buildCassandraHosts();
+ if ( hosts.length == 0 ) {
+ throw new RuntimeException( "Fatal error: no Cassandra hosts configured" );
+ }
+ String sep = "";
+ for ( CassandraHost host : hosts ) {
+ if ( StringUtils.isEmpty( host.getHost() ) ) {
+ throw new RuntimeException( "Fatal error: Cassandra hostname cannot be empty" );
+ }
+ hostsString = hostsString + sep + host.getHost();
+ sep = ",";
+ }
+
+ logger.info( "hostsString: " + hostsString );
+
+ Properties cpProps = new Properties();
+
+ // Some Usergrid properties must be mapped to Core Persistence properties
+ cpProps.put( "cassandra.hosts", hostsString );
+ cpProps.put( "cassandra.port", hosts[0].getPort() );
+ cpProps.put( "cassandra.cluster_name", cass.getProperties().get( "cassandra.cluster" ) );
+
+ String cassRemoteString = ( String ) cass.getProperties().get( "cassandra.use_remote" );
+ if ( cassRemoteString != null && cassRemoteString.equals( "false" ) ) {
+ cpProps.put( "cassandra.embedded", "true" );
+ }
+ else {
+ cpProps.put( "cassandra.embedded", "false" );
+ }
+
+ cpProps.put( "collections.keyspace.strategy.class",
+ cass.getProperties().get( "cassandra.keyspace.strategy" ) );
+
+ cpProps.put( "collections.keyspace.strategy.options",
+ cass.getProperties().get( "cassandra.keyspace.replication" ) );
+
+
+ logger.debug( "Set Cassandra properties for Core Persistence: " + cpProps.toString() );
+
+ // Make all Usergrid properties into Core Persistence config
+ cpProps.putAll( cass.getProperties() );
+ cpProps.putAll( systemProperties );
+ //logger.debug("All properties fed to Core Persistence: " + cpProps.toString() );
+
+
+
+ ConfigurationManager.loadProperties( cpProps );
+ }
+ catch ( Exception e ) {
+ throw new RuntimeException( "Fatal error loading configuration.", e );
+ }
+
+ //this is seriously fugly, and needs removed
+ injector = Guice.createInjector( new GuiceModule( applicationContext ) );
+
+ return injector;
+ }
+
+
+ @Override
+ public Class<?> getObjectType() {
+ return Injector.class;
+ }
+
+
+ @Override
+ public boolean isSingleton() {
+ return true;
+ }
+
+
+ @Override
+ public void setApplicationContext( final ApplicationContext applicationContext ) throws BeansException {
+ this.applicationContext = applicationContext;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/main/java/org/apache/usergrid/corepersistence/GuiceModule.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/GuiceModule.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/GuiceModule.java
index bbf776f..699dfec 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/GuiceModule.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/GuiceModule.java
@@ -16,6 +16,7 @@
package org.apache.usergrid.corepersistence;
import com.google.inject.AbstractModule;
+import com.google.inject.Provider;
import com.google.inject.multibindings.Multibinder;
import org.apache.usergrid.corepersistence.migration.EntityDataMigration;
@@ -37,32 +38,35 @@ import org.apache.usergrid.persistence.map.guice.MapModule;
import org.apache.usergrid.persistence.queue.guice.QueueModule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.context.ApplicationContext;
/**
* Guice Module that encapsulates Core Persistence.
*/
public class GuiceModule extends AbstractModule {
- private static final Logger log = LoggerFactory.getLogger( GuiceModule.class );
- private static final Logger logger = LoggerFactory.getLogger(GuiceModule.class);
-
- private EntityManagerFactory emf;
+ /**
+ * TODO this is a circular dependency, and should be refactored
+ */
+ private LazyEntityManagerFactoryProvider lazyEntityManagerFactoryProvider;
public static final String EVENTS_DISABLED = "corepersistence.events.disabled";
- GuiceModule( EntityManagerFactory emf ) {
- this.emf = emf;
+
+
+ public GuiceModule( final ApplicationContext context ) {
+ this.lazyEntityManagerFactoryProvider = new LazyEntityManagerFactoryProvider( context );
}
@Override
protected void configure() {
- if ( emf != null ) {
- bind( EntityManagerFactory.class ).toInstance( emf );
- }
- install(new CommonModule());
+ //See TODO, this is fugly
+ bind(EntityManagerFactory.class).toProvider( lazyEntityManagerFactoryProvider );
+
+ install( new CommonModule());
install(new CollectionModule());
install(new GraphModule());
install(new IndexModule());
@@ -92,4 +96,25 @@ public class GuiceModule extends AbstractModule {
}
+
+ /**
+ * TODO, this is a hack workaround due to the guice/spring EMF circular dependency
+ * Once the entity managers have been refactored and moved into guice, remove this dependency.
+ *
+ */
+ public static class LazyEntityManagerFactoryProvider implements Provider<EntityManagerFactory>{
+
+ private final ApplicationContext context;
+
+
+ public LazyEntityManagerFactoryProvider( final ApplicationContext context ) {this.context = context;}
+
+
+
+ @Override
+ public EntityManagerFactory get() {
+ return this.context.getBean( EntityManagerFactory.class );
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManager.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManager.java b/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManager.java
index 6e571d1..d425b7a 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManager.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManager.java
@@ -89,7 +89,7 @@ public interface EntityManager {
*
* @throws Exception the exception
*/
- public Entity create( UUID importId, String entityType, Map<String, Object> properties )
+ public Entity create( UUID importId, String entityType, Map<String, Object> properties )
throws Exception;
public void createApplicationCollection( String entityType ) throws Exception;
@@ -103,7 +103,7 @@ public interface EntityManager {
* @param collectionName The name of the collection
* @param aliasValue The value of the alias
*/
- public EntityRef getAlias( EntityRef ownerRef, String collectionName, String aliasValue )
+ public EntityRef getAlias( EntityRef ownerRef, String collectionName, String aliasValue )
throws Exception;
public Map<String, EntityRef> getAlias( String aliasType, List<String> aliases ) throws Exception;
@@ -115,11 +115,11 @@ public interface EntityManager {
* @param collectionName The name of the collection
* @param aliases The alias property
*/
- public Map<String, EntityRef> getAlias( EntityRef ownerRef, String collectionName,
+ public Map<String, EntityRef> getAlias( EntityRef ownerRef, String collectionName,
List<String> aliases ) throws Exception;
/**
- * Validates that the entity exists in the datastore meaning that it exists and the type has
+ * Validates that the entity exists in the datastore meaning that it exists and the type has
* been loaded if not already provided.
*
* @return an validated EntityRef or null.
@@ -142,7 +142,7 @@ public interface EntityManager {
*
* @return a list of entity objects.
*/
- public Results get( Collection<UUID> entityIds, Class<? extends Entity> entityClass,
+ public Results get( Collection<UUID> entityIds, Class<? extends Entity> entityClass,
Level resultsLevel ) throws Exception;
/**
@@ -150,7 +150,7 @@ public interface EntityManager {
*
* @return a list of entity objects.
*/
- public Results get( Collection<UUID> entityIds, String entityType,
+ public Results get( Collection<UUID> entityIds, String entityType,
Class<? extends Entity> entityClass, Level resultsLevel ) throws Exception;
public Results getEntities(List<UUID> ids, String type);
@@ -222,13 +222,13 @@ public interface EntityManager {
*
* @throws Exception the exception
*/
- public void updateProperties( EntityRef entityRef, Map<String, Object> properties )
+ public void updateProperties( EntityRef entityRef, Map<String, Object> properties )
throws Exception;
public void deleteProperty( EntityRef entityRef, String propertyName ) throws Exception;
/**
- * Gets the values from an entity list property. Lists are a special type of entity property
+ * Gets the values from an entity list property. Lists are a special type of entity property
* that can contain an unordered set of non-duplicate values.
*
* @param entityRef an entity reference
@@ -238,11 +238,11 @@ public interface EntityManager {
*
* @throws Exception the exception
*/
- public Set<Object> getDictionaryAsSet( EntityRef entityRef, String dictionaryName )
+ public Set<Object> getDictionaryAsSet( EntityRef entityRef, String dictionaryName )
throws Exception;
/**
- * Adds the specified value to the named entity list property. Lists are a special type of
+ * Adds the specified value to the named entity list property. Lists are a special type of
* entity property that can contain an unordered set of non-duplicate values.
*
* @param entityRef an entity reference
@@ -251,26 +251,26 @@ public interface EntityManager {
*
* @throws Exception the exception
*/
- public void addToDictionary( EntityRef entityRef, String dictionaryName, Object elementValue )
+ public void addToDictionary( EntityRef entityRef, String dictionaryName, Object elementValue )
throws Exception;
- public void addToDictionary( EntityRef entityRef, String dictionaryName, Object elementName,
+ public void addToDictionary( EntityRef entityRef, String dictionaryName, Object elementName,
Object elementValue ) throws Exception;
- public void addSetToDictionary( EntityRef entityRef, String dictionaryName,
+ public void addSetToDictionary( EntityRef entityRef, String dictionaryName,
Set<?> elementValues ) throws Exception;
- public void addMapToDictionary( EntityRef entityRef, String dictionaryName,
+ public void addMapToDictionary( EntityRef entityRef, String dictionaryName,
Map<?, ?> elementValues ) throws Exception;
- public Map<Object, Object> getDictionaryAsMap( EntityRef entityRef, String dictionaryName )
+ public Map<Object, Object> getDictionaryAsMap( EntityRef entityRef, String dictionaryName )
throws Exception;
- public Object getDictionaryElementValue( EntityRef entityRef, String dictionaryName,
+ public Object getDictionaryElementValue( EntityRef entityRef, String dictionaryName,
String elementName ) throws Exception;
/**
- * Removes the specified value to the named entity list property. Lists are a special type of
+ * Removes the specified value to the named entity list property. Lists are a special type of
* entity property that can contain an unordered set of non-duplicate values.
*
* @param entityRef an entity reference
@@ -298,7 +298,7 @@ public interface EntityManager {
*
* @param entityRef an entity reference
*
- * @return a map of entity references to set of collection names for the entities and
+ * @return a map of entity references to set of collection names for the entities and
* collections that this entity is a member of.
*
* @throws Exception the exception
@@ -312,7 +312,7 @@ public interface EntityManager {
* @param collectionName The collection name
* @param entity The entity in the collection
*/
- public boolean isCollectionMember( EntityRef owner, String collectionName, EntityRef entity )
+ public boolean isCollectionMember( EntityRef owner, String collectionName, EntityRef entity )
throws Exception;
/**
@@ -322,12 +322,12 @@ public interface EntityManager {
* @param connectionName The collection name
* @param entity The entity in the collection
*/
- public boolean isConnectionMember( EntityRef owner, String connectionName, EntityRef entity )
+ public boolean isConnectionMember( EntityRef owner, String connectionName, EntityRef entity )
throws Exception;
/**
- * Gets the collections for the specified entity. Collection for a given type are encoded
+ * Gets the collections for the specified entity. Collection for a given type are encoded
* in the schema, this method loads the entity type and returns the collections from the schema.
*
* @param entityRef an entity reference
@@ -391,20 +391,20 @@ public interface EntityManager {
*
* @throws Exception the exception
*/
- public void removeFromCollection( EntityRef entityRef, String collectionName, EntityRef itemRef)
+ public void removeFromCollection( EntityRef entityRef, String collectionName, EntityRef itemRef)
throws Exception;
- public Results searchCollection( EntityRef entityRef, String collectionName, Query query )
+ public Results searchCollection( EntityRef entityRef, String collectionName, Query query )
throws Exception;
- public Set<String> getCollectionIndexes( EntityRef entity, String collectionName )
+ public Set<String> getCollectionIndexes( EntityRef entity, String collectionName )
throws Exception;
- public void copyRelationships( EntityRef srcEntityRef, String srcRelationName,
+ public void copyRelationships( EntityRef srcEntityRef, String srcRelationName,
EntityRef dstEntityRef, String dstRelationName ) throws Exception;
/**
- * Connect the specified entity to another entity with the specified connection type.
+ * Connect the specified entity to another entity with the specified connection type.
* Connections are directional relationships that can be traversed in either direction.
*
* @throws Exception the exception
@@ -415,24 +415,24 @@ public interface EntityManager {
EntityRef connectedEntityRef ) throws Exception;
public ConnectionRef createConnection( EntityRef connectingEntity, String pairedConnectionType,
- EntityRef pairedEntity, String connectionType,
+ EntityRef pairedEntity, String connectionType,
EntityRef connectedEntityRef ) throws Exception;
- public ConnectionRef createConnection(
+ public ConnectionRef createConnection(
EntityRef connectingEntity, ConnectedEntityRef... connections )
throws Exception;
public ConnectionRef connectionRef( EntityRef connectingEntity, String connectionType,
EntityRef connectedEntityRef ) throws Exception;
- public ConnectionRef connectionRef( EntityRef connectingEntity, String pairedConnectionType,
- EntityRef pairedEntity, String connectionType, EntityRef connectedEntityRef )
+ public ConnectionRef connectionRef( EntityRef connectingEntity, String pairedConnectionType,
+ EntityRef pairedEntity, String connectionType, EntityRef connectedEntityRef )
throws Exception;
public ConnectionRef connectionRef( EntityRef connectingEntity, ConnectedEntityRef... connections );
/**
- * Disconnects two connected entities with the specified connection type. Connections are
+ * Disconnects two connected entities with the specified connection type. Connections are
* directional relationships that can be traversed in either direction.
*
* @throws Exception the exception
@@ -444,7 +444,7 @@ public interface EntityManager {
/**
- * Gets the entities of the specified type connected to the specified entity, optionally
+ * Gets the entities of the specified type connected to the specified entity, optionally
* matching the specified connection types and/or entity types. Returns a list of entity ids.
*
* @param entityId an entity reference
@@ -455,11 +455,11 @@ public interface EntityManager {
*
* @throws Exception the exception
*/
- public Results getConnectedEntities( EntityRef entityRef, String connectionType,
+ public Results getConnectedEntities( EntityRef entityRef, String connectionType,
String connectedEntityType, Level resultsLevel ) throws Exception;
/**
- * Gets the entities connecting to this entity, optionally with the specified connection
+ * Gets the entities connecting to this entity, optionally with the specified connection
* type and/or entity type.
* <p/>
* e.g. "get users who have favorited this place"
@@ -472,7 +472,7 @@ public interface EntityManager {
*
* @throws Exception the exception
*/
- public Results getConnectingEntities( EntityRef entityRef, String connectionType,
+ public Results getConnectingEntities( EntityRef entityRef, String connectionType,
String connectedEntityType, Level resultsLevel ) throws Exception;
public Results getConnectingEntities( EntityRef entityRef, String connectionType,
@@ -551,13 +551,13 @@ public interface EntityManager {
public Results getUsersInGroupRole( UUID groupId, String roleName, Level level ) throws Exception;
- public void incrementAggregateCounters( UUID userId, UUID groupId, String category,
+ public void incrementAggregateCounters( UUID userId, UUID groupId, String category,
String counterName, long value );
- public Results getAggregateCounters( UUID userId, UUID groupId, String category,
+ public Results getAggregateCounters( UUID userId, UUID groupId, String category,
String counterName, CounterResolution resolution, long start, long finish, boolean pad );
- public Results getAggregateCounters( UUID userId, UUID groupId, UUID queueId, String category,
+ public Results getAggregateCounters( UUID userId, UUID groupId, UUID queueId, String category,
String counterName, CounterResolution resolution, long start, long finish, boolean pad );
public Results getAggregateCounters( Query query ) throws Exception;
@@ -572,10 +572,10 @@ public interface EntityManager {
public Map<String, Long> getApplicationCounters() throws Exception;
- public void incrementAggregateCounters(
+ public void incrementAggregateCounters(
UUID userId, UUID groupId, String category, Map<String, Long> counters );
- public boolean isPropertyValueUniqueForEntity(
+ public boolean isPropertyValueUniqueForEntity(
String entityType, String propertyName, Object propertyValue ) throws Exception;
@Deprecated
@@ -610,8 +610,8 @@ public interface EntityManager {
public void revokeGroupPermission( UUID groupId, String permission ) throws Exception;
- <A extends Entity> A batchCreate(Mutator<ByteBuffer> m, String entityType,
- Class<A> entityClass, Map<String, Object> properties,
+ <A extends Entity> A batchCreate(Mutator<ByteBuffer> m, String entityType,
+ Class<A> entityClass, Map<String, Object> properties,
UUID importId, UUID timestampUuid) throws Exception;
/**
* Batch dictionary property.
@@ -626,15 +626,15 @@ public interface EntityManager {
*
* @throws Exception the exception
*/
- Mutator<ByteBuffer> batchSetProperty(Mutator<ByteBuffer> batch, EntityRef entity,
+ Mutator<ByteBuffer> batchSetProperty(Mutator<ByteBuffer> batch, EntityRef entity,
String propertyName, Object propertyValue, UUID timestampUuid) throws Exception;
- Mutator<ByteBuffer> batchSetProperty(Mutator<ByteBuffer> batch, EntityRef entity,
- String propertyName, Object propertyValue, boolean force, boolean noRead,
+ Mutator<ByteBuffer> batchSetProperty(Mutator<ByteBuffer> batch, EntityRef entity,
+ String propertyName, Object propertyValue, boolean force, boolean noRead,
UUID timestampUuid) throws Exception;
- Mutator<ByteBuffer> batchUpdateDictionary(Mutator<ByteBuffer> batch, EntityRef entity,
- String dictionaryName, Object elementValue, Object elementCoValue,
+ Mutator<ByteBuffer> batchUpdateDictionary(Mutator<ByteBuffer> batch, EntityRef entity,
+ String dictionaryName, Object elementValue, Object elementCoValue,
boolean removeFromDictionary, UUID timestampUuid) throws Exception;
/**
@@ -651,8 +651,8 @@ public interface EntityManager {
*
* @throws Exception the exception
*/
- Mutator<ByteBuffer> batchUpdateDictionary(Mutator<ByteBuffer> batch, EntityRef entity,
- String dictionaryName, Object elementValue,
+ Mutator<ByteBuffer> batchUpdateDictionary(Mutator<ByteBuffer> batch, EntityRef entity,
+ String dictionaryName, Object elementValue,
boolean removeFromDictionary, UUID timestampUuid) throws Exception;
/**
@@ -667,7 +667,7 @@ public interface EntityManager {
*
* @throws Exception the exception
*/
- Mutator<ByteBuffer> batchUpdateProperties(Mutator<ByteBuffer> batch,
+ Mutator<ByteBuffer> batchUpdateProperties(Mutator<ByteBuffer> batch,
EntityRef entity, Map<String, Object> properties, UUID timestampUuid) throws Exception;
Set<String> getDictionaryNames(EntityRef entity) throws Exception;
@@ -683,7 +683,7 @@ public interface EntityManager {
/** @return the cass */
CassandraService getCass();
- /**
+ /**
* Refresh the applications index -- use sparingly.
*/
void refreshIndex();
@@ -693,6 +693,11 @@ public interface EntityManager {
*/
void createIndex();
+ /**
+ * Create the index, should ONLY ever be called the first time an application is created
+ */
+ void deleteIndex();
+
public void init( EntityManagerFactory emf, UUID applicationId);
/** For testing purposes */