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/15 15:33:27 UTC
[25/33] incubator-brooklyn git commit: [BROOKLYN-162] Refactor
package in ./core/internal
[BROOKLYN-162] Refactor package in ./core/internal
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/9cf456dc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/9cf456dc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/9cf456dc
Branch: refs/heads/master
Commit: 9cf456dca3110c308c11bd4b5fdedbbe74b4236d
Parents: 6602f69
Author: Hadrian Zbarcea <ha...@apache.org>
Authored: Sat Aug 15 00:05:56 2015 -0400
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Sat Aug 15 00:05:56 2015 -0400
----------------------------------------------------------------------
.../brooklyn/entity/basic/AbstractEntity.java | 4 +-
.../entity/basic/AbstractGroupImpl.java | 2 +-
.../rebind/PeriodicDeltaChangeListener.java | 2 +-
.../brooklyn/entity/rebind/RebindIteration.java | 2 +-
.../entity/rebind/RebindManagerImpl.java | 2 +-
.../basic/PortAttributeSensorAndConfigKey.java | 2 +-
.../java/brooklyn/event/feed/AbstractFeed.java | 2 +-
.../internal/BrooklynFeatureEnablement.java | 210 -------------------
.../internal/BrooklynInitialization.java | 81 -------
.../util/BrooklynLanguageExtensions.java | 3 +-
.../main/java/brooklyn/util/ResourceUtils.java | 2 +-
.../brooklyn/util/crypto/FluentKeySigner.java | 2 +-
.../java/brooklyn/util/crypto/SecureKeys.java | 2 +-
.../java/brooklyn/util/flags/TypeCoercions.java | 2 +-
.../util/internal/ssh/sshj/SshjTool.java | 2 +-
.../util/task/BasicExecutionManager.java | 2 +-
.../internal/BrooklynFeatureEnablement.java | 210 +++++++++++++++++++
.../core/internal/BrooklynInitialization.java | 81 +++++++
.../ha/HighAvailabilityManagerImpl.java | 2 +-
.../internal/LocalManagementContext.java | 2 +-
.../location/basic/AbstractLocation.java | 2 +-
.../location/basic/LocationConfigUtils.java | 4 +-
.../entity/rebind/RebindCatalogItemTest.java | 2 +-
...talogWhenCatalogPersistenceDisabledTest.java | 2 +-
.../internal/BrooklynFeatureEnablementTest.java | 118 -----------
.../sshj/SshjToolAsyncStubIntegrationTest.java | 2 +-
.../ssh/sshj/SshjToolIntegrationTest.java | 2 +-
.../internal/BrooklynFeatureEnablementTest.java | 119 +++++++++++
.../HighAvailabilityManagerSplitBrainTest.java | 2 +-
.../nginx/NginxRebindWithHaIntegrationTest.java | 2 +-
.../brooklyn/catalog/CatalogYamlRebindTest.java | 2 +-
.../brooklyn/launcher/BrooklynWebServer.java | 2 +-
32 files changed, 440 insertions(+), 436 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/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 dc005d8..2860b82 100644
--- a/core/src/main/java/brooklyn/entity/basic/AbstractEntity.java
+++ b/core/src/main/java/brooklyn/entity/basic/AbstractEntity.java
@@ -53,6 +53,8 @@ import org.apache.brooklyn.api.policy.EnricherSpec;
import org.apache.brooklyn.api.policy.EntityAdjunct;
import org.apache.brooklyn.api.policy.Policy;
import org.apache.brooklyn.api.policy.PolicySpec;
+import org.apache.brooklyn.core.internal.BrooklynFeatureEnablement;
+import org.apache.brooklyn.core.internal.BrooklynInitialization;
import org.apache.brooklyn.core.management.internal.EffectorUtils;
import org.apache.brooklyn.core.management.internal.EntityManagementSupport;
import org.apache.brooklyn.core.management.internal.ManagementContextInternal;
@@ -76,8 +78,6 @@ import brooklyn.event.basic.BasicNotificationSensor;
import brooklyn.event.basic.Sensors;
import brooklyn.event.feed.AbstractFeed;
import brooklyn.event.feed.ConfigToAttributes;
-import brooklyn.internal.BrooklynFeatureEnablement;
-import brooklyn.internal.BrooklynInitialization;
import brooklyn.internal.storage.BrooklynStorage;
import brooklyn.internal.storage.Reference;
import brooklyn.internal.storage.impl.BasicReference;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/main/java/brooklyn/entity/basic/AbstractGroupImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/basic/AbstractGroupImpl.java b/core/src/main/java/brooklyn/entity/basic/AbstractGroupImpl.java
index 79abdb0..a300f39 100644
--- a/core/src/main/java/brooklyn/entity/basic/AbstractGroupImpl.java
+++ b/core/src/main/java/brooklyn/entity/basic/AbstractGroupImpl.java
@@ -28,11 +28,11 @@ import org.apache.brooklyn.api.entity.Entity;
import org.apache.brooklyn.api.entity.Group;
import org.apache.brooklyn.api.entity.basic.EntityLocal;
import org.apache.brooklyn.api.entity.proxying.EntitySpec;
+import org.apache.brooklyn.core.internal.BrooklynFeatureEnablement;
import org.apache.brooklyn.core.management.internal.ManagementContextInternal;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import brooklyn.internal.BrooklynFeatureEnablement;
import brooklyn.util.collections.SetFromLiveMap;
import com.google.common.base.Optional;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/main/java/brooklyn/entity/rebind/PeriodicDeltaChangeListener.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/PeriodicDeltaChangeListener.java b/core/src/main/java/brooklyn/entity/rebind/PeriodicDeltaChangeListener.java
index 98906e9..d204ecc 100644
--- a/core/src/main/java/brooklyn/entity/rebind/PeriodicDeltaChangeListener.java
+++ b/core/src/main/java/brooklyn/entity/rebind/PeriodicDeltaChangeListener.java
@@ -45,12 +45,12 @@ import org.apache.brooklyn.api.management.Task;
import org.apache.brooklyn.api.mementos.BrooklynMementoPersister;
import org.apache.brooklyn.api.policy.Enricher;
import org.apache.brooklyn.api.policy.Policy;
+import org.apache.brooklyn.core.internal.BrooklynFeatureEnablement;
import brooklyn.entity.basic.BrooklynTaskTags;
import brooklyn.entity.basic.EntityInternal;
import brooklyn.entity.rebind.persister.BrooklynPersistenceUtils;
import brooklyn.entity.rebind.persister.PersistenceActivityMetrics;
-import brooklyn.internal.BrooklynFeatureEnablement;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.collections.MutableSet;
import brooklyn.util.exceptions.Exceptions;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/main/java/brooklyn/entity/rebind/RebindIteration.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/RebindIteration.java b/core/src/main/java/brooklyn/entity/rebind/RebindIteration.java
index 30803e2..8c6a402 100644
--- a/core/src/main/java/brooklyn/entity/rebind/RebindIteration.java
+++ b/core/src/main/java/brooklyn/entity/rebind/RebindIteration.java
@@ -64,6 +64,7 @@ import org.apache.brooklyn.api.mementos.TreeNode;
import org.apache.brooklyn.api.mementos.BrooklynMementoManifest.EntityMementoManifest;
import org.apache.brooklyn.api.policy.Enricher;
import org.apache.brooklyn.api.policy.Policy;
+import org.apache.brooklyn.core.internal.BrooklynFeatureEnablement;
import org.apache.brooklyn.core.management.internal.BrooklynObjectManagementMode;
import org.apache.brooklyn.core.management.internal.BrooklynObjectManagerInternal;
import org.apache.brooklyn.core.management.internal.EntityManagerInternal;
@@ -86,7 +87,6 @@ import brooklyn.entity.proxying.InternalPolicyFactory;
import brooklyn.entity.rebind.RebindManagerImpl.RebindTracker;
import brooklyn.entity.rebind.persister.PersistenceActivityMetrics;
import brooklyn.event.feed.AbstractFeed;
-import brooklyn.internal.BrooklynFeatureEnablement;
import org.apache.brooklyn.location.basic.AbstractLocation;
import org.apache.brooklyn.location.basic.LocationInternal;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/main/java/brooklyn/entity/rebind/RebindManagerImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/RebindManagerImpl.java b/core/src/main/java/brooklyn/entity/rebind/RebindManagerImpl.java
index 8221472..862c86b 100644
--- a/core/src/main/java/brooklyn/entity/rebind/RebindManagerImpl.java
+++ b/core/src/main/java/brooklyn/entity/rebind/RebindManagerImpl.java
@@ -43,6 +43,7 @@ import org.apache.brooklyn.api.management.ha.MementoCopyMode;
import org.apache.brooklyn.api.mementos.BrooklynMementoPersister;
import org.apache.brooklyn.api.mementos.BrooklynMementoRawData;
import org.apache.brooklyn.api.mementos.TreeNode;
+import org.apache.brooklyn.core.internal.BrooklynFeatureEnablement;
import org.apache.brooklyn.core.management.ha.HighAvailabilityManagerImpl;
import org.apache.brooklyn.core.management.internal.ManagementContextInternal;
import org.slf4j.Logger;
@@ -58,7 +59,6 @@ import brooklyn.entity.rebind.persister.BrooklynPersistenceUtils;
import brooklyn.entity.rebind.persister.BrooklynPersistenceUtils.CreateBackupMode;
import brooklyn.entity.rebind.persister.PersistenceActivityMetrics;
import brooklyn.entity.rebind.transformer.CompoundTransformer;
-import brooklyn.internal.BrooklynFeatureEnablement;
import brooklyn.util.collections.MutableList;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.collections.QuorumCheck;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/main/java/brooklyn/event/basic/PortAttributeSensorAndConfigKey.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/event/basic/PortAttributeSensorAndConfigKey.java b/core/src/main/java/brooklyn/event/basic/PortAttributeSensorAndConfigKey.java
index b086b98..fd7100a 100644
--- a/core/src/main/java/brooklyn/event/basic/PortAttributeSensorAndConfigKey.java
+++ b/core/src/main/java/brooklyn/event/basic/PortAttributeSensorAndConfigKey.java
@@ -28,12 +28,12 @@ import org.apache.brooklyn.api.location.MachineProvisioningLocation;
import org.apache.brooklyn.api.location.PortRange;
import org.apache.brooklyn.api.location.PortSupplier;
import org.apache.brooklyn.api.management.ManagementContext;
+import org.apache.brooklyn.core.internal.BrooklynInitialization;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import brooklyn.config.ConfigKey;
import brooklyn.entity.basic.BrooklynConfigKeys;
-import brooklyn.internal.BrooklynInitialization;
import org.apache.brooklyn.location.basic.Locations;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/main/java/brooklyn/event/feed/AbstractFeed.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/event/feed/AbstractFeed.java b/core/src/main/java/brooklyn/event/feed/AbstractFeed.java
index 5f5229c..23037a7 100644
--- a/core/src/main/java/brooklyn/event/feed/AbstractFeed.java
+++ b/core/src/main/java/brooklyn/event/feed/AbstractFeed.java
@@ -26,6 +26,7 @@ import org.apache.brooklyn.api.entity.Feed;
import org.apache.brooklyn.api.entity.basic.EntityLocal;
import org.apache.brooklyn.api.entity.rebind.RebindSupport;
import org.apache.brooklyn.api.mementos.FeedMemento;
+import org.apache.brooklyn.core.internal.BrooklynFeatureEnablement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -33,7 +34,6 @@ import brooklyn.config.ConfigKey;
import brooklyn.entity.basic.ConfigKeys;
import brooklyn.entity.basic.EntityInternal;
import brooklyn.entity.rebind.BasicFeedRebindSupport;
-import brooklyn.internal.BrooklynFeatureEnablement;
import brooklyn.policy.basic.AbstractEntityAdjunct;
import brooklyn.util.javalang.JavaClassNames;
import brooklyn.util.text.Strings;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/main/java/brooklyn/internal/BrooklynFeatureEnablement.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/internal/BrooklynFeatureEnablement.java b/core/src/main/java/brooklyn/internal/BrooklynFeatureEnablement.java
deleted file mode 100644
index 10a6e4a..0000000
--- a/core/src/main/java/brooklyn/internal/BrooklynFeatureEnablement.java
+++ /dev/null
@@ -1,210 +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.internal;
-
-import java.util.Map;
-
-import org.apache.brooklyn.api.management.ha.HighAvailabilityMode;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import brooklyn.config.BrooklynProperties;
-import brooklyn.internal.storage.BrooklynStorage;
-import brooklyn.util.internal.ssh.ShellTool;
-
-import com.google.common.annotations.Beta;
-import com.google.common.collect.Maps;
-
-/**
- * For enabling/disabling experimental features.
- * They can be enabled via java system properties, or by explicitly calling {@link #setEnablement(String, boolean)}.
- * <p>
- * For example, start brooklyn with {@code -Dbrooklyn.experimental.feature.policyPersistence=true}
- *
- * @author aled
- */
-@Beta
-public class BrooklynFeatureEnablement {
-
- private static final Logger LOG = LoggerFactory.getLogger(BrooklynFeatureEnablement.class);
-
- public static final String FEATURE_PROPERTY_PREFIX = "brooklyn.experimental.feature";
-
- public static final String FEATURE_POLICY_PERSISTENCE_PROPERTY = FEATURE_PROPERTY_PREFIX+".policyPersistence";
-
- public static final String FEATURE_ENRICHER_PERSISTENCE_PROPERTY = FEATURE_PROPERTY_PREFIX+".enricherPersistence";
-
- public static final String FEATURE_FEED_PERSISTENCE_PROPERTY = FEATURE_PROPERTY_PREFIX+".feedPersistence";
-
- /** whether feeds are automatically registered when set on entities, so that they are persisted */
- public static final String FEATURE_FEED_REGISTRATION_PROPERTY = FEATURE_PROPERTY_PREFIX+".feedRegistration";
-
- public static final String FEATURE_CATALOG_PERSISTENCE_PROPERTY = FEATURE_PROPERTY_PREFIX+".catalogPersistence";
-
- /** whether the default standby mode is {@link HighAvailabilityMode#HOT_STANDBY} or falling back to the traditional
- * {@link HighAvailabilityMode#STANDBY} */
- public static final String FEATURE_DEFAULT_STANDBY_IS_HOT_PROPERTY = FEATURE_PROPERTY_PREFIX+".defaultStandbyIsHot";
-
- /** whether to attempt to use {@link BrooklynStorage} (datagrid) as a backing store for data;
- * note this is <b>not</b> compatible with {@link #FEATURE_DEFAULT_STANDBY_IS_HOT_PROPERTY}
- * which uses a blob/file store and a larger-granularity rebind process than was intended with the datagrid */
- /* not sure if we still even need this? now the rebind/read-only feature reloads on demand from the persistence store;
- * the data-grid backing */
- public static final String FEATURE_USE_BROOKLYN_LIVE_OBJECTS_DATAGRID_STORAGE = FEATURE_PROPERTY_PREFIX+".useBrooklynLiveObjectsDatagridStorage";
-
- /**
- * Renaming threads can really helps with debugging etc; however it's a massive performance hit (2x)
- * <p>
- * We get 55000 tasks per sec with this off, 28k/s with this on.
- * <p>
- * Defaults to false if system property is not set.
- */
- public static final String FEATURE_RENAME_THREADS = "brooklyn.executionManager.renameThreads";
-
- /**
- * When rebinding to state created from very old versions, the catalogItemId properties will be missing which
- * results in errors when OSGi bundles are used. When enabled the code tries to infer the catalogItemId from
- * <ul>
- * <li> parent entities
- * <li> catalog items matching the type that needs to be deserialized
- * <li> iterating through all catalog items and checking if they can provide the needed type
- * </ul>
- */
- public static final String FEATURE_BACKWARDS_COMPATIBILITY_INFER_CATALOG_ITEM_ON_REBIND = "brooklyn.backwardCompatibility.feature.inferCatalogItemOnRebind";
-
- /**
- * When rebinding, an entity could reference a catalog item that no longer exists. This option
- * will automatically update the catalog item reference to what is inferred as the most
- * suitable catalog symbolicName:version.
- */
- public static final String FEATURE_AUTO_FIX_CATALOG_REF_ON_REBIND = "brooklyn.quickfix.fixDanglingCatalogItemOnRebind";
-
- /**
- * When executing over ssh, whether to support the "async exec" approach, or only the classic approach.
- *
- * If this feature is disabled, then even if the {@link ShellTool#PROP_EXEC_ASYNC} is configured it
- * will still use the classic ssh approach.
- */
- public static final String FEATURE_SSH_ASYNC_EXEC = FEATURE_PROPERTY_PREFIX+".ssh.asyncExec";
-
- public static final String FEATURE_VALIDATE_LOCATION_SSH_KEYS = "brooklyn.validate.locationSshKeys";
-
- private static final Map<String, Boolean> FEATURE_ENABLEMENTS = Maps.newLinkedHashMap();
-
- private static final Object MUTEX = new Object();
-
- static void setDefaults() {
- // Idea is here one can put experimental features that are *enabled* by default, but
- // that can be turned off via system properties, or vice versa.
- // Typically this is useful where a feature is deemed risky!
-
- setDefault(FEATURE_POLICY_PERSISTENCE_PROPERTY, true);
- setDefault(FEATURE_ENRICHER_PERSISTENCE_PROPERTY, true);
- setDefault(FEATURE_FEED_PERSISTENCE_PROPERTY, true);
- setDefault(FEATURE_FEED_REGISTRATION_PROPERTY, false);
- setDefault(FEATURE_CATALOG_PERSISTENCE_PROPERTY, true);
- setDefault(FEATURE_DEFAULT_STANDBY_IS_HOT_PROPERTY, false);
- setDefault(FEATURE_USE_BROOKLYN_LIVE_OBJECTS_DATAGRID_STORAGE, false);
- setDefault(FEATURE_RENAME_THREADS, false);
- setDefault(FEATURE_BACKWARDS_COMPATIBILITY_INFER_CATALOG_ITEM_ON_REBIND, true);
- setDefault(FEATURE_AUTO_FIX_CATALOG_REF_ON_REBIND, false);
- setDefault(FEATURE_SSH_ASYNC_EXEC, false);
- setDefault(FEATURE_VALIDATE_LOCATION_SSH_KEYS, true);
- }
-
- static {
- setDefaults();
- }
-
- /**
- * Initialises the feature-enablement from brooklyn properties. For each
- * property, prefer a system-property if present; otherwise use the value
- * from brooklyn properties.
- */
- public static void init(BrooklynProperties props) {
- boolean changed = false;
- for (Map.Entry<String, Object> entry : props.asMapWithStringKeys().entrySet()) {
- String property = entry.getKey();
- if (property.startsWith(FEATURE_PROPERTY_PREFIX)) {
- if (!FEATURE_ENABLEMENTS.containsKey(property)) {
- Object rawVal = System.getProperty(property);
- if (rawVal == null) {
- rawVal = entry.getValue();
- }
- boolean val = Boolean.parseBoolean(""+rawVal);
- FEATURE_ENABLEMENTS.put(property, val);
-
- changed = true;
- LOG.debug("Init feature enablement of "+property+" set to "+val);
- }
- }
- }
- if (!changed) {
- LOG.debug("Init feature enablement did nothing, as no settings in brooklyn properties");
- }
- }
-
- public static boolean isEnabled(String property) {
- synchronized (MUTEX) {
- if (!FEATURE_ENABLEMENTS.containsKey(property)) {
- String rawVal = System.getProperty(property);
- boolean val = Boolean.parseBoolean(rawVal);
- FEATURE_ENABLEMENTS.put(property, val);
- }
- return FEATURE_ENABLEMENTS.get(property);
- }
- }
-
- public static boolean enable(String property) {
- return setEnablement(property, true);
- }
-
- public static boolean disable(String property) {
- return setEnablement(property, false);
- }
-
- public static boolean setEnablement(String property, boolean val) {
- synchronized (MUTEX) {
- boolean oldVal = isEnabled(property);
- FEATURE_ENABLEMENTS.put(property, val);
- return oldVal;
- }
- }
-
- static void setDefault(String property, boolean val) {
- synchronized (MUTEX) {
- if (!FEATURE_ENABLEMENTS.containsKey(property)) {
- String rawVal = System.getProperty(property);
- if (rawVal == null) {
- FEATURE_ENABLEMENTS.put(property, val);
- LOG.debug("Default enablement of "+property+" set to "+val);
- } else {
- LOG.debug("Not setting default enablement of "+property+" to "+val+", because system property is "+rawVal);
- }
- }
- }
- }
-
- static void clearCache() {
- synchronized (MUTEX) {
- FEATURE_ENABLEMENTS.clear();
- setDefaults();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/main/java/brooklyn/internal/BrooklynInitialization.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/internal/BrooklynInitialization.java b/core/src/main/java/brooklyn/internal/BrooklynInitialization.java
deleted file mode 100644
index 70eea9f..0000000
--- a/core/src/main/java/brooklyn/internal/BrooklynInitialization.java
+++ /dev/null
@@ -1,81 +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.internal;
-
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.apache.brooklyn.location.basic.PortRanges;
-import brooklyn.util.crypto.SecureKeys;
-import brooklyn.util.flags.TypeCoercions;
-import brooklyn.util.net.Networking;
-
-import com.google.common.annotations.Beta;
-
-/** Various static initialization tasks are routed through this class,
- * to give us better traceability of their invocation. */
-@Beta
-public class BrooklynInitialization {
-
- private static AtomicBoolean done = new AtomicBoolean(false);
-
- public static void initTypeCoercionStandardAdapters() {
- TypeCoercions.initStandardAdapters();
- }
-
- public static void initSecureKeysBouncyCastleProvider() {
- SecureKeys.initBouncyCastleProvider();
- }
-
- public static void initNetworking() {
- Networking.init();
- }
-
- public static void initPortRanges() {
- PortRanges.init();
- }
-
- @SuppressWarnings("deprecation")
- public static void initLegacyLanguageExtensions() {
- brooklyn.util.BrooklynLanguageExtensions.init();
- }
-
- /* other things:
- *
- * RendererHints - done by the entity classes which need them, including Sensors
- *
- */
-
- public synchronized static void initAll() {
- if (done.get()) return;
- initTypeCoercionStandardAdapters();
- initSecureKeysBouncyCastleProvider();
- initNetworking();
- initPortRanges();
- initLegacyLanguageExtensions();
- done.set(true);
- }
-
- @SuppressWarnings("deprecation")
- public synchronized static void reinitAll() {
- done.set(false);
- brooklyn.util.BrooklynLanguageExtensions.reinit();
- initAll();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/main/java/brooklyn/util/BrooklynLanguageExtensions.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/util/BrooklynLanguageExtensions.java b/core/src/main/java/brooklyn/util/BrooklynLanguageExtensions.java
index dd25090..86aac7e 100644
--- a/core/src/main/java/brooklyn/util/BrooklynLanguageExtensions.java
+++ b/core/src/main/java/brooklyn/util/BrooklynLanguageExtensions.java
@@ -20,7 +20,8 @@ package brooklyn.util;
import java.util.concurrent.atomic.AtomicBoolean;
-import brooklyn.internal.BrooklynInitialization;
+import org.apache.brooklyn.core.internal.BrooklynInitialization;
+
import brooklyn.util.internal.TimeExtras;
/** @deprecated since 0.7.0 use {@link BrooklynInitialization} */
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/main/java/brooklyn/util/ResourceUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/util/ResourceUtils.java b/core/src/main/java/brooklyn/util/ResourceUtils.java
index 53264e3..9b23b7a 100644
--- a/core/src/main/java/brooklyn/util/ResourceUtils.java
+++ b/core/src/main/java/brooklyn/util/ResourceUtils.java
@@ -40,6 +40,7 @@ import java.util.regex.Pattern;
import org.apache.brooklyn.api.management.ManagementContext;
import org.apache.brooklyn.api.management.classloading.BrooklynClassLoadingContext;
+import org.apache.brooklyn.core.internal.BrooklynInitialization;
import org.apache.brooklyn.core.management.classloading.JavaBrooklynClassLoadingContext;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
@@ -53,7 +54,6 @@ import org.slf4j.LoggerFactory;
import brooklyn.catalog.internal.BasicBrooklynCatalog.BrooklynLoaderTracker;
import brooklyn.catalog.internal.CatalogUtils;
-import brooklyn.internal.BrooklynInitialization;
import org.apache.brooklyn.location.basic.SshMachineLocation;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/main/java/brooklyn/util/crypto/FluentKeySigner.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/util/crypto/FluentKeySigner.java b/core/src/main/java/brooklyn/util/crypto/FluentKeySigner.java
index 983a3d6..a1bc125 100644
--- a/core/src/main/java/brooklyn/util/crypto/FluentKeySigner.java
+++ b/core/src/main/java/brooklyn/util/crypto/FluentKeySigner.java
@@ -28,11 +28,11 @@ import java.util.Date;
import javax.security.auth.x500.X500Principal;
+import org.apache.brooklyn.core.internal.BrooklynInitialization;
import org.bouncycastle.asn1.x509.AuthorityKeyIdentifier;
import org.bouncycastle.asn1.x509.X509Extension;
import org.bouncycastle.jce.X509Principal;
-import brooklyn.internal.BrooklynInitialization;
import brooklyn.util.exceptions.Exceptions;
/** A fluent API which simplifies generating certificates (signed keys) */
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/main/java/brooklyn/util/crypto/SecureKeys.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/util/crypto/SecureKeys.java b/core/src/main/java/brooklyn/util/crypto/SecureKeys.java
index 23a46d0..29fcf32 100644
--- a/core/src/main/java/brooklyn/util/crypto/SecureKeys.java
+++ b/core/src/main/java/brooklyn/util/crypto/SecureKeys.java
@@ -28,6 +28,7 @@ import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Security;
+import org.apache.brooklyn.core.internal.BrooklynInitialization;
import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
import org.bouncycastle.jce.X509Principal;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
@@ -42,7 +43,6 @@ import org.bouncycastle.openssl.jcajce.JcePEMDecryptorProviderBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import brooklyn.internal.BrooklynInitialization;
import brooklyn.util.exceptions.Exceptions;
import brooklyn.util.stream.Streams;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/main/java/brooklyn/util/flags/TypeCoercions.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/util/flags/TypeCoercions.java b/core/src/main/java/brooklyn/util/flags/TypeCoercions.java
index 7bfb770..31f27be 100644
--- a/core/src/main/java/brooklyn/util/flags/TypeCoercions.java
+++ b/core/src/main/java/brooklyn/util/flags/TypeCoercions.java
@@ -45,6 +45,7 @@ import javax.annotation.concurrent.GuardedBy;
import org.apache.brooklyn.api.entity.Entity;
import org.apache.brooklyn.api.event.AttributeSensor;
import org.apache.brooklyn.api.event.Sensor;
+import org.apache.brooklyn.core.internal.BrooklynInitialization;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -53,7 +54,6 @@ import brooklyn.entity.basic.ClosureEntityFactory;
import brooklyn.entity.basic.ConfigurableEntityFactory;
import brooklyn.entity.basic.ConfigurableEntityFactoryFromEntityFactory;
import brooklyn.event.basic.Sensors;
-import brooklyn.internal.BrooklynInitialization;
import brooklyn.util.JavaGroovyEquivalents;
import brooklyn.util.collections.MutableSet;
import brooklyn.util.collections.QuorumCheck;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/main/java/brooklyn/util/internal/ssh/sshj/SshjTool.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/util/internal/ssh/sshj/SshjTool.java b/core/src/main/java/brooklyn/util/internal/ssh/sshj/SshjTool.java
index 8fa38ad..e069aa9 100644
--- a/core/src/main/java/brooklyn/util/internal/ssh/sshj/SshjTool.java
+++ b/core/src/main/java/brooklyn/util/internal/ssh/sshj/SshjTool.java
@@ -49,11 +49,11 @@ import net.schmizz.sshj.sftp.SFTPClient;
import net.schmizz.sshj.transport.TransportException;
import net.schmizz.sshj.xfer.InMemorySourceFile;
+import org.apache.brooklyn.core.internal.BrooklynFeatureEnablement;
import org.apache.commons.io.input.ProxyInputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import brooklyn.internal.BrooklynFeatureEnablement;
import brooklyn.util.exceptions.Exceptions;
import brooklyn.util.exceptions.RuntimeTimeoutException;
import brooklyn.util.internal.ssh.BackoffLimitedRetryHandler;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/main/java/brooklyn/util/task/BasicExecutionManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/util/task/BasicExecutionManager.java b/core/src/main/java/brooklyn/util/task/BasicExecutionManager.java
index c472132..13d035b 100644
--- a/core/src/main/java/brooklyn/util/task/BasicExecutionManager.java
+++ b/core/src/main/java/brooklyn/util/task/BasicExecutionManager.java
@@ -49,10 +49,10 @@ import org.apache.brooklyn.api.management.ExecutionManager;
import org.apache.brooklyn.api.management.HasTaskChildren;
import org.apache.brooklyn.api.management.Task;
import org.apache.brooklyn.api.management.TaskAdaptable;
+import org.apache.brooklyn.core.internal.BrooklynFeatureEnablement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import brooklyn.internal.BrooklynFeatureEnablement;
import brooklyn.util.collections.MutableList;
import brooklyn.util.exceptions.Exceptions;
import brooklyn.util.text.Identifiers;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynFeatureEnablement.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynFeatureEnablement.java b/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynFeatureEnablement.java
new file mode 100644
index 0000000..24d138b
--- /dev/null
+++ b/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynFeatureEnablement.java
@@ -0,0 +1,210 @@
+/*
+ * 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.core.internal;
+
+import java.util.Map;
+
+import org.apache.brooklyn.api.management.ha.HighAvailabilityMode;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import brooklyn.config.BrooklynProperties;
+import brooklyn.internal.storage.BrooklynStorage;
+import brooklyn.util.internal.ssh.ShellTool;
+
+import com.google.common.annotations.Beta;
+import com.google.common.collect.Maps;
+
+/**
+ * For enabling/disabling experimental features.
+ * They can be enabled via java system properties, or by explicitly calling {@link #setEnablement(String, boolean)}.
+ * <p>
+ * For example, start brooklyn with {@code -Dbrooklyn.experimental.feature.policyPersistence=true}
+ *
+ * @author aled
+ */
+@Beta
+public class BrooklynFeatureEnablement {
+
+ private static final Logger LOG = LoggerFactory.getLogger(BrooklynFeatureEnablement.class);
+
+ public static final String FEATURE_PROPERTY_PREFIX = "brooklyn.experimental.feature";
+
+ public static final String FEATURE_POLICY_PERSISTENCE_PROPERTY = FEATURE_PROPERTY_PREFIX+".policyPersistence";
+
+ public static final String FEATURE_ENRICHER_PERSISTENCE_PROPERTY = FEATURE_PROPERTY_PREFIX+".enricherPersistence";
+
+ public static final String FEATURE_FEED_PERSISTENCE_PROPERTY = FEATURE_PROPERTY_PREFIX+".feedPersistence";
+
+ /** whether feeds are automatically registered when set on entities, so that they are persisted */
+ public static final String FEATURE_FEED_REGISTRATION_PROPERTY = FEATURE_PROPERTY_PREFIX+".feedRegistration";
+
+ public static final String FEATURE_CATALOG_PERSISTENCE_PROPERTY = FEATURE_PROPERTY_PREFIX+".catalogPersistence";
+
+ /** whether the default standby mode is {@link HighAvailabilityMode#HOT_STANDBY} or falling back to the traditional
+ * {@link HighAvailabilityMode#STANDBY} */
+ public static final String FEATURE_DEFAULT_STANDBY_IS_HOT_PROPERTY = FEATURE_PROPERTY_PREFIX+".defaultStandbyIsHot";
+
+ /** whether to attempt to use {@link BrooklynStorage} (datagrid) as a backing store for data;
+ * note this is <b>not</b> compatible with {@link #FEATURE_DEFAULT_STANDBY_IS_HOT_PROPERTY}
+ * which uses a blob/file store and a larger-granularity rebind process than was intended with the datagrid */
+ /* not sure if we still even need this? now the rebind/read-only feature reloads on demand from the persistence store;
+ * the data-grid backing */
+ public static final String FEATURE_USE_BROOKLYN_LIVE_OBJECTS_DATAGRID_STORAGE = FEATURE_PROPERTY_PREFIX+".useBrooklynLiveObjectsDatagridStorage";
+
+ /**
+ * Renaming threads can really helps with debugging etc; however it's a massive performance hit (2x)
+ * <p>
+ * We get 55000 tasks per sec with this off, 28k/s with this on.
+ * <p>
+ * Defaults to false if system property is not set.
+ */
+ public static final String FEATURE_RENAME_THREADS = "brooklyn.executionManager.renameThreads";
+
+ /**
+ * When rebinding to state created from very old versions, the catalogItemId properties will be missing which
+ * results in errors when OSGi bundles are used. When enabled the code tries to infer the catalogItemId from
+ * <ul>
+ * <li> parent entities
+ * <li> catalog items matching the type that needs to be deserialized
+ * <li> iterating through all catalog items and checking if they can provide the needed type
+ * </ul>
+ */
+ public static final String FEATURE_BACKWARDS_COMPATIBILITY_INFER_CATALOG_ITEM_ON_REBIND = "brooklyn.backwardCompatibility.feature.inferCatalogItemOnRebind";
+
+ /**
+ * When rebinding, an entity could reference a catalog item that no longer exists. This option
+ * will automatically update the catalog item reference to what is inferred as the most
+ * suitable catalog symbolicName:version.
+ */
+ public static final String FEATURE_AUTO_FIX_CATALOG_REF_ON_REBIND = "brooklyn.quickfix.fixDanglingCatalogItemOnRebind";
+
+ /**
+ * When executing over ssh, whether to support the "async exec" approach, or only the classic approach.
+ *
+ * If this feature is disabled, then even if the {@link ShellTool#PROP_EXEC_ASYNC} is configured it
+ * will still use the classic ssh approach.
+ */
+ public static final String FEATURE_SSH_ASYNC_EXEC = FEATURE_PROPERTY_PREFIX+".ssh.asyncExec";
+
+ public static final String FEATURE_VALIDATE_LOCATION_SSH_KEYS = "brooklyn.validate.locationSshKeys";
+
+ private static final Map<String, Boolean> FEATURE_ENABLEMENTS = Maps.newLinkedHashMap();
+
+ private static final Object MUTEX = new Object();
+
+ static void setDefaults() {
+ // Idea is here one can put experimental features that are *enabled* by default, but
+ // that can be turned off via system properties, or vice versa.
+ // Typically this is useful where a feature is deemed risky!
+
+ setDefault(FEATURE_POLICY_PERSISTENCE_PROPERTY, true);
+ setDefault(FEATURE_ENRICHER_PERSISTENCE_PROPERTY, true);
+ setDefault(FEATURE_FEED_PERSISTENCE_PROPERTY, true);
+ setDefault(FEATURE_FEED_REGISTRATION_PROPERTY, false);
+ setDefault(FEATURE_CATALOG_PERSISTENCE_PROPERTY, true);
+ setDefault(FEATURE_DEFAULT_STANDBY_IS_HOT_PROPERTY, false);
+ setDefault(FEATURE_USE_BROOKLYN_LIVE_OBJECTS_DATAGRID_STORAGE, false);
+ setDefault(FEATURE_RENAME_THREADS, false);
+ setDefault(FEATURE_BACKWARDS_COMPATIBILITY_INFER_CATALOG_ITEM_ON_REBIND, true);
+ setDefault(FEATURE_AUTO_FIX_CATALOG_REF_ON_REBIND, false);
+ setDefault(FEATURE_SSH_ASYNC_EXEC, false);
+ setDefault(FEATURE_VALIDATE_LOCATION_SSH_KEYS, true);
+ }
+
+ static {
+ setDefaults();
+ }
+
+ /**
+ * Initialises the feature-enablement from brooklyn properties. For each
+ * property, prefer a system-property if present; otherwise use the value
+ * from brooklyn properties.
+ */
+ public static void init(BrooklynProperties props) {
+ boolean changed = false;
+ for (Map.Entry<String, Object> entry : props.asMapWithStringKeys().entrySet()) {
+ String property = entry.getKey();
+ if (property.startsWith(FEATURE_PROPERTY_PREFIX)) {
+ if (!FEATURE_ENABLEMENTS.containsKey(property)) {
+ Object rawVal = System.getProperty(property);
+ if (rawVal == null) {
+ rawVal = entry.getValue();
+ }
+ boolean val = Boolean.parseBoolean(""+rawVal);
+ FEATURE_ENABLEMENTS.put(property, val);
+
+ changed = true;
+ LOG.debug("Init feature enablement of "+property+" set to "+val);
+ }
+ }
+ }
+ if (!changed) {
+ LOG.debug("Init feature enablement did nothing, as no settings in brooklyn properties");
+ }
+ }
+
+ public static boolean isEnabled(String property) {
+ synchronized (MUTEX) {
+ if (!FEATURE_ENABLEMENTS.containsKey(property)) {
+ String rawVal = System.getProperty(property);
+ boolean val = Boolean.parseBoolean(rawVal);
+ FEATURE_ENABLEMENTS.put(property, val);
+ }
+ return FEATURE_ENABLEMENTS.get(property);
+ }
+ }
+
+ public static boolean enable(String property) {
+ return setEnablement(property, true);
+ }
+
+ public static boolean disable(String property) {
+ return setEnablement(property, false);
+ }
+
+ public static boolean setEnablement(String property, boolean val) {
+ synchronized (MUTEX) {
+ boolean oldVal = isEnabled(property);
+ FEATURE_ENABLEMENTS.put(property, val);
+ return oldVal;
+ }
+ }
+
+ static void setDefault(String property, boolean val) {
+ synchronized (MUTEX) {
+ if (!FEATURE_ENABLEMENTS.containsKey(property)) {
+ String rawVal = System.getProperty(property);
+ if (rawVal == null) {
+ FEATURE_ENABLEMENTS.put(property, val);
+ LOG.debug("Default enablement of "+property+" set to "+val);
+ } else {
+ LOG.debug("Not setting default enablement of "+property+" to "+val+", because system property is "+rawVal);
+ }
+ }
+ }
+ }
+
+ static void clearCache() {
+ synchronized (MUTEX) {
+ FEATURE_ENABLEMENTS.clear();
+ setDefaults();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynInitialization.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynInitialization.java b/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynInitialization.java
new file mode 100644
index 0000000..1858306
--- /dev/null
+++ b/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynInitialization.java
@@ -0,0 +1,81 @@
+/*
+ * 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.core.internal;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import org.apache.brooklyn.location.basic.PortRanges;
+import brooklyn.util.crypto.SecureKeys;
+import brooklyn.util.flags.TypeCoercions;
+import brooklyn.util.net.Networking;
+
+import com.google.common.annotations.Beta;
+
+/** Various static initialization tasks are routed through this class,
+ * to give us better traceability of their invocation. */
+@Beta
+public class BrooklynInitialization {
+
+ private static AtomicBoolean done = new AtomicBoolean(false);
+
+ public static void initTypeCoercionStandardAdapters() {
+ TypeCoercions.initStandardAdapters();
+ }
+
+ public static void initSecureKeysBouncyCastleProvider() {
+ SecureKeys.initBouncyCastleProvider();
+ }
+
+ public static void initNetworking() {
+ Networking.init();
+ }
+
+ public static void initPortRanges() {
+ PortRanges.init();
+ }
+
+ @SuppressWarnings("deprecation")
+ public static void initLegacyLanguageExtensions() {
+ brooklyn.util.BrooklynLanguageExtensions.init();
+ }
+
+ /* other things:
+ *
+ * RendererHints - done by the entity classes which need them, including Sensors
+ *
+ */
+
+ public synchronized static void initAll() {
+ if (done.get()) return;
+ initTypeCoercionStandardAdapters();
+ initSecureKeysBouncyCastleProvider();
+ initNetworking();
+ initPortRanges();
+ initLegacyLanguageExtensions();
+ done.set(true);
+ }
+
+ @SuppressWarnings("deprecation")
+ public synchronized static void reinitAll() {
+ done.set(false);
+ brooklyn.util.BrooklynLanguageExtensions.reinit();
+ initAll();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/main/java/org/apache/brooklyn/core/management/ha/HighAvailabilityManagerImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/management/ha/HighAvailabilityManagerImpl.java b/core/src/main/java/org/apache/brooklyn/core/management/ha/HighAvailabilityManagerImpl.java
index 8a02fcf..25d8281 100644
--- a/core/src/main/java/org/apache/brooklyn/core/management/ha/HighAvailabilityManagerImpl.java
+++ b/core/src/main/java/org/apache/brooklyn/core/management/ha/HighAvailabilityManagerImpl.java
@@ -42,6 +42,7 @@ import org.apache.brooklyn.api.management.ha.ManagementPlaneSyncRecord;
import org.apache.brooklyn.api.management.ha.ManagementPlaneSyncRecordPersister;
import org.apache.brooklyn.api.management.ha.MementoCopyMode;
import org.apache.brooklyn.api.management.ha.ManagementPlaneSyncRecordPersister.Delta;
+import org.apache.brooklyn.core.internal.BrooklynFeatureEnablement;
import org.apache.brooklyn.core.management.ha.BasicMasterChooser.AlphabeticMasterChooser;
import org.apache.brooklyn.core.management.internal.BrooklynObjectManagementMode;
import org.apache.brooklyn.core.management.internal.LocalEntityManager;
@@ -66,7 +67,6 @@ import brooklyn.entity.rebind.persister.PersistenceActivityMetrics;
import brooklyn.entity.rebind.plane.dto.BasicManagementNodeSyncRecord;
import brooklyn.entity.rebind.plane.dto.ManagementPlaneSyncRecordImpl;
import brooklyn.entity.rebind.plane.dto.ManagementPlaneSyncRecordImpl.Builder;
-import brooklyn.internal.BrooklynFeatureEnablement;
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/9cf456dc/core/src/main/java/org/apache/brooklyn/core/management/internal/LocalManagementContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/management/internal/LocalManagementContext.java b/core/src/main/java/org/apache/brooklyn/core/management/internal/LocalManagementContext.java
index 306dcd8..3c353e2 100644
--- a/core/src/main/java/org/apache/brooklyn/core/management/internal/LocalManagementContext.java
+++ b/core/src/main/java/org/apache/brooklyn/core/management/internal/LocalManagementContext.java
@@ -42,6 +42,7 @@ import org.apache.brooklyn.api.management.ManagementContext;
import org.apache.brooklyn.api.management.SubscriptionManager;
import org.apache.brooklyn.api.management.Task;
import org.apache.brooklyn.api.management.TaskAdaptable;
+import org.apache.brooklyn.core.internal.BrooklynFeatureEnablement;
import org.apache.brooklyn.core.management.entitlement.Entitlements;
import org.apache.brooklyn.core.management.ha.OsgiManager;
import org.slf4j.Logger;
@@ -54,7 +55,6 @@ import brooklyn.entity.effector.Effectors;
import brooklyn.entity.proxying.InternalEntityFactory;
import brooklyn.entity.proxying.InternalLocationFactory;
import brooklyn.entity.proxying.InternalPolicyFactory;
-import brooklyn.internal.BrooklynFeatureEnablement;
import brooklyn.internal.storage.DataGridFactory;
import brooklyn.util.exceptions.Exceptions;
import brooklyn.util.guava.Maybe;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/main/java/org/apache/brooklyn/location/basic/AbstractLocation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/location/basic/AbstractLocation.java b/core/src/main/java/org/apache/brooklyn/location/basic/AbstractLocation.java
index c5a74a0..554a781 100644
--- a/core/src/main/java/org/apache/brooklyn/location/basic/AbstractLocation.java
+++ b/core/src/main/java/org/apache/brooklyn/location/basic/AbstractLocation.java
@@ -35,6 +35,7 @@ import org.apache.brooklyn.api.location.Location;
import org.apache.brooklyn.api.location.LocationSpec;
import org.apache.brooklyn.api.management.Task;
import org.apache.brooklyn.api.mementos.LocationMemento;
+import org.apache.brooklyn.core.internal.BrooklynFeatureEnablement;
import org.apache.brooklyn.core.management.internal.LocalLocationManager;
import org.apache.brooklyn.core.management.internal.ManagementContextInternal;
import org.slf4j.Logger;
@@ -47,7 +48,6 @@ import brooklyn.config.ConfigKey.HasConfigKey;
import brooklyn.entity.basic.ConfigKeys;
import brooklyn.entity.rebind.BasicLocationRebindSupport;
import brooklyn.event.basic.BasicConfigKey;
-import brooklyn.internal.BrooklynFeatureEnablement;
import brooklyn.internal.storage.BrooklynStorage;
import brooklyn.internal.storage.Reference;
import brooklyn.internal.storage.impl.BasicReference;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/main/java/org/apache/brooklyn/location/basic/LocationConfigUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/location/basic/LocationConfigUtils.java b/core/src/main/java/org/apache/brooklyn/location/basic/LocationConfigUtils.java
index ce3c444..d34a199 100644
--- a/core/src/main/java/org/apache/brooklyn/location/basic/LocationConfigUtils.java
+++ b/core/src/main/java/org/apache/brooklyn/location/basic/LocationConfigUtils.java
@@ -31,13 +31,15 @@ import java.util.Map;
import java.util.Set;
import org.apache.brooklyn.api.management.ManagementContext;
+import org.apache.brooklyn.core.internal.BrooklynFeatureEnablement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import brooklyn.config.ConfigKey;
import brooklyn.entity.basic.ConfigKeys;
-import brooklyn.internal.BrooklynFeatureEnablement;
+
import org.apache.brooklyn.location.cloud.CloudLocationConfig;
+
import brooklyn.util.ResourceUtils;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.collections.MutableSet;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/test/java/brooklyn/entity/rebind/RebindCatalogItemTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/rebind/RebindCatalogItemTest.java b/core/src/test/java/brooklyn/entity/rebind/RebindCatalogItemTest.java
index 5d95534..f46df75 100644
--- a/core/src/test/java/brooklyn/entity/rebind/RebindCatalogItemTest.java
+++ b/core/src/test/java/brooklyn/entity/rebind/RebindCatalogItemTest.java
@@ -40,6 +40,7 @@ import org.apache.brooklyn.api.catalog.CatalogItem;
import org.apache.brooklyn.api.catalog.CatalogItem.CatalogItemType;
import org.apache.brooklyn.api.entity.proxying.EntitySpec;
import org.apache.brooklyn.api.management.ManagementContext;
+import org.apache.brooklyn.core.internal.BrooklynFeatureEnablement;
import org.apache.brooklyn.core.management.internal.LocalManagementContext;
import org.apache.brooklyn.test.entity.TestEntity;
@@ -47,7 +48,6 @@ import brooklyn.catalog.internal.BasicBrooklynCatalog;
import brooklyn.catalog.internal.CatalogDto;
import brooklyn.config.BrooklynProperties;
import brooklyn.config.BrooklynServerConfig;
-import brooklyn.internal.BrooklynFeatureEnablement;
import org.apache.brooklyn.location.basic.LocalhostMachineProvisioningLocation;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/test/java/brooklyn/entity/rebind/RebindCatalogWhenCatalogPersistenceDisabledTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/rebind/RebindCatalogWhenCatalogPersistenceDisabledTest.java b/core/src/test/java/brooklyn/entity/rebind/RebindCatalogWhenCatalogPersistenceDisabledTest.java
index 2c3890c..7654759 100644
--- a/core/src/test/java/brooklyn/entity/rebind/RebindCatalogWhenCatalogPersistenceDisabledTest.java
+++ b/core/src/test/java/brooklyn/entity/rebind/RebindCatalogWhenCatalogPersistenceDisabledTest.java
@@ -30,12 +30,12 @@ import brooklyn.camp.lite.CampPlatformWithJustBrooklynMgmt;
import org.apache.brooklyn.api.catalog.CatalogItem;
import org.apache.brooklyn.api.entity.proxying.EntitySpec;
+import org.apache.brooklyn.core.internal.BrooklynFeatureEnablement;
import org.apache.brooklyn.core.management.internal.LocalManagementContext;
import org.apache.brooklyn.test.entity.TestEntity;
import brooklyn.config.BrooklynProperties;
import brooklyn.config.BrooklynServerConfig;
-import brooklyn.internal.BrooklynFeatureEnablement;
import com.google.common.collect.Iterables;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/test/java/brooklyn/internal/BrooklynFeatureEnablementTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/internal/BrooklynFeatureEnablementTest.java b/core/src/test/java/brooklyn/internal/BrooklynFeatureEnablementTest.java
deleted file mode 100644
index ea0fed6..0000000
--- a/core/src/test/java/brooklyn/internal/BrooklynFeatureEnablementTest.java
+++ /dev/null
@@ -1,118 +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.internal;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import brooklyn.config.BrooklynProperties;
-
-public class BrooklynFeatureEnablementTest {
-
- @BeforeMethod(alwaysRun=true)
- public void setUp() throws Exception {
- BrooklynFeatureEnablement.clearCache();
- }
-
- @Test
- public void testDefaultIsNotEnabled() throws Exception {
- assertFalse(BrooklynFeatureEnablement.isEnabled("feature.not.referenced.anywhere"));
- }
-
- @Test
- public void testCanSetPropertyEnablement() throws Exception {
- String featureProperty = "brooklyn.experimental.feature.testCanSetPropertyEnablement";
- boolean preTestVal = BrooklynFeatureEnablement.isEnabled(featureProperty);
- try {
- boolean oldVal = BrooklynFeatureEnablement.enable(featureProperty);
- assertEquals(oldVal, preTestVal);
- assertTrue(BrooklynFeatureEnablement.isEnabled(featureProperty));
-
- boolean oldVal2 = BrooklynFeatureEnablement.disable(featureProperty);
- assertTrue(oldVal2);
- assertFalse(BrooklynFeatureEnablement.isEnabled(featureProperty));
- } finally {
- BrooklynFeatureEnablement.setEnablement(featureProperty, preTestVal);
- }
- }
-
- @Test
- public void testReadsEnablementFromProperties() throws Exception {
- String featureProperty = "brooklyn.experimental.feature.testReadsEnablementFromProperties";
- System.setProperty(featureProperty, "true");
- try {
- assertTrue(BrooklynFeatureEnablement.isEnabled(featureProperty));
- } finally {
- System.clearProperty(featureProperty);
- }
- }
-
- @Test
- public void testCanSetDefaultWhichTakesEffectIfNoSystemProperty() throws Exception {
- String featureProperty = "brooklyn.experimental.feature.testCanSetDefaultWhichTakesEffectIfNoSystemProperty";
- BrooklynFeatureEnablement.setDefault(featureProperty, true);
- assertTrue(BrooklynFeatureEnablement.isEnabled(featureProperty));
- System.setProperty(featureProperty, "true");
- try {
- } finally {
- System.clearProperty(featureProperty);
- }
- }
-
- @Test
- public void testCanSetDefaultWhichIsIgnoredIfSystemProperty() throws Exception {
- String featureProperty = "brooklyn.experimental.feature.testCanSetDefaultWhichIsIgnoredIfSystemProperty";
- System.setProperty(featureProperty, "false");
- try {
- BrooklynFeatureEnablement.setDefault(featureProperty, true);
- assertFalse(BrooklynFeatureEnablement.isEnabled(featureProperty));
- } finally {
- System.clearProperty(featureProperty);
- }
- }
-
- @Test
- public void testCanSetDefaultWhichIsIgnoredIfBrooklynProps() throws Exception {
- String featureProperty = "brooklyn.experimental.feature.testCanSetDefaultWhichIsIgnoredIfBrooklynProps";
- BrooklynProperties props = BrooklynProperties.Factory.newEmpty();
- props.put(featureProperty, false);
- BrooklynFeatureEnablement.init(props);
- BrooklynFeatureEnablement.setDefault(featureProperty, true);
- assertFalse(BrooklynFeatureEnablement.isEnabled(featureProperty));
- }
-
- @Test
- public void testPrefersSysPropOverBrooklynProps() throws Exception {
- String featureProperty = "brooklyn.experimental.feature.testPrefersSysPropOverBrooklynProps";
- BrooklynProperties props = BrooklynProperties.Factory.newEmpty();
- props.put(featureProperty, false);
- System.setProperty(featureProperty, "true");
- try {
- BrooklynFeatureEnablement.init(props);
- BrooklynFeatureEnablement.setDefault(featureProperty, true);
- assertTrue(BrooklynFeatureEnablement.isEnabled(featureProperty));
- } finally {
- System.clearProperty(featureProperty);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/test/java/brooklyn/util/internal/ssh/sshj/SshjToolAsyncStubIntegrationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/util/internal/ssh/sshj/SshjToolAsyncStubIntegrationTest.java b/core/src/test/java/brooklyn/util/internal/ssh/sshj/SshjToolAsyncStubIntegrationTest.java
index 9d468a6..df0330a 100644
--- a/core/src/test/java/brooklyn/util/internal/ssh/sshj/SshjToolAsyncStubIntegrationTest.java
+++ b/core/src/test/java/brooklyn/util/internal/ssh/sshj/SshjToolAsyncStubIntegrationTest.java
@@ -25,11 +25,11 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.List;
+import org.apache.brooklyn.core.internal.BrooklynFeatureEnablement;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
-import brooklyn.internal.BrooklynFeatureEnablement;
import brooklyn.util.exceptions.Exceptions;
import brooklyn.util.internal.ssh.SshAbstractTool.SshAction;
import brooklyn.util.internal.ssh.sshj.SshjTool.ShellAction;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/test/java/brooklyn/util/internal/ssh/sshj/SshjToolIntegrationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/util/internal/ssh/sshj/SshjToolIntegrationTest.java b/core/src/test/java/brooklyn/util/internal/ssh/sshj/SshjToolIntegrationTest.java
index de3f58e..f1e354c 100644
--- a/core/src/test/java/brooklyn/util/internal/ssh/sshj/SshjToolIntegrationTest.java
+++ b/core/src/test/java/brooklyn/util/internal/ssh/sshj/SshjToolIntegrationTest.java
@@ -36,9 +36,9 @@ import java.util.concurrent.atomic.AtomicReference;
import net.schmizz.sshj.connection.channel.direct.Session;
+import org.apache.brooklyn.core.internal.BrooklynFeatureEnablement;
import org.testng.annotations.Test;
-import brooklyn.internal.BrooklynFeatureEnablement;
import brooklyn.test.Asserts;
import brooklyn.util.exceptions.Exceptions;
import brooklyn.util.exceptions.RuntimeTimeoutException;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/test/java/org/apache/brooklyn/core/internal/BrooklynFeatureEnablementTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/internal/BrooklynFeatureEnablementTest.java b/core/src/test/java/org/apache/brooklyn/core/internal/BrooklynFeatureEnablementTest.java
new file mode 100644
index 0000000..93ed8db
--- /dev/null
+++ b/core/src/test/java/org/apache/brooklyn/core/internal/BrooklynFeatureEnablementTest.java
@@ -0,0 +1,119 @@
+/*
+ * 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.core.internal;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
+import org.apache.brooklyn.core.internal.BrooklynFeatureEnablement;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import brooklyn.config.BrooklynProperties;
+
+public class BrooklynFeatureEnablementTest {
+
+ @BeforeMethod(alwaysRun=true)
+ public void setUp() throws Exception {
+ BrooklynFeatureEnablement.clearCache();
+ }
+
+ @Test
+ public void testDefaultIsNotEnabled() throws Exception {
+ assertFalse(BrooklynFeatureEnablement.isEnabled("feature.not.referenced.anywhere"));
+ }
+
+ @Test
+ public void testCanSetPropertyEnablement() throws Exception {
+ String featureProperty = "brooklyn.experimental.feature.testCanSetPropertyEnablement";
+ boolean preTestVal = BrooklynFeatureEnablement.isEnabled(featureProperty);
+ try {
+ boolean oldVal = BrooklynFeatureEnablement.enable(featureProperty);
+ assertEquals(oldVal, preTestVal);
+ assertTrue(BrooklynFeatureEnablement.isEnabled(featureProperty));
+
+ boolean oldVal2 = BrooklynFeatureEnablement.disable(featureProperty);
+ assertTrue(oldVal2);
+ assertFalse(BrooklynFeatureEnablement.isEnabled(featureProperty));
+ } finally {
+ BrooklynFeatureEnablement.setEnablement(featureProperty, preTestVal);
+ }
+ }
+
+ @Test
+ public void testReadsEnablementFromProperties() throws Exception {
+ String featureProperty = "brooklyn.experimental.feature.testReadsEnablementFromProperties";
+ System.setProperty(featureProperty, "true");
+ try {
+ assertTrue(BrooklynFeatureEnablement.isEnabled(featureProperty));
+ } finally {
+ System.clearProperty(featureProperty);
+ }
+ }
+
+ @Test
+ public void testCanSetDefaultWhichTakesEffectIfNoSystemProperty() throws Exception {
+ String featureProperty = "brooklyn.experimental.feature.testCanSetDefaultWhichTakesEffectIfNoSystemProperty";
+ BrooklynFeatureEnablement.setDefault(featureProperty, true);
+ assertTrue(BrooklynFeatureEnablement.isEnabled(featureProperty));
+ System.setProperty(featureProperty, "true");
+ try {
+ } finally {
+ System.clearProperty(featureProperty);
+ }
+ }
+
+ @Test
+ public void testCanSetDefaultWhichIsIgnoredIfSystemProperty() throws Exception {
+ String featureProperty = "brooklyn.experimental.feature.testCanSetDefaultWhichIsIgnoredIfSystemProperty";
+ System.setProperty(featureProperty, "false");
+ try {
+ BrooklynFeatureEnablement.setDefault(featureProperty, true);
+ assertFalse(BrooklynFeatureEnablement.isEnabled(featureProperty));
+ } finally {
+ System.clearProperty(featureProperty);
+ }
+ }
+
+ @Test
+ public void testCanSetDefaultWhichIsIgnoredIfBrooklynProps() throws Exception {
+ String featureProperty = "brooklyn.experimental.feature.testCanSetDefaultWhichIsIgnoredIfBrooklynProps";
+ BrooklynProperties props = BrooklynProperties.Factory.newEmpty();
+ props.put(featureProperty, false);
+ BrooklynFeatureEnablement.init(props);
+ BrooklynFeatureEnablement.setDefault(featureProperty, true);
+ assertFalse(BrooklynFeatureEnablement.isEnabled(featureProperty));
+ }
+
+ @Test
+ public void testPrefersSysPropOverBrooklynProps() throws Exception {
+ String featureProperty = "brooklyn.experimental.feature.testPrefersSysPropOverBrooklynProps";
+ BrooklynProperties props = BrooklynProperties.Factory.newEmpty();
+ props.put(featureProperty, false);
+ System.setProperty(featureProperty, "true");
+ try {
+ BrooklynFeatureEnablement.init(props);
+ BrooklynFeatureEnablement.setDefault(featureProperty, true);
+ assertTrue(BrooklynFeatureEnablement.isEnabled(featureProperty));
+ } finally {
+ System.clearProperty(featureProperty);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/core/src/test/java/org/apache/brooklyn/core/management/ha/HighAvailabilityManagerSplitBrainTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/management/ha/HighAvailabilityManagerSplitBrainTest.java b/core/src/test/java/org/apache/brooklyn/core/management/ha/HighAvailabilityManagerSplitBrainTest.java
index 7e34071..15caa29 100644
--- a/core/src/test/java/org/apache/brooklyn/core/management/ha/HighAvailabilityManagerSplitBrainTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/management/ha/HighAvailabilityManagerSplitBrainTest.java
@@ -34,6 +34,7 @@ import org.apache.brooklyn.api.management.ha.ManagementNodeState;
import org.apache.brooklyn.api.management.ha.ManagementNodeSyncRecord;
import org.apache.brooklyn.api.management.ha.ManagementPlaneSyncRecord;
import org.apache.brooklyn.api.management.ha.ManagementPlaneSyncRecordPersister;
+import org.apache.brooklyn.core.internal.BrooklynFeatureEnablement;
import org.apache.brooklyn.core.management.ha.HighAvailabilityManagerImpl;
import org.apache.brooklyn.core.management.ha.ManagementPlaneSyncRecordPersisterToObjectStore;
import org.apache.brooklyn.core.management.ha.TestEntityFailingRebind.RebindException;
@@ -54,7 +55,6 @@ import brooklyn.entity.rebind.persister.InMemoryObjectStore;
import brooklyn.entity.rebind.persister.ListeningObjectStore;
import brooklyn.entity.rebind.persister.PersistMode;
import brooklyn.entity.rebind.persister.PersistenceObjectStore;
-import brooklyn.internal.BrooklynFeatureEnablement;
import brooklyn.test.Asserts;
import brooklyn.util.collections.MutableList;
import brooklyn.util.collections.MutableMap;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxRebindWithHaIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxRebindWithHaIntegrationTest.java b/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxRebindWithHaIntegrationTest.java
index f18b414..57ea76d 100644
--- a/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxRebindWithHaIntegrationTest.java
+++ b/software/webapp/src/test/java/org/apache/brooklyn/entity/proxy/nginx/NginxRebindWithHaIntegrationTest.java
@@ -30,6 +30,7 @@ import org.apache.brooklyn.api.entity.proxying.EntitySpec;
import org.apache.brooklyn.api.location.LocationSpec;
import org.apache.brooklyn.api.management.Task;
import org.apache.brooklyn.api.management.ha.HighAvailabilityMode;
+import org.apache.brooklyn.core.internal.BrooklynFeatureEnablement;
import org.apache.brooklyn.core.management.internal.LocalManagementContext;
import org.apache.brooklyn.entity.proxy.nginx.NginxController;
import org.apache.brooklyn.entity.webapp.tomcat.TomcatServer;
@@ -51,7 +52,6 @@ import brooklyn.entity.basic.Lifecycle;
import brooklyn.entity.group.DynamicCluster;
import brooklyn.entity.rebind.RebindTestFixtureWithApp;
import brooklyn.entity.rebind.RebindTestUtils;
-import brooklyn.internal.BrooklynFeatureEnablement;
import org.apache.brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import org.apache.brooklyn.location.basic.SshMachineLocationReuseIntegrationTest.RecordingSshjTool;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlRebindTest.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlRebindTest.java b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlRebindTest.java
index 8d50dde..3081243 100644
--- a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlRebindTest.java
+++ b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlRebindTest.java
@@ -24,13 +24,13 @@ import static org.testng.Assert.assertFalse;
import org.apache.brooklyn.api.policy.Enricher;
import org.apache.brooklyn.api.policy.Policy;
import org.apache.brooklyn.camp.brooklyn.AbstractYamlRebindTest;
+import org.apache.brooklyn.core.internal.BrooklynFeatureEnablement;
import org.testng.annotations.Test;
import brooklyn.catalog.internal.CatalogUtils;
import brooklyn.entity.basic.BasicEntity;
import brooklyn.entity.basic.Entities;
import brooklyn.entity.basic.StartableApplication;
-import brooklyn.internal.BrooklynFeatureEnablement;
import brooklyn.test.policy.TestEnricher;
import brooklyn.test.policy.TestPolicy;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9cf456dc/usage/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java
----------------------------------------------------------------------
diff --git a/usage/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java b/usage/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java
index c9bf366..13ee15a 100644
--- a/usage/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java
+++ b/usage/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java
@@ -63,10 +63,10 @@ import brooklyn.BrooklynVersion;
import brooklyn.config.BrooklynServerPaths;
import brooklyn.config.BrooklynServiceAttributes;
import brooklyn.config.ConfigKey;
-import brooklyn.internal.BrooklynInitialization;
import org.apache.brooklyn.api.location.PortRange;
import org.apache.brooklyn.api.management.ManagementContext;
+import org.apache.brooklyn.core.internal.BrooklynInitialization;
import org.apache.brooklyn.core.management.internal.ManagementContextInternal;
import org.apache.brooklyn.launcher.config.CustomResourceLocator;
import org.apache.brooklyn.location.basic.LocalhostMachineProvisioningLocation;