You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by al...@apache.org on 2015/08/12 11:00:56 UTC
[03/15] incubator-brooklyn git commit: [BROOKLYN-162] Package rename
in ./api/policy
[BROOKLYN-162] Package rename in ./api/policy
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/12e3c230
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/12e3c230
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/12e3c230
Branch: refs/heads/master
Commit: 12e3c2301187fc9d8a848462437a3ce9822517e7
Parents: d85719b
Author: Hadrian Zbarcea <ha...@apache.org>
Authored: Tue Aug 11 22:22:24 2015 -0400
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Tue Aug 11 22:22:24 2015 -0400
----------------------------------------------------------------------
api/src/main/java/brooklyn/entity/Entity.java | 9 +-
api/src/main/java/brooklyn/entity/Feed.java | 3 +-
.../brooklyn/entity/proxying/EntitySpec.java | 8 +-
.../entity/rebind/BrooklynObjectType.java | 6 +-
.../entity/rebind/RebindExceptionHandler.java | 6 +-
.../java/brooklyn/management/EntityManager.java | 9 +-
.../mementos/BrooklynMementoPersister.java | 6 +-
.../main/java/brooklyn/mementos/Memento.java | 3 +-
api/src/main/java/brooklyn/policy/Enricher.java | 70 ------
.../main/java/brooklyn/policy/EnricherSpec.java | 214 -------------------
.../main/java/brooklyn/policy/EnricherType.java | 36 ----
.../java/brooklyn/policy/EntityAdjunct.java | 55 -----
api/src/main/java/brooklyn/policy/Policy.java | 82 -------
.../main/java/brooklyn/policy/PolicySpec.java | 152 -------------
.../main/java/brooklyn/policy/PolicyType.java | 36 ----
.../org/apache/brooklyn/policy/Enricher.java | 70 ++++++
.../apache/brooklyn/policy/EnricherSpec.java | 214 +++++++++++++++++++
.../apache/brooklyn/policy/EnricherType.java | 36 ++++
.../apache/brooklyn/policy/EntityAdjunct.java | 55 +++++
.../java/org/apache/brooklyn/policy/Policy.java | 82 +++++++
.../org/apache/brooklyn/policy/PolicySpec.java | 152 +++++++++++++
.../org/apache/brooklyn/policy/PolicyType.java | 36 ++++
.../main/java/brooklyn/basic/BrooklynTypes.java | 5 +-
.../brooklyn/catalog/CatalogPredicates.java | 4 +-
.../catalog/internal/BasicBrooklynCatalog.java | 6 +-
.../catalog/internal/CatalogClasspathDo.java | 4 +-
.../catalog/internal/CatalogPolicyItemDto.java | 4 +-
.../main/java/brooklyn/enricher/Enrichers.java | 5 +-
.../enricher/basic/AbstractEnricher.java | 5 +-
.../enricher/basic/EnricherDynamicType.java | 5 +-
.../enricher/basic/EnricherTypeSnapshot.java | 3 +-
.../brooklyn/entity/basic/AbstractEntity.java | 10 +-
.../java/brooklyn/entity/basic/Entities.java | 4 +-
.../brooklyn/entity/basic/EntityAdjuncts.java | 5 +-
.../basic/EntityTransientCopyInternal.java | 5 +-
.../brooklyn/entity/basic/PolicyDescriptor.java | 2 +-
.../entity/basic/ServiceStateLogic.java | 6 +-
.../entity/group/DynamicClusterImpl.java | 2 +-
.../entity/proxying/InternalEntityFactory.java | 8 +-
.../entity/proxying/InternalPolicyFactory.java | 9 +-
.../AbstractBrooklynObjectRebindSupport.java | 2 +-
.../rebind/ImmediateDeltaChangeListener.java | 6 +-
.../rebind/PeriodicDeltaChangeListener.java | 6 +-
.../entity/rebind/RebindContextImpl.java | 6 +-
.../rebind/RebindContextLookupContext.java | 6 +-
.../rebind/RebindExceptionHandlerImpl.java | 6 +-
.../brooklyn/entity/rebind/RebindIteration.java | 6 +-
.../entity/rebind/dto/MementosGenerators.java | 8 +-
.../persister/BrooklynPersistenceUtils.java | 6 +-
.../rebind/persister/XmlMementoSerializer.java | 6 +-
.../location/basic/LocationTypeSnapshot.java | 3 +-
.../internal/EntityChangeListener.java | 5 +-
.../internal/EntityManagementSupport.java | 4 +-
.../management/internal/LocalEntityManager.java | 8 +-
.../internal/NonDeploymentEntityManager.java | 9 +-
.../policy/basic/AbstractEntityAdjunct.java | 2 +-
.../brooklyn/policy/basic/AbstractPolicy.java | 4 +-
.../java/brooklyn/policy/basic/AdjunctType.java | 2 +-
.../java/brooklyn/policy/basic/Policies.java | 3 +-
.../policy/basic/PolicyDynamicType.java | 5 +-
.../policy/basic/PolicyTypeSnapshot.java | 3 +-
.../java/brooklyn/enricher/EnrichersTest.java | 2 +-
.../enricher/SensorPropagatingEnricherTest.java | 2 +-
.../enricher/basic/BasicEnricherTest.java | 4 +-
.../YamlRollingTimeWindowMeanEnricherTest.java | 2 +-
.../YamlTimeWeightedDeltaEnricherTest.java | 2 +-
.../brooklyn/entity/basic/EntitySpecTest.java | 8 +-
.../entity/basic/PolicyRegistrationTest.java | 6 +-
.../entity/basic/ServiceStateLogicTest.java | 2 +-
.../entity/group/GroupPickUpEntitiesTest.java | 2 +-
.../group/MembershipTrackingPolicyTest.java | 2 +-
.../entity/rebind/RebindEnricherTest.java | 4 +-
.../entity/rebind/RebindFailuresTest.java | 8 +-
.../entity/rebind/RebindPolicyTest.java | 6 +-
.../BrooklynMementoPersisterTestFixture.java | 4 +-
.../persister/XmlMementoSerializerTest.java | 7 +-
.../osgi/OsgiVersionMoreEntityTest.java | 6 +-
.../brooklyn/policy/basic/BasicPolicyTest.java | 2 +-
.../brooklyn/policy/basic/EnricherTypeTest.java | 2 +-
.../brooklyn/policy/basic/PolicyTypeTest.java | 2 +-
.../EntityPersistencePerformanceTest.java | 4 +-
.../brooklyn/demo/CumulusRDFApplication.java | 7 +-
.../demo/HighAvailabilityCassandraCluster.java | 6 +-
.../brooklyn/demo/RiakClusterExample.java | 6 +-
.../brooklyn/demo/WideAreaCassandraCluster.java | 6 +-
...lusterDatabaseExampleAppIntegrationTest.java | 2 +-
.../os/AdvertiseWinrmLoginPolicyTest.java | 2 +-
.../policy/os/CreateUserPolicyLiveTest.java | 2 +-
.../policy/os/CreateUserPolicyTest.java | 2 +-
.../policy/autoscaling/AutoScalerPolicy.java | 4 +-
.../policy/ha/ConditionalSuspendPolicy.java | 2 +-
.../autoscaling/AutoScalerPolicyTest.java | 2 +-
.../ha/ConnectionFailureDetectorTest.java | 2 +-
.../brooklyn/policy/ha/HaPolicyRebindTest.java | 4 +-
...ServiceFailureDetectorStabilizationTest.java | 2 +-
.../policy/ha/ServiceFailureDetectorTest.java | 2 +-
.../brooklyn/policy/ha/ServiceReplacerTest.java | 2 +-
.../policy/ha/ServiceRestarterTest.java | 2 +-
.../entity/basic/SoftwareProcessImpl.java | 2 +-
.../brooklyn/entity/pool/ServerPoolImpl.java | 2 +-
.../entity/service/InitdServiceInstaller.java | 3 +-
.../entity/service/SystemServiceEnricher.java | 3 +-
.../service/SystemServiceInstallerFactory.java | 3 +-
.../service/SystemServiceEnricherTest.java | 2 +-
.../entity/messaging/kafka/KafkaCluster.java | 2 +-
.../entity/zookeeper/ZooKeeperEnsembleImpl.java | 2 +-
.../entity/network/bind/BindDnsServerImpl.java | 2 +-
.../bind/BindDnsServerIntegrationTest.java | 2 +-
.../network/bind/BindDnsServerLiveTest.java | 2 +-
.../cassandra/CassandraDatacenterImpl.java | 2 +-
.../nosql/cassandra/CassandraFabricImpl.java | 2 +-
.../nosql/couchbase/CouchbaseClusterImpl.java | 2 +-
.../nosql/mongodb/MongoDBReplicaSetImpl.java | 2 +-
.../sharding/MongoDBRouterClusterImpl.java | 3 +-
.../sharding/MongoDBShardedDeploymentImpl.java | 2 +-
.../entity/nosql/riak/RiakClusterImpl.java | 4 +-
.../entity/dns/AbstractGeoDnsServiceImpl.java | 2 +-
.../entity/proxy/AbstractControllerImpl.java | 4 +-
.../AbstractNonProvisionedControllerImpl.java | 2 +-
.../entity/proxy/nginx/NginxControllerImpl.java | 2 +-
.../BrooklynEntityDecorationResolver.java | 9 +-
.../BrooklynYamlTypeInstantiatorTest.java | 2 +-
.../camp/brooklyn/EnrichersYamlTest.java | 2 +-
.../brooklyn/JavaWebAppsIntegrationTest.java | 2 +-
.../camp/brooklyn/PoliciesYamlTest.java | 2 +-
.../CatalogOsgiVersionMoreEntityTest.java | 7 +-
.../brooklyn/catalog/CatalogYamlCombiTest.java | 3 +-
.../brooklyn/catalog/CatalogYamlPolicyTest.java | 4 +-
.../brooklyn/catalog/CatalogYamlRebindTest.java | 4 +-
.../org/apache/brooklyn/cli/ItemLister.java | 6 +-
.../apache/brooklyn/cli/lister/ClassFinder.java | 4 +-
.../qa/load/SimulatedNginxControllerImpl.java | 3 +-
.../qa/longevity/webcluster/WebClusterApp.java | 4 +-
.../rest/resources/CatalogResource.java | 8 +-
.../rest/resources/PolicyConfigResource.java | 4 +-
.../brooklyn/rest/resources/PolicyResource.java | 6 +-
.../rest/transform/CatalogTransformer.java | 8 +-
.../rest/transform/PolicyTransformer.java | 3 +-
.../rest/util/BrooklynRestResourceUtils.java | 6 +-
.../util/BrooklynRestResourceUtilsTest.java | 6 +-
.../osgi/tests/more/MoreEntityImpl.java | 2 +-
.../osgi/tests/more/MoreEntityImpl.java | 2 +-
142 files changed, 955 insertions(+), 864 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/brooklyn/entity/Entity.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/entity/Entity.java b/api/src/main/java/brooklyn/entity/Entity.java
index d1372fd..f63a049 100644
--- a/api/src/main/java/brooklyn/entity/Entity.java
+++ b/api/src/main/java/brooklyn/entity/Entity.java
@@ -23,6 +23,11 @@ import java.util.Map;
import javax.annotation.Nullable;
+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 brooklyn.basic.BrooklynObject;
import brooklyn.config.ConfigKey;
import brooklyn.config.ConfigKey.HasConfigKey;
@@ -30,10 +35,6 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.event.AttributeSensor;
import brooklyn.location.Location;
import brooklyn.management.Task;
-import brooklyn.policy.Enricher;
-import brooklyn.policy.EnricherSpec;
-import brooklyn.policy.Policy;
-import brooklyn.policy.PolicySpec;
import brooklyn.util.guava.Maybe;
/**
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/brooklyn/entity/Feed.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/entity/Feed.java b/api/src/main/java/brooklyn/entity/Feed.java
index a708bdc..e34a041 100644
--- a/api/src/main/java/brooklyn/entity/Feed.java
+++ b/api/src/main/java/brooklyn/entity/Feed.java
@@ -18,10 +18,11 @@
*/
package brooklyn.entity;
+import org.apache.brooklyn.policy.EntityAdjunct;
+
import brooklyn.entity.rebind.RebindSupport;
import brooklyn.entity.rebind.Rebindable;
import brooklyn.mementos.FeedMemento;
-import brooklyn.policy.EntityAdjunct;
import com.google.common.annotations.Beta;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/brooklyn/entity/proxying/EntitySpec.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/entity/proxying/EntitySpec.java b/api/src/main/java/brooklyn/entity/proxying/EntitySpec.java
index 0706ddc..3c64434 100644
--- a/api/src/main/java/brooklyn/entity/proxying/EntitySpec.java
+++ b/api/src/main/java/brooklyn/entity/proxying/EntitySpec.java
@@ -27,6 +27,10 @@ import java.util.Set;
import javax.annotation.Nullable;
+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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -37,10 +41,6 @@ import brooklyn.entity.Entity;
import brooklyn.entity.Group;
import brooklyn.location.Location;
import brooklyn.management.Task;
-import brooklyn.policy.Enricher;
-import brooklyn.policy.EnricherSpec;
-import brooklyn.policy.Policy;
-import brooklyn.policy.PolicySpec;
import brooklyn.util.collections.MutableList;
import com.google.common.base.Supplier;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/brooklyn/entity/rebind/BrooklynObjectType.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/entity/rebind/BrooklynObjectType.java b/api/src/main/java/brooklyn/entity/rebind/BrooklynObjectType.java
index bcaf2fb..582c0b1 100644
--- a/api/src/main/java/brooklyn/entity/rebind/BrooklynObjectType.java
+++ b/api/src/main/java/brooklyn/entity/rebind/BrooklynObjectType.java
@@ -19,12 +19,14 @@
package brooklyn.entity.rebind;
import brooklyn.basic.BrooklynObject;
+
import org.apache.brooklyn.catalog.CatalogItem;
+import org.apache.brooklyn.policy.Enricher;
+import org.apache.brooklyn.policy.Policy;
+
import brooklyn.entity.Entity;
import brooklyn.entity.Feed;
import brooklyn.location.Location;
-import brooklyn.policy.Enricher;
-import brooklyn.policy.Policy;
import com.google.common.annotations.Beta;
import com.google.common.base.CaseFormat;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/brooklyn/entity/rebind/RebindExceptionHandler.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/entity/rebind/RebindExceptionHandler.java b/api/src/main/java/brooklyn/entity/rebind/RebindExceptionHandler.java
index 7c52fa7..62cfb1e 100644
--- a/api/src/main/java/brooklyn/entity/rebind/RebindExceptionHandler.java
+++ b/api/src/main/java/brooklyn/entity/rebind/RebindExceptionHandler.java
@@ -21,13 +21,15 @@ package brooklyn.entity.rebind;
import java.util.List;
import brooklyn.basic.BrooklynObject;
+
import org.apache.brooklyn.catalog.CatalogItem;
+import org.apache.brooklyn.policy.Enricher;
+import org.apache.brooklyn.policy.Policy;
+
import brooklyn.entity.Entity;
import brooklyn.entity.Feed;
import brooklyn.entity.basic.EntityLocal;
import brooklyn.location.Location;
-import brooklyn.policy.Enricher;
-import brooklyn.policy.Policy;
import com.google.common.annotations.Beta;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/brooklyn/management/EntityManager.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/management/EntityManager.java b/api/src/main/java/brooklyn/management/EntityManager.java
index 67e229d..a6c50ee 100644
--- a/api/src/main/java/brooklyn/management/EntityManager.java
+++ b/api/src/main/java/brooklyn/management/EntityManager.java
@@ -23,14 +23,15 @@ import java.util.Map;
import javax.annotation.Nullable;
+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 brooklyn.entity.Application;
import brooklyn.entity.Entity;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.proxying.EntityTypeRegistry;
-import brooklyn.policy.Enricher;
-import brooklyn.policy.EnricherSpec;
-import brooklyn.policy.Policy;
-import brooklyn.policy.PolicySpec;
import com.google.common.base.Predicate;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/brooklyn/mementos/BrooklynMementoPersister.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/mementos/BrooklynMementoPersister.java b/api/src/main/java/brooklyn/mementos/BrooklynMementoPersister.java
index bfed9f5..9207721 100644
--- a/api/src/main/java/brooklyn/mementos/BrooklynMementoPersister.java
+++ b/api/src/main/java/brooklyn/mementos/BrooklynMementoPersister.java
@@ -26,7 +26,11 @@ import java.util.concurrent.TimeoutException;
import javax.annotation.Nullable;
import brooklyn.basic.BrooklynObject;
+
import org.apache.brooklyn.catalog.CatalogItem;
+import org.apache.brooklyn.policy.Enricher;
+import org.apache.brooklyn.policy.Policy;
+
import brooklyn.entity.Entity;
import brooklyn.entity.Feed;
import brooklyn.entity.rebind.BrooklynObjectType;
@@ -35,8 +39,6 @@ import brooklyn.entity.rebind.RebindExceptionHandler;
import brooklyn.entity.rebind.RebindManager;
import brooklyn.location.Location;
import brooklyn.management.ManagementContext;
-import brooklyn.policy.Enricher;
-import brooklyn.policy.Policy;
import brooklyn.util.time.Duration;
import com.google.common.annotations.Beta;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/brooklyn/mementos/Memento.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/mementos/Memento.java b/api/src/main/java/brooklyn/mementos/Memento.java
index dfe6d4a..35b54f9 100644
--- a/api/src/main/java/brooklyn/mementos/Memento.java
+++ b/api/src/main/java/brooklyn/mementos/Memento.java
@@ -22,9 +22,10 @@ import java.io.Serializable;
import java.util.Collection;
import java.util.Map;
+import org.apache.brooklyn.policy.EntityAdjunct;
+
import brooklyn.entity.Entity;
import brooklyn.entity.rebind.RebindSupport;
-import brooklyn.policy.EntityAdjunct;
/**
* Represents the internal state of something in brooklyn, so that it can be reconstructed (e.g. after restarting brooklyn).
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/brooklyn/policy/Enricher.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/policy/Enricher.java b/api/src/main/java/brooklyn/policy/Enricher.java
deleted file mode 100644
index a5b641e..0000000
--- a/api/src/main/java/brooklyn/policy/Enricher.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.policy;
-
-import java.util.Map;
-
-import brooklyn.config.ConfigKey;
-import brooklyn.entity.rebind.RebindSupport;
-import brooklyn.entity.rebind.Rebindable;
-import brooklyn.entity.trait.Configurable;
-import brooklyn.mementos.EnricherMemento;
-
-import com.google.common.annotations.Beta;
-
-/**
- * Publishes metrics for an entity, e.g. aggregating information from other sensors/entities.
- *
- * Has some similarities to {@link Policy}. However, enrichers specifically do not invoke
- * effectors and should only function to publish new metrics.
- */
-public interface Enricher extends EntityAdjunct, Rebindable, Configurable {
- /**
- * A unique id for this enricher.
- */
- @Override
- String getId();
-
- /**
- * Information about the type of this entity; analogous to Java's object.getClass.
- */
- @Beta
- EnricherType getEnricherType();
-
- /**
- * Convenience method for {@code config().get(key)}
- */
- <T> T getConfig(ConfigKey<T> key);
-
- /**
- * @deprecated since 0.7.0; use {@link #config()}, such as {@code policy.config().setConfig(key, val)}
- */
- @Deprecated
- <T> T setConfig(ConfigKey<T> key, T val);
-
- /**
- * Users are strongly discouraged from calling or overriding this method.
- * It is for internal calls only, relating to persisting/rebinding entities.
- * This method may change (or be removed) in a future release without notice.
- */
- @Override
- @Beta
- RebindSupport<EnricherMemento> getRebindSupport();
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/brooklyn/policy/EnricherSpec.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/policy/EnricherSpec.java b/api/src/main/java/brooklyn/policy/EnricherSpec.java
deleted file mode 100644
index e2f6c22..0000000
--- a/api/src/main/java/brooklyn/policy/EnricherSpec.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.policy;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Collections;
-import java.util.Map;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import brooklyn.basic.AbstractBrooklynObjectSpec;
-import brooklyn.config.ConfigKey;
-import brooklyn.config.ConfigKey.HasConfigKey;
-import brooklyn.management.Task;
-
-import com.google.common.collect.Maps;
-
-/**
- * Gives details of an enricher to be created. It describes the enricher's configuration, and is
- * reusable to create multiple enrichers with the same configuration.
- *
- * To create an EnricherSpec, it is strongly encouraged to use {@code create(...)} methods.
- *
- * @param <T> The type of enricher to be created
- *
- * @author aled
- */
-public class EnricherSpec<T extends Enricher> extends AbstractBrooklynObjectSpec<T,EnricherSpec<T>> {
-
- private static final Logger log = LoggerFactory.getLogger(EnricherSpec.class);
-
- private final static long serialVersionUID = 1L;
-
-
- /**
- * Creates a new {@link EnricherSpec} instance for an enricher of the given type. The returned
- * {@link EnricherSpec} can then be customized.
- *
- * @param type A {@link Enricher} class
- */
- public static <T extends Enricher> EnricherSpec<T> create(Class<? extends T> type) {
- return new EnricherSpec<T>(type);
- }
-
- /**
- * Creates a new {@link EnricherSpec} instance with the given config, for an enricher of the given type.
- *
- * This is primarily for groovy code; equivalent to {@code EnricherSpec.create(type).configure(config)}.
- *
- * @param config The spec's configuration (see {@link EnricherSpec#configure(Map)}).
- * @param type An {@link Enricher} class
- */
- public static <T extends Enricher> EnricherSpec<T> create(Map<?,?> config, Class<? extends T> type) {
- return EnricherSpec.create(type).configure(config);
- }
-
- private final Map<String, Object> flags = Maps.newLinkedHashMap();
- private final Map<ConfigKey<?>, Object> config = Maps.newLinkedHashMap();
-
- protected EnricherSpec(Class<? extends T> type) {
- super(type);
- }
-
- protected void checkValidType(Class<? extends T> type) {
- checkIsImplementation(type, Enricher.class);
- checkIsNewStyleImplementation(type);
- }
-
- public EnricherSpec<T> uniqueTag(String uniqueTag) {
- flags.put("uniqueTag", uniqueTag);
- return this;
- }
-
- public EnricherSpec<T> configure(Map<?,?> val) {
- for (Map.Entry<?, ?> entry: val.entrySet()) {
- if (entry.getKey()==null) throw new NullPointerException("Null key not permitted");
- if (entry.getKey() instanceof CharSequence)
- flags.put(entry.getKey().toString(), entry.getValue());
- else if (entry.getKey() instanceof ConfigKey<?>)
- config.put((ConfigKey<?>)entry.getKey(), entry.getValue());
- else if (entry.getKey() instanceof HasConfigKey<?>)
- config.put(((HasConfigKey<?>)entry.getKey()).getConfigKey(), entry.getValue());
- else {
- log.warn("Spec "+this+" ignoring unknown config key "+entry.getKey());
- }
- }
- return this;
- }
-
- public EnricherSpec<T> configure(CharSequence key, Object val) {
- flags.put(checkNotNull(key, "key").toString(), val);
- return this;
- }
-
- public <V> EnricherSpec<T> configure(ConfigKey<V> key, V val) {
- config.put(checkNotNull(key, "key"), val);
- return this;
- }
-
- public <V> EnricherSpec<T> configureIfNotNull(ConfigKey<V> key, V val) {
- return (val != null) ? configure(key, val) : this;
- }
-
- public <V> EnricherSpec<T> configure(ConfigKey<V> key, Task<? extends V> val) {
- config.put(checkNotNull(key, "key"), val);
- return this;
- }
-
- public <V> EnricherSpec<T> configure(HasConfigKey<V> key, V val) {
- config.put(checkNotNull(key, "key").getConfigKey(), val);
- return this;
- }
-
- public <V> EnricherSpec<T> configure(HasConfigKey<V> key, Task<? extends V> val) {
- config.put(checkNotNull(key, "key").getConfigKey(), val);
- return this;
- }
-
- /**
- * @return Read-only construction flags
- * @see SetFromFlag declarations on the enricher type
- */
- public Map<String, ?> getFlags() {
- return Collections.unmodifiableMap(flags);
- }
-
- /**
- * @return Read-only configuration values
- */
- public Map<ConfigKey<?>, Object> getConfig() {
- return Collections.unmodifiableMap(config);
- }
-
- public abstract static class ExtensibleEnricherSpec<T extends Enricher,K extends ExtensibleEnricherSpec<T,K>> extends EnricherSpec<T> {
- private static final long serialVersionUID = -3649347642882809739L;
-
- protected ExtensibleEnricherSpec(Class<? extends T> type) {
- super(type);
- }
-
- @SuppressWarnings("unchecked")
- protected K self() {
- // we override the AbstractBrooklynObjectSpec method -- it's a different K here because
- // EnricherSpec does not contain a parametrisable generic return type (Self)
- return (K) this;
- }
-
- @Override
- public K uniqueTag(String uniqueTag) {
- super.uniqueTag(uniqueTag);
- return self();
- }
-
- @Override
- public K configure(Map<?, ?> val) {
- super.configure(val);
- return self();
- }
-
- @Override
- public K configure(CharSequence key, Object val) {
- super.configure(key, val);
- return self();
- }
-
- @Override
- public <V> K configure(ConfigKey<V> key, V val) {
- super.configure(key, val);
- return self();
- }
-
- @Override
- public <V> K configureIfNotNull(ConfigKey<V> key, V val) {
- super.configureIfNotNull(key, val);
- return self();
- }
-
- @Override
- public <V> K configure(ConfigKey<V> key, Task<? extends V> val) {
- super.configure(key, val);
- return self();
- }
-
- @Override
- public <V> K configure(HasConfigKey<V> key, V val) {
- super.configure(key, val);
- return self();
- }
-
- @Override
- public <V> K configure(HasConfigKey<V> key, Task<? extends V> val) {
- super.configure(key, val);
- return self();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/brooklyn/policy/EnricherType.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/policy/EnricherType.java b/api/src/main/java/brooklyn/policy/EnricherType.java
deleted file mode 100644
index dc59423..0000000
--- a/api/src/main/java/brooklyn/policy/EnricherType.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.policy;
-
-import brooklyn.basic.BrooklynType;
-
-import com.google.common.annotations.Beta;
-
-/**
- * Gives type information for an {@link Enricher}. It is immutable.
- *
- * For enrichers that can support config keys etc being added on-the-fly,
- * then this EnricherType will be a snapshot and subsequent snapshots will
- * include the changes.
- *
- * @since 0.6
- */
-@Beta
-public interface EnricherType extends BrooklynType {
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/brooklyn/policy/EntityAdjunct.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/policy/EntityAdjunct.java b/api/src/main/java/brooklyn/policy/EntityAdjunct.java
deleted file mode 100644
index 7f16dbb..0000000
--- a/api/src/main/java/brooklyn/policy/EntityAdjunct.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.policy;
-
-import javax.annotation.Nullable;
-
-import brooklyn.basic.BrooklynObject;
-
-/**
- * EntityAdjuncts are supplementary logic that can be attached to Entities,
- * such as providing sensor enrichment or event-driven policy behavior
- */
-public interface EntityAdjunct extends BrooklynObject {
- /**
- * A unique id for this adjunct, typically created by the system with no meaning
- */
- @Override
- String getId();
-
- /**
- * Whether the adjunct is destroyed
- */
- boolean isDestroyed();
-
- /**
- * Whether the adjunct is available/active, ie started and not stopped or interrupted
- */
- boolean isRunning();
-
- /**
- * An optional tag used to identify adjuncts with a specific purpose, typically created by the caller.
- * This is used to prevent multiple instances with the same purpose from being created,
- * and to access and customize adjuncts so created.
- * <p>
- * This will be included in the call to {@link #getTags()}.
- */
- @Nullable String getUniqueTag();
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/brooklyn/policy/Policy.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/policy/Policy.java b/api/src/main/java/brooklyn/policy/Policy.java
deleted file mode 100644
index f13f299..0000000
--- a/api/src/main/java/brooklyn/policy/Policy.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.policy;
-
-import java.util.Map;
-
-import brooklyn.config.ConfigKey;
-import brooklyn.entity.rebind.RebindSupport;
-import brooklyn.entity.rebind.Rebindable;
-import brooklyn.entity.trait.Configurable;
-import brooklyn.mementos.PolicyMemento;
-
-import com.google.common.annotations.Beta;
-
-/**
- * Policies implement actions and thus must be suspendable; policies should continue to evaluate their sensors
- * and indicate their desired planned action even if they aren't invoking them
- */
-public interface Policy extends EntityAdjunct, Rebindable, Configurable {
- /**
- * A unique id for this policy.
- */
- @Override
- String getId();
-
- /**
- * Information about the type of this entity; analogous to Java's object.getClass.
- */
- @Beta
- PolicyType getPolicyType();
-
- /**
- * Resume the policy
- */
- void resume();
-
- /**
- * Suspend the policy
- */
- void suspend();
-
- /**
- * Whether the policy is suspended
- */
- boolean isSuspended();
-
- /**
- * Convenience method for {@code config().get(key)}
- */
- <T> T getConfig(ConfigKey<T> key);
-
- /**
- * @deprecated since 0.7.0; use {@link #config()}, such as {@code policy.config().setConfig(key, val)}
- */
- @Deprecated
- <T> T setConfig(ConfigKey<T> key, T val);
-
- /**
- * Users are strongly discouraged from calling or overriding this method.
- * It is for internal calls only, relating to persisting/rebinding entities.
- * This method may change (or be removed) in a future release without notice.
- */
- @Override
- @Beta
- RebindSupport<PolicyMemento> getRebindSupport();
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/brooklyn/policy/PolicySpec.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/policy/PolicySpec.java b/api/src/main/java/brooklyn/policy/PolicySpec.java
deleted file mode 100644
index 4c0665b..0000000
--- a/api/src/main/java/brooklyn/policy/PolicySpec.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.policy;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Collections;
-import java.util.Map;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import brooklyn.basic.AbstractBrooklynObjectSpec;
-import brooklyn.config.ConfigKey;
-import brooklyn.config.ConfigKey.HasConfigKey;
-import brooklyn.management.Task;
-
-import com.google.common.collect.Maps;
-
-/**
- * Gives details of a policy to be created. It describes the policy's configuration, and is
- * reusable to create multiple policies with the same configuration.
- *
- * To create a PolicySpec, it is strongly encouraged to use {@code create(...)} methods.
- *
- * @param <T> The type of policy to be created
- *
- * @author aled
- */
-public class PolicySpec<T extends Policy> extends AbstractBrooklynObjectSpec<T,PolicySpec<T>> {
-
- private static final Logger log = LoggerFactory.getLogger(PolicySpec.class);
-
- private final static long serialVersionUID = 1L;
-
-
- /**
- * Creates a new {@link PolicySpec} instance for a policy of the given type. The returned
- * {@link PolicySpec} can then be customized.
- *
- * @param type A {@link Policy} class
- */
- public static <T extends Policy> PolicySpec<T> create(Class<T> type) {
- return new PolicySpec<T>(type);
- }
-
- /**
- * Creates a new {@link PolicySpec} instance with the given config, for a policy of the given type.
- *
- * This is primarily for groovy code; equivalent to {@code PolicySpec.create(type).configure(config)}.
- *
- * @param config The spec's configuration (see {@link PolicySpec#configure(Map)}).
- * @param type A {@link Policy} class
- */
- public static <T extends Policy> PolicySpec<T> create(Map<?,?> config, Class<T> type) {
- return PolicySpec.create(type).configure(config);
- }
-
- private final Map<String, Object> flags = Maps.newLinkedHashMap();
- private final Map<ConfigKey<?>, Object> config = Maps.newLinkedHashMap();
-
- protected PolicySpec(Class<T> type) {
- super(type);
- }
-
- protected void checkValidType(Class<? extends T> type) {
- checkIsImplementation(type, Policy.class);
- checkIsNewStyleImplementation(type);
- }
-
- public PolicySpec<T> uniqueTag(String uniqueTag) {
- flags.put("uniqueTag", uniqueTag);
- return this;
- }
-
- public PolicySpec<T> configure(Map<?,?> val) {
- for (Map.Entry<?, ?> entry: val.entrySet()) {
- if (entry.getKey()==null) throw new NullPointerException("Null key not permitted");
- if (entry.getKey() instanceof CharSequence)
- flags.put(entry.getKey().toString(), entry.getValue());
- else if (entry.getKey() instanceof ConfigKey<?>)
- config.put((ConfigKey<?>)entry.getKey(), entry.getValue());
- else if (entry.getKey() instanceof HasConfigKey<?>)
- config.put(((HasConfigKey<?>)entry.getKey()).getConfigKey(), entry.getValue());
- else {
- log.warn("Spec "+this+" ignoring unknown config key "+entry.getKey());
- }
- }
- return this;
- }
-
- public PolicySpec<T> configure(CharSequence key, Object val) {
- flags.put(checkNotNull(key, "key").toString(), val);
- return this;
- }
-
- public <V> PolicySpec<T> configure(ConfigKey<V> key, V val) {
- config.put(checkNotNull(key, "key"), val);
- return this;
- }
-
- public <V> PolicySpec<T> configureIfNotNull(ConfigKey<V> key, V val) {
- return (val != null) ? configure(key, val) : this;
- }
-
- public <V> PolicySpec<T> configure(ConfigKey<V> key, Task<? extends V> val) {
- config.put(checkNotNull(key, "key"), val);
- return this;
- }
-
- public <V> PolicySpec<T> configure(HasConfigKey<V> key, V val) {
- config.put(checkNotNull(key, "key").getConfigKey(), val);
- return this;
- }
-
- public <V> PolicySpec<T> configure(HasConfigKey<V> key, Task<? extends V> val) {
- config.put(checkNotNull(key, "key").getConfigKey(), val);
- return this;
- }
-
- /**
- * @return Read-only construction flags
- * @see SetFromFlag declarations on the policy type
- */
- public Map<String, ?> getFlags() {
- return Collections.unmodifiableMap(flags);
- }
-
- /**
- * @return Read-only configuration values
- */
- public Map<ConfigKey<?>, Object> getConfig() {
- return Collections.unmodifiableMap(config);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/brooklyn/policy/PolicyType.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/policy/PolicyType.java b/api/src/main/java/brooklyn/policy/PolicyType.java
deleted file mode 100644
index 707b4aa..0000000
--- a/api/src/main/java/brooklyn/policy/PolicyType.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.policy;
-
-import brooklyn.basic.BrooklynType;
-
-import com.google.common.annotations.Beta;
-
-/**
- * Gives type information for a {@link Policy}. It is immutable.
- *
- * For policies that can support config keys etc being added on-the-fly,
- * then this PolicyType will be a snapshot and subsequent snapshots will
- * include the changes.
- *
- * @since 0.5
- */
-@Beta
-public interface PolicyType extends BrooklynType {
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/org/apache/brooklyn/policy/Enricher.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/policy/Enricher.java b/api/src/main/java/org/apache/brooklyn/policy/Enricher.java
new file mode 100644
index 0000000..07ddce9
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/policy/Enricher.java
@@ -0,0 +1,70 @@
+/*
+ * 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.policy;
+
+import java.util.Map;
+
+import brooklyn.config.ConfigKey;
+import brooklyn.entity.rebind.RebindSupport;
+import brooklyn.entity.rebind.Rebindable;
+import brooklyn.entity.trait.Configurable;
+import brooklyn.mementos.EnricherMemento;
+
+import com.google.common.annotations.Beta;
+
+/**
+ * Publishes metrics for an entity, e.g. aggregating information from other sensors/entities.
+ *
+ * Has some similarities to {@link Policy}. However, enrichers specifically do not invoke
+ * effectors and should only function to publish new metrics.
+ */
+public interface Enricher extends EntityAdjunct, Rebindable, Configurable {
+ /**
+ * A unique id for this enricher.
+ */
+ @Override
+ String getId();
+
+ /**
+ * Information about the type of this entity; analogous to Java's object.getClass.
+ */
+ @Beta
+ EnricherType getEnricherType();
+
+ /**
+ * Convenience method for {@code config().get(key)}
+ */
+ <T> T getConfig(ConfigKey<T> key);
+
+ /**
+ * @deprecated since 0.7.0; use {@link #config()}, such as {@code policy.config().setConfig(key, val)}
+ */
+ @Deprecated
+ <T> T setConfig(ConfigKey<T> key, T val);
+
+ /**
+ * Users are strongly discouraged from calling or overriding this method.
+ * It is for internal calls only, relating to persisting/rebinding entities.
+ * This method may change (or be removed) in a future release without notice.
+ */
+ @Override
+ @Beta
+ RebindSupport<EnricherMemento> getRebindSupport();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/org/apache/brooklyn/policy/EnricherSpec.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/policy/EnricherSpec.java b/api/src/main/java/org/apache/brooklyn/policy/EnricherSpec.java
new file mode 100644
index 0000000..9cb1900
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/policy/EnricherSpec.java
@@ -0,0 +1,214 @@
+/*
+ * 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.policy;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.Collections;
+import java.util.Map;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import brooklyn.basic.AbstractBrooklynObjectSpec;
+import brooklyn.config.ConfigKey;
+import brooklyn.config.ConfigKey.HasConfigKey;
+import brooklyn.management.Task;
+
+import com.google.common.collect.Maps;
+
+/**
+ * Gives details of an enricher to be created. It describes the enricher's configuration, and is
+ * reusable to create multiple enrichers with the same configuration.
+ *
+ * To create an EnricherSpec, it is strongly encouraged to use {@code create(...)} methods.
+ *
+ * @param <T> The type of enricher to be created
+ *
+ * @author aled
+ */
+public class EnricherSpec<T extends Enricher> extends AbstractBrooklynObjectSpec<T,EnricherSpec<T>> {
+
+ private static final Logger log = LoggerFactory.getLogger(EnricherSpec.class);
+
+ private final static long serialVersionUID = 1L;
+
+
+ /**
+ * Creates a new {@link EnricherSpec} instance for an enricher of the given type. The returned
+ * {@link EnricherSpec} can then be customized.
+ *
+ * @param type A {@link Enricher} class
+ */
+ public static <T extends Enricher> EnricherSpec<T> create(Class<? extends T> type) {
+ return new EnricherSpec<T>(type);
+ }
+
+ /**
+ * Creates a new {@link EnricherSpec} instance with the given config, for an enricher of the given type.
+ *
+ * This is primarily for groovy code; equivalent to {@code EnricherSpec.create(type).configure(config)}.
+ *
+ * @param config The spec's configuration (see {@link EnricherSpec#configure(Map)}).
+ * @param type An {@link Enricher} class
+ */
+ public static <T extends Enricher> EnricherSpec<T> create(Map<?,?> config, Class<? extends T> type) {
+ return EnricherSpec.create(type).configure(config);
+ }
+
+ private final Map<String, Object> flags = Maps.newLinkedHashMap();
+ private final Map<ConfigKey<?>, Object> config = Maps.newLinkedHashMap();
+
+ protected EnricherSpec(Class<? extends T> type) {
+ super(type);
+ }
+
+ protected void checkValidType(Class<? extends T> type) {
+ checkIsImplementation(type, Enricher.class);
+ checkIsNewStyleImplementation(type);
+ }
+
+ public EnricherSpec<T> uniqueTag(String uniqueTag) {
+ flags.put("uniqueTag", uniqueTag);
+ return this;
+ }
+
+ public EnricherSpec<T> configure(Map<?,?> val) {
+ for (Map.Entry<?, ?> entry: val.entrySet()) {
+ if (entry.getKey()==null) throw new NullPointerException("Null key not permitted");
+ if (entry.getKey() instanceof CharSequence)
+ flags.put(entry.getKey().toString(), entry.getValue());
+ else if (entry.getKey() instanceof ConfigKey<?>)
+ config.put((ConfigKey<?>)entry.getKey(), entry.getValue());
+ else if (entry.getKey() instanceof HasConfigKey<?>)
+ config.put(((HasConfigKey<?>)entry.getKey()).getConfigKey(), entry.getValue());
+ else {
+ log.warn("Spec "+this+" ignoring unknown config key "+entry.getKey());
+ }
+ }
+ return this;
+ }
+
+ public EnricherSpec<T> configure(CharSequence key, Object val) {
+ flags.put(checkNotNull(key, "key").toString(), val);
+ return this;
+ }
+
+ public <V> EnricherSpec<T> configure(ConfigKey<V> key, V val) {
+ config.put(checkNotNull(key, "key"), val);
+ return this;
+ }
+
+ public <V> EnricherSpec<T> configureIfNotNull(ConfigKey<V> key, V val) {
+ return (val != null) ? configure(key, val) : this;
+ }
+
+ public <V> EnricherSpec<T> configure(ConfigKey<V> key, Task<? extends V> val) {
+ config.put(checkNotNull(key, "key"), val);
+ return this;
+ }
+
+ public <V> EnricherSpec<T> configure(HasConfigKey<V> key, V val) {
+ config.put(checkNotNull(key, "key").getConfigKey(), val);
+ return this;
+ }
+
+ public <V> EnricherSpec<T> configure(HasConfigKey<V> key, Task<? extends V> val) {
+ config.put(checkNotNull(key, "key").getConfigKey(), val);
+ return this;
+ }
+
+ /**
+ * @return Read-only construction flags
+ * @see SetFromFlag declarations on the enricher type
+ */
+ public Map<String, ?> getFlags() {
+ return Collections.unmodifiableMap(flags);
+ }
+
+ /**
+ * @return Read-only configuration values
+ */
+ public Map<ConfigKey<?>, Object> getConfig() {
+ return Collections.unmodifiableMap(config);
+ }
+
+ public abstract static class ExtensibleEnricherSpec<T extends Enricher,K extends ExtensibleEnricherSpec<T,K>> extends EnricherSpec<T> {
+ private static final long serialVersionUID = -3649347642882809739L;
+
+ protected ExtensibleEnricherSpec(Class<? extends T> type) {
+ super(type);
+ }
+
+ @SuppressWarnings("unchecked")
+ protected K self() {
+ // we override the AbstractBrooklynObjectSpec method -- it's a different K here because
+ // EnricherSpec does not contain a parametrisable generic return type (Self)
+ return (K) this;
+ }
+
+ @Override
+ public K uniqueTag(String uniqueTag) {
+ super.uniqueTag(uniqueTag);
+ return self();
+ }
+
+ @Override
+ public K configure(Map<?, ?> val) {
+ super.configure(val);
+ return self();
+ }
+
+ @Override
+ public K configure(CharSequence key, Object val) {
+ super.configure(key, val);
+ return self();
+ }
+
+ @Override
+ public <V> K configure(ConfigKey<V> key, V val) {
+ super.configure(key, val);
+ return self();
+ }
+
+ @Override
+ public <V> K configureIfNotNull(ConfigKey<V> key, V val) {
+ super.configureIfNotNull(key, val);
+ return self();
+ }
+
+ @Override
+ public <V> K configure(ConfigKey<V> key, Task<? extends V> val) {
+ super.configure(key, val);
+ return self();
+ }
+
+ @Override
+ public <V> K configure(HasConfigKey<V> key, V val) {
+ super.configure(key, val);
+ return self();
+ }
+
+ @Override
+ public <V> K configure(HasConfigKey<V> key, Task<? extends V> val) {
+ super.configure(key, val);
+ return self();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/org/apache/brooklyn/policy/EnricherType.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/policy/EnricherType.java b/api/src/main/java/org/apache/brooklyn/policy/EnricherType.java
new file mode 100644
index 0000000..aba79a7
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/policy/EnricherType.java
@@ -0,0 +1,36 @@
+/*
+ * 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.policy;
+
+import brooklyn.basic.BrooklynType;
+
+import com.google.common.annotations.Beta;
+
+/**
+ * Gives type information for an {@link Enricher}. It is immutable.
+ *
+ * For enrichers that can support config keys etc being added on-the-fly,
+ * then this EnricherType will be a snapshot and subsequent snapshots will
+ * include the changes.
+ *
+ * @since 0.6
+ */
+@Beta
+public interface EnricherType extends BrooklynType {
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/org/apache/brooklyn/policy/EntityAdjunct.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/policy/EntityAdjunct.java b/api/src/main/java/org/apache/brooklyn/policy/EntityAdjunct.java
new file mode 100644
index 0000000..f21f347
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/policy/EntityAdjunct.java
@@ -0,0 +1,55 @@
+/*
+ * 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.policy;
+
+import javax.annotation.Nullable;
+
+import brooklyn.basic.BrooklynObject;
+
+/**
+ * EntityAdjuncts are supplementary logic that can be attached to Entities,
+ * such as providing sensor enrichment or event-driven policy behavior
+ */
+public interface EntityAdjunct extends BrooklynObject {
+ /**
+ * A unique id for this adjunct, typically created by the system with no meaning
+ */
+ @Override
+ String getId();
+
+ /**
+ * Whether the adjunct is destroyed
+ */
+ boolean isDestroyed();
+
+ /**
+ * Whether the adjunct is available/active, ie started and not stopped or interrupted
+ */
+ boolean isRunning();
+
+ /**
+ * An optional tag used to identify adjuncts with a specific purpose, typically created by the caller.
+ * This is used to prevent multiple instances with the same purpose from being created,
+ * and to access and customize adjuncts so created.
+ * <p>
+ * This will be included in the call to {@link #getTags()}.
+ */
+ @Nullable String getUniqueTag();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/org/apache/brooklyn/policy/Policy.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/policy/Policy.java b/api/src/main/java/org/apache/brooklyn/policy/Policy.java
new file mode 100644
index 0000000..2516bb9
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/policy/Policy.java
@@ -0,0 +1,82 @@
+/*
+ * 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.policy;
+
+import java.util.Map;
+
+import brooklyn.config.ConfigKey;
+import brooklyn.entity.rebind.RebindSupport;
+import brooklyn.entity.rebind.Rebindable;
+import brooklyn.entity.trait.Configurable;
+import brooklyn.mementos.PolicyMemento;
+
+import com.google.common.annotations.Beta;
+
+/**
+ * Policies implement actions and thus must be suspendable; policies should continue to evaluate their sensors
+ * and indicate their desired planned action even if they aren't invoking them
+ */
+public interface Policy extends EntityAdjunct, Rebindable, Configurable {
+ /**
+ * A unique id for this policy.
+ */
+ @Override
+ String getId();
+
+ /**
+ * Information about the type of this entity; analogous to Java's object.getClass.
+ */
+ @Beta
+ PolicyType getPolicyType();
+
+ /**
+ * Resume the policy
+ */
+ void resume();
+
+ /**
+ * Suspend the policy
+ */
+ void suspend();
+
+ /**
+ * Whether the policy is suspended
+ */
+ boolean isSuspended();
+
+ /**
+ * Convenience method for {@code config().get(key)}
+ */
+ <T> T getConfig(ConfigKey<T> key);
+
+ /**
+ * @deprecated since 0.7.0; use {@link #config()}, such as {@code policy.config().setConfig(key, val)}
+ */
+ @Deprecated
+ <T> T setConfig(ConfigKey<T> key, T val);
+
+ /**
+ * Users are strongly discouraged from calling or overriding this method.
+ * It is for internal calls only, relating to persisting/rebinding entities.
+ * This method may change (or be removed) in a future release without notice.
+ */
+ @Override
+ @Beta
+ RebindSupport<PolicyMemento> getRebindSupport();
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/org/apache/brooklyn/policy/PolicySpec.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/policy/PolicySpec.java b/api/src/main/java/org/apache/brooklyn/policy/PolicySpec.java
new file mode 100644
index 0000000..0ca9a76
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/policy/PolicySpec.java
@@ -0,0 +1,152 @@
+/*
+ * 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.policy;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.Collections;
+import java.util.Map;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import brooklyn.basic.AbstractBrooklynObjectSpec;
+import brooklyn.config.ConfigKey;
+import brooklyn.config.ConfigKey.HasConfigKey;
+import brooklyn.management.Task;
+
+import com.google.common.collect.Maps;
+
+/**
+ * Gives details of a policy to be created. It describes the policy's configuration, and is
+ * reusable to create multiple policies with the same configuration.
+ *
+ * To create a PolicySpec, it is strongly encouraged to use {@code create(...)} methods.
+ *
+ * @param <T> The type of policy to be created
+ *
+ * @author aled
+ */
+public class PolicySpec<T extends Policy> extends AbstractBrooklynObjectSpec<T,PolicySpec<T>> {
+
+ private static final Logger log = LoggerFactory.getLogger(PolicySpec.class);
+
+ private final static long serialVersionUID = 1L;
+
+
+ /**
+ * Creates a new {@link PolicySpec} instance for a policy of the given type. The returned
+ * {@link PolicySpec} can then be customized.
+ *
+ * @param type A {@link Policy} class
+ */
+ public static <T extends Policy> PolicySpec<T> create(Class<T> type) {
+ return new PolicySpec<T>(type);
+ }
+
+ /**
+ * Creates a new {@link PolicySpec} instance with the given config, for a policy of the given type.
+ *
+ * This is primarily for groovy code; equivalent to {@code PolicySpec.create(type).configure(config)}.
+ *
+ * @param config The spec's configuration (see {@link PolicySpec#configure(Map)}).
+ * @param type A {@link Policy} class
+ */
+ public static <T extends Policy> PolicySpec<T> create(Map<?,?> config, Class<T> type) {
+ return PolicySpec.create(type).configure(config);
+ }
+
+ private final Map<String, Object> flags = Maps.newLinkedHashMap();
+ private final Map<ConfigKey<?>, Object> config = Maps.newLinkedHashMap();
+
+ protected PolicySpec(Class<T> type) {
+ super(type);
+ }
+
+ protected void checkValidType(Class<? extends T> type) {
+ checkIsImplementation(type, Policy.class);
+ checkIsNewStyleImplementation(type);
+ }
+
+ public PolicySpec<T> uniqueTag(String uniqueTag) {
+ flags.put("uniqueTag", uniqueTag);
+ return this;
+ }
+
+ public PolicySpec<T> configure(Map<?,?> val) {
+ for (Map.Entry<?, ?> entry: val.entrySet()) {
+ if (entry.getKey()==null) throw new NullPointerException("Null key not permitted");
+ if (entry.getKey() instanceof CharSequence)
+ flags.put(entry.getKey().toString(), entry.getValue());
+ else if (entry.getKey() instanceof ConfigKey<?>)
+ config.put((ConfigKey<?>)entry.getKey(), entry.getValue());
+ else if (entry.getKey() instanceof HasConfigKey<?>)
+ config.put(((HasConfigKey<?>)entry.getKey()).getConfigKey(), entry.getValue());
+ else {
+ log.warn("Spec "+this+" ignoring unknown config key "+entry.getKey());
+ }
+ }
+ return this;
+ }
+
+ public PolicySpec<T> configure(CharSequence key, Object val) {
+ flags.put(checkNotNull(key, "key").toString(), val);
+ return this;
+ }
+
+ public <V> PolicySpec<T> configure(ConfigKey<V> key, V val) {
+ config.put(checkNotNull(key, "key"), val);
+ return this;
+ }
+
+ public <V> PolicySpec<T> configureIfNotNull(ConfigKey<V> key, V val) {
+ return (val != null) ? configure(key, val) : this;
+ }
+
+ public <V> PolicySpec<T> configure(ConfigKey<V> key, Task<? extends V> val) {
+ config.put(checkNotNull(key, "key"), val);
+ return this;
+ }
+
+ public <V> PolicySpec<T> configure(HasConfigKey<V> key, V val) {
+ config.put(checkNotNull(key, "key").getConfigKey(), val);
+ return this;
+ }
+
+ public <V> PolicySpec<T> configure(HasConfigKey<V> key, Task<? extends V> val) {
+ config.put(checkNotNull(key, "key").getConfigKey(), val);
+ return this;
+ }
+
+ /**
+ * @return Read-only construction flags
+ * @see SetFromFlag declarations on the policy type
+ */
+ public Map<String, ?> getFlags() {
+ return Collections.unmodifiableMap(flags);
+ }
+
+ /**
+ * @return Read-only configuration values
+ */
+ public Map<ConfigKey<?>, Object> getConfig() {
+ return Collections.unmodifiableMap(config);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/api/src/main/java/org/apache/brooklyn/policy/PolicyType.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/policy/PolicyType.java b/api/src/main/java/org/apache/brooklyn/policy/PolicyType.java
new file mode 100644
index 0000000..30c78e5
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/policy/PolicyType.java
@@ -0,0 +1,36 @@
+/*
+ * 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.policy;
+
+import brooklyn.basic.BrooklynType;
+
+import com.google.common.annotations.Beta;
+
+/**
+ * Gives type information for a {@link Policy}. It is immutable.
+ *
+ * For policies that can support config keys etc being added on-the-fly,
+ * then this PolicyType will be a snapshot and subsequent snapshots will
+ * include the changes.
+ *
+ * @since 0.5
+ */
+@Beta
+public interface PolicyType extends BrooklynType {
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/core/src/main/java/brooklyn/basic/BrooklynTypes.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/basic/BrooklynTypes.java b/core/src/main/java/brooklyn/basic/BrooklynTypes.java
index 483cc2b..084ecc7 100644
--- a/core/src/main/java/brooklyn/basic/BrooklynTypes.java
+++ b/core/src/main/java/brooklyn/basic/BrooklynTypes.java
@@ -20,14 +20,15 @@ package brooklyn.basic;
import java.util.Map;
+import org.apache.brooklyn.policy.Enricher;
+import org.apache.brooklyn.policy.Policy;
+
import brooklyn.config.ConfigKey;
import brooklyn.enricher.basic.EnricherDynamicType;
import brooklyn.entity.Entity;
import brooklyn.entity.basic.EntityDynamicType;
import brooklyn.event.Sensor;
import brooklyn.location.Location;
-import brooklyn.policy.Enricher;
-import brooklyn.policy.Policy;
import brooklyn.policy.basic.PolicyDynamicType;
import brooklyn.util.exceptions.Exceptions;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/core/src/main/java/brooklyn/catalog/CatalogPredicates.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/CatalogPredicates.java b/core/src/main/java/brooklyn/catalog/CatalogPredicates.java
index b373277..cc7cc94 100644
--- a/core/src/main/java/brooklyn/catalog/CatalogPredicates.java
+++ b/core/src/main/java/brooklyn/catalog/CatalogPredicates.java
@@ -22,6 +22,8 @@ import javax.annotation.Nullable;
import org.apache.brooklyn.catalog.CatalogItem;
import org.apache.brooklyn.catalog.CatalogItem.CatalogItemType;
+import org.apache.brooklyn.policy.Policy;
+import org.apache.brooklyn.policy.PolicySpec;
import brooklyn.catalog.internal.CatalogUtils;
import brooklyn.entity.Application;
@@ -31,8 +33,6 @@ import brooklyn.location.Location;
import brooklyn.location.LocationSpec;
import brooklyn.management.ManagementContext;
import brooklyn.management.entitlement.Entitlements;
-import brooklyn.policy.Policy;
-import brooklyn.policy.PolicySpec;
import com.google.common.base.Function;
import com.google.common.base.Predicate;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java b/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
index 27577a7..ba28071 100644
--- a/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
+++ b/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
@@ -41,10 +41,14 @@ import org.yaml.snakeyaml.Yaml;
import brooklyn.basic.AbstractBrooklynObjectSpec;
import brooklyn.basic.BrooklynObjectInternal.ConfigurationSupportInternal;
import brooklyn.camp.brooklyn.api.AssemblyTemplateSpecInstantiator;
+
import org.apache.brooklyn.catalog.BrooklynCatalog;
import org.apache.brooklyn.catalog.CatalogItem;
import org.apache.brooklyn.catalog.CatalogItem.CatalogBundle;
import org.apache.brooklyn.catalog.CatalogItem.CatalogItemType;
+import org.apache.brooklyn.policy.Policy;
+import org.apache.brooklyn.policy.PolicySpec;
+
import brooklyn.catalog.CatalogPredicates;
import brooklyn.catalog.internal.CatalogClasspathDo.CatalogScanningModes;
import brooklyn.config.BrooklynServerConfig;
@@ -54,8 +58,6 @@ import brooklyn.location.basic.BasicLocationRegistry;
import brooklyn.management.ManagementContext;
import brooklyn.management.classloading.BrooklynClassLoadingContext;
import brooklyn.management.internal.ManagementContextInternal;
-import brooklyn.policy.Policy;
-import brooklyn.policy.PolicySpec;
import brooklyn.util.collections.MutableList;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.collections.MutableSet;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/core/src/main/java/brooklyn/catalog/internal/CatalogClasspathDo.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/internal/CatalogClasspathDo.java b/core/src/main/java/brooklyn/catalog/internal/CatalogClasspathDo.java
index 9068a2a..046d69c 100644
--- a/core/src/main/java/brooklyn/catalog/internal/CatalogClasspathDo.java
+++ b/core/src/main/java/brooklyn/catalog/internal/CatalogClasspathDo.java
@@ -31,16 +31,16 @@ import javax.annotation.Nullable;
import org.reflections.util.ClasspathHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.apache.brooklyn.catalog.Catalog;
import org.apache.brooklyn.catalog.CatalogItem;
+import org.apache.brooklyn.policy.Policy;
+
import brooklyn.entity.Application;
import brooklyn.entity.Entity;
import brooklyn.entity.basic.ApplicationBuilder;
import brooklyn.entity.proxying.ImplementedBy;
import brooklyn.location.Location;
import brooklyn.management.internal.ManagementContextInternal;
-import brooklyn.policy.Policy;
import brooklyn.util.ResourceUtils;
import brooklyn.util.exceptions.Exceptions;
import brooklyn.util.javalang.AggregateClassLoader;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/core/src/main/java/brooklyn/catalog/internal/CatalogPolicyItemDto.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/internal/CatalogPolicyItemDto.java b/core/src/main/java/brooklyn/catalog/internal/CatalogPolicyItemDto.java
index 6ba3c50..379783f 100644
--- a/core/src/main/java/brooklyn/catalog/internal/CatalogPolicyItemDto.java
+++ b/core/src/main/java/brooklyn/catalog/internal/CatalogPolicyItemDto.java
@@ -18,8 +18,8 @@
*/
package brooklyn.catalog.internal;
-import brooklyn.policy.Policy;
-import brooklyn.policy.PolicySpec;
+import org.apache.brooklyn.policy.Policy;
+import org.apache.brooklyn.policy.PolicySpec;
public class CatalogPolicyItemDto extends CatalogItemDtoAbstract<Policy,PolicySpec<?>> {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/core/src/main/java/brooklyn/enricher/Enrichers.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/enricher/Enrichers.java b/core/src/main/java/brooklyn/enricher/Enrichers.java
index b34fc76..a4d7599 100644
--- a/core/src/main/java/brooklyn/enricher/Enrichers.java
+++ b/core/src/main/java/brooklyn/enricher/Enrichers.java
@@ -26,6 +26,9 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.apache.brooklyn.policy.Enricher;
+import org.apache.brooklyn.policy.EnricherSpec;
+
import brooklyn.enricher.basic.AbstractEnricher;
import brooklyn.enricher.basic.Aggregator;
import brooklyn.enricher.basic.Combiner;
@@ -37,8 +40,6 @@ import brooklyn.entity.Entity;
import brooklyn.event.AttributeSensor;
import brooklyn.event.Sensor;
import brooklyn.event.SensorEvent;
-import brooklyn.policy.Enricher;
-import brooklyn.policy.EnricherSpec;
import brooklyn.util.collections.MutableList;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.collections.MutableSet;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/core/src/main/java/brooklyn/enricher/basic/AbstractEnricher.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/enricher/basic/AbstractEnricher.java b/core/src/main/java/brooklyn/enricher/basic/AbstractEnricher.java
index 14c1426..1118dfd 100644
--- a/core/src/main/java/brooklyn/enricher/basic/AbstractEnricher.java
+++ b/core/src/main/java/brooklyn/enricher/basic/AbstractEnricher.java
@@ -22,6 +22,9 @@ import static com.google.common.base.Preconditions.checkState;
import java.util.Map;
+import org.apache.brooklyn.policy.Enricher;
+import org.apache.brooklyn.policy.EnricherType;
+
import brooklyn.config.ConfigKey;
import brooklyn.entity.basic.ConfigKeys;
import brooklyn.entity.basic.Entities;
@@ -32,8 +35,6 @@ import brooklyn.entity.rebind.RebindSupport;
import brooklyn.event.AttributeSensor;
import brooklyn.event.Sensor;
import brooklyn.mementos.EnricherMemento;
-import brooklyn.policy.Enricher;
-import brooklyn.policy.EnricherType;
import brooklyn.policy.basic.AbstractEntityAdjunct;
import brooklyn.util.flags.TypeCoercions;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/core/src/main/java/brooklyn/enricher/basic/EnricherDynamicType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/enricher/basic/EnricherDynamicType.java b/core/src/main/java/brooklyn/enricher/basic/EnricherDynamicType.java
index d2c26f6..39705d0 100644
--- a/core/src/main/java/brooklyn/enricher/basic/EnricherDynamicType.java
+++ b/core/src/main/java/brooklyn/enricher/basic/EnricherDynamicType.java
@@ -18,9 +18,10 @@
*/
package brooklyn.enricher.basic;
+import org.apache.brooklyn.policy.Enricher;
+import org.apache.brooklyn.policy.EnricherType;
+
import brooklyn.basic.BrooklynDynamicType;
-import brooklyn.policy.Enricher;
-import brooklyn.policy.EnricherType;
public class EnricherDynamicType extends BrooklynDynamicType<Enricher, AbstractEnricher> {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/core/src/main/java/brooklyn/enricher/basic/EnricherTypeSnapshot.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/enricher/basic/EnricherTypeSnapshot.java b/core/src/main/java/brooklyn/enricher/basic/EnricherTypeSnapshot.java
index 86e1f26..0c91461 100644
--- a/core/src/main/java/brooklyn/enricher/basic/EnricherTypeSnapshot.java
+++ b/core/src/main/java/brooklyn/enricher/basic/EnricherTypeSnapshot.java
@@ -20,9 +20,10 @@ package brooklyn.enricher.basic;
import java.util.Map;
+import org.apache.brooklyn.policy.EnricherType;
+
import brooklyn.basic.BrooklynTypeSnapshot;
import brooklyn.config.ConfigKey;
-import brooklyn.policy.EnricherType;
public class EnricherTypeSnapshot extends BrooklynTypeSnapshot implements EnricherType {
private static final long serialVersionUID = 4670930188951106009L;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/core/src/main/java/brooklyn/entity/basic/AbstractEntity.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/basic/AbstractEntity.java b/core/src/main/java/brooklyn/entity/basic/AbstractEntity.java
index dfc8d35..762d11e 100644
--- a/core/src/main/java/brooklyn/entity/basic/AbstractEntity.java
+++ b/core/src/main/java/brooklyn/entity/basic/AbstractEntity.java
@@ -27,6 +27,11 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.apache.brooklyn.policy.Enricher;
+import org.apache.brooklyn.policy.EnricherSpec;
+import org.apache.brooklyn.policy.EntityAdjunct;
+import org.apache.brooklyn.policy.Policy;
+import org.apache.brooklyn.policy.PolicySpec;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -76,11 +81,6 @@ import brooklyn.management.internal.EntityManagementSupport;
import brooklyn.management.internal.ManagementContextInternal;
import brooklyn.management.internal.SubscriptionTracker;
import brooklyn.mementos.EntityMemento;
-import brooklyn.policy.Enricher;
-import brooklyn.policy.EnricherSpec;
-import brooklyn.policy.EntityAdjunct;
-import brooklyn.policy.Policy;
-import brooklyn.policy.PolicySpec;
import brooklyn.policy.basic.AbstractEntityAdjunct;
import brooklyn.policy.basic.AbstractEntityAdjunct.AdjunctTagSupport;
import brooklyn.policy.basic.AbstractPolicy;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/core/src/main/java/brooklyn/entity/basic/Entities.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/basic/Entities.java b/core/src/main/java/brooklyn/entity/basic/Entities.java
index 79de190..ae36117 100644
--- a/core/src/main/java/brooklyn/entity/basic/Entities.java
+++ b/core/src/main/java/brooklyn/entity/basic/Entities.java
@@ -39,6 +39,8 @@ import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
+import org.apache.brooklyn.policy.Enricher;
+import org.apache.brooklyn.policy.Policy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -75,8 +77,6 @@ import brooklyn.management.internal.EntityManagerInternal;
import brooklyn.management.internal.LocalManagementContext;
import brooklyn.management.internal.ManagementContextInternal;
import brooklyn.management.internal.NonDeploymentManagementContext;
-import brooklyn.policy.Enricher;
-import brooklyn.policy.Policy;
import brooklyn.util.ResourceUtils;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.config.ConfigBag;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/core/src/main/java/brooklyn/entity/basic/EntityAdjuncts.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/basic/EntityAdjuncts.java b/core/src/main/java/brooklyn/entity/basic/EntityAdjuncts.java
index 242a61d..35e7ee6 100644
--- a/core/src/main/java/brooklyn/entity/basic/EntityAdjuncts.java
+++ b/core/src/main/java/brooklyn/entity/basic/EntityAdjuncts.java
@@ -21,12 +21,13 @@ package brooklyn.entity.basic;
import java.util.Iterator;
import java.util.List;
+import org.apache.brooklyn.policy.Enricher;
+import org.apache.brooklyn.policy.EntityAdjunct;
+
import brooklyn.entity.Entity;
import brooklyn.entity.basic.ServiceStateLogic.ComputeServiceIndicatorsFromChildrenAndMembers;
import brooklyn.entity.basic.ServiceStateLogic.ComputeServiceState;
import brooklyn.entity.basic.ServiceStateLogic.ServiceNotUpLogic;
-import brooklyn.policy.Enricher;
-import brooklyn.policy.EntityAdjunct;
import brooklyn.util.collections.MutableList;
import brooklyn.util.guava.Maybe;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/core/src/main/java/brooklyn/entity/basic/EntityTransientCopyInternal.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/basic/EntityTransientCopyInternal.java b/core/src/main/java/brooklyn/entity/basic/EntityTransientCopyInternal.java
index 9322436..00d4811 100644
--- a/core/src/main/java/brooklyn/entity/basic/EntityTransientCopyInternal.java
+++ b/core/src/main/java/brooklyn/entity/basic/EntityTransientCopyInternal.java
@@ -25,6 +25,9 @@ import java.util.Set;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import org.apache.brooklyn.policy.Enricher;
+import org.apache.brooklyn.policy.Policy;
+
import brooklyn.basic.BrooklynObject.TagSupport;
import brooklyn.config.ConfigKey;
import brooklyn.config.ConfigKey.HasConfigKey;
@@ -42,8 +45,6 @@ import brooklyn.management.ExecutionContext;
import brooklyn.management.ManagementContext;
import brooklyn.management.internal.EntityManagementSupport;
import brooklyn.mementos.EntityMemento;
-import brooklyn.policy.Enricher;
-import brooklyn.policy.Policy;
import brooklyn.util.config.ConfigBag;
import brooklyn.util.guava.Maybe;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/core/src/main/java/brooklyn/entity/basic/PolicyDescriptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/basic/PolicyDescriptor.java b/core/src/main/java/brooklyn/entity/basic/PolicyDescriptor.java
index 3bba292..d99432c 100644
--- a/core/src/main/java/brooklyn/entity/basic/PolicyDescriptor.java
+++ b/core/src/main/java/brooklyn/entity/basic/PolicyDescriptor.java
@@ -18,7 +18,7 @@
*/
package brooklyn.entity.basic;
-import brooklyn.policy.Policy;
+import org.apache.brooklyn.policy.Policy;
import com.google.common.base.Objects;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/core/src/main/java/brooklyn/entity/basic/ServiceStateLogic.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/basic/ServiceStateLogic.java b/core/src/main/java/brooklyn/entity/basic/ServiceStateLogic.java
index 135c1a3..8224873 100644
--- a/core/src/main/java/brooklyn/entity/basic/ServiceStateLogic.java
+++ b/core/src/main/java/brooklyn/entity/basic/ServiceStateLogic.java
@@ -26,6 +26,9 @@ import java.util.Set;
import javax.annotation.Nullable;
+import org.apache.brooklyn.policy.Enricher;
+import org.apache.brooklyn.policy.EnricherSpec;
+import org.apache.brooklyn.policy.EnricherSpec.ExtensibleEnricherSpec;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -45,9 +48,6 @@ import brooklyn.event.AttributeSensor;
import brooklyn.event.Sensor;
import brooklyn.event.SensorEvent;
import brooklyn.event.SensorEventListener;
-import brooklyn.policy.Enricher;
-import brooklyn.policy.EnricherSpec;
-import brooklyn.policy.EnricherSpec.ExtensibleEnricherSpec;
import brooklyn.util.collections.CollectionFunctionals;
import brooklyn.util.collections.MutableList;
import brooklyn.util.collections.MutableMap;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/core/src/main/java/brooklyn/entity/group/DynamicClusterImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/group/DynamicClusterImpl.java b/core/src/main/java/brooklyn/entity/group/DynamicClusterImpl.java
index a384281..6b27a2a 100644
--- a/core/src/main/java/brooklyn/entity/group/DynamicClusterImpl.java
+++ b/core/src/main/java/brooklyn/entity/group/DynamicClusterImpl.java
@@ -31,6 +31,7 @@ import java.util.Set;
import javax.annotation.Nullable;
+import org.apache.brooklyn.policy.Policy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -55,7 +56,6 @@ import brooklyn.location.MachineProvisioningLocation;
import brooklyn.location.basic.Locations;
import brooklyn.location.cloud.AvailabilityZoneExtension;
import brooklyn.management.Task;
-import brooklyn.policy.Policy;
import brooklyn.util.collections.MutableList;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.exceptions.Exceptions;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/12e3c230/core/src/main/java/brooklyn/entity/proxying/InternalEntityFactory.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/proxying/InternalEntityFactory.java b/core/src/main/java/brooklyn/entity/proxying/InternalEntityFactory.java
index c48c059..d6ee513 100644
--- a/core/src/main/java/brooklyn/entity/proxying/InternalEntityFactory.java
+++ b/core/src/main/java/brooklyn/entity/proxying/InternalEntityFactory.java
@@ -26,6 +26,10 @@ import java.util.Collection;
import java.util.Map;
import java.util.Set;
+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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,10 +43,6 @@ import brooklyn.entity.basic.Entities;
import brooklyn.entity.basic.EntityInternal;
import brooklyn.entity.basic.EntityLocal;
import brooklyn.management.internal.ManagementContextInternal;
-import brooklyn.policy.Enricher;
-import brooklyn.policy.EnricherSpec;
-import brooklyn.policy.Policy;
-import brooklyn.policy.PolicySpec;
import brooklyn.policy.basic.AbstractPolicy;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.collections.MutableSet;