Merge remote-tracking branch 'upstream/master' into fix/redis-cluster-stop Fixing conflicts from package renames
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/dd4087ab Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/dd4087ab Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/dd4087ab Branch: refs/heads/master Commit: dd4087abd53225f39dfb27db7c9d094ae3146fd4 Parents: 891c818 0efc1e3 Author: Mike Zaccardo <[email protected]> Authored: Thu Aug 6 13:57:19 2015 -0400 Committer: Mike Zaccardo <[email protected]> Committed: Thu Aug 6 13:57:19 2015 -0400 ---------------------------------------------------------------------- .../entity/basic/BasicStartableImpl.java | 58 +- .../entity/basic/ServiceStateLogic.java | 7 +- .../java/brooklyn/enricher/EnrichersTest.java | 30 +- .../brooklyn/entity/basic/AttributeMapTest.java | 19 +- .../entity/basic/BasicStartableTest.java | 33 +- .../entity/basic/EntityLocationsTest.java | 25 +- .../entity/basic/EntitySubscriptionTest.java | 40 +- .../brooklyn/entity/basic/EntityTypeTest.java | 35 +- .../entity/group/DynamicClusterTest.java | 8 +- .../policy/basic/PolicySubscriptionTest.java | 23 +- .../basic/RecordingSensorEventListener.java | 115 +++ .../nosql-cassandra/cassandra.include.md | 4 +- docs/guide/ops/catalog/index.md | 4 +- .../src/main/assembly/scripts/start.sh | 2 +- .../brooklyn/demo/CumulusRDFApplication.java | 11 +- .../demo/HighAvailabilityCassandraCluster.java | 5 +- .../brooklyn/demo/ResilientMongoDbApp.java | 5 +- .../brooklyn/demo/RiakClusterExample.java | 5 +- .../brooklyn/demo/SimpleCassandraCluster.java | 3 +- .../brooklyn/demo/SimpleCouchDBCluster.java | 3 +- .../brooklyn/demo/SimpleMongoDBReplicaSet.java | 5 +- .../brooklyn/demo/SimpleRedisCluster.java | 3 +- .../brooklyn/demo/WideAreaCassandraCluster.java | 11 +- .../brooklyn/demo/ha-cassandra-cluster.yaml | 4 +- .../brooklyn/demo/simple-cassandra-cluster.yaml | 2 +- .../demo/wide-area-cassandra-cluster.yaml | 8 +- .../brooklyn/demo/NodeJsTodoApplication.java | 3 +- .../apache/brooklyn/demo/nodejs-riak-todo.yaml | 2 +- .../org/apache/brooklyn/demo/nodejs-todo.yaml | 2 +- .../brooklyn/entity/salt/SaltStackMaster.java | 2 +- .../nosql/hazelcast/HazelcastCluster.java | 2 +- .../entity/nosql/hazelcast/HazelcastNode.java | 2 +- software/nosql/pom.xml | 28 +- .../nosql/cassandra/CassandraCluster.java | 30 - .../nosql/cassandra/CassandraClusterImpl.java | 27 - .../nosql/cassandra/CassandraDatacenter.java | 214 ---- .../cassandra/CassandraDatacenterImpl.java | 625 ------------ .../entity/nosql/cassandra/CassandraFabric.java | 80 -- .../nosql/cassandra/CassandraFabricImpl.java | 395 -------- .../entity/nosql/cassandra/CassandraNode.java | 231 ----- .../nosql/cassandra/CassandraNodeDriver.java | 47 - .../nosql/cassandra/CassandraNodeImpl.java | 594 ----------- .../nosql/cassandra/CassandraNodeSshDriver.java | 420 -------- .../entity/nosql/cassandra/TokenGenerator.java | 49 - .../entity/nosql/cassandra/TokenGenerators.java | 192 ---- .../nosql/couchbase/CouchbaseCluster.java | 134 --- .../nosql/couchbase/CouchbaseClusterImpl.java | 597 ----------- .../entity/nosql/couchbase/CouchbaseNode.java | 159 --- .../nosql/couchbase/CouchbaseNodeDriver.java | 41 - .../nosql/couchbase/CouchbaseNodeImpl.java | 269 ----- .../nosql/couchbase/CouchbaseNodeSshDriver.java | 512 ---------- .../nosql/couchbase/CouchbaseSyncGateway.java | 75 -- .../couchbase/CouchbaseSyncGatewayDriver.java | 27 - .../couchbase/CouchbaseSyncGatewayImpl.java | 82 -- .../CouchbaseSyncGatewaySshDriver.java | 167 ---- .../entity/nosql/couchdb/CouchDBCluster.java | 48 - .../nosql/couchdb/CouchDBClusterImpl.java | 51 - .../entity/nosql/couchdb/CouchDBNode.java | 66 -- .../entity/nosql/couchdb/CouchDBNodeDriver.java | 37 - .../entity/nosql/couchdb/CouchDBNodeImpl.java | 106 -- .../nosql/couchdb/CouchDBNodeSshDriver.java | 153 --- .../elasticsearch/ElasticSearchCluster.java | 40 - .../elasticsearch/ElasticSearchClusterImpl.java | 45 - .../nosql/elasticsearch/ElasticSearchNode.java | 88 -- .../elasticsearch/ElasticSearchNodeDriver.java | 25 - .../elasticsearch/ElasticSearchNodeImpl.java | 110 -- .../ElasticSearchNodeSshDriver.java | 139 --- .../nosql/mongodb/AbstractMongoDBServer.java | 61 -- .../nosql/mongodb/AbstractMongoDBSshDriver.java | 175 ---- .../entity/nosql/mongodb/MongoDBClient.java | 65 -- .../nosql/mongodb/MongoDBClientDriver.java | 25 - .../entity/nosql/mongodb/MongoDBClientImpl.java | 43 - .../nosql/mongodb/MongoDBClientSshDriver.java | 147 --- .../nosql/mongodb/MongoDBClientSupport.java | 263 ----- .../entity/nosql/mongodb/MongoDBDriver.java | 24 - .../entity/nosql/mongodb/MongoDBReplicaSet.java | 84 -- .../nosql/mongodb/MongoDBReplicaSetImpl.java | 404 -------- .../entity/nosql/mongodb/MongoDBServer.java | 152 --- .../entity/nosql/mongodb/MongoDBServerImpl.java | 214 ---- .../entity/nosql/mongodb/MongoDBSshDriver.java | 57 -- .../entity/nosql/mongodb/ReplicaSetConfig.java | 278 ------ .../nosql/mongodb/ReplicaSetMemberStatus.java | 66 -- .../sharding/CoLocatedMongoDBRouter.java | 59 -- .../sharding/CoLocatedMongoDBRouterImpl.java | 70 -- .../mongodb/sharding/MongoDBConfigServer.java | 27 - .../sharding/MongoDBConfigServerCluster.java | 35 - .../MongoDBConfigServerClusterImpl.java | 57 -- .../sharding/MongoDBConfigServerDriver.java | 25 - .../sharding/MongoDBConfigServerImpl.java | 36 - .../sharding/MongoDBConfigServerSshDriver.java | 43 - .../nosql/mongodb/sharding/MongoDBRouter.java | 51 - .../mongodb/sharding/MongoDBRouterCluster.java | 54 - .../sharding/MongoDBRouterClusterImpl.java | 101 -- .../mongodb/sharding/MongoDBRouterDriver.java | 25 - .../mongodb/sharding/MongoDBRouterImpl.java | 85 -- .../sharding/MongoDBRouterSshDriver.java | 52 - .../mongodb/sharding/MongoDBShardCluster.java | 27 - .../sharding/MongoDBShardClusterImpl.java | 179 ---- .../sharding/MongoDBShardedDeployment.java | 102 -- .../sharding/MongoDBShardedDeploymentImpl.java | 147 --- .../entity/nosql/redis/RedisCluster.java | 41 - .../entity/nosql/redis/RedisClusterImpl.java | 151 --- .../brooklyn/entity/nosql/redis/RedisShard.java | 26 - .../entity/nosql/redis/RedisShardImpl.java | 26 - .../brooklyn/entity/nosql/redis/RedisSlave.java | 42 - .../entity/nosql/redis/RedisSlaveImpl.java | 34 - .../brooklyn/entity/nosql/redis/RedisStore.java | 69 -- .../entity/nosql/redis/RedisStoreDriver.java | 27 - .../entity/nosql/redis/RedisStoreImpl.java | 154 --- .../entity/nosql/redis/RedisStoreSshDriver.java | 131 --- .../brooklyn/entity/nosql/riak/RiakCluster.java | 65 -- .../entity/nosql/riak/RiakClusterImpl.java | 264 ----- .../brooklyn/entity/nosql/riak/RiakNode.java | 238 ----- .../entity/nosql/riak/RiakNodeDriver.java | 48 - .../entity/nosql/riak/RiakNodeImpl.java | 306 ------ .../entity/nosql/riak/RiakNodeSshDriver.java | 614 ------------ .../brooklyn/entity/nosql/solr/SolrServer.java | 81 -- .../entity/nosql/solr/SolrServerDriver.java | 30 - .../entity/nosql/solr/SolrServerImpl.java | 75 -- .../entity/nosql/solr/SolrServerSshDriver.java | 158 --- .../nosql/cassandra/CassandraCluster.java | 30 + .../nosql/cassandra/CassandraClusterImpl.java | 27 + .../nosql/cassandra/CassandraDatacenter.java | 215 ++++ .../cassandra/CassandraDatacenterImpl.java | 625 ++++++++++++ .../entity/nosql/cassandra/CassandraFabric.java | 80 ++ .../nosql/cassandra/CassandraFabricImpl.java | 395 ++++++++ .../entity/nosql/cassandra/CassandraNode.java | 231 +++++ .../nosql/cassandra/CassandraNodeDriver.java | 47 + .../nosql/cassandra/CassandraNodeImpl.java | 594 +++++++++++ .../nosql/cassandra/CassandraNodeSshDriver.java | 420 ++++++++ .../entity/nosql/cassandra/TokenGenerator.java | 49 + .../entity/nosql/cassandra/TokenGenerators.java | 192 ++++ .../nosql/couchbase/CouchbaseCluster.java | 134 +++ .../nosql/couchbase/CouchbaseClusterImpl.java | 597 +++++++++++ .../entity/nosql/couchbase/CouchbaseNode.java | 159 +++ .../nosql/couchbase/CouchbaseNodeDriver.java | 41 + .../nosql/couchbase/CouchbaseNodeImpl.java | 269 +++++ .../nosql/couchbase/CouchbaseNodeSshDriver.java | 512 ++++++++++ .../nosql/couchbase/CouchbaseSyncGateway.java | 75 ++ .../couchbase/CouchbaseSyncGatewayDriver.java | 27 + .../couchbase/CouchbaseSyncGatewayImpl.java | 82 ++ .../CouchbaseSyncGatewaySshDriver.java | 167 ++++ .../entity/nosql/couchdb/CouchDBCluster.java | 48 + .../nosql/couchdb/CouchDBClusterImpl.java | 51 + .../entity/nosql/couchdb/CouchDBNode.java | 66 ++ .../entity/nosql/couchdb/CouchDBNodeDriver.java | 37 + .../entity/nosql/couchdb/CouchDBNodeImpl.java | 106 ++ .../nosql/couchdb/CouchDBNodeSshDriver.java | 153 +++ .../elasticsearch/ElasticSearchCluster.java | 40 + .../elasticsearch/ElasticSearchClusterImpl.java | 45 + .../nosql/elasticsearch/ElasticSearchNode.java | 88 ++ .../elasticsearch/ElasticSearchNodeDriver.java | 25 + .../elasticsearch/ElasticSearchNodeImpl.java | 110 ++ .../ElasticSearchNodeSshDriver.java | 139 +++ .../nosql/mongodb/AbstractMongoDBServer.java | 61 ++ .../nosql/mongodb/AbstractMongoDBSshDriver.java | 175 ++++ .../entity/nosql/mongodb/MongoDBClient.java | 65 ++ .../nosql/mongodb/MongoDBClientDriver.java | 25 + .../entity/nosql/mongodb/MongoDBClientImpl.java | 43 + .../nosql/mongodb/MongoDBClientSshDriver.java | 147 +++ .../nosql/mongodb/MongoDBClientSupport.java | 263 +++++ .../entity/nosql/mongodb/MongoDBDriver.java | 24 + .../entity/nosql/mongodb/MongoDBReplicaSet.java | 84 ++ .../nosql/mongodb/MongoDBReplicaSetImpl.java | 404 ++++++++ .../entity/nosql/mongodb/MongoDBServer.java | 152 +++ .../entity/nosql/mongodb/MongoDBServerImpl.java | 214 ++++ .../entity/nosql/mongodb/MongoDBSshDriver.java | 57 ++ .../entity/nosql/mongodb/ReplicaSetConfig.java | 278 ++++++ .../nosql/mongodb/ReplicaSetMemberStatus.java | 66 ++ .../sharding/CoLocatedMongoDBRouter.java | 59 ++ .../sharding/CoLocatedMongoDBRouterImpl.java | 70 ++ .../mongodb/sharding/MongoDBConfigServer.java | 28 + .../sharding/MongoDBConfigServerCluster.java | 35 + .../MongoDBConfigServerClusterImpl.java | 57 ++ .../sharding/MongoDBConfigServerDriver.java | 25 + .../sharding/MongoDBConfigServerImpl.java | 36 + .../sharding/MongoDBConfigServerSshDriver.java | 44 + .../nosql/mongodb/sharding/MongoDBRouter.java | 52 + .../mongodb/sharding/MongoDBRouterCluster.java | 54 + .../sharding/MongoDBRouterClusterImpl.java | 101 ++ .../mongodb/sharding/MongoDBRouterDriver.java | 25 + .../mongodb/sharding/MongoDBRouterImpl.java | 86 ++ .../sharding/MongoDBRouterSshDriver.java | 52 + .../mongodb/sharding/MongoDBShardCluster.java | 27 + .../sharding/MongoDBShardClusterImpl.java | 179 ++++ .../sharding/MongoDBShardedDeployment.java | 103 ++ .../sharding/MongoDBShardedDeploymentImpl.java | 147 +++ .../entity/nosql/redis/RedisCluster.java | 41 + .../entity/nosql/redis/RedisClusterImpl.java | 151 +++ .../brooklyn/entity/nosql/redis/RedisShard.java | 26 + .../entity/nosql/redis/RedisShardImpl.java | 26 + .../brooklyn/entity/nosql/redis/RedisSlave.java | 42 + .../entity/nosql/redis/RedisSlaveImpl.java | 34 + .../brooklyn/entity/nosql/redis/RedisStore.java | 69 ++ .../entity/nosql/redis/RedisStoreDriver.java | 27 + .../entity/nosql/redis/RedisStoreImpl.java | 154 +++ .../entity/nosql/redis/RedisStoreSshDriver.java | 131 +++ .../brooklyn/entity/nosql/riak/RiakCluster.java | 65 ++ .../entity/nosql/riak/RiakClusterImpl.java | 264 +++++ .../brooklyn/entity/nosql/riak/RiakNode.java | 238 +++++ .../entity/nosql/riak/RiakNodeDriver.java | 48 + .../entity/nosql/riak/RiakNodeImpl.java | 306 ++++++ .../entity/nosql/riak/RiakNodeSshDriver.java | 614 ++++++++++++ .../brooklyn/entity/nosql/solr/SolrServer.java | 81 ++ .../entity/nosql/solr/SolrServerDriver.java | 30 + .../entity/nosql/solr/SolrServerImpl.java | 75 ++ .../entity/nosql/solr/SolrServerSshDriver.java | 158 +++ .../entity/nosql/cassandra/cassandra-1.2.yaml | 644 ------------ .../entity/nosql/cassandra/cassandra-2.0.yaml | 688 ------------- .../cassandra/cassandra-multicloud-snitch.jar | Bin 4729 -> 0 bytes .../cassandra/cassandra-multicloud-snitch.txt | 33 - .../nosql/cassandra/cassandra-rackdc.properties | 6 - .../entity/nosql/couchbase/pillowfight.yaml | 77 -- .../brooklyn/entity/nosql/couchdb/couch.ini | 17 - .../brooklyn/entity/nosql/couchdb/couch.uri | 2 - .../entity/nosql/mongodb/default-mongod.conf | 7 - .../brooklyn/entity/nosql/mongodb/default.conf | 2 - .../brooklyn/entity/nosql/redis/redis.conf | 13 - .../brooklyn/entity/nosql/redis/slave.conf | 16 - .../brooklyn/entity/nosql/riak/app.config | 353 ------- .../nosql/riak/riak-cluster-with-solr.yaml | 35 - .../brooklyn/entity/nosql/riak/riak-mac.conf | 494 --------- .../nosql/riak/riak-with-webapp-cluster.yaml | 42 - .../entity/nosql/riak/riak-with-webapp.yaml | 36 - .../brooklyn/entity/nosql/riak/riak.conf | 494 --------- .../brooklyn/entity/nosql/riak/riak.md | 67 -- .../brooklyn/entity/nosql/riak/riak.png | Bin 110651 -> 0 bytes .../brooklyn/entity/nosql/riak/vm.args | 64 -- .../brooklyn/entity/nosql/solr/solr.xml | 19 - .../entity/nosql/cassandra/cassandra-1.2.yaml | 644 ++++++++++++ .../entity/nosql/cassandra/cassandra-2.0.yaml | 688 +++++++++++++ .../cassandra/cassandra-multicloud-snitch.jar | Bin 0 -> 4729 bytes .../cassandra/cassandra-multicloud-snitch.txt | 33 + .../nosql/cassandra/cassandra-rackdc.properties | 6 + .../entity/nosql/couchbase/pillowfight.yaml | 77 ++ .../brooklyn/entity/nosql/couchdb/couch.ini | 17 + .../brooklyn/entity/nosql/couchdb/couch.uri | 2 + .../entity/nosql/mongodb/default-mongod.conf | 7 + .../brooklyn/entity/nosql/mongodb/default.conf | 2 + .../brooklyn/entity/nosql/redis/redis.conf | 13 + .../brooklyn/entity/nosql/redis/slave.conf | 16 + .../brooklyn/entity/nosql/riak/app.config | 353 +++++++ .../nosql/riak/riak-cluster-with-solr.yaml | 35 + .../brooklyn/entity/nosql/riak/riak-mac.conf | 494 +++++++++ .../nosql/riak/riak-with-webapp-cluster.yaml | 42 + .../entity/nosql/riak/riak-with-webapp.yaml | 36 + .../apache/brooklyn/entity/nosql/riak/riak.conf | 494 +++++++++ .../apache/brooklyn/entity/nosql/riak/riak.md | 67 ++ .../apache/brooklyn/entity/nosql/riak/riak.png | Bin 0 -> 110651 bytes .../apache/brooklyn/entity/nosql/riak/vm.args | 64 ++ .../apache/brooklyn/entity/nosql/solr/solr.xml | 19 + .../cassandra/AbstractCassandraNodeTest.java | 41 - .../entity/nosql/cassandra/AstyanaxSupport.java | 330 ------ .../CassandraDatacenterIntegrationTest.java | 149 --- .../cassandra/CassandraDatacenterLiveTest.java | 308 ------ ...assandraDatacenterRebindIntegrationTest.java | 97 -- .../cassandra/CassandraDatacenterTest.java | 233 ----- .../nosql/cassandra/CassandraFabricTest.java | 184 ---- .../cassandra/CassandraNodeEc2LiveTest.java | 50 - .../cassandra/CassandraNodeIntegrationTest.java | 190 ---- .../nosql/cassandra/CassandraNodeLiveTest.java | 74 -- .../cassandra/NonNegTokenGeneratorTest.java | 117 --- .../cassandra/PosNegTokenGeneratorTest.java | 58 -- .../nosql/couchbase/CouchbaseOfflineTest.java | 62 -- .../CouchbaseSyncGatewayEc2LiveTest.java | 137 --- .../nosql/couchdb/AbstractCouchDBNodeTest.java | 59 -- .../nosql/couchdb/CouchDBClusterLiveTest.java | 90 -- .../nosql/couchdb/CouchDBNodeEc2LiveTest.java | 49 - .../couchdb/CouchDBNodeIntegrationTest.java | 66 -- .../nosql/couchdb/CouchDBNodeLiveTest.java | 74 -- .../entity/nosql/couchdb/JcouchdbSupport.java | 77 -- .../ElasticSearchClusterIntegrationTest.java | 128 --- .../ElasticSearchNodeIntegrationTest.java | 112 --- .../nosql/mongodb/MongoDBEc2LiveTest.java | 54 - .../nosql/mongodb/MongoDBIntegrationTest.java | 91 -- .../mongodb/MongoDBRebindIntegrationTest.java | 60 -- .../mongodb/MongoDBReplicaSetEc2LiveTest.java | 96 -- .../MongoDBReplicaSetIntegrationTest.java | 206 ---- .../mongodb/MongoDBRestartIntegrationTest.java | 42 - .../nosql/mongodb/MongoDBSoftLayerLiveTest.java | 56 -- .../entity/nosql/mongodb/MongoDBTestHelper.java | 124 --- .../nosql/mongodb/ReplicaSetConfigTest.java | 239 ----- .../MongoDBConfigServerIntegrationTest.java | 66 -- .../MongoDBShardedDeploymentEc2LiveTest.java | 83 -- ...MongoDBShardedDeploymentIntegrationTest.java | 129 --- .../entity/nosql/redis/JedisSupport.java | 74 -- .../redis/RedisClusterIntegrationTest.java | 109 -- .../entity/nosql/redis/RedisEc2LiveTest.java | 66 -- .../nosql/redis/RedisIntegrationTest.java | 119 --- .../nosql/riak/RiakClusterEc2LiveTest.java | 74 -- .../entity/nosql/riak/RiakNodeEc2LiveTest.java | 51 - .../riak/RiakNodeGoogleComputeLiveTest.java | 62 -- .../nosql/riak/RiakNodeIntegrationTest.java | 64 -- .../nosql/riak/RiakNodeSoftlayerLiveTest.java | 45 - .../nosql/solr/AbstractSolrServerTest.java | 41 - .../entity/nosql/solr/SolrJSupport.java | 66 -- .../nosql/solr/SolrServerEc2LiveTest.java | 66 -- .../nosql/solr/SolrServerIntegrationTest.java | 84 -- .../entity/nosql/solr/SolrServerLiveTest.java | 89 -- .../cassandra/AbstractCassandraNodeTest.java | 42 + .../entity/nosql/cassandra/AstyanaxSupport.java | 331 ++++++ .../CassandraDatacenterIntegrationTest.java | 151 +++ .../cassandra/CassandraDatacenterLiveTest.java | 310 ++++++ ...assandraDatacenterRebindIntegrationTest.java | 99 ++ .../cassandra/CassandraDatacenterTest.java | 235 +++++ .../nosql/cassandra/CassandraFabricTest.java | 186 ++++ .../cassandra/CassandraNodeEc2LiveTest.java | 51 + .../cassandra/CassandraNodeIntegrationTest.java | 191 ++++ .../nosql/cassandra/CassandraNodeLiveTest.java | 75 ++ .../cassandra/NonNegTokenGeneratorTest.java | 116 +++ .../cassandra/PosNegTokenGeneratorTest.java | 57 ++ .../nosql/couchbase/CouchbaseOfflineTest.java | 63 ++ .../CouchbaseSyncGatewayEc2LiveTest.java | 140 +++ .../nosql/couchdb/AbstractCouchDBNodeTest.java | 60 ++ .../nosql/couchdb/CouchDBClusterLiveTest.java | 92 ++ .../nosql/couchdb/CouchDBNodeEc2LiveTest.java | 50 + .../couchdb/CouchDBNodeIntegrationTest.java | 67 ++ .../nosql/couchdb/CouchDBNodeLiveTest.java | 75 ++ .../entity/nosql/couchdb/JcouchdbSupport.java | 78 ++ .../ElasticSearchClusterIntegrationTest.java | 130 +++ .../ElasticSearchNodeIntegrationTest.java | 113 +++ .../nosql/mongodb/MongoDBEc2LiveTest.java | 56 ++ .../nosql/mongodb/MongoDBIntegrationTest.java | 92 ++ .../mongodb/MongoDBRebindIntegrationTest.java | 61 ++ .../mongodb/MongoDBReplicaSetEc2LiveTest.java | 98 ++ .../MongoDBReplicaSetIntegrationTest.java | 208 ++++ .../mongodb/MongoDBRestartIntegrationTest.java | 43 + .../nosql/mongodb/MongoDBSoftLayerLiveTest.java | 57 ++ .../entity/nosql/mongodb/MongoDBTestHelper.java | 126 +++ .../nosql/mongodb/ReplicaSetConfigTest.java | 240 +++++ .../MongoDBConfigServerIntegrationTest.java | 67 ++ .../MongoDBShardedDeploymentEc2LiveTest.java | 86 ++ ...MongoDBShardedDeploymentIntegrationTest.java | 135 +++ .../entity/nosql/redis/JedisSupport.java | 77 ++ .../redis/RedisClusterIntegrationTest.java | 112 +++ .../entity/nosql/redis/RedisEc2LiveTest.java | 67 ++ .../nosql/redis/RedisIntegrationTest.java | 120 +++ .../nosql/riak/RiakClusterEc2LiveTest.java | 76 ++ .../entity/nosql/riak/RiakNodeEc2LiveTest.java | 52 + .../riak/RiakNodeGoogleComputeLiveTest.java | 64 ++ .../nosql/riak/RiakNodeIntegrationTest.java | 65 ++ .../nosql/riak/RiakNodeSoftlayerLiveTest.java | 46 + .../nosql/solr/AbstractSolrServerTest.java | 42 + .../entity/nosql/solr/SolrJSupport.java | 67 ++ .../nosql/solr/SolrServerEc2LiveTest.java | 67 ++ .../nosql/solr/SolrServerIntegrationTest.java | 85 ++ .../entity/nosql/solr/SolrServerLiveTest.java | 90 ++ ...lledDynamicWebAppClusterIntegrationTest.java | 13 +- .../ControlledDynamicWebAppClusterTest.java | 38 +- .../com/acme/sample/brooklyn/SampleMain.java | 2 +- .../camp/brooklyn/BrooklynCampConstants.java | 50 - .../camp/brooklyn/BrooklynCampPlatform.java | 76 -- .../BrooklynCampPlatformLauncherAbstract.java | 73 -- .../BrooklynCampPlatformLauncherNoServer.java | 36 - .../camp/brooklyn/BrooklynCampReservedKeys.java | 29 - .../camp/brooklyn/YamlLauncherAbstract.java | 133 --- .../camp/brooklyn/YamlLauncherNoServer.java | 39 - .../BrooklynAssemblyTemplateInstantiator.java | 282 ------ .../BrooklynComponentTemplateResolver.java | 491 --------- .../BrooklynEntityDecorationResolver.java | 181 ---- .../spi/creation/BrooklynEntityMatcher.java | 193 ---- .../creation/BrooklynYamlLocationResolver.java | 142 --- .../creation/BrooklynYamlTypeInstantiator.java | 208 ---- .../spi/creation/EntitySpecConfiguration.java | 58 -- .../service/BrooklynServiceTypeResolver.java | 72 -- .../service/CatalogServiceTypeResolver.java | 78 -- .../service/ChefServiceTypeResolver.java | 62 -- .../service/JavaServiceTypeResolver.java | 39 - .../creation/service/ServiceTypeResolver.java | 73 -- .../spi/dsl/BrooklynDslDeferredSupplier.java | 99 -- .../spi/dsl/BrooklynDslInterpreter.java | 188 ---- .../camp/brooklyn/spi/dsl/DslUtils.java | 44 - .../spi/dsl/methods/BrooklynDslCommon.java | 302 ------ .../brooklyn/spi/dsl/methods/DslComponent.java | 320 ------ .../camp/brooklyn/spi/dsl/parse/DslParser.java | 144 --- .../spi/dsl/parse/FunctionWithArgs.java | 57 -- .../brooklyn/spi/dsl/parse/QuotedString.java | 49 - .../lookup/AbstractBrooklynResourceLookup.java | 36 - .../lookup/AbstractTemplateBrooklynLookup.java | 62 -- .../spi/lookup/AssemblyBrooklynLookup.java | 69 -- .../lookup/AssemblyTemplateBrooklynLookup.java | 70 -- .../brooklyn/spi/lookup/BrooklynUrlLookup.java | 38 - .../lookup/PlatformComponentBrooklynLookup.java | 61 -- ...PlatformComponentTemplateBrooklynLookup.java | 59 -- .../platform/BrooklynImmutableCampPlatform.java | 107 -- .../camp/brooklyn/BrooklynCampConstants.java | 50 + .../camp/brooklyn/BrooklynCampPlatform.java | 78 ++ .../BrooklynCampPlatformLauncherAbstract.java | 73 ++ .../BrooklynCampPlatformLauncherNoServer.java | 36 + .../camp/brooklyn/BrooklynCampReservedKeys.java | 29 + .../camp/brooklyn/YamlLauncherAbstract.java | 133 +++ .../camp/brooklyn/YamlLauncherNoServer.java | 39 + .../BrooklynAssemblyTemplateInstantiator.java | 283 ++++++ .../BrooklynComponentTemplateResolver.java | 490 +++++++++ .../BrooklynEntityDecorationResolver.java | 180 ++++ .../spi/creation/BrooklynEntityMatcher.java | 193 ++++ .../creation/BrooklynYamlLocationResolver.java | 142 +++ .../creation/BrooklynYamlTypeInstantiator.java | 208 ++++ .../spi/creation/EntitySpecConfiguration.java | 58 ++ .../service/BrooklynServiceTypeResolver.java | 71 ++ .../service/CatalogServiceTypeResolver.java | 78 ++ .../service/ChefServiceTypeResolver.java | 61 ++ .../service/JavaServiceTypeResolver.java | 39 + .../creation/service/ServiceTypeResolver.java | 73 ++ .../spi/dsl/BrooklynDslDeferredSupplier.java | 99 ++ .../spi/dsl/BrooklynDslInterpreter.java | 188 ++++ .../camp/brooklyn/spi/dsl/DslUtils.java | 44 + .../spi/dsl/methods/BrooklynDslCommon.java | 301 ++++++ .../brooklyn/spi/dsl/methods/DslComponent.java | 320 ++++++ .../camp/brooklyn/spi/dsl/parse/DslParser.java | 144 +++ .../spi/dsl/parse/FunctionWithArgs.java | 57 ++ .../brooklyn/spi/dsl/parse/QuotedString.java | 49 + .../lookup/AbstractBrooklynResourceLookup.java | 36 + .../lookup/AbstractTemplateBrooklynLookup.java | 62 ++ .../spi/lookup/AssemblyBrooklynLookup.java | 69 ++ .../lookup/AssemblyTemplateBrooklynLookup.java | 70 ++ .../brooklyn/spi/lookup/BrooklynUrlLookup.java | 38 + .../lookup/PlatformComponentBrooklynLookup.java | 61 ++ ...PlatformComponentTemplateBrooklynLookup.java | 59 ++ .../platform/BrooklynImmutableCampPlatform.java | 109 ++ ...lyn.spi.creation.service.ServiceTypeResolver | 22 - ...lyn.spi.creation.service.ServiceTypeResolver | 22 + .../camp/brooklyn/AbstractYamlRebindTest.java | 206 ---- .../camp/brooklyn/AbstractYamlTest.java | 182 ---- .../io/brooklyn/camp/brooklyn/AppYamlTest.java | 119 --- .../BrooklynYamlTypeInstantiatorTest.java | 76 -- .../camp/brooklyn/ByonLocationsYamlTest.java | 281 ------ .../camp/brooklyn/DslAndRebindYamlTest.java | 245 ----- .../brooklyn/EmptySoftwareProcessYamlTest.java | 103 -- .../EnrichersSlightlySimplerYamlTest.java | 134 --- .../camp/brooklyn/EnrichersYamlTest.java | 257 ----- .../brooklyn/EntitiesYamlIntegrationTest.java | 71 -- .../camp/brooklyn/EntitiesYamlTest.java | 919 ----------------- ...aWebAppWithDslYamlRebindIntegrationTest.java | 125 --- .../brooklyn/JavaWebAppsIntegrationTest.java | 272 ----- .../camp/brooklyn/JavaWebAppsMatchingTest.java | 144 --- .../camp/brooklyn/LocationsYamlTest.java | 285 ------ .../camp/brooklyn/MapReferenceYamlTest.java | 130 --- .../brooklyn/camp/brooklyn/ObjectsYamlTest.java | 280 ------ .../camp/brooklyn/PoliciesYamlTest.java | 215 ---- .../camp/brooklyn/ReferencedYamlTest.java | 180 ---- .../brooklyn/ReferencingYamlTestEntity.java | 66 -- .../brooklyn/ReferencingYamlTestEntityImpl.java | 25 - .../brooklyn/ReloadBrooklynPropertiesTest.java | 87 -- .../camp/brooklyn/TestEntityWithInitConfig.java | 35 - .../brooklyn/TestEntityWithInitConfigImpl.java | 59 -- .../camp/brooklyn/TestReferencingEnricher.java | 34 - .../camp/brooklyn/TestReferencingPolicy.java | 34 - .../TestSensorAndEffectorInitializer.java | 86 -- .../brooklyn/VanillaBashNetcatYamlTest.java | 113 --- .../io/brooklyn/camp/brooklyn/WrapAppTest.java | 93 -- .../catalog/AbstractCatalogXmlTest.java | 109 -- .../CatalogOsgiVersionMoreEntityTest.java | 261 ----- .../brooklyn/catalog/CatalogXmlOsgiTest.java | 37 - .../brooklyn/catalog/CatalogXmlVersionTest.java | 58 -- .../brooklyn/catalog/CatalogYamlCombiTest.java | 145 --- .../brooklyn/catalog/CatalogYamlEntityTest.java | 781 --------------- .../catalog/CatalogYamlLocationTest.java | 248 ----- .../brooklyn/catalog/CatalogYamlPolicyTest.java | 196 ---- .../brooklyn/catalog/CatalogYamlRebindTest.java | 132 --- .../catalog/CatalogYamlTemplateTest.java | 96 -- .../catalog/CatalogYamlVersioningTest.java | 258 ----- .../camp/brooklyn/catalog/TestBasicApp.java | 27 - .../camp/brooklyn/catalog/TestBasicAppImpl.java | 24 - .../camp/brooklyn/spi/dsl/DslParseTest.java | 79 -- .../camp/brooklyn/AbstractYamlRebindTest.java | 208 ++++ .../camp/brooklyn/AbstractYamlTest.java | 184 ++++ .../brooklyn/camp/brooklyn/AppYamlTest.java | 119 +++ .../BrooklynYamlTypeInstantiatorTest.java | 75 ++ .../camp/brooklyn/ByonLocationsYamlTest.java | 281 ++++++ .../camp/brooklyn/DslAndRebindYamlTest.java | 245 +++++ .../brooklyn/EmptySoftwareProcessYamlTest.java | 103 ++ .../EnrichersSlightlySimplerYamlTest.java | 134 +++ .../camp/brooklyn/EnrichersYamlTest.java | 257 +++++ .../brooklyn/EntitiesYamlIntegrationTest.java | 71 ++ .../camp/brooklyn/EntitiesYamlTest.java | 919 +++++++++++++++++ ...aWebAppWithDslYamlRebindIntegrationTest.java | 125 +++ .../brooklyn/JavaWebAppsIntegrationTest.java | 275 +++++ .../camp/brooklyn/JavaWebAppsMatchingTest.java | 146 +++ .../camp/brooklyn/LocationsYamlTest.java | 285 ++++++ .../camp/brooklyn/MapReferenceYamlTest.java | 130 +++ .../brooklyn/camp/brooklyn/ObjectsYamlTest.java | 280 ++++++ .../camp/brooklyn/PoliciesYamlTest.java | 215 ++++ .../camp/brooklyn/ReferencedYamlTest.java | 180 ++++ .../brooklyn/ReferencingYamlTestEntity.java | 66 ++ .../brooklyn/ReferencingYamlTestEntityImpl.java | 25 + .../brooklyn/ReloadBrooklynPropertiesTest.java | 89 ++ .../camp/brooklyn/TestEntityWithInitConfig.java | 35 + .../brooklyn/TestEntityWithInitConfigImpl.java | 59 ++ .../camp/brooklyn/TestReferencingEnricher.java | 34 + .../camp/brooklyn/TestReferencingPolicy.java | 34 + .../TestSensorAndEffectorInitializer.java | 86 ++ .../brooklyn/VanillaBashNetcatYamlTest.java | 114 +++ .../brooklyn/camp/brooklyn/WrapAppTest.java | 93 ++ .../catalog/AbstractCatalogXmlTest.java | 109 ++ .../CatalogOsgiVersionMoreEntityTest.java | 262 +++++ .../brooklyn/catalog/CatalogXmlOsgiTest.java | 37 + .../brooklyn/catalog/CatalogXmlVersionTest.java | 58 ++ .../brooklyn/catalog/CatalogYamlCombiTest.java | 143 +++ .../brooklyn/catalog/CatalogYamlEntityTest.java | 780 +++++++++++++++ .../catalog/CatalogYamlLocationTest.java | 247 +++++ .../brooklyn/catalog/CatalogYamlPolicyTest.java | 195 ++++ .../brooklyn/catalog/CatalogYamlRebindTest.java | 132 +++ .../catalog/CatalogYamlTemplateTest.java | 95 ++ .../catalog/CatalogYamlVersioningTest.java | 257 +++++ .../camp/brooklyn/catalog/TestBasicApp.java | 27 + .../camp/brooklyn/catalog/TestBasicAppImpl.java | 24 + .../camp/brooklyn/spi/dsl/DslParseTest.java | 79 ++ .../more-entities-osgi-catalog-scan.yaml | 32 - .../more-entity-v1-called-v1-osgi-catalog.yaml | 27 - .../catalog/more-entity-v1-osgi-catalog.yaml | 27 - ...more-entity-v1-with-policy-osgi-catalog.yaml | 29 - .../catalog/more-entity-v2-osgi-catalog.yaml | 28 - .../more-policies-osgi-catalog-scan.yaml | 32 - .../catalog/simple-policy-osgi-catalog.yaml | 27 - .../more-entities-osgi-catalog-scan.yaml | 32 + .../more-entity-v1-called-v1-osgi-catalog.yaml | 27 + .../catalog/more-entity-v1-osgi-catalog.yaml | 27 + ...more-entity-v1-with-policy-osgi-catalog.yaml | 29 + .../catalog/more-entity-v2-osgi-catalog.yaml | 28 + .../more-policies-osgi-catalog-scan.yaml | 32 + .../catalog/simple-policy-osgi-catalog.yaml | 27 + .../camp/src/test/resources/simple-catalog.xml | 2 +- .../resources/test-entity-with-init-config.yaml | 2 +- .../resources/test-referencing-enrichers.yaml | 26 +- .../resources/test-referencing-entities.yaml | 12 +- .../resources/test-referencing-policies.yaml | 26 +- usage/cli/pom.xml | 6 +- .../main/java/brooklyn/cli/AbstractMain.java | 253 ----- .../main/java/brooklyn/cli/CloudExplorer.java | 381 ------- .../src/main/java/brooklyn/cli/ItemLister.java | 272 ----- usage/cli/src/main/java/brooklyn/cli/Main.java | 986 ------------------ .../java/brooklyn/cli/lister/ClassFinder.java | 153 --- .../brooklyn/cli/lister/ItemDescriptors.java | 173 ---- .../org/apache/brooklyn/cli/AbstractMain.java | 253 +++++ .../org/apache/brooklyn/cli/CloudExplorer.java | 381 +++++++ .../org/apache/brooklyn/cli/ItemLister.java | 272 +++++ .../main/java/org/apache/brooklyn/cli/Main.java | 997 +++++++++++++++++++ .../apache/brooklyn/cli/lister/ClassFinder.java | 153 +++ .../brooklyn/cli/lister/ItemDescriptors.java | 173 ++++ .../main/resources/brooklyn/default.catalog.bom | 2 +- .../cli/src/test/java/brooklyn/cli/CliTest.java | 604 ----------- .../brooklyn/cli/CloudExplorerLiveTest.java | 209 ---- .../java/org/apache/brooklyn/cli/CliTest.java | 611 ++++++++++++ .../brooklyn/cli/CloudExplorerLiveTest.java | 210 ++++ .../resources/example-app-app-location.yaml | 2 +- .../resources/example-app-entity-location.yaml | 2 +- .../test/resources/example-app-no-location.yaml | 2 +- usage/dist/src/main/dist/bin/brooklyn | 2 +- usage/dist/src/main/dist/bin/brooklyn.bat | 2 +- usage/dist/src/main/dist/bin/brooklyn.ps1 | 2 +- .../apache/brooklyn/cli/CliIntegrationTest.java | 2 +- .../brooklyn/launcher/BrooklynLauncher.java | 4 +- .../camp/BrooklynCampPlatformLauncher.java | 5 +- .../launcher/camp/SimpleYamlLauncher.java | 4 +- .../blueprints/AbstractBlueprintTest.java | 2 +- .../src/test/resources/cassandra-blueprint.yaml | 2 +- .../resources/couchbase-cluster-singleNode.yaml | 2 +- .../src/test/resources/couchbase-cluster.yaml | 2 +- .../src/test/resources/couchbase-node.yaml | 2 +- .../couchbase-replication-w-pillowfight.yaml | 6 +- .../src/test/resources/couchbase-w-loadgen.yaml | 4 +- .../test/resources/couchbase-w-pillowfight.yaml | 4 +- .../src/test/resources/mongo-blueprint.yaml | 2 +- .../resources/mongo-client-single-server.yaml | 4 +- .../src/test/resources/mongo-scripts.yaml | 4 +- .../src/test/resources/mongo-sharded.yaml | 4 +- .../mongo-single-server-blueprint.yaml | 2 +- usage/launcher/src/test/resources/playing.yaml | 2 +- .../SoftlayerObtainPrivateLiveTest.java | 225 ----- .../SoftlayerObtainPrivateLiveTest.java | 225 +++++ .../ApplicationResourceIntegrationTest.java | 4 +- .../brooklyn/rest/BrooklynRestApiLauncher.java | 4 +- .../brooklyn/rest/HaMasterCheckFilterTest.java | 2 +- .../ApplicationResourceIntegrationTest.java | 2 +- .../rest/resources/CatalogResourceTest.java | 6 +- .../rest/testing/BrooklynRestApiTest.java | 2 +- 577 files changed, 35062 insertions(+), 34855 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/dd4087ab/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/redis/RedisClusterImpl.java ---------------------------------------------------------------------- diff --cc software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/redis/RedisClusterImpl.java index 0000000,39c9dbe..4dd8fd0 mode 000000,100644..100644 --- a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/redis/RedisClusterImpl.java +++ b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/redis/RedisClusterImpl.java @@@ -1,0 -1,130 +1,151 @@@ + /* + * 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.brooklyn.entity.nosql.redis; + + import java.util.Collection; ++import java.util.List; + + import brooklyn.enricher.Enrichers; + import brooklyn.entity.basic.AbstractEntity; + import brooklyn.entity.basic.Lifecycle; + import brooklyn.entity.basic.ServiceStateLogic; + import brooklyn.entity.basic.ServiceStateLogic.ComputeServiceIndicatorsFromChildrenAndMembers; + import brooklyn.entity.basic.ServiceStateLogic.ServiceProblemsLogic; + import brooklyn.entity.group.DynamicCluster; + import brooklyn.entity.proxying.EntitySpec; + import brooklyn.event.AttributeSensor; + import brooklyn.event.basic.Sensors; + import brooklyn.location.Location; + import brooklyn.util.collections.QuorumCheck.QuorumChecks; ++import brooklyn.util.exceptions.CompoundRuntimeException; + import brooklyn.util.exceptions.Exceptions; + + import com.google.common.collect.ImmutableList; + import com.google.common.collect.ImmutableMap; + import com.google.common.collect.ImmutableSet; ++import com.google.common.collect.Lists; + + public class RedisClusterImpl extends AbstractEntity implements RedisCluster { + - private static AttributeSensor<RedisStore> MASTER = Sensors.newSensor(RedisStore.class, "redis.master"); - private static AttributeSensor<DynamicCluster> SLAVES = Sensors.newSensor(DynamicCluster.class, "redis.slaves"); ++ private static final AttributeSensor<RedisStore> MASTER = Sensors.newSensor(RedisStore.class, "redis.master"); ++ private static final AttributeSensor<DynamicCluster> SLAVES = Sensors.newSensor(DynamicCluster.class, "redis.slaves"); + + public RedisClusterImpl() { + } + + @Override + public RedisStore getMaster() { + return getAttribute(MASTER); + } + + @Override + public DynamicCluster getSlaves() { + return getAttribute(SLAVES); + } + + @Override + public void init() { + super.init(); + + RedisStore master = addChild(EntitySpec.create(RedisStore.class)); + setAttribute(MASTER, master); + + DynamicCluster slaves = addChild(EntitySpec.create(DynamicCluster.class) + .configure(DynamicCluster.MEMBER_SPEC, EntitySpec.create(RedisSlave.class).configure(RedisSlave.MASTER, master))); + setAttribute(SLAVES, slaves); + + addEnricher(Enrichers.builder() + .propagating(RedisStore.HOSTNAME, RedisStore.ADDRESS, RedisStore.SUBNET_HOSTNAME, RedisStore.SUBNET_ADDRESS, RedisStore.REDIS_PORT) + .from(master) + .build()); + } + + @Override + protected void initEnrichers() { + super.initEnrichers(); + ServiceStateLogic.newEnricherFromChildrenUp(). + checkChildrenOnly(). + requireUpChildren(QuorumChecks.all()). + configure(ComputeServiceIndicatorsFromChildrenAndMembers.IGNORE_ENTITIES_WITH_THESE_SERVICE_STATES, ImmutableSet.<Lifecycle>of()). + addTo(this); + } + + @Override + public void start(Collection<? extends Location> locations) { + ServiceStateLogic.setExpectedState(this, Lifecycle.STARTING); + ServiceProblemsLogic.clearProblemsIndicator(this, START); + try { + doStart(locations); + ServiceStateLogic.setExpectedState(this, Lifecycle.RUNNING); + } catch (Exception e) { + ServiceProblemsLogic.updateProblemsIndicator(this, START, "Start failed with error: "+e); + ServiceStateLogic.setExpectedState(this, Lifecycle.ON_FIRE); + throw Exceptions.propagate(e); + } + } + + private void doStart(Collection<? extends Location> locations) { + RedisStore master = getMaster(); + master.invoke(RedisStore.START, ImmutableMap.<String, Object>of("locations", ImmutableList.copyOf(locations))).getUnchecked(); + + DynamicCluster slaves = getSlaves(); + slaves.invoke(DynamicCluster.START, ImmutableMap.<String, Object>of("locations", ImmutableList.copyOf(locations))).getUnchecked(); + } + + @Override + public void stop() { + ServiceStateLogic.setExpectedState(this, Lifecycle.STOPPING); + try { + doStop(); + ServiceStateLogic.setExpectedState(this, Lifecycle.STOPPED); + } catch (Exception e) { + ServiceProblemsLogic.updateProblemsIndicator(this, STOP, "Stop failed with error: "+e); + ServiceStateLogic.setExpectedState(this, Lifecycle.ON_FIRE); + throw Exceptions.propagate(e); + } + } + + private void doStop() { - getSlaves().invoke(DynamicCluster.STOP, ImmutableMap.<String, Object>of()).getUnchecked(); - getMaster().invoke(RedisStore.STOP, ImmutableMap.<String, Object>of()).getUnchecked(); ++ StringBuilder message = new StringBuilder(); ++ List<Exception> exceptions = Lists.newLinkedList(); ++ ++ try { ++ getSlaves().invoke(DynamicCluster.STOP, ImmutableMap.<String, Object>of()).getUnchecked(); ++ } catch (Exception e) { ++ message.append("Failed to stop Redis slaves"); ++ exceptions.add(e); ++ } ++ ++ try { ++ getMaster().invoke(RedisStore.STOP, ImmutableMap.<String, Object>of()).getUnchecked(); ++ } catch (Exception e) { ++ message.append((message.length() == 0) ? "Failed to stop Redis master" : " and master"); ++ exceptions.add(e); ++ } ++ ++ if (!exceptions.isEmpty()) { ++ throw new CompoundRuntimeException(message.toString(), exceptions); ++ } + } + + @Override + public void restart() { + throw new UnsupportedOperationException(); + } + }
