[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 <[email protected]> Authored: Sat Aug 15 00:05:56 2015 -0400 Committer: Hadrian Zbarcea <[email protected]> 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;
