You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sf...@apache.org on 2015/03/31 23:01:28 UTC
[50/50] incubator-usergrid git commit: merge from two-o-dev
merge from two-o-dev
Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/89af7118
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/89af7118
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/89af7118
Branch: refs/heads/USERGRID-473
Commit: 89af711866c02e0b294a80c584b9e082067cd892
Parents: 0aeaa88 c1643a7
Author: Shawn Feldman <sf...@apache.org>
Authored: Tue Mar 31 15:00:21 2015 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Tue Mar 31 15:00:21 2015 -0600
----------------------------------------------------------------------
.../main/dist/init_instance/init_rest_server.sh | 26 +-
.../dist/init_instance/install_elasticsearch.sh | 22 +-
.../main/groovy/configure_elasticsearch.groovy | 80 ++-
.../src/main/groovy/configure_usergrid.groovy | 12 +-
stack/awscluster/ugcluster-cf.json | 466 +++++++++----
.../main/resources/usergrid-default.properties | 2 +
stack/core/pom.xml | 64 +-
.../batch/service/JobSchedulerService.java | 33 +-
.../batch/service/SchedulerServiceImpl.java | 17 +-
.../AllApplicationsObservable.java | 35 +
.../corepersistence/ApplicationIdCache.java | 52 ++
.../corepersistence/ApplicationIdCacheImpl.java | 135 ++++
.../usergrid/corepersistence/CoreModule.java | 90 ++-
.../corepersistence/CpEntityManager.java | 228 ++++---
.../corepersistence/CpEntityManagerFactory.java | 475 +++++++------
.../corepersistence/CpManagerCache.java | 57 +-
.../corepersistence/CpRelationManager.java | 350 +++-------
.../usergrid/corepersistence/CpSetup.java | 32 +-
.../usergrid/corepersistence/CpWalker.java | 81 +--
.../usergrid/corepersistence/ManagerCache.java | 13 +-
.../corepersistence/OrgApplicationCache.java | 67 --
.../OrgApplicationCacheImpl.java | 181 -----
.../events/EntityDeletedHandler.java | 59 +-
.../events/EntityVersionCreatedHandler.java | 60 +-
.../events/EntityVersionDeletedHandler.java | 104 ++-
.../migration/AppInfoMigrationPlugin.java | 343 ++++++++++
.../migration/AppInfoVersions.java | 40 ++
.../migration/CoreDataVersions.java | 45 ++
.../migration/CoreMigration.java | 53 ++
.../migration/CoreMigrationPlugin.java | 64 ++
.../migration/EntityDataMigration.java | 147 ----
.../migration/EntityTypeMappingMigration.java | 69 +-
.../migration/GraphShardVersionMigration.java | 152 -----
.../migration/MigrationModuleVersionPlugin.java | 145 ++++
.../migration/MigrationSystemVersions.java | 43 ++
.../corepersistence/migration/Versions.java | 14 -
.../results/CollectionRefsVerifier.java | 44 ++
.../CollectionResultsLoaderFactoryImpl.java | 60 ++
.../results/ConnectionRefsVerifier.java | 61 ++
.../ConnectionResultsLoaderFactoryImpl.java | 65 ++
.../results/ElasticSearchQueryExecutor.java | 212 ++++++
.../results/FilteringLoader.java | 55 +-
.../corepersistence/results/QueryExecutor.java | 37 +
.../corepersistence/results/RefsVerifier.java | 42 --
.../results/ResultsLoaderFactory.java | 3 +-
.../results/ResultsLoaderFactoryImpl.java | 62 --
.../rx/AllEntitiesInSystemObservable.java | 101 ---
.../rx/ApplicationObservable.java | 128 ----
.../rx/EdgesFromSourceObservable.java | 63 --
.../rx/EdgesToTargetObservable.java | 63 --
.../corepersistence/rx/TargetIdObservable.java | 66 --
.../rx/impl/AbstractGraphVisitorImpl.java | 107 +++
.../rx/impl/AllApplicationsObservableImpl.java | 140 ++++
.../rx/impl/AllEntitiesInSystemImpl.java | 62 ++
.../rx/impl/AllNodesInGraphImpl.java | 55 ++
.../corepersistence/util/CpEntityMapUtils.java | 19 +-
.../corepersistence/util/CpNamingUtils.java | 36 +-
.../usergrid/exception/ConflictException.java | 36 +
.../usergrid/persistence/EntityManager.java | 28 +-
.../persistence/EntityManagerFactory.java | 51 +-
.../persistence/MultiQueryIterator.java | 6 +-
.../persistence/ObservableIterator.java | 1 +
.../apache/usergrid/persistence/Results.java | 26 +-
.../org/apache/usergrid/persistence/Schema.java | 5 +-
.../cassandra/EntityManagerFactoryImpl.java | 42 +-
.../cassandra/EntityManagerImpl.java | 50 +-
.../cassandra/QueryProcessorImpl.java | 12 +-
.../cassandra/RelationManagerImpl.java | 58 +-
.../persistence/cassandra/SetupImpl.java | 2 -
.../cassandra/index/ConnectedIndexScanner.java | 2 -
.../cassandra/index/IndexBucketScanner.java | 2 -
.../main/resources/usergrid-core-context.xml | 1 +
.../org/apache/usergrid/CoreApplication.java | 24 +-
.../java/org/apache/usergrid/CoreITSetup.java | 8 +-
.../org/apache/usergrid/CoreITSetupImpl.java | 54 +-
.../org/apache/usergrid/TestEntityIndex.java | 27 +
.../corepersistence/StaleIndexCleanupTest.java | 143 +++-
.../migration/EntityDataMigrationIT.java | 262 -------
.../migration/EntityTypeMappingMigrationIT.java | 183 ++---
.../migration/GraphShardVersionMigrationIT.java | 226 -------
.../MigrationModuleVersionPluginTest.java | 259 +++++++
.../migration/MigrationTestRule.java | 99 ---
.../migration/TestProgressObserver.java | 71 --
.../rx/AllEntitiesInSystemObservableIT.java | 71 +-
.../rx/ApplicationObservableTestIT.java | 16 +-
.../rx/EdgesFromSourceObservableIT.java | 10 +-
.../rx/EdgesToTargetObservableIT.java | 8 +-
.../rx/TargetIdObservableTestIT.java | 7 +-
.../usergrid/persistence/CollectionIT.java | 80 +--
.../apache/usergrid/persistence/CounterIT.java | 9 +-
.../usergrid/persistence/CountingMutatorIT.java | 4 +-
.../persistence/EntityConnectionsIT.java | 14 +-
.../usergrid/persistence/EntityManagerIT.java | 27 +-
.../org/apache/usergrid/persistence/GeoIT.java | 27 +-
.../persistence/GeoQueryBooleanTest.java | 4 +-
.../apache/usergrid/persistence/IndexIT.java | 14 +-
.../usergrid/persistence/LargeEntityIT.java | 3 +-
.../usergrid/persistence/PathQueryIT.java | 52 +-
.../PerformanceEntityRebuildIndexTest.java | 38 +-
.../usergrid/persistence/PermissionsIT.java | 4 +-
.../cassandra/EntityManagerFactoryImplIT.java | 86 ++-
.../persistence/query/CollectionIoHelper.java | 2 +-
.../persistence/query/ConnectionHelper.java | 2 +-
.../query/IntersectionTransitivePagingIT.java | 2 +-
.../query/IntersectionUnionPagingIT.java | 2 +-
.../persistence/query/IteratingQueryIT.java | 16 +-
stack/core/src/test/resources/log4j.properties | 2 +
.../resources/usergrid-custom-test.properties | 1 +
stack/corepersistence/collection/pom.xml | 14 +-
.../collection/EntityCollectionManager.java | 17 +-
.../EntityCollectionManagerFactory.java | 27 +-
.../collection/EntityCollectionManagerSync.java | 49 --
.../collection/EntityDeletedFactory.java | 34 -
.../collection/EntityVersionCleanupFactory.java | 35 -
.../collection/EntityVersionCreatedFactory.java | 31 -
.../persistence/collection/FieldSet.java | 48 ++
.../persistence/collection/MvccEntity.java | 5 +-
.../persistence/collection/MvccLogEntry.java | 1 +
.../cache/CachedEntityCollectionManager.java | 18 +-
.../collection/event/EntityVersionDeleted.java | 3 +-
.../collection/guice/CollectionModule.java | 65 +-
.../persistence/collection/guice/Write.java | 17 -
.../collection/guice/WriteUpdate.java | 17 -
.../EntityCollectionManagerFactoryImpl.java | 121 ++--
.../impl/EntityCollectionManagerImpl.java | 268 ++++++--
.../impl/EntityCollectionManagerSyncImpl.java | 71 --
.../collection/impl/EntityDeletedTask.java | 49 +-
.../impl/EntityVersionCleanupTask.java | 185 ++---
.../impl/EntityVersionCreatedTask.java | 26 +-
.../impl/EntityVersionTaskFactory.java | 65 ++
.../mvcc/MvccEntitySerializationStrategy.java | 102 ---
.../mvcc/stage/delete/MarkCommit.java | 2 +-
.../mvcc/stage/write/WriteCommit.java | 11 +-
.../collection/mvcc/stage/write/WriteStart.java | 6 +-
.../mvcc/stage/write/WriteUniqueVerify.java | 140 ++--
.../collection/serialization/EntityRepair.java | 38 --
.../MvccEntitySerializationStrategy.java | 119 ++++
.../serialization/OptimisticUpdate.java | 23 -
.../UniqueValueSerializationStrategy.java | 49 +-
.../serialization/UniqueValueSet.java | 4 +
.../impl/CollectionDataVersions.java | 44 ++
.../serialization/impl/EntityRepairImpl.java | 149 ----
.../impl/EntityVersionSerializer.java | 2 -
.../serialization/impl/FieldSerializer.java | 118 ----
.../serialization/impl/MutableFieldSet.java | 63 ++
.../MvccEntitySerializationStrategyImpl.java | 112 ++-
...vccEntitySerializationStrategyProxyImpl.java | 151 +++--
.../MvccEntitySerializationStrategyV1Impl.java | 9 +-
.../MvccEntitySerializationStrategyV2Impl.java | 8 +-
.../MvccEntitySerializationStrategyV3Impl.java | 587 ++++++++++++++++
.../serialization/impl/SerializationModule.java | 85 ++-
.../serialization/impl/UniqueFieldEntry.java | 61 ++
.../impl/UniqueFieldEntrySerializer.java | 141 ++++
.../impl/UniqueFieldRowKeySerializer.java | 122 ++++
.../UniqueValueSerializationStrategyImpl.java | 255 +++++--
.../impl/migration/CollectionMigration.java | 53 ++
.../migration/CollectionMigrationPlugin.java | 68 ++
.../impl/migration/EntityIdScope.java | 49 ++
.../migration/MvccEntityDataMigrationImpl.java | 260 +++++++
.../collection/util/EntityUtils.java | 49 --
.../collection/EntityCollectionManagerIT.java | 174 ++---
.../EntityCollectionManagerSyncIT.java | 193 ------
.../collection/guice/TestCollectionModule.java | 22 +-
.../impl/EntityVersionCleanupTaskTest.java | 678 ++++++++-----------
.../impl/EntityVersionCreatedTaskTest.java | 2 -
.../mvcc/stage/AbstractEntityStageTest.java | 2 +-
.../mvcc/stage/AbstractMvccEntityStageTest.java | 2 +-
.../mvcc/stage/TestEntityGenerator.java | 2 +-
.../mvcc/stage/delete/MarkCommitTest.java | 2 +-
.../mvcc/stage/write/FieldSerializerTest.java | 52 --
.../write/UniqueFieldRowKeySerializerTest.java | 52 ++
...niqueValueSerializationStrategyImplTest.java | 149 +++-
.../mvcc/stage/write/WriteCommitTest.java | 2 +-
.../mvcc/stage/write/WriteStartTest.java | 6 +-
.../mvcc/stage/write/WriteUniqueVerifyTest.java | 6 +-
.../persistence/collection/rx/ParallelTest.java | 10 +-
.../serialization/EntityRepairImplTest.java | 147 ----
.../impl/LogEntryIteratorTest.java | 3 +-
...MvccEntitySerializationStrategyImplTest.java | 121 +---
...cEntitySerializationStrategyProxyV1Test.java | 85 ---
...ntitySerializationStrategyProxyV1_3Test.java | 83 +++
...cEntitySerializationStrategyProxyV2Test.java | 83 ---
...ntitySerializationStrategyProxyV2_3Test.java | 84 +++
...ccEntitySerializationStrategyV1ImplTest.java | 80 ++-
...ccEntitySerializationStrategyV2ImplTest.java | 75 +-
.../MvccEntitySerializationStrategyV2Test.java | 7 +-
...ccEntitySerializationStrategyV3ImplTest.java | 74 ++
.../impl/SerializationComparison.java | 4 +-
.../impl/UniqueFieldEntrySerializerTest.java | 108 +++
...ctMvccEntityDataMigrationV1ToV3ImplTest.java | 215 ++++++
.../MvccEntityDataMigrationV1ToV3ImplTest.java | 105 +++
.../MvccEntityDataMigrationV2ToV3ImplTest.java | 99 +++
.../collection/util/InvalidEntityGenerator.java | 1 +
.../collection/util/LogEntryMock.java | 39 +-
.../collection/util/UniqueValueEntryMock.java | 161 +++++
.../collection/util/VersionGenerator.java | 55 ++
stack/corepersistence/common/pom.xml | 15 +-
.../usergrid/persistence/core/CPManager.java | 28 +
.../core/astyanax/CassandraConfig.java | 6 +
.../core/astyanax/CassandraConfigImpl.java | 8 +-
.../persistence/core/astyanax/CassandraFig.java | 9 +-
.../astyanax/DynamicCompositeParserImpl.java | 81 +++
.../core/astyanax/FieldBufferBuilder.java | 15 +
.../core/astyanax/FieldBufferParser.java | 13 +
.../astyanax/MultiKeyColumnNameIterator.java | 4 +-
.../core/astyanax/MultiRowColumnIterator.java | 12 +-
.../persistence/core/future/BetterFuture.java | 43 +-
.../persistence/core/guice/CommonModule.java | 17 +-
.../persistence/core/guice/CurrentImpl.java | 42 --
.../persistence/core/guice/PreviousImpl.java | 42 --
.../core/hystrix/HystrixCassandra.java | 94 ---
.../core/metrics/MetricsFactory.java | 11 +-
.../core/metrics/MetricsFactoryImpl.java | 121 ++--
.../migration/data/AbstractMigrationPlugin.java | 128 ++++
.../core/migration/data/DataMigration.java | 97 +--
.../migration/data/DataMigrationManager.java | 18 +-
.../data/DataMigrationManagerImpl.java | 237 ++++---
.../migration/data/MigrationDataProvider.java | 43 ++
.../core/migration/data/MigrationInfoCache.java | 52 ++
.../migration/data/MigrationInfoCacheImpl.java | 84 +++
.../data/MigrationInfoSerialization.java | 28 +-
.../data/MigrationInfoSerializationImpl.java | 67 +-
.../core/migration/data/MigrationPlugin.java | 56 ++
.../migration/data/MigrationRelationship.java | 100 +++
.../core/migration/data/PluginPhase.java | 42 ++
.../core/migration/data/ProgressObserver.java | 63 ++
.../core/migration/data/VersionedData.java | 38 ++
.../migration/data/VersionedMigrationSet.java | 153 +++++
.../core/scope/ApplicationScope.java | 1 +
.../persistence/core/task/TaskExecutor.java | 4 +-
.../core/astyanax/ColumnNameIteratorTest.java | 7 +-
.../MultiKeyColumnNameIteratorTest.java | 194 +++---
.../astyanax/MultiRowColumnIteratorTest.java | 57 +-
.../core/guice/DataMigrationResetRule.java | 88 +++
.../core/guice/MaxMigrationModule.java | 39 --
.../core/guice/MaxMigrationVersion.java | 40 --
.../core/guice/MigrationManagerRule.java | 7 +
.../core/guice/TestCommonModule.java | 1 +
.../persistence/core/guice/TestModule.java | 5 +-
.../data/DataMigrationManagerImplTest.java | 350 ++++++----
.../data/MigrationInfoSerializationTest.java | 32 +-
.../data/TestMigrationDataProvider.java | 61 ++
.../migration/data/TestProgressObserver.java | 89 +++
.../data/VersionedMigrationSetTest.java | 198 ++++++
.../persistence/core/util/IdGenerator.java | 51 ++
stack/corepersistence/graph/pom.xml | 28 +-
.../persistence/graph/GraphManager.java | 3 +-
.../persistence/graph/GraphManagerFactory.java | 2 +
.../persistence/graph/guice/GraphModule.java | 103 ++-
.../graph/impl/GraphManagerImpl.java | 314 ++++++++-
.../graph/impl/stage/EdgeDeleteRepairImpl.java | 9 +-
.../graph/impl/stage/EdgeMetaRepairImpl.java | 18 +-
.../impl/stage/NodeDeleteListenerImpl.java | 18 +-
.../EdgeMetadataSerialization.java | 3 +-
.../graph/serialization/EdgesObservable.java | 33 +
.../graph/serialization/TargetIdObservable.java | 38 ++
.../EdgeMetadataSerializationProxyImpl.java | 161 +++--
.../impl/EdgeMetadataSerializationV1Impl.java | 6 +
.../impl/EdgeMetadataSerializationV2Impl.java | 6 +
.../serialization/impl/EdgesObservableImpl.java | 80 +++
.../serialization/impl/GraphDataVersions.java | 43 ++
.../impl/GraphManagerFactoryImpl.java | 95 +++
.../impl/NodeSerializationImpl.java | 36 +-
.../impl/TargetIdObservableImpl.java | 72 ++
.../impl/migration/EdgeDataMigrationImpl.java | 138 ++++
.../impl/migration/GraphMigration.java | 53 ++
.../impl/migration/GraphMigrationPlugin.java | 69 ++
.../serialization/impl/migration/GraphNode.java | 39 ++
.../shard/count/NodeShardApproximationImpl.java | 4 +-
.../NodeShardCounterSerializationImpl.java | 25 +-
.../shard/impl/NodeShardAllocationImpl.java | 16 +-
.../shard/impl/ShardGroupCompactionImpl.java | 64 +-
.../persistence/graph/GraphManagerIT.java | 36 +-
.../persistence/graph/GraphManagerLoadTest.java | 13 +-
.../graph/GraphManagerShardConsistencyIT.java | 12 +-
.../graph/GraphManagerShardingIT.java | 13 +-
.../graph/GraphManagerStressTest.java | 11 +-
.../usergrid/persistence/graph/SimpleTest.java | 12 +-
.../graph/guice/TestGraphModule.java | 27 +-
.../graph/impl/EdgeDeleteListenerTest.java | 11 +-
.../graph/impl/NodeDeleteListenerTest.java | 9 +-
.../graph/impl/stage/EdgeDeleteRepairTest.java | 7 +-
.../graph/impl/stage/EdgeMetaRepairTest.java | 29 +-
.../EdgeMetaDataSerializationProxyV1Test.java | 14 +-
.../EdgeMetaDataSerializationProxyV2Test.java | 21 +-
.../EdgeMetaDataSerializationV1Test.java | 7 +-
.../EdgeMetaDataSerializationV2Test.java | 7 +-
.../EdgeMetadataSerializationTest.java | 39 +-
.../EdgeSerializationChopTest.java | 7 +-
.../serialization/EdgeSerializationTest.java | 21 +-
.../serialization/NodeSerializationTest.java | 15 +-
.../migration/EdgeDataMigrationImplTest.java | 177 +++++
.../impl/shard/EdgeShardSerializationTest.java | 7 +-
.../impl/shard/NodeShardAllocationTest.java | 27 +-
.../impl/shard/NodeShardCacheTest.java | 7 +-
.../impl/shard/ShardGroupCompactionTest.java | 7 +-
.../shard/count/NodeShardApproximationTest.java | 9 +-
.../NodeShardCounterSerializationTest.java | 6 +-
.../shard/impl/ShardEntryGroupIteratorTest.java | 15 +-
...rceDirectedEdgeDescendingComparatorTest.java | 23 +-
...getDirectedEdgeDescendingComparatorTest.java | 23 +-
.../graph/test/util/EdgeTestUtils.java | 29 +-
.../usergrid/persistence/map/MapManager.java | 10 +
.../persistence/map/guice/MapModule.java | 8 +-
.../persistence/map/impl/MapManagerImpl.java | 8 +
.../persistence/map/impl/MapSerialization.java | 9 +
.../map/impl/MapSerializationImpl.java | 93 +++
.../persistence/map/MapManagerTest.java | 49 +-
.../persistence/map/guice/TestMapModule.java | 3 +-
stack/corepersistence/model/pom.xml | 1 -
.../persistence/model/entity/Entity.java | 23 +-
.../persistence/model/entity/EntityMap.java | 66 ++
.../model/entity/EntityToMapConverter.java | 133 ++++
.../model/entity/MapToEntityConverter.java | 203 ++++++
.../persistence/model/entity/SimpleId.java | 1 -
.../persistence/model/field/AbstractField.java | 8 +
.../persistence/model/field/ListField.java | 2 +-
.../persistence/model/field/StringField.java | 20 +
.../persistence/model/util/EntityUtils.java | 72 ++
stack/corepersistence/pom.xml | 8 +-
stack/corepersistence/queryindex/pom.xml | 80 +--
.../persistence/index/AliasedEntityIndex.java | 7 +-
.../index/ApplicationEntityIndex.java | 57 ++
.../usergrid/persistence/index/EntityIndex.java | 64 +-
.../persistence/index/EntityIndexBatch.java | 5 +
.../persistence/index/EntityIndexFactory.java | 2 +-
.../usergrid/persistence/index/IndexAlias.java | 38 ++
.../persistence/index/IndexBufferConsumer.java | 13 +-
.../persistence/index/IndexBufferProducer.java | 3 +-
.../usergrid/persistence/index/IndexCache.java | 39 ++
.../usergrid/persistence/index/IndexFig.java | 83 ++-
.../persistence/index/IndexIdentifier.java | 63 +-
.../index/IndexOperationMessage.java | 115 +++-
.../usergrid/persistence/index/SearchType.java | 51 ++
.../usergrid/persistence/index/SearchTypes.java | 15 +-
.../persistence/index/guice/IndexModule.java | 49 +-
.../persistence/index/guice/QueueProvider.java | 116 ++++
.../persistence/index/impl/BatchRequest.java | 41 ++
.../persistence/index/impl/BufferQueue.java | 68 ++
.../index/impl/BufferQueueInMemoryImpl.java | 116 ++++
.../index/impl/BufferQueueSQSImpl.java | 307 +++++++++
.../persistence/index/impl/DeIndexRequest.java | 127 ++++
.../index/impl/EntityToMapConverter.java | 173 +++++
.../impl/EsApplicationEntityIndexImpl.java | 307 +++++++++
.../index/impl/EsEntityIndexBatchImpl.java | 270 +-------
.../index/impl/EsEntityIndexFactoryImpl.java | 31 +-
.../index/impl/EsEntityIndexImpl.java | 648 ++++--------------
.../index/impl/EsIndexBufferConsumerImpl.java | 316 ++++++---
.../index/impl/EsIndexBufferProducerImpl.java | 16 +-
.../persistence/index/impl/EsIndexCache.java | 116 ----
.../index/impl/EsIndexCacheImpl.java | 141 ++++
.../persistence/index/impl/EsQueryVistor.java | 88 +--
.../index/impl/IndexIdentifierImpl.java | 68 ++
.../persistence/index/impl/IndexRequest.java | 139 ++++
.../persistence/index/impl/IndexingUtils.java | 150 ++--
.../impl/SearchRequestBuilderStrategy.java | 195 ++++++
.../migration/EsIndexDataMigrationImpl.java | 105 +++
.../index/migration/EsIndexMigrationPlugin.java | 46 ++
.../index/migration/IndexDataVersions.java | 39 ++
.../index/migration/IndexMigration.java | 35 +
.../index/migration/LegacyIndexIdentifier.java | 78 +++
.../index/query/CandidateResults.java | 24 +-
.../persistence/index/query/EntityResults.java | 108 ---
.../usergrid/persistence/index/query/Query.java | 92 +--
.../persistence/index/query/Results.java | 148 ----
.../persistence/index/utils/ListUtils.java | 3 +-
.../persistence/index/guice/IndexTestFig.java | 62 ++
.../index/guice/TestIndexModule.java | 59 +-
.../index/impl/BufferQueueSQSImplTest.java | 173 +++++
.../index/impl/CorePerformanceIT.java | 339 ----------
.../impl/EntityConnectionIndexImplTest.java | 309 ---------
.../index/impl/EntityIndexMapUtils.java | 52 +-
.../persistence/index/impl/EntityIndexTest.java | 251 +++----
.../persistence/index/impl/EsTestUtils.java | 48 --
.../index/impl/IndexLoadTestsIT.java | 390 +++++++++++
.../index/impl/IndexMigrationTest.java | 106 +++
.../persistence/query/tree/GrammarTreeTest.java | 10 +-
.../persistence/queue/QueueManager.java | 4 +-
.../usergrid/persistence/queue/QueueScope.java | 2 +-
.../persistence/queue/QueueScopeFactory.java | 34 -
.../persistence/queue/guice/QueueModule.java | 17 +-
.../queue/impl/QueueScopeFactoryImpl.java | 48 --
.../persistence/queue/impl/QueueScopeImpl.java | 27 +-
.../queue/impl/SQSQueueManagerImpl.java | 286 ++++----
.../persistence/queue/NoAWSCredsRule.java | 98 +++
.../persistence/queue/QueueManagerTest.java | 27 +-
.../queue/guice/TestQueueModule.java | 3 +-
.../usergrid/mongo/protocol/OpDelete.java | 4 +-
.../apache/usergrid/mongo/protocol/OpQuery.java | 6 +-
.../usergrid/mongo/protocol/OpUpdate.java | 4 +-
stack/pom.xml | 60 +-
stack/rest/pom.xml | 5 +-
.../usergrid/rest/AbstractContextResource.java | 102 +--
.../org/apache/usergrid/rest/IndexResource.java | 5 +-
.../apache/usergrid/rest/MigrateResource.java | 120 +++-
.../org/apache/usergrid/rest/RootResource.java | 8 +-
.../rest/applications/ApplicationResource.java | 38 +-
.../rest/applications/ServiceResource.java | 8 +-
.../exceptions/ConflictExceptionMapper.java | 35 +
.../exceptions/NotFoundExceptionMapper.java | 35 +
.../organizations/OrganizationResource.java | 26 +-
.../applications/ApplicationResource.java | 59 +-
.../applications/ApplicationsResource.java | 40 +-
.../imports/FileIncludesResource.java | 9 -
.../applications/imports/ImportsResource.java | 83 +--
.../organizations/OrganizationResource.java | 23 +-
.../OAuth2AccessTokenSecurityFilter.java | 2 +-
.../rest/test/RefreshIndexResource.java | 17 +-
.../java/org/apache/usergrid/rest/BasicIT.java | 302 +--------
.../apache/usergrid/rest/IndexResourceIT.java | 1 +
.../apache/usergrid/rest/SystemResourceIT.java | 10 +-
.../applications/ApplicationDeleteTest.java | 373 +++++++++-
.../applications/ApplicationResourceIT.java | 63 +-
.../collection/CollectionsResourceIT.java | 19 +-
.../collection/users/OwnershipResourceIT.java | 4 +-
.../collection/users/PermissionsResourceIT.java | 15 -
.../collection/users/RetrieveUsersTest.java | 4 +-
.../collection/users/UserResourceIT.java | 16 +-
.../rest/applications/queries/OrderByTest.java | 2 +-
.../usergrid/rest/management/AccessTokenIT.java | 418 +++++-------
.../usergrid/rest/management/AdminUsersIT.java | 60 +-
.../rest/management/ExportResourceIT.java | 652 ++++++------------
.../rest/management/ImportResourceIT.java | 169 +++--
.../rest/management/OrganizationsIT.java | 16 +-
.../organizations/AdminEmailEncodingIT.java | 3 +-
.../test/resource2point0/AbstractRestIT.java | 4 +-
.../rest/test/resource2point0/ClientSetup.java | 30 +-
.../rest/test/resource2point0/RestClient.java | 1 +
.../endpoints/ApplicationsResource.java | 34 +-
.../endpoints/NamedResource.java | 112 ++-
.../endpoints/OrganizationResource.java | 6 +-
.../endpoints/SetupResource.java | 6 +
.../endpoints/mgmt/ApplicationResource.java | 54 +-
.../endpoints/mgmt/ApplicationsResource.java | 58 ++
.../endpoints/mgmt/ManagementResource.java | 4 +
.../endpoints/mgmt/ManagementResponse.java | 72 ++
.../endpoints/mgmt/MeResource.java | 32 +
.../mgmt/OrganizationApplicationResponse.java | 60 ++
.../endpoints/mgmt/OrganizationResource.java | 5 +-
.../endpoints/mgmt/PasswordResource.java | 16 -
.../endpoints/mgmt/RevokeTokenResource.java | 32 +
.../endpoints/mgmt/RevokeTokensResource.java | 33 +
.../endpoints/mgmt/TokenResource.java | 25 +-
.../endpoints/mgmt/UserResource.java | 8 +
.../endpoints/mgmt/UsersResource.java | 15 -
stack/rest/src/test/resources/log4j.properties | 10 +-
.../resources/testImportCorrect.testCol.1.json | 18 -
...testImportInvalidJson.testApplication.3.json | 153 -----
.../testimport-bad-json-testapp.3.json | 153 +++++
.../src/test/resources/testimport-bad-json.json | 67 ++
.../resources/testimport-correct-testcol.1.json | 18 +
.../test/resources/testimport-test-app.2.json | 56 ++
.../resources/usergrid-custom-test.properties | 2 +
stack/services/pom.xml | 14 +-
.../usergrid/management/ApplicationInfo.java | 4 +
.../usergrid/management/ManagementService.java | 10 +-
.../cassandra/ManagementServiceImpl.java | 253 ++++---
.../management/importer/FileImportJob.java | 6 +-
.../management/importer/FileImportTracker.java | 6 +-
.../usergrid/management/importer/ImportJob.java | 4 +-
.../management/importer/ImportServiceImpl.java | 78 +--
.../usergrid/security/AuthPrincipalType.java | 3 +-
.../providers/PingIdentityProvider.java | 5 +-
.../shiro/PrincipalCredentialsToken.java | 20 +-
.../services/AbstractCollectionService.java | 40 +-
.../services/AbstractConnectionsService.java | 39 +-
.../services/ServiceManagerFactory.java | 4 -
.../notifications/NotificationsService.java | 50 +-
.../services/notifications/QueueListener.java | 5 +-
.../impl/ApplicationQueueManagerImpl.java | 195 +++---
.../usergrid/services/queues/QueueListener.java | 5 +-
.../org/apache/usergrid/ServiceApplication.java | 18 +-
.../org/apache/usergrid/ServiceITSetup.java | 3 +
.../org/apache/usergrid/ServiceITSetupImpl.java | 34 +-
.../migration/AppInfoMigrationPluginTest.java | 218 ++++++
.../apache/usergrid/management/EmailFlowIT.java | 8 +-
.../usergrid/management/OrganizationIT.java | 10 +-
.../org/apache/usergrid/management/RoleIT.java | 4 +-
.../cassandra/ApplicationCreatorIT.java | 4 +-
.../cassandra/ManagementServiceIT.java | 35 +-
.../management/export/ExportServiceIT.java | 20 +-
.../importer/FileImportTrackerTest.java | 12 +-
.../management/importer/ImportCollectionIT.java | 16 +-
.../importer/ImportConnectionsTest.java | 7 +-
.../security/tokens/TokenServiceIT.java | 2 -
.../usergrid/services/ConnectionsServiceIT.java | 10 +-
.../usergrid/services/GroupServiceIT.java | 6 +-
.../usergrid/services/RolesServiceIT.java | 2 +-
.../usergrid/services/ServiceFactoryIT.java | 8 +-
.../usergrid/services/ServiceRequestIT.java | 9 +-
.../usergrid/services/UsersServiceIT.java | 2 +-
.../AbstractServiceNotificationIT.java | 2 +-
.../notifications/NotifiersServiceIT.java | 6 +
.../apns/NotificationsServiceIT.java | 40 +-
.../gcm/NotificationsServiceIT.java | 4 +-
.../src/test/resources/log4j.properties | 6 +-
.../resources/usergrid-custom-test.properties | 2 +
stack/test-utils/pom.xml | 5 -
.../setup/ConcurrentProcessSingleton.java | 49 +-
.../org/apache/usergrid/tools/AppAudit.java | 3 +-
.../org/apache/usergrid/tools/CredExport.java | 2 +-
.../org/apache/usergrid/tools/DupOrgRepair.java | 1 -
.../java/org/apache/usergrid/tools/Import.java | 14 +-
.../usergrid/tools/UniqueIndexCleanup.java | 6 +-
504 files changed, 20395 insertions(+), 12324 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/89af7118/stack/corepersistence/queue/src/main/java/org/apache/usergrid/persistence/queue/impl/SQSQueueManagerImpl.java
----------------------------------------------------------------------
diff --cc stack/corepersistence/queue/src/main/java/org/apache/usergrid/persistence/queue/impl/SQSQueueManagerImpl.java
index cfaf0b1,088359a..d368a7f
--- a/stack/corepersistence/queue/src/main/java/org/apache/usergrid/persistence/queue/impl/SQSQueueManagerImpl.java
+++ b/stack/corepersistence/queue/src/main/java/org/apache/usergrid/persistence/queue/impl/SQSQueueManagerImpl.java
@@@ -17,16 -17,44 +17,27 @@@
*/
package org.apache.usergrid.persistence.queue.impl;
- import com.amazonaws.AmazonClientException;
- import com.amazonaws.SDKGlobalConfiguration;
- import com.amazonaws.auth.AWSCredentials;
- import com.amazonaws.auth.AWSCredentialsProvider;
+
+ import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
++import java.util.*;
+ import java.util.concurrent.ExecutionException;
+
++import com.amazonaws.services.sqs.model.*;
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
+
+ import org.apache.usergrid.persistence.queue.Queue;
+ import org.apache.usergrid.persistence.queue.QueueFig;
+ import org.apache.usergrid.persistence.queue.QueueManager;
+ import org.apache.usergrid.persistence.queue.QueueMessage;
+ import org.apache.usergrid.persistence.queue.QueueScope;
+
import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.sqs.AmazonSQSClient;
- import com.amazonaws.services.sqs.model.*;
-import com.amazonaws.services.sqs.model.BatchResultErrorEntry;
-import com.amazonaws.services.sqs.model.CreateQueueRequest;
-import com.amazonaws.services.sqs.model.CreateQueueResult;
-import com.amazonaws.services.sqs.model.DeleteMessageBatchRequest;
-import com.amazonaws.services.sqs.model.DeleteMessageBatchRequestEntry;
-import com.amazonaws.services.sqs.model.DeleteMessageBatchResult;
-import com.amazonaws.services.sqs.model.DeleteMessageRequest;
-import com.amazonaws.services.sqs.model.GetQueueUrlResult;
-import com.amazonaws.services.sqs.model.Message;
-import com.amazonaws.services.sqs.model.MessageAttributeValue;
-import com.amazonaws.services.sqs.model.QueueDoesNotExistException;
-import com.amazonaws.services.sqs.model.ReceiveMessageRequest;
-import com.amazonaws.services.sqs.model.ReceiveMessageResult;
-import com.amazonaws.services.sqs.model.SendMessageBatchRequest;
-import com.amazonaws.services.sqs.model.SendMessageBatchRequestEntry;
-import com.amazonaws.services.sqs.model.SendMessageRequest;
import com.fasterxml.jackson.databind.ObjectMapper;
- import com.fasterxml.jackson.databind.SerializationFeature;
+ import com.fasterxml.jackson.dataformat.smile.SmileFactory;
+ import com.google.common.base.Preconditions;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
@@@ -47,74 -64,62 +47,63 @@@ import com.google.inject.assistedinject
public class SQSQueueManagerImpl implements QueueManager {
private static final Logger LOG = LoggerFactory.getLogger(SQSQueueManagerImpl.class);
- private AmazonSQSClient sqs;
- private QueueScope scope;
- private QueueFig fig;
- private ObjectMapper mapper;
+
- private final QueueScope scope;
- private ObjectMapper mapper;
++ private final QueueScope scope;
++ private ObjectMapper mapper;
+ private final QueueFig fig;
+ private final AmazonSQSClient sqs;
+
private static SmileFactory smileFactory = new SmileFactory();
- private static LoadingCache<SqsLoader, Queue> urlMap = CacheBuilder.newBuilder()
+ private LoadingCache<String, Queue> urlMap = CacheBuilder.newBuilder()
- .maximumSize( 1000 )
- .build( new CacheLoader<String, Queue>() {
- @Override
- public Queue load( String queueName ) throws Exception {
-
- //the amazon client is not thread safe, we need to create one per queue
- Queue queue = null;
- try {
- GetQueueUrlResult result = sqs.getQueueUrl( queueName );
- queue = new Queue( result.getQueueUrl() );
- }catch ( QueueDoesNotExistException queueDoesNotExistException ) {
- //no op, swallow
- LOG.error( "Queue {} does not exist, creating", queueName );
-
- }
- catch ( Exception e ) {
- LOG.error( "failed to get queue from service", e );
- throw e;
- }
- if ( queue == null ) {
- CreateQueueRequest createQueueRequest = new CreateQueueRequest().withQueueName( queueName );
- CreateQueueResult result = sqs.createQueue( createQueueRequest );
- String url = result.getQueueUrl();
- queue = new Queue( url );
- LOG.info( "Created queue with url {}", url );
- }
- return queue;
+ .maximumSize(1000)
- .build(new CacheLoader<SqsLoader, Queue>() {
- @Override
- public Queue load(SqsLoader queueLoader) throws Exception {
- Queue queue = null;
- try {
- GetQueueUrlResult result = queueLoader.getClient().getQueueUrl(queueLoader.getKey());
- queue = new Queue(result.getQueueUrl());
- } catch (QueueDoesNotExistException queueDoesNotExistException) {
- queue = null;
- } catch (Exception e) {
- LOG.error("failed to get queue from service", e);
- throw e;
- }
- if (queue == null) {
- String name = queueLoader.getKey();
- CreateQueueRequest createQueueRequest = new CreateQueueRequest()
- .withQueueName(name);
- CreateQueueResult result = queueLoader.getClient().createQueue(createQueueRequest);
- String queueUrl = result.getQueueUrl();
-
- setDeadLetterQueue(queueLoader.client,queueLoader.config(), queueUrl, name+"_dead");
- queue = new Queue(queueUrl);
- LOG.info("Created queue with url {}", queueUrl);
- }
- return queue;
- }
- }
- );
++ .build(new CacheLoader<String, Queue>() {
++ @Override
++ public Queue load(String queueName) throws Exception {
++
++ //the amazon client is not thread safe, we need to create one per queue
++ Queue queue = null;
++ try {
++ GetQueueUrlResult result = sqs.getQueueUrl(queueName);
++ queue = new Queue(result.getQueueUrl());
++ } catch (QueueDoesNotExistException queueDoesNotExistException) {
++ //no op, swallow
++ LOG.error("Queue {} does not exist, creating", queueName);
++
++ } catch (Exception e) {
++ LOG.error("failed to get queue from service", e);
++ throw e;
+ }
- } );
++ if (queue == null) {
++ CreateQueueRequest createQueueRequest = new CreateQueueRequest().withQueueName(queueName);
++ CreateQueueResult result = sqs.createQueue(createQueueRequest);
++ String url = result.getQueueUrl();
++ queue = new Queue(url);
++ LOG.info("Created queue with url {}", url);
++ setDeadLetterQueue(sqs,fig,url,"dead_letter");
++
++ }
++ return queue;
++ }
++ });
- private static void setDeadLetterQueue(AmazonSQSClient client, QueueFig fig, String queueUrl, String deadLetterName) {
- CreateQueueRequest deadLetterQueueRequest = new CreateQueueRequest()
- .withQueueName(deadLetterName);
- CreateQueueResult deadLetterResult = client.createQueue(deadLetterQueueRequest);
- String deadLetterUrl = deadLetterResult.getQueueUrl();
- String redrivePolicy = String.format("{\"maxReceiveCount\":\"%s\", \"deadLetterTargetArn\":\"%s\"}", fig.getMaxReceiveCount(), deadLetterUrl);
- SetQueueAttributesRequest queueAttributes = new SetQueueAttributesRequest();
- Map<String, String> attributes = new HashMap<>();
- attributes.put("RedrivePolicy", redrivePolicy);
- queueAttributes.setAttributes(attributes);
- queueAttributes.setQueueUrl(queueUrl);
- client.setQueueAttributes(queueAttributes);
- }
@Inject
- public SQSQueueManagerImpl(@Assisted QueueScope scope, QueueFig fig){
- this.fig = fig;
- public SQSQueueManagerImpl( @Assisted QueueScope scope, QueueFig fig ){
++ public SQSQueueManagerImpl(@Assisted QueueScope scope, QueueFig fig) {
this.scope = scope;
+ this.fig = fig;
try {
- UsergridAwsCredentialsProvider ugProvider = new UsergridAwsCredentialsProvider();
- this.sqs = new AmazonSQSClient(ugProvider.getCredentials());
- Regions regions = Regions.fromName(fig.getRegion());
- Region region = Region.getRegion(regions);
- sqs.setRegion(region);
+
smileFactory.delegateToTextual(true);
-- mapper = new ObjectMapper( smileFactory );
- mapper.enable(SerializationFeature.INDENT_OUTPUT);
++ mapper = new ObjectMapper(smileFactory);
+ //pretty print, disabling for speed
+ // mapper.enable(SerializationFeature.INDENT_OUTPUT);
mapper.enableDefaultTypingAsProperty(ObjectMapper.DefaultTyping.JAVA_LANG_OBJECT, "@class");
- } catch ( Exception e ) {
- LOG.warn("failed to setup SQS",e);
- // throw new RuntimeException("Error setting up mapper", e);
+
+ sqs = createClient();
+
- } catch ( Exception e ) {
++ } catch (Exception e) {
+ throw new RuntimeException("Error setting up mapper", e);
}
}
@@@ -126,7 -134,7 +118,7 @@@
public Queue getQueue() {
try {
- Queue queue = urlMap.get(new SqsLoader(getName(),sqs,fig));
- Queue queue = urlMap.get(getName());
++ Queue queue = urlMap.get(new SqsLoader(getName(), sqs));
return queue;
} catch (ExecutionException ee) {
throw new RuntimeException(ee);
@@@ -135,31 -143,30 +127,30 @@@
@Override
public List<QueueMessage> getMessages(int limit, int transactionTimeout, int waitTime, Class klass) {
-- if(sqs == null){
++ if (sqs == null) {
LOG.error("Sqs is null");
return new ArrayList<>();
}
-- waitTime = waitTime/1000;
++ waitTime = waitTime / 1000;
String url = getQueue().getUrl();
- LOG.info("Getting {} messages from {}", limit, url);
-
- LOG.debug( "Getting {} messages from {}", limit, url);
++ LOG.debug("Getting {} messages from {}", limit, url);
ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(url);
receiveMessageRequest.setMaxNumberOfMessages(limit);
receiveMessageRequest.setVisibilityTimeout(transactionTimeout);
receiveMessageRequest.setWaitTimeSeconds(waitTime);
ReceiveMessageResult result = sqs.receiveMessage(receiveMessageRequest);
List<Message> messages = result.getMessages();
- LOG.info("Received {} messages from {}",messages.size(),url);
- LOG.debug( "Received {} messages from {}", messages.size(), url);
++ LOG.debug("Received {} messages from {}", messages.size(), url);
List<QueueMessage> queueMessages = new ArrayList<>(messages.size());
for (Message message : messages) {
-- Object body ;
-- try{
-- body = fromString(message.getBody(),klass);
-- }catch (Exception e){
++ Object body;
++ try {
++ body = fromString(message.getBody(), klass);
++ } catch (Exception e) {
LOG.error("failed to deserialize message", e);
throw new RuntimeException(e);
}
-- QueueMessage queueMessage = new QueueMessage(message.getMessageId(),message.getReceiptHandle(),body,message.getAttributes().get( "type" ));
++ QueueMessage queueMessage = new QueueMessage(message.getMessageId(), message.getReceiptHandle(), body, message.getAttributes().get("type"));
queueMessages.add(queueMessage);
}
return queueMessages;
@@@ -167,20 -174,20 +158,20 @@@
@Override
public void sendMessages(List bodies) throws IOException {
-- if(sqs == null){
++ if (sqs == null) {
LOG.error("Sqs is null");
return;
}
String url = getQueue().getUrl();
- LOG.info("Sending Messages...{} to {}", bodies.size(), url);
- LOG.debug( "Sending Messages...{} to {}", bodies.size(), url);
++ LOG.debug("Sending Messages...{} to {}", bodies.size(), url);
SendMessageBatchRequest request = new SendMessageBatchRequest(url);
List<SendMessageBatchRequestEntry> entries = new ArrayList<>(bodies.size());
-- for(Object body : bodies){
++ for (Object body : bodies) {
SendMessageBatchRequestEntry entry = new SendMessageBatchRequestEntry();
entry.setId(UUID.randomUUID().toString());
-- entry.setMessageBody( toString( body ) );
-- entry.addMessageAttributesEntry( "type",new MessageAttributeValue().withStringValue( "mytype" ) );
++ entry.setMessageBody(toString(body));
++ entry.addMessageAttributesEntry("type", new MessageAttributeValue().withStringValue("mytype"));
entries.add(entry);
}
request.setEntries(entries);
@@@ -190,13 -197,16 +181,16 @@@
@Override
public void sendMessage(Object body) throws IOException {
-- if(sqs == null){
++ if (sqs == null) {
LOG.error("Sqs is null");
return;
}
String url = getQueue().getUrl();
- LOG.info("Sending Message...{} to {}",body.toString(),url);
- SendMessageRequest request = new SendMessageRequest(url,toString((Serializable)body));
- LOG.debug( "Sending Message...{} to {}", body.toString(), url);
++ LOG.debug("Sending Message...{} to {}", body.toString(), url);
+
+ final String stringBody = toString(body);
+
+ SendMessageRequest request = new SendMessageRequest(url, stringBody);
sqs.sendMessage(request);
}
@@@ -204,86 -214,68 +198,92 @@@
@Override
public void commitMessage(QueueMessage queueMessage) {
String url = getQueue().getUrl();
- LOG.info("Commit message {} to queue {}",queueMessage.getMessageId(),url);
- LOG.debug( "Commit message {} to queue {}", queueMessage.getMessageId(), url);
++ LOG.debug("Commit message {} to queue {}", queueMessage.getMessageId(), url);
sqs.deleteMessage(new DeleteMessageRequest()
- .withQueueUrl(url)
- .withReceiptHandle(queueMessage.getHandle()));
+ .withQueueUrl(url)
+ .withReceiptHandle(queueMessage.getHandle()));
}
@Override
public void commitMessages(List<QueueMessage> queueMessages) {
String url = getQueue().getUrl();
- LOG.info("Commit messages {} to queue {}",queueMessages.size(),url);
- LOG.debug( "Commit messages {} to queue {}", queueMessages.size(), url);
++ LOG.debug("Commit messages {} to queue {}", queueMessages.size(), url);
List<DeleteMessageBatchRequestEntry> entries = new ArrayList<>();
-- for(QueueMessage message : queueMessages){
-- entries.add(new DeleteMessageBatchRequestEntry(message.getMessageId(),message.getHandle()));
++ for (QueueMessage message : queueMessages) {
++ entries.add(new DeleteMessageBatchRequestEntry(message.getMessageId(), message.getHandle()));
}
-- DeleteMessageBatchRequest request = new DeleteMessageBatchRequest(url,entries);
++ DeleteMessageBatchRequest request = new DeleteMessageBatchRequest(url, entries);
DeleteMessageBatchResult result = sqs.deleteMessageBatch(request);
boolean successful = result.getFailed().size() <= 0;
-- if(!successful){
-- for( BatchResultErrorEntry failed : result.getFailed()) {
-- LOG.error("Commit failed reason: {} messages id: {}", failed.getMessage(),failed.getId());
++ if (!successful) {
++ for (BatchResultErrorEntry failed : result.getFailed()) {
++ LOG.error("Commit failed reason: {} messages id: {}", failed.getMessage(), failed.getId());
}
}
}
++ private static void setDeadLetterQueue(AmazonSQSClient client, QueueFig fig, String queueUrl, String deadLetterName) {
++ CreateQueueRequest deadLetterQueueRequest = new CreateQueueRequest()
++ .withQueueName(deadLetterName);
++ CreateQueueResult deadLetterResult = client.createQueue(deadLetterQueueRequest);
++ String deadLetterUrl = deadLetterResult.getQueueUrl();
++ String redrivePolicy = String.format("{\"maxReceiveCount\":\"%s\", \"deadLetterTargetArn\":\"%s\"}", fig.getMaxReceiveCount(), deadLetterUrl);
++ SetQueueAttributesRequest queueAttributes = new SetQueueAttributesRequest();
++ Map<String, String> attributes = new HashMap<>();
++ attributes.put("RedrivePolicy", redrivePolicy);
++ queueAttributes.setAttributes(attributes);
++ queueAttributes.setQueueUrl(queueUrl);
++ client.setQueueAttributes(queueAttributes);
++ }
++
-- /** Read the object from Base64 string. */
-- private Object fromString( String s, Class klass ) throws IOException, ClassNotFoundException {
-- Object o = mapper.readValue(s,klass);
++ /**
++ * Read the object from Base64 string.
++ */
++ private Object fromString(String s, Class klass) throws IOException, ClassNotFoundException {
++ Object o = mapper.readValue(s, klass);
return o;
}
-- /** Write the object to a Base64 string. */
-- private String toString( Object o ) throws IOException {
++ /**
++ * Write the object to a Base64 string.
++ */
++ private String toString(Object o) throws IOException {
return mapper.writeValueAsString(o);
}
- public class SqsLoader {
- private final String key;
- private final AmazonSQSClient client;
- private final QueueFig fig;
- public SqsLoader(String key, AmazonSQSClient client,QueueFig fig) {
- this.key = key;
- this.client = client;
- this.fig = fig;
- }
+ /**
+ * Get the region
++ *
+ * @return
+ */
+ private Region getRegion() {
- Regions regions = Regions.fromName( fig.getRegion() );
- Region region = Region.getRegion( regions );
++ Regions regions = Regions.fromName(fig.getRegion());
++ Region region = Region.getRegion(regions);
+ return region;
+ }
- public AmazonSQSClient getClient() {
- return client;
- }
- public String getKey() {
- return key;
- }
+ /**
+ * Create the SQS client for the specified settings
+ */
+ private AmazonSQSClient createClient() {
+ final UsergridAwsCredentialsProvider ugProvider = new UsergridAwsCredentialsProvider();
- final AmazonSQSClient sqs = new AmazonSQSClient( ugProvider.getCredentials() );
++ final AmazonSQSClient sqs = new AmazonSQSClient(ugProvider.getCredentials());
+ final Region region = getRegion();
- sqs.setRegion( region );
++ sqs.setRegion(region);
- @Override
- public boolean equals(Object o){
- if(o instanceof SqsLoader){
- SqsLoader loader = (SqsLoader)o;
- return loader.getKey().equals(this.getKey());
- }
- return false;
- }
-
- @Override
- public int hashCode() {
- int result = getKey().hashCode();
- return result;
- }
+ return sqs;
+ }
- @Override
- public String toString() {
- return getKey();
- }
++ public QueueFig config() {
++ return fig;
++ }
+
- public QueueFig config(){return fig;}
+
- }
}