You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by ha...@apache.org on 2015/08/13 20:59:55 UTC
[8/9] incubator-brooklyn git commit: [BROOKLYN-162] Rename
./api/management; use the no split package convention
[BROOKLYN-162] Rename ./api/management; use the no split package convention
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/2e2de8e4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/2e2de8e4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/2e2de8e4
Branch: refs/heads/master
Commit: 2e2de8e473a22d2bee0f62fcdaec630f6df13bcc
Parents: b6ef453
Author: Hadrian Zbarcea <ha...@apache.org>
Authored: Wed Aug 12 23:50:34 2015 -0400
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Wed Aug 12 23:50:34 2015 -0400
----------------------------------------------------------------------
.../brooklyn/location/LocationDefinition.java | 2 +-
.../brooklyn/location/LocationResolver.java | 2 +-
.../java/brooklyn/location/LocationSpec.java | 2 +-
.../apache/brooklyn/api/entity/Application.java | 2 +-
.../org/apache/brooklyn/api/entity/Entity.java | 2 +-
.../brooklyn/api/entity/basic/EntityLocal.java | 8 +-
.../api/entity/proxying/EntitySpec.java | 2 +-
.../api/entity/rebind/RebindManager.java | 2 +-
.../brooklyn/api/entity/trait/Configurable.java | 2 +-
.../api/management/AccessController.java | 66 +++++
.../brooklyn/api/management/EntityManager.java | 126 +++++++++
.../api/management/ExecutionContext.java | 67 +++++
.../api/management/ExecutionManager.java | 117 +++++++++
.../api/management/HasTaskChildren.java | 39 +++
.../api/management/LocationManager.java | 87 +++++++
.../api/management/ManagementContext.java | 255 +++++++++++++++++++
.../api/management/SubscriptionContext.java | 66 +++++
.../api/management/SubscriptionHandle.java | 27 ++
.../api/management/SubscriptionManager.java | 112 ++++++++
.../apache/brooklyn/api/management/Task.java | 128 ++++++++++
.../brooklyn/api/management/TaskAdaptable.java | 24 ++
.../brooklyn/api/management/TaskFactory.java | 25 ++
.../api/management/TaskQueueingContext.java | 62 +++++
.../brooklyn/api/management/TaskWrapper.java | 28 ++
.../BrooklynClassLoadingContext.java | 51 ++++
.../entitlement/EntitlementClass.java | 27 ++
.../entitlement/EntitlementContext.java | 24 ++
.../entitlement/EntitlementManager.java | 45 ++++
.../management/ha/HighAvailabilityManager.java | 129 ++++++++++
.../api/management/ha/HighAvailabilityMode.java | 67 +++++
.../api/management/ha/ManagementNodeState.java | 72 ++++++
.../management/ha/ManagementNodeSyncRecord.java | 62 +++++
.../ha/ManagementPlaneSyncRecord.java | 51 ++++
.../ha/ManagementPlaneSyncRecordPersister.java | 69 +++++
.../api/management/ha/MementoCopyMode.java | 29 +++
.../brooklyn/management/AccessController.java | 66 -----
.../brooklyn/management/EntityManager.java | 126 ---------
.../brooklyn/management/ExecutionContext.java | 67 -----
.../brooklyn/management/ExecutionManager.java | 117 ---------
.../brooklyn/management/HasTaskChildren.java | 39 ---
.../brooklyn/management/LocationManager.java | 87 -------
.../brooklyn/management/ManagementContext.java | 255 -------------------
.../management/SubscriptionContext.java | 66 -----
.../brooklyn/management/SubscriptionHandle.java | 27 --
.../management/SubscriptionManager.java | 112 --------
.../org/apache/brooklyn/management/Task.java | 128 ----------
.../brooklyn/management/TaskAdaptable.java | 24 --
.../apache/brooklyn/management/TaskFactory.java | 25 --
.../management/TaskQueueingContext.java | 62 -----
.../apache/brooklyn/management/TaskWrapper.java | 28 --
.../BrooklynClassLoadingContext.java | 51 ----
.../entitlement/EntitlementClass.java | 27 --
.../entitlement/EntitlementContext.java | 24 --
.../entitlement/EntitlementManager.java | 45 ----
.../management/ha/HighAvailabilityManager.java | 129 ----------
.../management/ha/HighAvailabilityMode.java | 67 -----
.../management/ha/ManagementNodeState.java | 72 ------
.../management/ha/ManagementNodeSyncRecord.java | 62 -----
.../ha/ManagementPlaneSyncRecord.java | 51 ----
.../ha/ManagementPlaneSyncRecordPersister.java | 69 -----
.../brooklyn/management/ha/MementoCopyMode.java | 29 ---
.../mementos/BrooklynMementoPersister.java | 2 +-
.../apache/brooklyn/policy/EnricherSpec.java | 2 +-
.../org/apache/brooklyn/policy/PolicySpec.java | 2 +-
.../src/main/java/brooklyn/BrooklynVersion.java | 2 +-
.../brooklyn/basic/AbstractBrooklynObject.java | 2 +-
.../brooklyn/basic/BasicConfigurableObject.java | 4 +-
.../basic/internal/ApiObjectsFactoryImpl.java | 2 +-
.../api/AssemblyTemplateSpecInstantiator.java | 2 +-
.../api/HasBrooklynManagementContext.java | 2 +-
.../brooklyn/catalog/CatalogPredicates.java | 2 +-
.../catalog/internal/BasicBrooklynCatalog.java | 4 +-
.../brooklyn/catalog/internal/CatalogDo.java | 2 +-
.../catalog/internal/CatalogInitialization.java | 4 +-
.../catalog/internal/CatalogItemDo.java | 2 +-
.../brooklyn/catalog/internal/CatalogUtils.java | 4 +-
.../brooklyn/config/BrooklynServerConfig.java | 2 +-
.../brooklyn/config/BrooklynServerPaths.java | 2 +-
.../config/BrooklynServiceAttributes.java | 2 +-
.../brooklyn/entity/basic/AbstractEffector.java | 2 +-
.../brooklyn/entity/basic/AbstractEntity.java | 12 +-
.../entity/basic/ApplicationBuilder.java | 4 +-
.../java/brooklyn/entity/basic/Attributes.java | 2 +-
.../entity/basic/BasicStartableImpl.java | 2 +-
.../entity/basic/BrooklynShutdownHooks.java | 4 +-
.../brooklyn/entity/basic/BrooklynTaskTags.java | 6 +-
.../brooklyn/entity/basic/DynamicGroupImpl.java | 2 +-
.../java/brooklyn/entity/basic/Entities.java | 12 +-
.../brooklyn/entity/basic/EntityConfigMap.java | 4 +-
.../brooklyn/entity/basic/EntityFunctions.java | 2 +-
.../brooklyn/entity/basic/EntityInternal.java | 6 +-
.../java/brooklyn/entity/basic/EntityTasks.java | 2 +-
.../basic/EntityTransientCopyInternal.java | 4 +-
.../brooklyn/entity/effector/EffectorBody.java | 6 +-
.../brooklyn/entity/effector/EffectorTasks.java | 4 +-
.../brooklyn/entity/effector/Effectors.java | 2 +-
.../entity/group/DynamicClusterImpl.java | 2 +-
.../entity/group/DynamicFabricImpl.java | 2 +-
.../entity/group/DynamicRegionsFabricImpl.java | 2 +-
.../entity/group/QuarantineGroupImpl.java | 2 +-
.../entity/proxying/EntityProxyImpl.java | 4 +-
.../entity/proxying/InternalEntityFactory.java | 2 +-
.../proxying/InternalLocationFactory.java | 2 +-
.../entity/proxying/InternalPolicyFactory.java | 2 +-
.../rebind/ActivePartialRebindIteration.java | 2 +-
.../rebind/InitialFullRebindIteration.java | 2 +-
.../rebind/PeriodicDeltaChangeListener.java | 4 +-
.../entity/rebind/RebindContextImpl.java | 2 +-
.../rebind/RebindContextLookupContext.java | 2 +-
.../brooklyn/entity/rebind/RebindIteration.java | 4 +-
.../entity/rebind/RebindManagerImpl.java | 8 +-
.../entity/rebind/dto/MementosGenerators.java | 4 +-
.../persister/BrooklynPersistenceUtils.java | 10 +-
.../rebind/persister/FileBasedObjectStore.java | 4 +-
.../rebind/persister/MementoSerializer.java | 2 +-
.../persister/PersistenceObjectStore.java | 4 +-
.../rebind/persister/XmlMementoSerializer.java | 6 +-
.../dto/BasicManagementNodeSyncRecord.java | 4 +-
.../dto/ManagementPlaneSyncRecordImpl.java | 4 +-
.../brooklyn/entity/trait/StartableMethods.java | 2 +-
.../basic/AbstractCollectionConfigKey.java | 4 +-
.../basic/AbstractStructuredConfigKey.java | 2 +-
.../basic/AttributeSensorAndConfigKey.java | 2 +-
.../basic/BasicAttributeSensorAndConfigKey.java | 2 +-
.../brooklyn/event/basic/BasicConfigKey.java | 2 +-
.../event/basic/DependentConfiguration.java | 10 +-
.../java/brooklyn/event/basic/MapConfigKey.java | 2 +-
.../basic/PortAttributeSensorAndConfigKey.java | 2 +-
.../event/basic/SubElementConfigKey.java | 2 +-
...platedStringAttributeSensorAndConfigKey.java | 2 +-
.../brooklyn/event/feed/ConfigToAttributes.java | 2 +-
.../main/java/brooklyn/event/feed/Poller.java | 2 +-
.../brooklyn/event/feed/shell/ShellFeed.java | 2 +-
.../windows/WindowsPerformanceCounterFeed.java | 2 +-
.../internal/BrooklynFeatureEnablement.java | 2 +-
.../location/basic/AbstractLocation.java | 2 +-
.../basic/AbstractLocationResolver.java | 2 +-
.../location/basic/BasicLocationRegistry.java | 2 +-
.../location/basic/BasicMachineDetails.java | 2 +-
.../location/basic/CatalogLocationResolver.java | 2 +-
.../basic/DefinedLocationByIdResolver.java | 2 +-
.../FixedListMachineProvisioningLocation.java | 2 +-
.../location/basic/LocationConfigUtils.java | 2 +-
.../location/basic/LocationInternal.java | 2 +-
.../java/brooklyn/location/basic/Locations.java | 4 +-
.../brooklyn/location/basic/MultiLocation.java | 2 +-
.../location/basic/MultiLocationResolver.java | 2 +-
.../location/basic/NamedLocationResolver.java | 2 +-
.../location/basic/SshMachineLocation.java | 2 +-
.../AbstractAvailabilityZoneExtension.java | 2 +-
.../management/ManagementContextInjectable.java | 2 +-
.../AbstractBrooklynClassLoadingContext.java | 4 +-
.../BrooklynClassLoadingContextSequential.java | 4 +-
...ssLoaderFromBrooklynClassLoadingContext.java | 2 +-
.../JavaBrooklynClassLoadingContext.java | 2 +-
.../OsgiBrooklynClassLoadingContext.java | 4 +-
.../BasicEntitlementClassDefinition.java | 2 +-
.../entitlement/EntitlementManagerAdapter.java | 6 +-
.../entitlement/EntitlementPredicates.java | 4 +-
.../management/entitlement/Entitlements.java | 10 +-
.../entitlement/NotEntitledException.java | 4 +-
.../entitlement/PerUserEntitlementManager.java | 6 +-
.../PerUserEntitlementManagerWithDefault.java | 2 +-
.../entitlement/WebEntitlementContext.java | 2 +-
.../management/ha/BasicMasterChooser.java | 6 +-
.../ha/HighAvailabilityManagerImpl.java | 18 +-
.../ha/ManagementPlaneSyncRecordDeltaImpl.java | 4 +-
...ntPlaneSyncRecordPersisterToObjectStore.java | 12 +-
.../brooklyn/management/ha/MasterChooser.java | 4 +-
.../brooklyn/management/ha/OsgiManager.java | 2 +-
.../internal/AbstractManagementContext.java | 14 +-
.../internal/AbstractSubscriptionManager.java | 4 +-
.../management/internal/AccessManager.java | 2 +-
.../internal/AsyncCollectionChangeAdapter.java | 2 +-
.../internal/BasicSubscriptionContext.java | 6 +-
.../internal/BrooklynGarbageCollector.java | 4 +-
.../management/internal/EffectorUtils.java | 2 +-
.../internal/EntityManagementSupport.java | 8 +-
.../internal/EntityManagementUtils.java | 6 +-
.../internal/EntityManagerInternal.java | 2 +-
.../management/internal/LocalAccessManager.java | 2 +-
.../management/internal/LocalEntityManager.java | 4 +-
.../internal/LocalLocationManager.java | 2 +-
.../internal/LocalManagementContext.java | 14 +-
.../internal/LocalSubscriptionManager.java | 6 +-
.../management/internal/LocalUsageManager.java | 2 +-
.../internal/LocationManagerInternal.java | 2 +-
.../internal/ManagementContextInternal.java | 4 +-
.../internal/ManagementTransitionInfo.java | 2 +-
.../internal/NonDeploymentAccessManager.java | 2 +-
.../internal/NonDeploymentEntityManager.java | 2 +-
.../internal/NonDeploymentLocationManager.java | 2 +-
.../NonDeploymentManagementContext.java | 26 +-
.../internal/QueueingSubscriptionManager.java | 2 +-
.../management/internal/Subscription.java | 2 +-
.../internal/SubscriptionTracker.java | 4 +-
.../policy/basic/AbstractEntityAdjunct.java | 8 +-
.../brooklyn/policy/basic/ConfigMapImpl.java | 2 +-
.../main/java/brooklyn/util/ResourceUtils.java | 4 +-
.../java/brooklyn/util/file/ArchiveTasks.java | 4 +-
.../util/internal/ConfigKeySelfExtracting.java | 2 +-
.../brooklyn/util/mutex/SemaphoreForTasks.java | 4 +-
.../util/task/AbstractExecutionContext.java | 8 +-
.../util/task/BasicExecutionContext.java | 12 +-
.../util/task/BasicExecutionManager.java | 8 +-
.../main/java/brooklyn/util/task/BasicTask.java | 4 +-
.../java/brooklyn/util/task/CompoundTask.java | 6 +-
.../util/task/DynamicSequentialTask.java | 6 +-
.../java/brooklyn/util/task/DynamicTasks.java | 22 +-
.../brooklyn/util/task/ExecutionListener.java | 2 +-
.../java/brooklyn/util/task/ForwardingTask.java | 2 +-
.../java/brooklyn/util/task/ParallelTask.java | 2 +-
.../java/brooklyn/util/task/ScheduledTask.java | 2 +-
.../java/brooklyn/util/task/SequentialTask.java | 2 +-
.../util/task/SingleThreadedScheduler.java | 2 +-
.../java/brooklyn/util/task/TaskBuilder.java | 8 +-
.../java/brooklyn/util/task/TaskInternal.java | 4 +-
.../java/brooklyn/util/task/TaskScheduler.java | 2 +-
.../main/java/brooklyn/util/task/TaskTags.java | 4 +-
.../src/main/java/brooklyn/util/task/Tasks.java | 12 +-
.../java/brooklyn/util/task/ValueResolver.java | 6 +-
.../util/task/ssh/SshFetchTaskFactory.java | 2 +-
.../util/task/ssh/SshFetchTaskWrapper.java | 4 +-
.../util/task/ssh/SshPutTaskFactory.java | 2 +-
.../util/task/ssh/SshPutTaskWrapper.java | 4 +-
.../java/brooklyn/util/task/ssh/SshTasks.java | 10 +-
.../util/task/system/ProcessTaskFactory.java | 2 +-
.../util/task/system/ProcessTaskWrapper.java | 4 +-
.../brooklyn/util/text/TemplateProcessor.java | 2 +-
.../lite/CampPlatformWithJustBrooklynMgmt.java | 2 +-
.../brooklyn/camp/lite/CampYamlLiteTest.java | 2 +-
.../camp/lite/TestAppAssemblyInstantiator.java | 4 +-
.../catalog/internal/CatalogTestUtils.java | 4 +-
.../YamlRollingTimeWindowMeanEnricherTest.java | 2 +-
.../YamlTimeWeightedDeltaEnricherTest.java | 2 +-
.../entity/EffectorSayHiGroovyTest.groovy | 4 +-
.../java/brooklyn/entity/EffectorSayHiTest.java | 4 +-
.../entity/EntityPreManagementTest.java | 4 +-
.../entity/basic/BasicStartableTest.java | 2 +-
.../brooklyn/entity/basic/ConfigMapTest.java | 4 +-
.../brooklyn/entity/basic/DataEntityTest.java | 2 +-
.../basic/DependentConfigurationTest.java | 2 +-
.../brooklyn/entity/basic/EntityConfigTest.java | 2 +-
.../entity/basic/EntitySubscriptionTest.java | 2 +-
.../drivers/EntityDriverRegistryTest.java | 2 +-
.../entity/effector/EffectorBasicTest.java | 4 +-
.../effector/EffectorConcatenateTest.java | 4 +-
.../entity/effector/EffectorTaskTest.java | 4 +-
.../entity/group/DynamicClusterTest.java | 2 +-
...DynamicClusterWithAvailabilityZonesTest.java | 2 +-
.../entity/group/DynamicFabricTest.java | 2 +-
.../group/MembershipTrackingPolicyTest.java | 2 +-
.../entity/hello/LocalEntitiesTest.java | 4 +-
.../ApplicationBuilderOverridingTest.java | 2 +-
.../entity/proxying/EntityManagerTest.java | 2 +-
.../entity/proxying/EntityProxyTest.java | 4 +-
.../entity/rebind/RebindCatalogEntityTest.java | 4 +-
.../entity/rebind/RebindCatalogItemTest.java | 2 +-
.../entity/rebind/RebindEntityTest.java | 2 +-
.../entity/rebind/RebindFailuresTest.java | 4 +-
.../entity/rebind/RebindFeedWithHaTest.java | 4 +-
.../entity/rebind/RebindManagerSorterTest.java | 2 +-
.../entity/rebind/RebindManagerTest.java | 2 +-
.../brooklyn/entity/rebind/RebindOptions.java | 2 +-
.../entity/rebind/RebindTestFixture.java | 6 +-
.../brooklyn/entity/rebind/RebindTestUtils.java | 6 +-
.../BrooklynMementoPersisterFileBasedTest.java | 2 +-
...ntoPersisterInMemorySizeIntegrationTest.java | 2 +-
.../BrooklynMementoPersisterInMemoryTest.java | 2 +-
.../BrooklynMementoPersisterTestFixture.java | 2 +-
.../persister/FileBasedObjectStoreTest.java | 2 +-
.../rebind/persister/InMemoryObjectStore.java | 4 +-
.../rebind/persister/ListeningObjectStore.java | 4 +-
.../persister/XmlMementoSerializerTest.java | 2 +-
.../transformer/CompoundTransformerTest.java | 4 +-
.../entity/trait/FailingEntityImpl.java | 2 +-
.../entity/trait/StartableMethodsTest.java | 2 +-
.../access/PortForwardManagerRebindTest.java | 2 +-
.../location/basic/AbstractLocationTest.java | 2 +-
...stMachineProvisioningLocationRebindTest.java | 2 +-
.../location/basic/LocationConfigTest.java | 2 +-
.../location/basic/LocationExtensionsTest.java | 2 +-
.../location/basic/LocationManagementTest.java | 2 +-
.../location/basic/MachineDetailsTest.java | 4 +-
.../location/basic/MultiLocationRebindTest.java | 2 +-
.../SshMachineLocationIntegrationTest.java | 2 +-
.../location/basic/SshMachineLocationTest.java | 2 +-
.../entitlement/AcmeEntitlementManager.java | 6 +-
.../AcmeEntitlementManagerTestFixture.java | 2 +-
.../entitlement/EntitlementsTest.java | 4 +-
.../entitlement/EntityEntitlementTest.java | 2 +-
.../ha/HighAvailabilityManagerInMemoryTest.java | 2 +-
.../HighAvailabilityManagerSplitBrainTest.java | 10 +-
.../ha/HighAvailabilityManagerTestFixture.java | 10 +-
.../brooklyn/management/ha/HotStandbyTest.java | 6 +-
.../ha/ImmutableManagementPlaneSyncRecord.java | 4 +-
...agementPlaneSyncRecordPersisterInMemory.java | 6 +-
.../management/ha/MasterChooserTest.java | 4 +-
.../ha/MutableManagementPlaneSyncRecord.java | 4 +-
.../brooklyn/management/ha/WarmStandbyTest.java | 6 +-
.../internal/EntityExecutionManagerTest.java | 4 +-
.../internal/LocalManagementContextTest.java | 2 +-
.../internal/LocalSubscriptionManagerTest.java | 4 +-
.../osgi/OsgiVersionMoreEntityTest.java | 4 +-
.../policy/basic/PolicySubscriptionTest.java | 2 +-
.../qa/performance/AbstractPerformanceTest.java | 2 +-
.../qa/performance/EntityPerformanceTest.java | 2 +-
.../SubscriptionPerformanceTest.java | 2 +-
.../brooklyn/util/internal/FlagUtilsTest.java | 2 +-
.../util/ssh/BashCommandsIntegrationTest.java | 2 +-
.../task/BasicTaskExecutionPerformanceTest.java | 2 +-
.../util/task/BasicTaskExecutionTest.java | 2 +-
.../util/task/BasicTasksFutureTest.java | 2 +-
.../util/task/CompoundTaskExecutionTest.java | 2 +-
.../util/task/DynamicSequentialTaskTest.java | 4 +-
.../util/task/NonBasicTaskExecutionTest.java | 2 +-
.../util/task/ScheduledExecutionTest.java | 2 +-
.../util/task/TaskFinalizationTest.java | 2 +-
.../test/java/brooklyn/util/task/TasksTest.java | 4 +-
.../brooklyn/util/task/ValueResolverTest.java | 4 +-
.../brooklyn/util/task/ssh/SshTasksTest.java | 2 +-
.../util/task/system/SystemTasksTest.java | 2 +-
.../brooklyn/test/entity/TestApplication.java | 2 +-
.../test/entity/TestApplicationImpl.java | 2 +-
.../JcloudsBlobStoreBasedObjectStore.java | 4 +-
.../location/jclouds/BrooklynMachinePool.java | 2 +-
.../jclouds/JcloudsByonLocationResolver.java | 2 +-
.../location/jclouds/JcloudsLocation.java | 2 +-
.../jclouds/JcloudsLocationResolver.java | 2 +-
.../zone/AwsAvailabilityZoneExtension.java | 2 +-
.../persister/jclouds/BlobStoreExpiryTest.java | 2 +-
.../BlobStorePersistencePerformanceTest.java | 2 +-
.../rebind/persister/jclouds/BlobStoreTest.java | 2 +-
.../jclouds/JcloudsExpect100ContinueTest.java | 2 +-
.../JcloudsObjectStoreAccessorWriterTest.java | 2 +-
.../jclouds/BailOutJcloudsLocation.java | 2 +-
.../provider/AbstractJcloudsLocationTest.java | 2 +-
.../AwsEc2LocationWindowsLiveTest.groovy | 2 +-
.../entity/brooklyn/BrooklynMetricsImpl.java | 2 +-
.../policy/ha/AbstractFailureDetector.java | 2 +-
.../enricher/DeltaEnrichersTests.groovy | 2 +-
.../enricher/RollingMeanEnricherTest.groovy | 2 +-
.../RollingTimeWindowMeanEnricherTest.groovy | 2 +-
.../enricher/TimeFractionDeltaEnricherTest.java | 2 +-
.../AbstractFollowTheSunPolicyTest.java | 2 +-
.../ha/ConnectionFailureDetectorTest.java | 2 +-
...ServiceFailureDetectorStabilizationTest.java | 2 +-
.../policy/ha/ServiceFailureDetectorTest.java | 2 +-
.../brooklyn/policy/ha/ServiceReplacerTest.java | 2 +-
.../policy/ha/ServiceRestarterTest.java | 2 +-
.../SameServerDriverLifecycleEffectorTasks.java | 2 +-
.../entity/basic/SameServerEntityImpl.java | 2 +-
...wareProcessDriverLifecycleEffectorTasks.java | 2 +-
.../entity/basic/SoftwareProcessImpl.java | 2 +-
.../entity/basic/lifecycle/ScriptHelper.java | 6 +-
.../brooklynnode/BrooklynClusterImpl.java | 2 +-
.../entity/brooklynnode/BrooklynNode.java | 4 +-
.../entity/brooklynnode/BrooklynNodeImpl.java | 6 +-
.../BrooklynClusterUpgradeEffectorBody.java | 6 +-
.../BrooklynNodeUpgradeEffectorBody.java | 4 +-
.../effector/SelectMasterEffectorBody.java | 4 +-
.../SetHighAvailabilityModeEffectorBody.java | 4 +-
.../brooklyn/entity/chef/ChefAttributeFeed.java | 2 +-
.../brooklyn/entity/chef/ChefSoloDriver.java | 4 +-
.../brooklyn/entity/chef/ChefSoloTasks.java | 2 +-
.../java/brooklyn/entity/chef/ChefTasks.java | 4 +-
.../brooklyn/entity/pool/ServerPoolImpl.java | 4 +-
.../entity/pool/ServerPoolLocationResolver.java | 2 +-
.../entity/service/EntityLaunchListener.java | 4 +-
.../entity/service/InitdServiceInstaller.java | 2 +-
.../entity/service/SystemServiceEnricher.java | 4 +-
.../entity/service/SystemServiceInstaller.java | 2 +-
.../entity/software/MachineInitTasks.java | 2 +-
.../software/MachineLifecycleEffectorTasks.java | 2 +-
.../entity/software/SshEffectorTasks.java | 2 +-
.../brooklyn/entity/software/StaticSensor.java | 2 +-
.../software/java/JmxAttributeSensor.java | 2 +-
.../entity/AbstractGoogleComputeLiveTest.java | 2 +-
.../entity/AbstractSoftlayerLiveTest.java | 2 +-
.../entity/basic/SameServerEntityTest.java | 2 +-
.../basic/SoftwareProcessEntityLatchTest.java | 2 +-
.../basic/SoftwareProcessEntityRebindTest.java | 2 +-
.../entity/basic/SoftwareProcessEntityTest.java | 6 +-
.../basic/lifecycle/NaiveScriptRunnerTest.java | 2 +-
.../brooklynnode/SelectMasterEffectorTest.java | 2 +-
.../entity/chef/ChefLiveTestSupport.java | 2 +-
.../chef/ChefServerTasksIntegrationTest.java | 2 +-
.../mysql/ChefSoloDriverToyMySqlEntity.java | 4 +-
.../entity/pool/AbstractServerPoolTest.java | 2 +-
.../entity/pool/ServerPoolLiveTest.java | 2 +-
.../entity/pool/ServerPoolRebindTest.java | 2 +-
.../entity/software/AbstractDockerLiveTest.java | 2 +-
.../MachineLifecycleEffectorTasksTest.java | 2 +-
.../entity/software/SoftwareEffectorTest.java | 4 +-
.../entity/software/SshEffectorTasksTest.java | 6 +-
.../mariadb/MariaDbIntegrationTest.java | 2 +-
.../postgresql/PostgreSqlIntegrationTest.java | 2 +-
.../rubyrep/RubyRepIntegrationTest.java | 2 +-
.../nosql/cassandra/CassandraNodeSshDriver.java | 2 +-
.../nosql/couchbase/CouchbaseNodeSshDriver.java | 2 +-
.../entity/proxy/AbstractControllerImpl.java | 2 +-
.../entity/proxy/nginx/NginxControllerImpl.java | 2 +-
.../entity/proxy/nginx/NginxSshDriver.java | 2 +-
.../entity/proxy/nginx/UrlMappingImpl.java | 2 +-
.../ControlledDynamicWebAppClusterImpl.java | 2 +-
.../entity/webapp/DynamicWebAppClusterImpl.java | 4 +-
.../entity/dns/AbstractGeoDnsServiceTest.java | 2 +-
.../geoscaling/GeoscalingIntegrationTest.java | 2 +-
.../nginx/NginxClusterIntegrationTest.java | 2 +-
.../proxy/nginx/NginxRebindIntegrationTest.java | 2 +-
.../nginx/NginxRebindWithHaIntegrationTest.java | 4 +-
.../nginx/NginxUrlMappingIntegrationTest.java | 2 +-
.../proxy/nginx/NginxWebClusterEc2LiveTest.java | 2 +-
.../AbstractWebAppFixtureIntegrationTest.java | 6 +-
.../webapp/TomcatAutoScalerPolicyTest.java | 2 +-
.../webapp/WebAppConcurrentDeployTest.java | 2 +-
.../NodeJsWebAppFixtureIntegrationTest.java | 2 +-
.../app/SampleLocalhostIntegrationTest.java | 2 +-
.../brooklyn/sample/app/SampleUnitTest.java | 2 +-
.../camp/brooklyn/BrooklynCampPlatform.java | 4 +-
.../BrooklynCampPlatformLauncherAbstract.java | 2 +-
.../camp/brooklyn/YamlLauncherAbstract.java | 4 +-
.../BrooklynAssemblyTemplateInstantiator.java | 4 +-
.../BrooklynComponentTemplateResolver.java | 4 +-
.../BrooklynEntityDecorationResolver.java | 2 +-
.../spi/creation/BrooklynEntityMatcher.java | 4 +-
.../creation/BrooklynYamlLocationResolver.java | 2 +-
.../creation/BrooklynYamlTypeInstantiator.java | 2 +-
.../spi/dsl/BrooklynDslDeferredSupplier.java | 4 +-
.../spi/dsl/methods/BrooklynDslCommon.java | 6 +-
.../brooklyn/spi/dsl/methods/DslComponent.java | 2 +-
.../lookup/AbstractBrooklynResourceLookup.java | 2 +-
.../lookup/AbstractTemplateBrooklynLookup.java | 2 +-
.../spi/lookup/AssemblyBrooklynLookup.java | 2 +-
.../lookup/AssemblyTemplateBrooklynLookup.java | 2 +-
.../brooklyn/spi/lookup/BrooklynUrlLookup.java | 2 +-
.../lookup/PlatformComponentBrooklynLookup.java | 2 +-
...PlatformComponentTemplateBrooklynLookup.java | 2 +-
.../platform/BrooklynImmutableCampPlatform.java | 2 +-
.../camp/brooklyn/AbstractYamlRebindTest.java | 4 +-
.../camp/brooklyn/AbstractYamlTest.java | 4 +-
.../BrooklynYamlTypeInstantiatorTest.java | 2 +-
.../camp/brooklyn/DslAndRebindYamlTest.java | 2 +-
.../camp/brooklyn/EntitiesYamlTest.java | 2 +-
...aWebAppWithDslYamlRebindIntegrationTest.java | 4 +-
.../brooklyn/JavaWebAppsIntegrationTest.java | 4 +-
.../camp/brooklyn/JavaWebAppsMatchingTest.java | 2 +-
.../brooklyn/camp/brooklyn/ObjectsYamlTest.java | 4 +-
.../brooklyn/ReloadBrooklynPropertiesTest.java | 2 +-
.../brooklyn/VanillaBashNetcatYamlTest.java | 2 +-
.../main/java/org/apache/brooklyn/cli/Main.java | 6 +-
.../BrooklynJavascriptGuiLauncherTest.java | 2 +-
.../brooklyn/launcher/BrooklynLauncher.java | 12 +-
.../launcher/BrooklynServerDetails.java | 2 +-
.../brooklyn/launcher/BrooklynWebServer.java | 2 +-
.../camp/BrooklynCampPlatformLauncher.java | 2 +-
.../BrooklynEntityMirrorIntegrationTest.java | 4 +-
.../brooklynnode/BrooklynNodeRestTest.java | 2 +-
.../BrooklynLauncherHighAvailabilityTest.java | 6 +-
.../BrooklynLauncherRebindTestFixture.java | 4 +-
.../BrooklynLauncherRebindTestToFiles.java | 4 +-
...lynLauncherRebindToCloudObjectStoreTest.java | 2 +-
.../brooklyn/launcher/BrooklynLauncherTest.java | 2 +-
.../launcher/SimpleYamlLauncherForTests.java | 2 +-
.../blueprints/AbstractBlueprintTest.java | 2 +-
.../SoftlayerObtainPrivateLiveTest.java | 2 +-
.../org/apache/brooklyn/qa/load/LoadTest.java | 4 +-
.../org/apache/brooklyn/rest/api/ServerApi.java | 4 +-
.../ApplicationResourceIntegrationTest.java | 2 +-
.../rest/client/BrooklynApiRestClientTest.java | 2 +-
.../BrooklynPropertiesSecurityFilter.java | 2 +-
.../rest/filter/HaHotCheckResourceFilter.java | 4 +-
.../rest/filter/HaMasterCheckFilter.java | 4 +-
.../resources/AbstractBrooklynRestResource.java | 2 +-
.../rest/resources/ActivityResource.java | 4 +-
.../rest/resources/ApplicationResource.java | 2 +-
.../rest/resources/EffectorResource.java | 2 +-
.../brooklyn/rest/resources/EntityResource.java | 2 +-
.../brooklyn/rest/resources/ServerResource.java | 16 +-
...nUserWithRandomPasswordSecurityProvider.java | 2 +-
.../provider/DelegatingSecurityProvider.java | 2 +-
.../provider/ExplicitUsersSecurityProvider.java | 2 +-
.../security/provider/LdapSecurityProvider.java | 2 +-
.../transform/HighAvailabilityTransformer.java | 4 +-
.../rest/transform/LocationTransformer.java | 2 +-
.../rest/transform/TaskTransformer.java | 4 +-
.../rest/util/BrooklynRestResourceUtils.java | 4 +-
.../brooklyn/rest/util/EntityLocationUtils.java | 2 +-
.../rest/util/ManagementContextProvider.java | 2 +-
.../rest/util/json/BidiSerialization.java | 2 +-
.../util/json/BrooklynJacksonJsonProvider.java | 2 +-
.../brooklynnode/DeployBlueprintTest.java | 2 +-
.../brooklyn/rest/BrooklynRestApiLauncher.java | 2 +-
.../BrooklynRestApiLauncherTestFixture.java | 2 +-
.../apache/brooklyn/rest/HaHotCheckTest.java | 6 +-
.../brooklyn/rest/HaMasterCheckFilterTest.java | 8 +-
.../brooklyn/rest/domain/ApplicationTest.java | 2 +-
.../brooklyn/rest/domain/SensorSummaryTest.java | 2 +-
.../rest/resources/ScriptResourceTest.java | 2 +-
.../SensorResourceIntegrationTest.java | 2 +-
.../ServerResourceIntegrationTest.java | 2 +-
.../rest/resources/ServerResourceTest.java | 2 +-
.../rest/resources/ServerShutdownTest.java | 4 +-
.../rest/testing/BrooklynRestApiTest.java | 2 +-
.../json/BrooklynJacksonSerializerTest.java | 2 +-
.../apache/brooklyn/test/EntityTestUtils.java | 2 +-
506 files changed, 2599 insertions(+), 2599 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/brooklyn/location/LocationDefinition.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/location/LocationDefinition.java b/api/src/main/java/brooklyn/location/LocationDefinition.java
index 44296e4..3a20a24 100644
--- a/api/src/main/java/brooklyn/location/LocationDefinition.java
+++ b/api/src/main/java/brooklyn/location/LocationDefinition.java
@@ -20,7 +20,7 @@ package brooklyn.location;
import java.util.Map;
-import org.apache.brooklyn.management.ManagementContext;
+import org.apache.brooklyn.api.management.ManagementContext;
/**
* Defines a location, where the {@link #getSpec()} is like a serialized representation
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/brooklyn/location/LocationResolver.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/location/LocationResolver.java b/api/src/main/java/brooklyn/location/LocationResolver.java
index 908936c..bcd32b6 100644
--- a/api/src/main/java/brooklyn/location/LocationResolver.java
+++ b/api/src/main/java/brooklyn/location/LocationResolver.java
@@ -20,7 +20,7 @@ package brooklyn.location;
import java.util.Map;
-import org.apache.brooklyn.management.ManagementContext;
+import org.apache.brooklyn.api.management.ManagementContext;
import com.google.common.annotations.Beta;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/brooklyn/location/LocationSpec.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/location/LocationSpec.java b/api/src/main/java/brooklyn/location/LocationSpec.java
index d13b7d1..d91ca93 100644
--- a/api/src/main/java/brooklyn/location/LocationSpec.java
+++ b/api/src/main/java/brooklyn/location/LocationSpec.java
@@ -24,7 +24,7 @@ import java.util.Collections;
import java.util.Map;
import org.apache.brooklyn.api.basic.AbstractBrooklynObjectSpec;
-import org.apache.brooklyn.management.Task;
+import org.apache.brooklyn.api.management.Task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/entity/Application.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/entity/Application.java b/api/src/main/java/org/apache/brooklyn/api/entity/Application.java
index 21e0800..af71cf3 100644
--- a/api/src/main/java/org/apache/brooklyn/api/entity/Application.java
+++ b/api/src/main/java/org/apache/brooklyn/api/entity/Application.java
@@ -18,7 +18,7 @@
*/
package org.apache.brooklyn.api.entity;
-import org.apache.brooklyn.management.ManagementContext;
+import org.apache.brooklyn.api.management.ManagementContext;
/**
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/entity/Entity.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/entity/Entity.java b/api/src/main/java/org/apache/brooklyn/api/entity/Entity.java
index 29a69f1..5f1b1aa 100644
--- a/api/src/main/java/org/apache/brooklyn/api/entity/Entity.java
+++ b/api/src/main/java/org/apache/brooklyn/api/entity/Entity.java
@@ -26,7 +26,7 @@ import javax.annotation.Nullable;
import org.apache.brooklyn.api.basic.BrooklynObject;
import org.apache.brooklyn.api.entity.proxying.EntitySpec;
import org.apache.brooklyn.api.event.AttributeSensor;
-import org.apache.brooklyn.management.Task;
+import org.apache.brooklyn.api.management.Task;
import org.apache.brooklyn.policy.Enricher;
import org.apache.brooklyn.policy.EnricherSpec;
import org.apache.brooklyn.policy.Policy;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/entity/basic/EntityLocal.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/entity/basic/EntityLocal.java b/api/src/main/java/org/apache/brooklyn/api/entity/basic/EntityLocal.java
index db0c813..f16d867 100644
--- a/api/src/main/java/org/apache/brooklyn/api/entity/basic/EntityLocal.java
+++ b/api/src/main/java/org/apache/brooklyn/api/entity/basic/EntityLocal.java
@@ -27,10 +27,10 @@ import org.apache.brooklyn.api.event.AttributeSensor;
import org.apache.brooklyn.api.event.Sensor;
import org.apache.brooklyn.api.event.SensorEvent;
import org.apache.brooklyn.api.event.SensorEventListener;
-import org.apache.brooklyn.management.SubscriptionContext;
-import org.apache.brooklyn.management.SubscriptionHandle;
-import org.apache.brooklyn.management.SubscriptionManager;
-import org.apache.brooklyn.management.Task;
+import org.apache.brooklyn.api.management.SubscriptionContext;
+import org.apache.brooklyn.api.management.SubscriptionHandle;
+import org.apache.brooklyn.api.management.SubscriptionManager;
+import org.apache.brooklyn.api.management.Task;
import brooklyn.config.ConfigKey;
import brooklyn.config.ConfigKey.HasConfigKey;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/entity/proxying/EntitySpec.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/entity/proxying/EntitySpec.java b/api/src/main/java/org/apache/brooklyn/api/entity/proxying/EntitySpec.java
index 0d10956..b55a2d1 100644
--- a/api/src/main/java/org/apache/brooklyn/api/entity/proxying/EntitySpec.java
+++ b/api/src/main/java/org/apache/brooklyn/api/entity/proxying/EntitySpec.java
@@ -30,7 +30,7 @@ import javax.annotation.Nullable;
import org.apache.brooklyn.api.basic.AbstractBrooklynObjectSpec;
import org.apache.brooklyn.api.entity.Entity;
import org.apache.brooklyn.api.entity.Group;
-import org.apache.brooklyn.management.Task;
+import org.apache.brooklyn.api.management.Task;
import org.apache.brooklyn.policy.Enricher;
import org.apache.brooklyn.policy.EnricherSpec;
import org.apache.brooklyn.policy.Policy;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/entity/rebind/RebindManager.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/entity/rebind/RebindManager.java b/api/src/main/java/org/apache/brooklyn/api/entity/rebind/RebindManager.java
index 891a6e0..577fb58 100644
--- a/api/src/main/java/org/apache/brooklyn/api/entity/rebind/RebindManager.java
+++ b/api/src/main/java/org/apache/brooklyn/api/entity/rebind/RebindManager.java
@@ -25,7 +25,7 @@ import java.util.concurrent.TimeoutException;
import javax.annotation.Nullable;
import org.apache.brooklyn.api.entity.Application;
-import org.apache.brooklyn.management.ha.ManagementNodeState;
+import org.apache.brooklyn.api.management.ha.ManagementNodeState;
import org.apache.brooklyn.mementos.BrooklynMementoPersister;
import org.apache.brooklyn.mementos.BrooklynMementoRawData;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/entity/trait/Configurable.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/entity/trait/Configurable.java b/api/src/main/java/org/apache/brooklyn/api/entity/trait/Configurable.java
index aebb657..9a7680f 100644
--- a/api/src/main/java/org/apache/brooklyn/api/entity/trait/Configurable.java
+++ b/api/src/main/java/org/apache/brooklyn/api/entity/trait/Configurable.java
@@ -18,7 +18,7 @@
*/
package org.apache.brooklyn.api.entity.trait;
-import org.apache.brooklyn.management.Task;
+import org.apache.brooklyn.api.management.Task;
import brooklyn.config.ConfigKey;
import brooklyn.config.ConfigKey.HasConfigKey;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/management/AccessController.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/management/AccessController.java b/api/src/main/java/org/apache/brooklyn/api/management/AccessController.java
new file mode 100644
index 0000000..1342d3b
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/management/AccessController.java
@@ -0,0 +1,66 @@
+/*
+ * 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.api.management;
+
+import org.apache.brooklyn.api.entity.Entity;
+
+import brooklyn.location.Location;
+
+import com.google.common.annotations.Beta;
+
+@Beta
+public interface AccessController {
+
+ // TODO Expect this class' methods to change, e.g. including the user doing the
+ // provisioning or the provisioning parameters such as jurisdiction
+
+ public static class Response {
+ private static final Response ALLOWED = new Response(true, "");
+
+ public static Response allowed() {
+ return ALLOWED;
+ }
+
+ public static Response disallowed(String msg) {
+ return new Response(false, msg);
+ }
+
+ private final boolean allowed;
+ private final String msg;
+
+ private Response(boolean allowed, String msg) {
+ this.allowed = allowed;
+ this.msg = msg;
+ }
+
+ public boolean isAllowed() {
+ return allowed;
+ }
+
+ public String getMsg() {
+ return msg;
+ }
+ }
+
+ public Response canProvisionLocation(Location provisioner);
+
+ public Response canManageLocation(Location loc);
+
+ public Response canManageEntity(Entity entity);
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/management/EntityManager.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/management/EntityManager.java b/api/src/main/java/org/apache/brooklyn/api/management/EntityManager.java
new file mode 100644
index 0000000..4120587
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/management/EntityManager.java
@@ -0,0 +1,126 @@
+/*
+ * 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.api.management;
+
+import java.util.Collection;
+import java.util.Map;
+
+import javax.annotation.Nullable;
+
+import org.apache.brooklyn.api.entity.Application;
+import org.apache.brooklyn.api.entity.Entity;
+import org.apache.brooklyn.api.entity.proxying.EntitySpec;
+import org.apache.brooklyn.api.entity.proxying.EntityTypeRegistry;
+import org.apache.brooklyn.policy.Enricher;
+import org.apache.brooklyn.policy.EnricherSpec;
+import org.apache.brooklyn.policy.Policy;
+import org.apache.brooklyn.policy.PolicySpec;
+
+import com.google.common.base.Predicate;
+
+/**
+ * For managing and querying entities.
+ */
+public interface EntityManager {
+
+ /**
+ * Returns the type registry, used to identify the entity implementation when instantiating an
+ * entity of a given type.
+ *
+ * @see EntityManager.createEntity(EntitySpec)
+ */
+ EntityTypeRegistry getEntityTypeRegistry();
+
+ /**
+ * Creates a new (unmanaged) entity.
+ *
+ * @param spec
+ * @return A proxy to the created entity (rather than the actual entity itself).
+ */
+ <T extends Entity> T createEntity(EntitySpec<T> spec);
+
+ /**
+ * Convenience (particularly for groovy code) to create an entity.
+ * Equivalent to {@code createEntity(EntitySpec.create(type).configure(config))}
+ *
+ * @see createEntity(EntitySpec)
+ */
+ <T extends Entity> T createEntity(Map<?,?> config, Class<T> type);
+
+ /**
+ * Creates a new policy (not managed; not associated with any entity).
+ *
+ * @param spec
+ */
+ <T extends Policy> T createPolicy(PolicySpec<T> spec);
+
+ /**
+ * Creates a new enricher (not managed; not associated with any entity).
+ *
+ * @param spec
+ */
+ <T extends Enricher> T createEnricher(EnricherSpec<T> spec);
+
+ /**
+ * All entities under control of this management plane
+ */
+ Collection<Entity> getEntities();
+
+ /**
+ * All entities managed as part of the given application
+ */
+ Collection<Entity> getEntitiesInApplication(Application application);
+
+ /**
+ * All entities under control of this management plane that match the given filter
+ */
+ Collection<Entity> findEntities(Predicate<? super Entity> filter);
+
+ /**
+ * All entities managed as part of the given application that match the given filter
+ */
+ Collection<Entity> findEntitiesInApplication(Application application, Predicate<? super Entity> filter);
+
+ /**
+ * Returns the entity with the given identifier (may be a full instance, or a proxy to one which is remote),
+ * or null.
+ */
+ @Nullable Entity getEntity(String id);
+
+ /** whether the entity is under management by this management context */
+ boolean isManaged(Entity entity);
+
+ /**
+ * Begins management for the given entity and its children, recursively.
+ *
+ * depending on the implementation of the management context,
+ * this might push it out to one or more remote management nodes.
+ * Manage an entity.
+ */
+ // TODO manage and unmanage without arguments should be changed to take an explicit ManagementTransitionMode
+ // (but that class is not currently in the API project)
+ void manage(Entity e);
+
+ /**
+ * Causes the given entity and its children, recursively, to be removed from the management plane
+ * (for instance because the entity is no longer relevant)
+ */
+ void unmanage(Entity e);
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/management/ExecutionContext.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/management/ExecutionContext.java b/api/src/main/java/org/apache/brooklyn/api/management/ExecutionContext.java
new file mode 100644
index 0000000..0adb149
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/management/ExecutionContext.java
@@ -0,0 +1,67 @@
+/*
+ * 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.api.management;
+
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Executor;
+
+import org.apache.brooklyn.api.entity.Entity;
+
+/**
+ * This is a Brooklyn extension to the Java {@link Executor}.
+ *
+ * The "context" could, for example, be an {@link Entity} so that tasks executed
+ * can be annotated as executing in that context.
+ */
+public interface ExecutionContext extends Executor {
+
+ /**
+ * Get the tasks executed through this context (returning an immutable set).
+ */
+ Set<Task<?>> getTasks();
+
+ /**
+ * See {@link ExecutionManager#submit(Map, TaskAdaptable)} for properties that can be passed in.
+ */
+ Task<?> submit(Map<?,?> properties, Runnable runnable);
+
+ /**
+ * See {@link ExecutionManager#submit(Map, TaskAdaptable)} for properties that can be passed in.
+ */
+ <T> Task<T> submit(Map<?,?> properties, Callable<T> callable);
+
+ /** {@link ExecutionManager#submit(Runnable) */
+ Task<?> submit(Runnable runnable);
+
+ /** {@link ExecutionManager#submit(Callable) */
+ <T> Task<T> submit(Callable<T> callable);
+
+ /** See {@link ExecutionManager#submit(Map, TaskAdaptable)}. */
+ <T> Task<T> submit(TaskAdaptable<T> task);
+
+ /**
+ * See {@link ExecutionManager#submit(Map, TaskAdaptable)} for properties that can be passed in.
+ */
+ <T> Task<T> submit(Map<?,?> properties, TaskAdaptable<T> task);
+
+ boolean isShutdown();
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/management/ExecutionManager.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/management/ExecutionManager.java b/api/src/main/java/org/apache/brooklyn/api/management/ExecutionManager.java
new file mode 100644
index 0000000..3e192d2
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/management/ExecutionManager.java
@@ -0,0 +1,117 @@
+/*
+ * 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.api.management;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+
+import org.apache.brooklyn.api.entity.Entity;
+
+/**
+ * This class manages the execution of a number of jobs with tags.
+ *
+ * It is like an executor service (and it ends up delegating to one) but adds additional support
+ * where jobs can be:
+ * <ul>
+ * <li>Tracked with tags/buckets
+ * <li>Be {@link Runnable}s, {@link Callable}s, or {@link groovy.lang.Closure}s
+ * <li>Remembered after completion
+ * <li>Treated as {@link Task} instances (see below)
+ * <li>Given powerful synchronization capabilities
+ * </ul>
+ * <p>
+ * The advantage of treating them as {@link Task} instances include:
+ * <ul>
+ * <li>Richer status information
+ * <li>Started-by, contained-by relationships automatically remembered
+ * <li>Runtime metadata (start, stop, etc)
+ * <li>Grid and multi-machine support)
+ * </ul>
+ * <p>
+ * For usage instructions see {@link #submit(Map, TaskAdaptable)}, and for examples see the various
+ * {@code ExecutionTest} and {@code TaskTest} instances.
+ * <p>
+ * It has been developed for multi-location provisioning and management to track work being
+ * done by each {@link Entity}.
+ * <p>
+ * Note the use of the environment variable {@code THREAD_POOL_SIZE} which is used to size
+ * the {@link ExecutorService} thread pool. The default is calculated as twice the number
+ * of CPUs in the system plus two, giving 10 for a four core system, 18 for an eight CPU
+ * server and so on.
+ */
+public interface ExecutionManager {
+ public boolean isShutdown();
+
+ /** returns the task with the given ID, or null if none */
+ public Task<?> getTask(String id);
+
+ /** returns all tasks with the given tag (immutable) */
+ public Set<Task<?>> getTasksWithTag(Object tag);
+
+ /** returns all tasks that have any of the given tags (immutable) */
+ public Set<Task<?>> getTasksWithAnyTag(Iterable<?> tags);
+
+ /** returns all tasks that have all of the given tags (immutable) */
+ public Set<Task<?>> getTasksWithAllTags(Iterable<?> tags);
+
+ /** returns all tags known to this manager (immutable) */
+ public Set<Object> getTaskTags();
+
+// /** returns all tasks known to this manager (immutable) */
+// public Set<Task<?>> getAllTasks();
+
+ /** see {@link #submit(Map, TaskAdaptable)} */
+ public Task<?> submit(Runnable r);
+
+ /** see {@link #submit(Map, TaskAdaptable)} */
+ public <T> Task<T> submit(Callable<T> c);
+
+ /** see {@link #submit(Map, TaskAdaptable)} */
+ public <T> Task<T> submit(TaskAdaptable<T> task);
+
+ /** see {@link #submit(Map, TaskAdaptable)} */
+ public Task<?> submit(Map<?, ?> flags, Runnable r);
+
+ /** see {@link #submit(Map, TaskAdaptable)} */
+ public <T> Task<T> submit(Map<?, ?> flags, Callable<T> c);
+
+ /**
+ * Submits the given {@link Task} for execution in the context associated with this manager.
+ *
+ * The following optional flags supported (in the optional map first arg):
+ * <ul>
+ * <li><em>tag</em> - A single object to be used as a tag for looking up the task
+ * <li><em>tags</em> - A {@link Collection} of object tags each of which the task should be associated,
+ * used for associating with contexts, mutex execution, and other purposes
+ * <li><em>synchId</em> - A string, or {@link Collection} of strings, representing a category on which an object should own a synch lock
+ * <li><em>synchObj</em> - A string, or {@link Collection} of strings, representing a category on which an object should own a synch lock
+ * <li><em>newTaskStartCallback</em> - A {@link groovy.lang.Closure} that will be invoked just before the task starts if it starts as a result of this call
+ * <li><em>newTaskEndCallback</em> - A {@link groovy.lang.Closure} that will be invoked when the task completes if it starts as a result of this call
+ * </ul>
+ * Callbacks run in the task's thread, and if the callback is a {@link groovy.lang.Closure} it is passed the task for convenience. The closure can be any of the
+ * following types; either a {@link groovy.lang.Closure}, {@link Runnable} or {@link Callable}.
+ * <p>
+ * If a Map is supplied it must be modifiable (currently; may allow immutable maps in future).
+ */
+ public <T> Task<T> submit(Map<?, ?> flags, TaskAdaptable<T> task);
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/management/HasTaskChildren.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/management/HasTaskChildren.java b/api/src/main/java/org/apache/brooklyn/api/management/HasTaskChildren.java
new file mode 100644
index 0000000..33e890e
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/management/HasTaskChildren.java
@@ -0,0 +1,39 @@
+/*
+ * 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.api.management;
+
+import com.google.common.annotations.Beta;
+
+/**
+ * Interface marks tasks which have explicit children,
+ * typically where the task defines the ordering of running those children tasks
+ * <p>
+ * The {@link Task#getSubmittedByTask()} on the child will typically return the parent,
+ * but note there are other means of submitting tasks (e.g. background, in the same {@link ExecutionContext}),
+ * where the submitter has no API reference to the submitted tasks.
+ * <p>
+ * In general the children mechanism is preferred as it is easier to navigate
+ * (otherwise you have to scan the {@link ExecutionContext} to find tasks submitted by a task).
+ */
+@Beta // in 0.6.0
+public interface HasTaskChildren {
+
+ public Iterable<Task<?>> getChildren();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/management/LocationManager.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/management/LocationManager.java b/api/src/main/java/org/apache/brooklyn/api/management/LocationManager.java
new file mode 100644
index 0000000..a6fed43
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/management/LocationManager.java
@@ -0,0 +1,87 @@
+/*
+ * 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.api.management;
+
+import java.util.Collection;
+import java.util.Map;
+
+import brooklyn.location.Location;
+import brooklyn.location.LocationSpec;
+
+/**
+ * For managing and querying entities.
+ */
+public interface LocationManager {
+
+ /**
+ * Creates a new location, which is tracked by the management context.
+ *
+ * @param spec
+ */
+ <T extends Location> T createLocation(LocationSpec<T> spec);
+
+ /**
+ * Convenience (particularly for groovy code) to create a location.
+ * Equivalent to {@code createLocation(LocationSpec.create(type).configure(config))}
+ *
+ * @see #createLocation(LocationSpec)
+ */
+ <T extends Location> T createLocation(Map<?,?> config, Class<T> type);
+
+ /**
+ * All locations under control of this management plane.
+ *
+ * This returns a snapshot of the current locations; it will not reflect future changes in the locations.
+ * If no locations are found, the collection will be empty (i.e. null is never returned).
+ */
+ Collection<Location> getLocations();
+
+ /**
+ * Returns the location under management (e.g. in use) with the given identifier
+ * (e.g. random string; and different to the LocationDefinition id).
+ * May return a full instance, or a proxy to one which is remote.
+ * If no location found with that id, returns null.
+ */
+ Location getLocation(String id);
+
+ /** whether the location is under management by this management context */
+ boolean isManaged(Location loc);
+
+ /**
+ * Begins management for the given location and its children, recursively.
+ *
+ * depending on the implementation of the management context,
+ * this might push it out to one or more remote management nodes.
+ * Manage a location.
+ *
+ * @since 0.6.0 (added only for backwards compatibility, where locations are being created directly).
+ * @deprecated in 0.6.0; use {@link #createLocation(LocationSpec)} instead.
+ */
+ Location manage(Location loc);
+
+ /**
+ * Causes the given location and its children, recursively, to be removed from the management plane
+ * (for instance because the location is no longer relevant).
+ *
+ * If the given location is not managed (e.g. it has already been unmanaged) then this is a no-op
+ * (though it may be logged so duplicate calls are best avoided).
+ */
+ void unmanage(Location loc);
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/management/ManagementContext.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/management/ManagementContext.java b/api/src/main/java/org/apache/brooklyn/api/management/ManagementContext.java
new file mode 100644
index 0000000..404aa56
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/management/ManagementContext.java
@@ -0,0 +1,255 @@
+/*
+ * 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.api.management;
+
+import java.io.Serializable;
+import java.net.URI;
+import java.util.Collection;
+
+import org.apache.brooklyn.api.basic.BrooklynObject;
+import org.apache.brooklyn.api.catalog.BrooklynCatalog;
+import org.apache.brooklyn.api.entity.Application;
+import org.apache.brooklyn.api.entity.Entity;
+import org.apache.brooklyn.api.entity.drivers.DriverDependentEntity;
+import org.apache.brooklyn.api.entity.drivers.EntityDriverManager;
+import org.apache.brooklyn.api.entity.drivers.downloads.DownloadResolverManager;
+import org.apache.brooklyn.api.entity.rebind.RebindManager;
+import org.apache.brooklyn.api.management.entitlement.EntitlementManager;
+import org.apache.brooklyn.api.management.ha.HighAvailabilityManager;
+
+import brooklyn.config.StringConfigMap;
+import brooklyn.location.LocationRegistry;
+import brooklyn.util.guava.Maybe;
+
+import com.google.common.annotations.Beta;
+
+/**
+ * This is the entry point for accessing and interacting with a realm of applications and their entities in Brooklyn.
+ *
+ * For example, policies and the management console(s) (web-app, etc) can use this to interact with entities;
+ * policies, web-app, and entities share the realm for subscribing to events, executing tasks, and generally co-existing.
+ * <p>
+ * It may refer to several applications, and it refers to all the entities descended from those applications.
+ */
+public interface ManagementContext {
+
+ // TODO Consider separating out into a ConfigManager for methods like:
+ // - getConfig()
+ // - reloadBrooklynProperties();
+ // - addPropertiesReloadListener
+ // - removePropertiesReloadListener
+ // - interface PropertiesReloadListener
+
+ /**
+ * UID for the Brooklyn management plane which this {@link ManagementContext} node is a part of.
+ * <p>
+ * Each Brooklyn entity is actively managed by a unique management plane
+ * whose ID which should not normally change for the duration of that entity,
+ * even though the nodes in that plane might, and the plane may go down and come back up.
+ * In other words the value of {@link Application#getManagementContext()#getManagementPlaneId()}
+ * will generally be constant (in contrast to {@link #getManagementNodeId()}).
+ * <p>
+ * This value should not be null unless the management context is a non-functional
+ * (non-deployment) instance. */
+ String getManagementPlaneId();
+
+ /**
+ * UID for this {@link ManagementContext} node (as part of a single management plane).
+ * <p>
+ * No two instances of {@link ManagementContext} should ever have the same node UID.
+ * The value of {@link Application#getManagementContext()#getManagementNodeId()} may
+ * change many times (in contrast to {@link #getManagementPlaneId()}).
+ * <p>
+ * This value should not be null unless the management context is a non-functional
+ * (non-deployment) instance. */
+ String getManagementNodeId();
+
+ /**
+ * The URI that this management node's REST API is available at, or absent if the node's
+ * API is unavailable.
+ */
+ Maybe<URI> getManagementNodeUri();
+
+ /**
+ * All applications under control of this management plane
+ */
+ Collection<Application> getApplications();
+
+ /**
+ * Returns the {@link EntityManager} instance for managing/querying entities.
+ */
+ EntityManager getEntityManager();
+
+ /**
+ * Returns the {@link ExecutionManager} instance for entities and users in this management realm
+ * to submit tasks and to observe what tasks are occurring
+ */
+ ExecutionManager getExecutionManager();
+
+ /**
+ * Returns an {@link ExecutionContext} within the {@link ExecutionManager} for tasks
+ * associated to the Brooklyn node's operation (not any entities).
+ **/
+ ExecutionContext getServerExecutionContext();
+
+ /**
+ * Returns the {@link EntityDriverManager} entities can use to create drivers. This
+ * manager can also be used to programmatically customize which driver type to use
+ * for entities in different locations.
+ *
+ * The default strategy for choosing a driver is to use a naming convention:
+ * {@link DriverDependentEntity#getDriverInterface()} returns the interface that the
+ * driver must implement; its name should end in "Driver". For example, this suffix is
+ * replaced with "SshDriver" for SshMachineLocation, for example.
+ */
+ EntityDriverManager getEntityDriverManager();
+
+ /**
+ * Returns the {@link DownloadResolverManager} for resolving things like which URL to download an installer from.
+ *
+ * The default {@link DownloadResolverManager} will retrieve {@code entity.getAttribute(Attributes.DOWNLOAD_URL)},
+ * and substitute things like "${version}" etc.
+ *
+ * However, additional resolvers can be registered to customize this behaviour (e.g. to always go to an
+ * enterprise's repository).
+ */
+ DownloadResolverManager getEntityDownloadsManager();
+
+ /**
+ * Returns the {@link SubscriptionManager} instance for entities and users of this management realm
+ * to subscribe to sensor events (and, in the case of entities, to emit sensor events)
+ */
+ SubscriptionManager getSubscriptionManager();
+
+ //TODO (Alex) I'm not sure the following two getXxxContext methods are needed on the interface;
+ //I expect they will only be called once, in AbstractEntity, and fully capable
+ //there of generating the respective contexts from the managers
+ //(Litmus test will be whether there is anything in FederatedManagementContext
+ //which requires a custom FederatedExecutionContext -- or whether BasicEC
+ //works with FederatedExecutionManager)
+ /**
+ * Returns an {@link ExecutionContext} instance representing tasks
+ * (from the {@link ExecutionManager}) associated with this entity, and capable
+ * of conveniently running such tasks which will be associated with that entity
+ */
+ ExecutionContext getExecutionContext(Entity entity);
+
+ /**
+ * Returns a {@link SubscriptionContext} instance representing subscriptions
+ * (from the {@link SubscriptionManager}) associated with this entity, and capable
+ * of conveniently subscribing on behalf of that entity
+ */
+ SubscriptionContext getSubscriptionContext(Entity entity);
+
+ @Beta // method may move to an internal interface; brooklyn users should not need to call this directly
+ RebindManager getRebindManager();
+
+ /**
+ * @since 0.7.0
+ */
+ @Beta // method may move to an internal interface; brooklyn users should not need to call this directly
+ HighAvailabilityManager getHighAvailabilityManager();
+
+ /**
+ * Returns the ConfigMap (e.g. BrooklynProperties) applicable to this management context.
+ * Defaults to reading ~/.brooklyn/brooklyn.properties but configurable in the management context.
+ */
+ StringConfigMap getConfig();
+
+ /**
+ * Whether the management context has been initialized and not yet terminated.
+ * This does not mean startup is entirely completed. See also {@link #isStartupComplete()}.
+ */
+ // TODO should we replace this with isNotYetTerminated() ??
+ // and perhaps introduce isFullyRunning() which does (isStartupComplete() && isRunning()),
+ // and/or move to a MgmtContextStatus subclass where errors can also be stored?
+ public boolean isRunning();
+
+ /**
+ * Whether all startup tasks have completed. Previous to this point the management context is still usable
+ * (and hence {@link #isRunning()} returns true immediately after construction)
+ * but some subsystems (e.g. persistence, OSGi, webapps, entities started at startup)
+ * may not be available until this returns true.
+ * <p>
+ * Also see {@link #isStartupComplete()}.
+ */
+ @Beta // see comment on isRunning() as items might move to a status handler
+ public boolean isStartupComplete();
+
+ /** Record of configured locations and location resolvers */
+ LocationRegistry getLocationRegistry();
+
+ /** Record of configured Brooklyn entities (and templates and policies) which can be loaded */
+ BrooklynCatalog getCatalog();
+
+ /** Returns the class loader to be used to load items.
+ * Temporary routine while catalog supports classloader-based and OSGi-based classloading. */
+ @Beta
+ ClassLoader getCatalogClassLoader();
+
+ LocationManager getLocationManager();
+
+ /**
+ * For controlling access to operations - can be queried to find if an operation is allowed.
+ * Callers should *not* cache the result of this method, but should instead always call
+ * again to get the {@link AccessController}.
+ */
+ AccessController getAccessController();
+
+ /**
+ * Reloads locations from {@code brooklyn.properties}. Any changes will apply only to newly created applications
+ */
+ void reloadBrooklynProperties();
+
+ /**
+ * Listener for {@code brooklyn.properties} reload events.
+ *
+ * @see {@link #raddPropertiesReloadListenerPropertiesReloadListener)}
+ * @see {@link #removePropertiesReloadListener(PropertiesReloadListener)}
+ */
+ interface PropertiesReloadListener extends Serializable {
+
+ /** Called when {@code brooklyn.properties} is reloaded. */
+ void reloaded();
+
+ }
+
+ /**
+ * Registers a listener to be notified when brooklyn.properties is reloaded
+ */
+ void addPropertiesReloadListener(PropertiesReloadListener listener);
+
+ /**
+ * Deregisters a listener from brooklyn.properties reload notifications
+ */
+ void removePropertiesReloadListener(PropertiesReloadListener listener);
+
+ /**
+ * Active entitlements checker instance.
+ */
+ EntitlementManager getEntitlementManager();
+
+ /** As {@link #lookup(String, Class)} but not constraining the return type */
+ public BrooklynObject lookup(String id);
+
+ /** Finds an entity with the given ID known at this management context */
+ // TODO in future support policies etc
+ public <T extends BrooklynObject> T lookup(String id, Class<T> type);
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionContext.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionContext.java b/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionContext.java
new file mode 100644
index 0000000..04ccd12
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionContext.java
@@ -0,0 +1,66 @@
+/*
+ * 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.api.management;
+
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.brooklyn.api.entity.Entity;
+import org.apache.brooklyn.api.entity.Group;
+import org.apache.brooklyn.api.event.Sensor;
+import org.apache.brooklyn.api.event.SensorEvent;
+import org.apache.brooklyn.api.event.SensorEventListener;
+
+/**
+ * This is the context through which an {@link Entity} can manage its subscriptions.
+ */
+public interface SubscriptionContext {
+ /**
+ * As {@link SubscriptionManager#subscribe(Map, Entity, Sensor, SensorEventListener)} with default subscription parameters for this context
+ */
+ <T> SubscriptionHandle subscribe(Map<String, Object> flags, Entity producer, Sensor<T> sensor, SensorEventListener<? super T> listener);
+
+ /** @see #subscribe(Map, Entity, Sensor, SensorEventListener) */
+ <T> SubscriptionHandle subscribe(Entity producer, Sensor<T> sensor, SensorEventListener<? super T> listener);
+
+ /** @see #subscribe(Map, Entity, Sensor, SensorEventListener) */
+ <T> SubscriptionHandle subscribeToChildren(Map<String, Object> flags, Entity parent, Sensor<T> sensor, SensorEventListener<? super T> listener);
+
+ /** @see #subscribe(Map, Entity, Sensor, SensorEventListener) */
+ <T> SubscriptionHandle subscribeToChildren(Entity parent, Sensor<T> sensor, SensorEventListener<? super T> listener);
+
+ /** @see #subscribe(Map, Entity, Sensor, SensorEventListener) */
+ <T> SubscriptionHandle subscribeToMembers(Map<String, Object> flags, Group parent, Sensor<T> sensor, SensorEventListener<? super T> listener);
+
+ /** @see #subscribe(Map, Entity, Sensor, SensorEventListener) */
+ <T> SubscriptionHandle subscribeToMembers(Group parent, Sensor<T> sensor, SensorEventListener<? super T> listener);
+
+ /** @see SubscriptionManager#unsubscribe(SubscriptionHandle) */
+ boolean unsubscribe(SubscriptionHandle subscriptionId);
+
+ /** causes all subscriptions to be deregistered
+ * @return number of subscriptions removed */
+ int unsubscribeAll();
+
+ /** @see SubscriptionManager#publish(SensorEvent) */
+ <T> void publish(SensorEvent<T> event);
+
+ /** Return the subscriptions associated with this context */
+ Set<SubscriptionHandle> getSubscriptions();
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionHandle.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionHandle.java b/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionHandle.java
new file mode 100644
index 0000000..72a1609
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionHandle.java
@@ -0,0 +1,27 @@
+/*
+ * 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.api.management;
+
+/**
+ * A "receipt" returned by {@link SubscriptionContext} and {@link SubscriptionManager}'s {@code subscribe()}
+ * methods. It can be used to unsubscribe - see {@link SubscriptionContext#unsubscribe(SubscriptionHandle)}
+ * and {@link SubscriptionManager#unsubscribe(SubscriptionHandle)}.
+ */
+public interface SubscriptionHandle {
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionManager.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionManager.java b/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionManager.java
new file mode 100644
index 0000000..520dbc9
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionManager.java
@@ -0,0 +1,112 @@
+/*
+ * 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.api.management;
+
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.brooklyn.api.entity.Entity;
+import org.apache.brooklyn.api.entity.Group;
+import org.apache.brooklyn.api.event.Sensor;
+import org.apache.brooklyn.api.event.SensorEvent;
+import org.apache.brooklyn.api.event.SensorEventListener;
+
+/**
+ * The management interface for subscriptions.
+ *
+ * Different implementations will handle entities subscribing and unsubscribing to {@link SensorEvent}s
+ * and their delivery.
+ *
+ * @see SubscriptionContext
+ */
+public interface SubscriptionManager {
+ /**
+ * Subscribe to {@link Sensor} data changes and events on a given {@link Entity}, supplying the {@link SensorEventListener}
+ * to invoke when they occur.
+ *
+ * The method returns an id which can be used to {@link #unsubscribe(SubscriptionHandle)} later.
+ * <p>
+ * The listener callback is in-order single-threaded and synchronized on this object. The flags
+ * parameters can include the following:
+ * <ul>
+ * <li>subscriber - object to identify the subscriber (e.g. entity, or console session uid)
+ * <li><i>in future</i> - control parameters for the subscription (period, minimum delta for updates, etc)
+ * </ul>
+ *
+ * @param flags optional parameters to be associated with the subscription
+ * @param producer entity to listen to, or null to listen to all entities
+ * @param sensor sensor channel of events to listen to, or null for all sensors from the given producer(s)
+ * @param listener callback to invoke when an event occurs
+ * @return an id for this subscription
+ *
+ * @see #unsubscribe(SubscriptionHandle)
+ */
+ <T> SubscriptionHandle subscribe(Map<String, Object> flags, Entity producer, Sensor<T> sensor, SensorEventListener<? super T> listener);
+
+ /** @see #subscribe(Map, Entity, Sensor, SensorEventListener) */
+ <T> SubscriptionHandle subscribe(Entity producer, Sensor<T> sensor, SensorEventListener<? super T> listener);
+
+ /**
+ * Subscribe to {@link Sensor} data changes and events on all children of a given {@link Entity}, supplying the
+ * {@link SensorEventListener} to invoke when they occur.
+ *
+ * The subscriptions will be created recursively for all children, and the same listener callback will be invoked for each
+ * sensor datum. The semantics are otherwise identical to the {@link #subscribe(Map, Entity, Sensor, SensorEventListener)} method.
+ *
+ * @see #subscribe(Map, Entity, Sensor, SensorEventListener)
+ */
+ <T> SubscriptionHandle subscribeToChildren(Map<String, Object> flags, Entity parent, Sensor<T> sensor, SensorEventListener<? super T> listener);
+
+ /** @see #subscribeToChildren(Map, Entity, Sensor, SensorEventListener) */
+ <T> SubscriptionHandle subscribeToChildren(Entity parent, Sensor<T> sensor, SensorEventListener<? super T> listener);
+
+ /**
+ * Subscribe to {@link Sensor} data changes and events on all members of a given {@link Group}, supplying the
+ * {@link SensorEventListener} to invoke when they occur.
+ *
+ * The subscriptions will be created recursively for all children, and the same listener callback will be invoked for each
+ * sensor datum. The semantics are otherwise identical to the {@link #subscribe(Map, Entity, Sensor, SensorEventListener)} method.
+ *
+ * @see #subscribe(Map, Entity, Sensor, SensorEventListener)
+ */
+ <T> SubscriptionHandle subscribeToMembers(Map<String, Object> flags, Group parent, Sensor<T> sensor, SensorEventListener<? super T> listener);
+
+ /** @see #subscribeToMembers(Map, Group, Sensor, SensorEventListener) */
+ <T> SubscriptionHandle subscribeToMembers(Group parent, Sensor<T> sensor, SensorEventListener<? super T> listener);
+
+ /**
+ * Unsubscribe the given subscription id.
+ *
+ * @return true if such a subscription was present (and it will now be removed)
+ *
+ * @see #subscribe(Map, Entity, Sensor, SensorEventListener)
+ */
+ boolean unsubscribe(SubscriptionHandle subscriptionId);
+
+ /**
+ * Deliver a {@link SensorEvent} to all subscribed listeners.
+ */
+ <T> void publish(SensorEvent<T> event);
+
+ /** Return the subscriptions requested by a given subscriber */
+ Set<SubscriptionHandle> getSubscriptionsForSubscriber(Object subscriber);
+
+ /** Return the subscriptions on a given source-sensor pair */
+ Set<SubscriptionHandle> getSubscriptionsForEntitySensor(Entity source, Sensor<?> sensor);
+}