brooklyn-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From henev...@apache.org
Subject [10/51] [abbrv] [partial] brooklyn-server git commit: move subdir from incubator up a level as it is promoted to its own repo (first non-incubator commit!)
Date Mon, 01 Feb 2016 17:50:52 GMT
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/LocationPredicates.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/LocationPredicates.java b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/LocationPredicates.java
deleted file mode 100644
index 35cf54f..0000000
--- a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/LocationPredicates.java
+++ /dev/null
@@ -1,270 +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 org.apache.brooklyn.core.location;
-
-import javax.annotation.Nullable;
-
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.config.ConfigKey;
-import org.apache.brooklyn.config.ConfigKey.HasConfigKey;
-import org.apache.brooklyn.util.guava.SerializablePredicate;
-
-import com.google.common.base.Objects;
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-
-@SuppressWarnings("serial")
-public class LocationPredicates {
-
-    /** @deprecated since 0.9.0 kept only to allow conversion of anonymous inner classes */
-    @SuppressWarnings("unused") @Deprecated 
-    private static <T> Predicate<Location> idEqualToOld(final T val) {
-        // TODO PERSISTENCE WORKAROUND
-        return new Predicate<Location>() {
-            @Override
-            public boolean apply(@Nullable Location input) {
-                return (input != null) && Objects.equal(input.getId(), val);
-            }
-        };
-    }
-    
-    /** @deprecated since 0.9.0 kept only to allow conversion of anonymous inner classes */
-    @SuppressWarnings("unused") @Deprecated 
-    private static <T> Predicate<Location> displayNameEqualToOld(final T val) {
-        // TODO PERSISTENCE WORKAROUND
-        return new Predicate<Location>() {
-            @Override
-            public boolean apply(@Nullable Location input) {
-                return (input != null) && Objects.equal(input.getDisplayName(), val);
-            }
-        };
-    }
-    
-    /** @deprecated since 0.9.0 kept only to allow conversion of anonymous inner classes */
-    @SuppressWarnings("unused") @Deprecated 
-    private static <T> Predicate<Location> configEqualToOld(final ConfigKey<T> configKey, final T val) {
-        // TODO PERSISTENCE WORKAROUND
-        return new Predicate<Location>() {
-            @Override
-            public boolean apply(@Nullable Location input) {
-                return (input != null) && Objects.equal(input.getConfig(configKey), val);
-            }
-        };
-    }
-
-    /** @deprecated since 0.9.0 kept only to allow conversion of anonymous inner classes */
-    @SuppressWarnings("unused") @Deprecated 
-    private static <T> Predicate<Location> configEqualToOld(final HasConfigKey<T> configKey, final T val) {
-        // TODO PERSISTENCE WORKAROUND
-        return new Predicate<Location>() {
-            @Override
-            public boolean apply(@Nullable Location input) {
-                return (input != null) && Objects.equal(input.getConfig(configKey), val);
-            }
-        };
-    }
-
-    /**
-     * Returns a predicate that determines if a given location is a direct child of this {@code parent}.
-     */
-    /** @deprecated since 0.9.0 kept only to allow conversion of anonymous inner classes */
-    @SuppressWarnings("unused") @Deprecated 
-    private static <T> Predicate<Location> isChildOfOld(final Location parent) {
-        // TODO PERSISTENCE WORKAROUND
-        return new Predicate<Location>() {
-            @Override
-            public boolean apply(@Nullable Location input) {
-                return (input != null) && Objects.equal(input.getParent(), parent);
-            }
-        };
-    }
-
-    /** @deprecated since 0.9.0 kept only to allow conversion of anonymous inner classes */
-    @SuppressWarnings("unused") @Deprecated 
-    private static <T> Predicate<Location> isDescendantOfOld(final Location ancestor) {
-        // TODO PERSISTENCE WORKAROUND
-        return new Predicate<Location>() {
-            @Override
-            public boolean apply(@Nullable Location input) {
-                // assumes impossible to have cycles in location-hierarchy
-                Location contenderAncestor = (input == null) ? input : input.getParent();
-                while (contenderAncestor != null) {
-                    if (Objects.equal(contenderAncestor, ancestor)) {
-                        return true;
-                    }
-                    contenderAncestor = contenderAncestor.getParent();
-                }
-                return false;
-            }
-        };
-    }
-
-    /** @deprecated since 0.9.0 kept only to allow conversion of anonymous inner classes */
-    @SuppressWarnings("unused") @Deprecated 
-    private static <T> Predicate<Location> managedOld() {
-        // TODO PERSISTENCE WORKAROUND
-        return new Predicate<Location>() {
-            @Override
-            public boolean apply(@Nullable Location input) {
-                return (input != null) && Locations.isManaged(input);
-            }
-        };
-    }
-    
-    public static Predicate<Location> idEqualTo(final String val) {
-        return idSatisfies(Predicates.equalTo(val));
-    }
-    
-    public static Predicate<Location> idSatisfies(final Predicate<? super String> condition) {
-        return new IdSatisfies(condition);
-    }
-    
-    protected static class IdSatisfies implements SerializablePredicate<Location> {
-        protected final Predicate<? super String> condition;
-        protected IdSatisfies(Predicate<? super String> condition) {
-            this.condition = condition;
-        }
-        @Override
-        public boolean apply(@Nullable Location input) {
-            return (input != null) && condition.apply(input.getId());
-        }
-        @Override
-        public String toString() {
-            return "idSatisfies("+condition+")";
-        }
-    }
-
-    public static Predicate<Location> displayNameEqualTo(final String val) {
-        return displayNameSatisfies(Predicates.equalTo(val));
-    }
-    
-    public static Predicate<Location> displayNameSatisfies(final Predicate<? super String> condition) {
-        return new DisplayNameSatisfies(condition);
-    }
-    
-    protected static class DisplayNameSatisfies implements SerializablePredicate<Location> {
-        protected final Predicate<? super String> condition;
-        protected DisplayNameSatisfies(Predicate<? super String> condition) {
-            this.condition = condition;
-        }
-        @Override
-        public boolean apply(@Nullable Location input) {
-            return (input != null) && condition.apply(input.getDisplayName());
-        }
-        @Override
-        public String toString() {
-            return "displayNameSatisfies("+condition+")";
-        }
-    }
-
-    public static <T> Predicate<Location> configEqualTo(final ConfigKey<T> configKey, final T val) {
-        return configSatisfies(configKey, Predicates.equalTo(val));
-    }
-
-    public static <T> Predicate<Location> configSatisfies(final ConfigKey<T> configKey, final Predicate<T> condition) {
-        return new ConfigKeySatisfies<T>(configKey, condition);
-    }
-
-    public static <T> Predicate<Location> configEqualTo(final HasConfigKey<T> configKey, final T val) {
-        return configEqualTo(configKey.getConfigKey(), val);
-    }
-
-    public static <T> Predicate<Location> configSatisfies(final HasConfigKey<T> configKey, final Predicate<T> condition) {
-        return new ConfigKeySatisfies<T>(configKey.getConfigKey(), condition);
-    }
-
-    protected static class ConfigKeySatisfies<T> implements SerializablePredicate<Location> {
-        protected final ConfigKey<T> configKey;
-        protected final Predicate<T> condition;
-        private ConfigKeySatisfies(ConfigKey<T> configKey, Predicate<T> condition) {
-            this.configKey = configKey;
-            this.condition = condition;
-        }
-        @Override
-        public boolean apply(@Nullable Location input) {
-            return (input != null) && condition.apply(input.getConfig(configKey));
-        }
-        @Override
-        public String toString() {
-            return "configKeySatisfies("+configKey.getName()+","+condition+")";
-        }
-    }
-    
-    /**
-     * Returns a predicate that determines if a given location is a direct child of this {@code parent}.
-     */
-    public static Predicate<Location> isChildOf(final Location parent) {
-        return new IsChildOf(parent);
-    }
-
-    // if needed, could add parentSatisfies(...)
-    
-    protected static class IsChildOf implements SerializablePredicate<Location> {
-        protected final Location parent;
-        protected IsChildOf(Location parent) {
-            this.parent = parent;
-        }
-        @Override
-        public boolean apply(@Nullable Location input) {
-            return (input != null) && Objects.equal(input.getParent(), parent);
-        }
-        @Override
-        public String toString() {
-            return "isChildOf("+parent+")";
-        }
-    }
-
-    /**
-     * Returns a predicate that determines if a given location is a descendant of this {@code ancestor}.
-     */
-    public static <T> Predicate<Location> isDescendantOf(final Location ancestor) {
-        return new IsDescendantOf(ancestor);
-    }
-
-    protected static class IsDescendantOf implements SerializablePredicate<Location> {
-        protected final Location ancestor;
-        protected IsDescendantOf(Location ancestor) {
-            this.ancestor = ancestor;
-        }
-        @Override
-        public boolean apply(@Nullable Location input) {
-            // assumes impossible to have cycles in location-hierarchy
-            Location contenderAncestor = (input == null) ? input : input.getParent();
-            while (contenderAncestor != null) {
-                if (Objects.equal(contenderAncestor, ancestor)) {
-                    return true;
-                }
-                contenderAncestor = contenderAncestor.getParent();
-            }
-            return false;
-        }
-    }
-    
-    public static <T> Predicate<Location> managed() {
-        return IsManaged.INSTANCE;
-    }
-    
-    protected static class IsManaged implements Predicate<Location> {
-        protected static final IsManaged INSTANCE = new IsManaged();
-        @Override
-        public boolean apply(@Nullable Location input) {
-            return (input != null) && Locations.isManaged(input);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/LocationPropertiesFromBrooklynProperties.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/LocationPropertiesFromBrooklynProperties.java b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/LocationPropertiesFromBrooklynProperties.java
deleted file mode 100644
index c6ada78..0000000
--- a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/LocationPropertiesFromBrooklynProperties.java
+++ /dev/null
@@ -1,223 +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 org.apache.brooklyn.core.location;
-
-import static com.google.common.base.Preconditions.checkArgument;
-
-import java.io.File;
-import java.util.Map;
-
-import org.apache.brooklyn.core.config.ConfigUtils;
-import org.apache.brooklyn.core.internal.BrooklynProperties;
-import org.apache.brooklyn.core.server.BrooklynServerConfig;
-import org.apache.brooklyn.util.collections.MutableMap;
-import org.apache.brooklyn.util.core.config.ConfigBag;
-import org.apache.brooklyn.util.core.internal.ssh.SshTool;
-import org.apache.brooklyn.util.os.Os;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Predicates;
-import com.google.common.base.Strings;
-import com.google.common.collect.Maps;
-
-/**
- * The properties to use for locations, loaded from brooklyn.properties file.
- * 
- * @author aledsage
- **/
-public class LocationPropertiesFromBrooklynProperties {
-
-    private static final Logger LOG = LoggerFactory.getLogger(LocationPropertiesFromBrooklynProperties.class);
-
-    @SuppressWarnings("deprecation")
-    protected static final Map<String, String> DEPRECATED_KEYS_MAPPING = new DeprecatedKeysMappingBuilder(LOG)
-            .camelToHyphen(LocationConfigKeys.DISPLAY_NAME)
-            .camelToHyphen(LocationConfigKeys.PRIVATE_KEY_FILE)
-            .camelToHyphen(LocationConfigKeys.PRIVATE_KEY_DATA)
-            .camelToHyphen(LocationConfigKeys.PRIVATE_KEY_PASSPHRASE)
-            .camelToHyphen(LocationConfigKeys.PUBLIC_KEY_FILE)
-            .camelToHyphen(LocationConfigKeys.PUBLIC_KEY_DATA)
-            .camelToHyphen(LocationConfigKeys.CALLER_CONTEXT)
-            .build();
-    
-    /**
-     * Finds the properties that apply to location, stripping off the prefixes.
-     * 
-     * Order of preference (in ascending order) is:
-     * <ol>
-     * <li>brooklyn.location.*
-     * <li>brooklyn.location.provider.*
-     * <li>brooklyn.location.named.namedlocation.*
-     * </ol>
-     * <p>
-     * Converts deprecated hyphenated properties to the non-deprecated camelCase format. 
-     */
-    public Map<String, Object> getLocationProperties(String provider, String namedLocation, Map<String, ?> properties) {
-        ConfigBag result = ConfigBag.newInstance();
-        
-        if (!Strings.isNullOrEmpty(provider)) 
-            result.put(LocationConfigKeys.CLOUD_PROVIDER, provider);
-        // named properties are preferred over providerOrApi properties
-        result.putAll(transformDeprecated(getGenericLocationSingleWordProperties(properties)));
-        if (!Strings.isNullOrEmpty(provider)) result.putAll(transformDeprecated(getScopedLocationProperties(provider, properties)));
-        if (!Strings.isNullOrEmpty(namedLocation)) result.putAll(transformDeprecated(getNamedLocationProperties(namedLocation, properties)));
-        
-        setLocalTempDir(properties, result);
-        
-        return result.getAllConfigRaw();
-    }
-
-    /** allow the temp dir where ssh temporary files on the brooklyn server side are placed */
-    public static void setLocalTempDir(Map<String,?> source, ConfigBag target) {
-        // TODO better would be to use BrooklynServerConfig, requiring management passed in
-        String brooklynDataDir = (String) source.get(BrooklynServerConfig.getMgmtBaseDir(source));
-        if (brooklynDataDir != null && brooklynDataDir.length() > 0) {
-            String tempDir = Os.mergePaths(brooklynDataDir, "tmp", "ssh");
-            target.putIfAbsentAndNotNull(SshTool.PROP_LOCAL_TEMP_DIR, tempDir);
-            Os.deleteOnExitEmptyParentsUpTo(new File(tempDir), new File(brooklynDataDir));
-        }
-    }
-    
-    /**
-     * Gets the named provider (e.g. if using a property like {@code brooklyn.location.named.myfavourite=localhost}, then
-     * {@code getNamedProvider("myfavourite", properties)} will return {@code "localhost"}).
-     */
-    protected String getNamedProvider(String namedLocation, Map<String, ?> properties) {
-        String key = String.format("brooklyn.location.named.%s", namedLocation);
-        return (String) properties.get(key);
-    }
-    
-    /**
-     * Returns those properties in the form "brooklyn.location.xyz", where "xyz" is any
-     * key that does not contain dots. We do this special (sub-optimal!) filtering
-     * because we want to exclude brooklyn.location.named.*, brooklyn.location.jclouds.*, etc.
-     * We only want those properties that are to be generic for all locations.
-     * 
-     * Strips off the prefix in the returned map.
-     */
-    protected Map<String, Object> getGenericLocationSingleWordProperties(Map<String, ?> properties) {
-        return getMatchingSingleWordProperties("brooklyn.location.", properties);
-    }
-
-    /**
-     * Gets all properties that start with {@code "brooklyn.location."+scopeSuffix+"."}, stripping off
-     * the prefix in the returned map.
-     */
-    protected Map<String, Object> getScopedLocationProperties(String scopeSuffix, Map<String, ?> properties) {
-        checkArgument(!scopeSuffix.startsWith("."), "scopeSuffix \"%s\" should not start with \".\"", scopeSuffix);
-        checkArgument(!scopeSuffix.endsWith("."), "scopeSuffix \"%s\" should not end with \".\"", scopeSuffix);
-        String prefix = String.format("brooklyn.location.%s.", scopeSuffix);
-        return ConfigUtils.filterForPrefixAndStrip(properties, prefix).asMapWithStringKeys();
-    }
-
-    /**
-     * Gets all properties that start with the given {@code fullPrefix}, stripping off
-     * the prefix in the returned map.
-     */
-    protected Map<String, Object> getMatchingProperties(String fullPrefix, Map<String, ?> properties) {
-        return ConfigUtils.filterForPrefixAndStrip(properties, fullPrefix).asMapWithStringKeys();
-    }
-
-    /**
-     * Gets all properties that start with either of the given prefixes. The {@code fullPreferredPrefix} 
-     * properties will override any duplicates in {@code fullDeprecatedPrefix}. If there are any
-     * properties that match the {@code fullDeprecatedPrefix}, then a warning will be logged.
-     * 
-     * @see #getMatchingProperties(String, Map)
-     */
-    protected Map<String, Object> getMatchingProperties(String fullPreferredPrefix, String fullDeprecatedPrefix, Map<String, ?> properties) {
-        Map<String, Object> deprecatedResults = getMatchingProperties(fullDeprecatedPrefix, properties);
-        Map<String, Object> results = getMatchingProperties(fullPreferredPrefix, properties);
-        
-        if (deprecatedResults.size() > 0) {
-            LOG.warn("Deprecated use of properties prefix "+fullDeprecatedPrefix+"; instead use "+fullPreferredPrefix);
-            return MutableMap.<String, Object>builder()
-                    .putAll(deprecatedResults)
-                    .putAll(results)
-                    .build();
-        } else {
-            return results;
-        }
-    }
-
-    /**
-     * Gets all properties that start with the given {@code fullPrefix}, stripping off
-     * the prefix in the returned map.
-     * 
-     * Returns only those properties whose key suffix is a single word (i.e. contains no dots).
-     * We do this special (sub-optimal!) filtering because we want sub-scoped things 
-     * (e.g. could want brooklyn.location.privateKeyFile, but not brooklyn.location.named.*). 
-     */
-    protected Map<String, Object> getMatchingSingleWordProperties(String fullPrefix, Map<String, ?> properties) {
-        BrooklynProperties filteredProperties = ConfigUtils.filterForPrefixAndStrip(properties, fullPrefix);
-        return ConfigUtils.filterFor(filteredProperties, Predicates.not(Predicates.containsPattern("\\."))).asMapWithStringKeys();
-    }
-
-    /**
-     * Gets all single-word properties that start with either of the given prefixes. The {@code fullPreferredPrefix} 
-     * properties will override any duplicates in {@code fullDeprecatedPrefix}. If there are any
-     * properties that match the {@code fullDeprecatedPrefix}, then a warning will be logged.
-     * 
-     * @see #getMatchingSingleWordProperties(String, Map)
-     */
-    protected Map<String, Object> getMatchingSingleWordProperties(String fullPreferredPrefix, String fullDeprecatedPrefix, Map<String, ?> properties) {
-        Map<String, Object> deprecatedResults = getMatchingSingleWordProperties(fullDeprecatedPrefix, properties);
-        Map<String, Object> results = getMatchingSingleWordProperties(fullPreferredPrefix, properties);
-        
-        if (deprecatedResults.size() > 0) {
-            LOG.warn("Deprecated use of properties prefix "+fullDeprecatedPrefix+"; instead use "+fullPreferredPrefix);
-            return MutableMap.<String, Object>builder()
-                    .putAll(deprecatedResults)
-                    .putAll(results)
-                    .build();
-        } else {
-            return results;
-        }
-    }
-
-    protected Map<String, Object> getNamedLocationProperties(String locationName, Map<String, ?> properties) {
-        checkArgument(!Strings.isNullOrEmpty(locationName), "locationName should not be blank");
-        String prefix = String.format("brooklyn.location.named.%s.", locationName);
-        return ConfigUtils.filterForPrefixAndStrip(properties, prefix).asMapWithStringKeys();
-    }
-
-    protected Map<String, Object> transformDeprecated(Map<String, ?> properties) {
-        Map<String,Object> result = Maps.newLinkedHashMap();
-        Map<String, String> deprecatedKeysMapping = getDeprecatedKeysMapping();
-        
-        for (Map.Entry<String,?> entry : properties.entrySet()) {
-            String key = entry.getKey();
-            Object value = entry.getValue();
-            if (deprecatedKeysMapping.containsKey(key)) {
-                String transformedKey = deprecatedKeysMapping.get(key);
-                LOG.warn("Deprecated key {}, transformed to {}; will not be supported in future versions", new Object[] {key, transformedKey});
-                result.put(transformedKey, value);
-            } else {
-                result.put(key, value);
-            }
-        }
-        
-        return result;
-    }
-    
-    protected Map<String,String> getDeprecatedKeysMapping() {
-        return DEPRECATED_KEYS_MAPPING;
-    }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/Locations.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/Locations.java b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/Locations.java
deleted file mode 100644
index 0b8a060..0000000
--- a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/Locations.java
+++ /dev/null
@@ -1,160 +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 org.apache.brooklyn.core.location;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.api.location.LocationSpec;
-import org.apache.brooklyn.api.location.MachineLocation;
-import org.apache.brooklyn.api.mgmt.LocationManager;
-import org.apache.brooklyn.api.mgmt.ManagementContext;
-import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.location.internal.LocationInternal;
-import org.apache.brooklyn.location.ssh.SshMachineLocation;
-import org.apache.brooklyn.util.collections.MutableList;
-import org.apache.brooklyn.util.guava.Maybe;
-import org.apache.brooklyn.util.yaml.Yamls;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.collect.ImmutableList;
-
-public class Locations {
-
-    private static final Logger log = LoggerFactory.getLogger(Locations.class);
-
-    public static final LocationsFilter USE_FIRST_LOCATION = new LocationsFilter() {
-        private static final long serialVersionUID = 3100091615409115890L;
-
-        @Override
-        public List<Location> filterForContext(List<Location> locations, Object context) {
-            if (locations.size()<=1) return locations;
-            return ImmutableList.of(locations.get(0));
-        }
-    };
-
-    public interface LocationsFilter extends Serializable {
-        public List<Location> filterForContext(List<Location> locations, Object context);
-    }
-    
-    /** as {@link Machines#findUniqueMachineLocation(Iterable)} */
-    public static Maybe<MachineLocation> findUniqueMachineLocation(Iterable<? extends Location> locations) {
-        return Machines.findUniqueMachineLocation(locations);
-    }
-    
-    /** as {@link Machines#findUniqueSshMachineLocation(Iterable)} */
-    public static Maybe<SshMachineLocation> findUniqueSshMachineLocation(Iterable<? extends Location> locations) {
-        return Machines.findUniqueMachineLocation(locations, SshMachineLocation.class);
-    }
-
-    /** if no locations are supplied, returns locations on the entity, or in the ancestors, until it finds a non-empty set,
-     * or ultimately the empty set if no locations are anywhere */ 
-    public static Collection<? extends Location> getLocationsCheckingAncestors(Collection<? extends Location> locations, Entity entity) {
-        // look in ancestors if location not set here
-        Entity ancestor = entity;
-        while ((locations==null || locations.isEmpty()) && ancestor!=null) {
-            locations = ancestor.getLocations();
-            ancestor = ancestor.getParent();
-        }
-        return locations;
-    }
-    
-    public static boolean isManaged(Location loc) {
-        ManagementContext mgmt = ((LocationInternal)loc).getManagementContext();
-        return (mgmt != null) && mgmt.isRunning() && mgmt.getLocationManager().isManaged(loc);
-    }
-
-    public static void unmanage(Location loc) {
-        if (isManaged(loc)) {
-            ManagementContext mgmt = ((LocationInternal)loc).getManagementContext();
-            mgmt.getLocationManager().unmanage(loc);
-        }
-    }
-    
-    /**
-     * Registers the given location (and all its children) with the management context. 
-     * @throws IllegalStateException if the parent location is not already managed
-     * 
-     * @since 0.6.0 (added only for backwards compatibility, where locations are being created directly; previously in {@link Entities}).
-     * @deprecated in 0.6.0; use {@link LocationManager#createLocation(LocationSpec)} instead.
-     */
-    public static void manage(Location loc, ManagementContext managementContext) {
-        if (!managementContext.getLocationManager().isManaged(loc)) {
-            log.warn("Deprecated use of unmanaged location ("+loc+"); will be managed automatically now but not supported in future versions");
-            // FIXME this occurs MOST OF THE TIME e.g. including BrooklynLauncher.location(locationString)
-            // not sure what is the recommend way to convert from locationString to locationSpec, or the API we want to expose;
-            // deprecating some of the LocationRegistry methods seems sensible?
-            log.debug("Stack trace for location of: Deprecated use of unmanaged location; will be managed automatically now but not supported in future versions", new Exception("TRACE for: Deprecated use of unmanaged location"));
-            managementContext.getLocationManager().manage(loc);
-        }
-    }
-
-    public static Location coerce(ManagementContext mgmt, Object rawO) {
-        if (rawO==null)
-            return null;
-        if (rawO instanceof Location)
-            return (Location)rawO;
-        
-        Object raw = rawO;
-        if (raw instanceof String)
-            raw = Yamls.parseAll((String)raw).iterator().next();
-        
-        String name;
-        Map<?, ?> flags = null;
-        if (raw instanceof Map) {
-            // for yaml, take the key, and merge with locationFlags
-            Map<?,?> tm = ((Map<?,?>)raw);
-            if (tm.size()!=1) {
-                throw new IllegalArgumentException("Location "+rawO+" is invalid; maps must have only one key, being the location spec string");
-            }
-            name = (String) tm.keySet().iterator().next();
-            flags = (Map<?, ?>) tm.values().iterator().next();
-            
-        } else if (raw instanceof String) {
-            name = (String)raw;
-            
-        } else {
-            throw new IllegalArgumentException("Location "+rawO+" is invalid; can only parse strings or maps");
-        }
-        return mgmt.getLocationRegistry().resolve(name, flags);
-    }
-    
-    public static Collection<? extends Location> coerceToCollection(ManagementContext mgmt, Object rawO) {
-        if (rawO==null) return null;
-        Object raw = rawO;
-        if (raw instanceof Collection) {
-            List<Location> result = MutableList.<Location>of();
-            for (Object o: (Collection<?>)raw)
-                result.add(coerce(mgmt, o));
-            return result;
-        }
-        if (raw instanceof String) {
-            raw = Yamls.parseAll((String)raw).iterator().next();
-            if (raw instanceof Collection)
-                return coerceToCollection(mgmt, raw);
-        }
-        return Collections.singletonList( coerce(mgmt, raw) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/Machines.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/Machines.java b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/Machines.java
deleted file mode 100644
index c4eb84c..0000000
--- a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/Machines.java
+++ /dev/null
@@ -1,194 +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 org.apache.brooklyn.core.location;
-
-import java.net.InetAddress;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.api.location.MachineLocation;
-import org.apache.brooklyn.core.entity.Attributes;
-import org.apache.brooklyn.location.localhost.LocalhostMachineProvisioningLocation;
-import org.apache.brooklyn.location.localhost.LocalhostMachineProvisioningLocation.LocalhostMachine;
-import org.apache.brooklyn.location.ssh.SshMachineLocation;
-import org.apache.brooklyn.util.guava.Maybe;
-import org.apache.brooklyn.util.net.HasNetworkAddresses;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.collect.Iterables;
-
-/** utilities for working with MachineLocations */
-public class Machines {
-
-    private static final Logger log = LoggerFactory.getLogger(Machines.class);
-    
-    public static Maybe<String> getSubnetHostname(Location where) {
-        // TODO Should we look at HasNetworkAddresses? But that's not a hostname.
-        String hostname = null;
-        if (where instanceof HasSubnetHostname) {
-            hostname = ((HasSubnetHostname) where).getSubnetHostname();
-        }
-        if (hostname == null && where instanceof MachineLocation) {
-            InetAddress addr = ((MachineLocation) where).getAddress();
-            if (addr != null) hostname = addr.getHostAddress();
-        }
-        log.debug("computed subnet hostname {} for {}", hostname, where);
-        // TODO if Maybe.absent(message) appears, could/should use that
-        // TODO If no machine available, should we throw new IllegalStateException("Cannot find hostname for "+where);
-        return Maybe.fromNullable(hostname);
-    }
-
-    public static Maybe<String> getSubnetIp(Location where) {
-        // TODO Too much duplication between the ip and hostname methods
-        String result = null;
-        if (where instanceof HasSubnetHostname) {
-            result = ((HasSubnetHostname) where).getSubnetIp();
-        }
-        if (where instanceof HasNetworkAddresses) {
-            Set<String> privateAddrs = ((HasNetworkAddresses) where).getPrivateAddresses();
-            if (privateAddrs.size() > 0) {
-                result = Iterables.get(privateAddrs, 0);
-            }
-        }
-        if (result == null && where instanceof MachineLocation) {
-            InetAddress addr = ((MachineLocation) where).getAddress();
-            if (addr != null) result = addr.getHostAddress();
-        }
-        log.debug("computed subnet host ip {} for {}", result, where);
-        return Maybe.fromNullable(result);
-    }
-
-    @SuppressWarnings("unchecked")
-    public static <T> Maybe<T> findUniqueElement(Iterable<?> items, Class<T> type) {
-        if (items==null) return null;
-        Iterator<?> i = items.iterator();
-        T result = null;
-        while (i.hasNext()) {
-            Object candidate = i.next();
-            if (type.isInstance(candidate)) {
-                if (result==null) result = (T)candidate;
-                else {
-                    if (log.isTraceEnabled())
-                        log.trace("Multiple instances of "+type+" in "+items+"; ignoring");
-                    return Maybe.absent(new IllegalStateException("Multiple instances of "+type+" in "+items+"; expected a single one"));
-                }
-            }
-        }
-        if (result==null) 
-            return Maybe.absent(new IllegalStateException("No instances of "+type+" available (in "+items+")"));
-        return Maybe.of(result);
-    }
-
-    /**
-     * @deprecated since 0.9.0; see {@link #findUniqueMachineLocation(Iterable, Class)}, 
-     *             e.g. {@code findUniqueMachineLocation(locations, SshMachineLocation.class)}
-     */
-    @Deprecated
-    public static Maybe<SshMachineLocation> findUniqueSshMachineLocation(Iterable<? extends Location> locations) {
-        return findUniqueMachineLocation(locations, SshMachineLocation.class);
-    }
-
-    public static Maybe<MachineLocation> findUniqueMachineLocation(Iterable<? extends Location> locations) {
-        return findUniqueMachineLocation(locations, MachineLocation.class);
-    }
-
-    public static <T extends MachineLocation> Maybe<T> findUniqueMachineLocation(Iterable<? extends Location> locations, Class<T> clazz) {
-        return findUniqueElement(locations, clazz);
-    }
-
-    public static Maybe<String> findSubnetHostname(Iterable<? extends Location> ll) {
-        Maybe<MachineLocation> l = findUniqueMachineLocation(ll);
-        if (!l.isPresent()) {
-            return Maybe.absent();
-//            throw new IllegalStateException("Cannot find hostname for among "+ll);
-        }
-        return Machines.getSubnetHostname(l.get());
-    }
-
-    public static Maybe<String> findSubnetHostname(Entity entity) {
-        String sh = entity.getAttribute(Attributes.SUBNET_HOSTNAME);
-        if (sh!=null) return Maybe.of(sh);
-        return findSubnetHostname(entity.getLocations());
-    }
-    
-    public static Maybe<String> findSubnetOrPublicHostname(Entity entity) {
-        String hn = entity.getAttribute(Attributes.HOSTNAME);
-        if (hn!=null) {
-            // attributes already set, see if there was a SUBNET_HOSTNAME set
-            // note we rely on (public) hostname being set _after_ subnet_hostname,
-            // to prevent tiny possibility of races resulting in hostname being returned
-            // becasue subnet is still being looked up -- see MachineLifecycleEffectorTasks
-            Maybe<String> sn = findSubnetHostname(entity);
-            if (sn.isPresent()) return sn;
-            // short-circuit discovery if attributes have been set already
-            return Maybe.of(hn);
-        }
-        
-        Maybe<MachineLocation> l = findUniqueMachineLocation(entity.getLocations());
-        if (!l.isPresent()) return Maybe.absent();
-        InetAddress addr = l.get().getAddress();
-        if (addr==null) return Maybe.absent();
-        return Maybe.fromNullable(addr.getHostName());
-    }
-
-    public static Maybe<String> findSubnetOrPrivateIp(Entity entity) {
-        // see comments in findSubnetOrPrivateHostname
-        String hn = entity.getAttribute(Attributes.ADDRESS);
-        if (hn!=null) {
-            Maybe<String> sn = findSubnetIp(entity);
-            if (sn.isPresent()) return sn;
-            return Maybe.of(hn);
-        }
-        
-        Maybe<MachineLocation> l = findUniqueMachineLocation(entity.getLocations());
-        if (!l.isPresent()) return Maybe.absent();
-        InetAddress addr = l.get().getAddress();
-        if (addr==null) return Maybe.absent();
-        return Maybe.fromNullable(addr.getHostAddress());
-    }
-
-    public static Maybe<String> findSubnetIp(Entity entity) {
-        String sh = entity.getAttribute(Attributes.SUBNET_ADDRESS);
-        if (sh!=null) return Maybe.of(sh);
-        return findSubnetIp(entity.getLocations());
-    }
-    
-    public static Maybe<String> findSubnetIp(Iterable<? extends Location> ll) {
-        // TODO Or if can't find MachineLocation, should we throw new IllegalStateException("Cannot find hostname for among "+ll);
-        Maybe<MachineLocation> l = findUniqueMachineLocation(ll);
-        return (l.isPresent()) ? Machines.getSubnetIp(l.get()) : Maybe.<String>absent();
-    }
-
-    /** returns whether it is localhost (and has warned) */
-    public static boolean warnIfLocalhost(Collection<? extends Location> locations, String message) {
-        if (locations.size()==1) {
-            Location l = locations.iterator().next();
-            if (l instanceof LocalhostMachineProvisioningLocation || l instanceof LocalhostMachine) {
-                log.warn(message);
-                return true;
-            }
-        }
-        return false;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/NamedLocationResolver.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/NamedLocationResolver.java b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/NamedLocationResolver.java
deleted file mode 100644
index 6dbe4d7..0000000
--- a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/NamedLocationResolver.java
+++ /dev/null
@@ -1,97 +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 org.apache.brooklyn.core.location;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Map;
-import java.util.NoSuchElementException;
-
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.api.location.LocationDefinition;
-import org.apache.brooklyn.api.location.LocationRegistry;
-import org.apache.brooklyn.api.location.LocationResolver;
-import org.apache.brooklyn.api.mgmt.ManagementContext;
-import org.apache.brooklyn.core.location.internal.LocationInternal;
-import org.apache.brooklyn.util.core.config.ConfigBag;
-import org.apache.brooklyn.util.text.Strings;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Allows you to say, in your brooklyn.properties:
- * 
- * brooklyn.location.named.foo=localhost
- * brooklyn.location.named.foo.user=bob
- * brooklyn.location.named.foo.privateKeyFile=~/.ssh/custom-key-for-bob
- * brooklyn.location.named.foo.privateKeyPassphrase=WithAPassphrase
- * <p>
- * or
- * <p>
- * brooklyn.location.named.bob-aws-east=jclouds:aws-ec2:us-east-1
- * brooklyn.location.named.bob-aws-east.identity=BobId
- * brooklyn.location.named.bob-aws-east.credential=BobCred
- * <p>
- * then you can simply refer to:   foo   or   named:foo   (or bob-aws-east or named:bob-aws-east)   in any location spec
- */
-public class NamedLocationResolver implements LocationResolver {
-
-    public static final Logger log = LoggerFactory.getLogger(NamedLocationResolver.class);
-
-    public static final String NAMED = "named";
-    
-    @SuppressWarnings("unused")
-    private ManagementContext managementContext;
-
-    @Override
-    public void init(ManagementContext managementContext) {
-        this.managementContext = checkNotNull(managementContext, "managementContext");
-    }
-    
-    @Override
-    @SuppressWarnings({ "rawtypes" })
-    public Location newLocationFromString(Map locationFlags, String spec, LocationRegistry registry) {
-        String name = spec;
-        ConfigBag lfBag = ConfigBag.newInstance(locationFlags).putIfAbsent(LocationInternal.ORIGINAL_SPEC, name);
-        name = Strings.removeFromStart(spec, getPrefix()+":");
-        if (name.toLowerCase().startsWith(NAMED+":")) {
-            // since 0.7.0
-            log.warn("Deprecated use of 'named:' prefix with wrong case ("+spec+"); support may be removed in future versions");
-            name = spec.substring( (NAMED+":").length() );
-        }
-        
-        LocationDefinition ld = registry.getDefinedLocationByName(name);
-        if (ld==null) throw new NoSuchElementException("No named location defined matching '"+name+"'");
-        return ((BasicLocationRegistry)registry).resolveLocationDefinition(ld, lfBag.getAllConfig(), name);
-    }
-
-    @Override
-    public String getPrefix() {
-        return NAMED;
-    }
-    
-    /** accepts anything starting  named:xxx  or  xxx where xxx is a defined location name */
-    @Override
-    public boolean accepts(String spec, LocationRegistry registry) {
-        if (BasicLocationRegistry.isResolverPrefixForSpec(this, spec, false)) return true;
-        if (registry.getDefinedLocationByName(spec)!=null) return true;
-        return false;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/PortRanges.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/PortRanges.java b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/PortRanges.java
deleted file mode 100644
index 4265e36..0000000
--- a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/PortRanges.java
+++ /dev/null
@@ -1,273 +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 org.apache.brooklyn.core.location;
-
-import static com.google.common.base.Preconditions.checkArgument;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.apache.brooklyn.api.location.PortRange;
-import org.apache.brooklyn.util.core.flags.TypeCoercions;
-import org.apache.brooklyn.util.text.StringEscapes.JavaStringEscapes;
-
-import com.google.common.base.Function;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
-import com.google.common.primitives.Ints;
-
-public class PortRanges {
-
-    public static final int MAX_PORT = 65535;
-    public static final PortRange ANY_HIGH_PORT = new LinearPortRange(1024, MAX_PORT);
-    
-    public static class SinglePort implements PortRange, Serializable {
-        private static final long serialVersionUID = 7446781416534230401L;
-        
-        final int port;
-        private SinglePort(int port) { this.port = port; }
-        
-        @Override
-        public Iterator<Integer> iterator() {
-            return Collections.singletonList(port).iterator();
-        }
-        @Override
-        public boolean isEmpty() {
-            return false;
-        }
-        @Override
-        public boolean asBoolean() {
-            return true;
-        }
-        @Override
-        public String toString() {
-            return //getClass().getName()+"["+
-                    ""+port; //+"]";
-        }
-        public int hashCode() {
-            return Objects.hashCode(port);
-        }
-        @Override
-        public boolean equals(Object obj) {
-            return (obj instanceof SinglePort) && port == ((SinglePort)obj).port;
-        }
-    }
-
-    public static class LinearPortRange implements PortRange, Serializable {
-        private static final long serialVersionUID = -9165280509363743508L;
-        
-        final int start, end, delta;
-        private LinearPortRange(int start, int end, int delta) {
-            this.start = start;
-            this.end = end;
-            this.delta = delta;
-            checkArgument(start > 0 && start <= MAX_PORT, "start port %s out of range", start);
-            checkArgument(end > 0 && end <= MAX_PORT, "end port %s out of range", end);
-            checkArgument(delta > 0 ? start <= end : start >= end, "start and end out of order: %s to %s, delta %s", start, end, delta);
-            checkArgument(delta != 0, "delta must be non-zero");
-        }
-        public LinearPortRange(int start, int end) {
-            this(start, end, (start<=end?1:-1));
-        }
-        
-        @Override
-        public Iterator<Integer> iterator() {
-            return new Iterator<Integer>() {
-                int next = start;
-                boolean hasNext = true;
-                
-                @Override
-                public boolean hasNext() {
-                    return hasNext;
-                }
-
-                @Override
-                public Integer next() {
-                    if (!hasNext)
-                        throw new NoSuchElementException("Exhausted available ports");
-                    int result = next;
-                    next += delta;
-                    if ((delta>0 && next>end) || (delta<0 && next<end)) hasNext = false;
-                    return result;
-                }
-                
-                @Override
-                public void remove() {
-                    throw new UnsupportedOperationException();
-                }
-            };
-        }
-        
-        @Override
-        public boolean isEmpty() {
-            return false;
-        }
-        @Override
-        public boolean asBoolean() {
-            return true;
-        }
-        @Override
-        public String toString() {
-            return //getClass().getName()+"["+
-                    start+"-"+end; //+"]";
-        }
-        @Override
-        public int hashCode() {
-            return Objects.hashCode(start, end, delta);
-        }
-        @Override
-        public boolean equals(Object obj) {
-            if (!(obj instanceof LinearPortRange)) return false;
-            LinearPortRange o = (LinearPortRange) obj;
-            return start == o.start && end == o.end && delta == o.delta;
-        }
-    }
-    
-    public static class AggregatePortRange implements PortRange, Serializable {
-        private static final long serialVersionUID = 7332682500816739660L;
-        
-        final List<PortRange> ranges;
-        private AggregatePortRange(List<PortRange> ranges) {
-            this.ranges = ImmutableList.copyOf(ranges);
-        }
-        @Override
-        public Iterator<Integer> iterator() {
-            return Iterables.concat(ranges).iterator();
-        }
-        @Override
-        public boolean isEmpty() {
-            for (PortRange r: ranges)
-                if (!r.isEmpty()) return false;
-            return true;
-        }
-        @Override
-        public boolean asBoolean() {
-            return !isEmpty();
-        }
-        @Override
-        public String toString() {
-            String s = "";
-            for (PortRange r: ranges) {
-                if (s.length()>0) s+=",";
-                s += r;
-            }
-            return //getClass().getName()+"["+
-                s; //+"]";
-        }
-        public int hashCode() {
-            return Objects.hashCode(ranges);
-        }
-        @Override
-        public boolean equals(Object obj) {
-            return (obj instanceof AggregatePortRange) && ranges.equals(((AggregatePortRange)obj).ranges);
-        }
-    }
-
-    public static PortRange fromInteger(int x) {
-        return new SinglePort(x);
-    }
-    
-    public static PortRange fromIterable(Iterable<?> c) {
-        List<PortRange> l = new ArrayList<PortRange>();
-        for (Object o: c) {
-            if (o instanceof Integer) l.add(fromInteger((Integer)o));
-            else if (o instanceof String)
-                for (String string : JavaStringEscapes.unwrapJsonishListIfPossible((String)o))
-                    l.add(fromString(string));
-            else if (o instanceof Iterable) l.add(fromIterable((Iterable<?>)o));
-            else if (o instanceof int[]) l.add(fromIterable(Ints.asList((int[])o)));
-            else if (o instanceof String[])
-                for (String string : (String[])o)
-                    l.add(fromString(string));
-            else if (o instanceof Object[])
-                for (Object object : (Object[])o)
-                    if (object instanceof Integer)
-                        l.add(fromInteger((Integer)object));
-                    else if (object instanceof String)
-                        l.add(fromString((String)object));
-                    else
-                        throw new IllegalArgumentException("'" + object + "' must be of type Integer or String");
-            else l.add(TypeCoercions.coerce(o, PortRange.class));
-        }
-        return new AggregatePortRange(l);
-    }
-
-    /** parses a string representation of ports, as "80,8080,8000,8080-8099" */
-    public static PortRange fromString(String s) {
-        List<PortRange> l = new ArrayList<PortRange>();
-        for (String si: s.split(",")) {
-            si = si.trim();
-            int start, end;
-            if (si.endsWith("+")) {
-                String si2 = si.substring(0, si.length()-1).trim();
-                start = Integer.parseInt(si2);
-                end = MAX_PORT;
-            } else if (si.indexOf('-')>0) {
-                int v = si.indexOf('-');
-                start = Integer.parseInt(si.substring(0, v).trim());
-                end = Integer.parseInt(si.substring(v+1).trim());
-            } else if (si.length()==0) {
-                //nothing, ie empty range, just continue
-                continue;
-            } else {
-                //should be number on its own
-                l.add(new SinglePort(Integer.parseInt(si)));
-                continue;
-            }
-            l.add(new LinearPortRange(start, end));
-        }
-        if (l.size() == 1) {
-            return l.get(0);
-        } else {
-            return new AggregatePortRange(l);
-        }
-    }
-
-    private static AtomicBoolean initialized = new AtomicBoolean(false); 
-    /** performs the language extensions required for this project */
-    @SuppressWarnings("rawtypes")
-    public static void init() {
-        if (initialized.get()) return;
-        synchronized (initialized) {
-            if (initialized.get()) return;
-            TypeCoercions.registerAdapter(Integer.class, PortRange.class, new Function<Integer,PortRange>() {
-                public PortRange apply(Integer x) { return fromInteger(x); }
-            });
-            TypeCoercions.registerAdapter(String.class, PortRange.class, new Function<String,PortRange>() {
-                public PortRange apply(String x) { return fromString(x); }
-            });
-            TypeCoercions.registerAdapter(Iterable.class, PortRange.class, new Function<Iterable,PortRange>() {
-                public PortRange apply(Iterable x) { return fromIterable(x); }
-            });
-            initialized.set(true);
-        }
-    }
-    
-    static {
-        init();
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/SupportsPortForwarding.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/SupportsPortForwarding.java b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/SupportsPortForwarding.java
deleted file mode 100644
index 3510230..0000000
--- a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/SupportsPortForwarding.java
+++ /dev/null
@@ -1,39 +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 org.apache.brooklyn.core.location;
-
-import org.apache.brooklyn.util.net.Cidr;
-
-import com.google.common.net.HostAndPort;
-
-public interface SupportsPortForwarding {
-
-    /** returns an endpoint suitable for contacting the indicated private port on this object,
-     * from the given Cidr, creating it if necessary and possible; 
-     * may return null if forwarding not available 
-     */
-    public HostAndPort getSocketEndpointFor(Cidr accessor, int privatePort);
-    
-    /** marker on a location to indicate that port forwarding should be done automatically
-     * for attempts to access from Brooklyn
-     */
-    public interface RequiresPortForwarding extends SupportsPortForwarding {
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/access/BrooklynAccessUtils.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/access/BrooklynAccessUtils.java b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/access/BrooklynAccessUtils.java
deleted file mode 100644
index b36ddf6..0000000
--- a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/access/BrooklynAccessUtils.java
+++ /dev/null
@@ -1,153 +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 org.apache.brooklyn.core.location.access;
-
-import java.util.Collection;
-
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.api.location.MachineLocation;
-import org.apache.brooklyn.config.ConfigKey;
-import org.apache.brooklyn.core.config.BasicConfigKey;
-import org.apache.brooklyn.core.entity.Attributes;
-import org.apache.brooklyn.core.location.Machines;
-import org.apache.brooklyn.core.location.SupportsPortForwarding;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.brooklyn.location.ssh.SshMachineLocation;
-import org.apache.brooklyn.util.core.task.DynamicTasks;
-import org.apache.brooklyn.util.core.task.Tasks;
-import org.apache.brooklyn.util.core.task.ssh.SshTasks;
-import org.apache.brooklyn.util.core.task.system.ProcessTaskWrapper;
-import org.apache.brooklyn.util.exceptions.Exceptions;
-import org.apache.brooklyn.util.guava.Maybe;
-import org.apache.brooklyn.util.net.Cidr;
-import org.apache.brooklyn.util.text.Strings;
-import com.google.common.collect.Iterables;
-
-import com.google.common.base.Supplier;
-import com.google.common.net.HostAndPort;
-
-public class BrooklynAccessUtils {
-
-    private static final Logger log = LoggerFactory.getLogger(BrooklynAccessUtils.class);
-    
-    public static final ConfigKey<PortForwardManager> PORT_FORWARDING_MANAGER = new BasicConfigKey<PortForwardManager>(
-            PortForwardManager.class, "brooklyn.portforwarding.manager", "A port-forwarding manager to use at an entity "
-                + "or a location, where supported; note this should normally be a serializable client instance to prevent "
-                + "the creation of multiple disconnected instances via config duplication");
-    
-    public static final ConfigKey<Cidr> MANAGEMENT_ACCESS_CIDR = new BasicConfigKey<Cidr>(
-            Cidr.class, "brooklyn.portforwarding.management.cidr", "CIDR to enable by default for port-forwarding for management",
-            null);  // TODO should be a list
-
-    public static HostAndPort getBrooklynAccessibleAddress(Entity entity, int port) {
-        String host;
-        
-        // look up port forwarding
-        PortForwardManager pfw = entity.getConfig(PORT_FORWARDING_MANAGER);
-        if (pfw!=null) {
-            Collection<Location> ll = entity.getLocations();
-            
-            synchronized (BrooklynAccessUtils.class) {
-                // TODO finer-grained synchronization
-                
-                for (MachineLocation machine : Iterables.filter(ll, MachineLocation.class)) {
-                    HostAndPort hp = pfw.lookup(machine, port);
-                    if (hp!=null) {
-                        log.debug("BrooklynAccessUtils found port-forwarded address {} for entity {}, port {}, using machine {}",
-                                new Object[] {hp, entity, port, machine});
-                        return hp;
-                    }
-                }
-                
-                Maybe<SupportsPortForwarding> supportPortForwardingLoc = Machines.findUniqueElement(ll, SupportsPortForwarding.class);
-                if (supportPortForwardingLoc.isPresent()) {
-                    Cidr source = entity.getConfig(MANAGEMENT_ACCESS_CIDR);
-                    SupportsPortForwarding loc = supportPortForwardingLoc.get();
-                    if (source!=null) {
-                        log.debug("BrooklynAccessUtils requesting new port-forwarding rule to access "+port+" on "+entity+" (at "+loc+", enabled for "+source+")");
-                        // TODO discuss, is this the best way to do it
-                        // (will probably _create_ the port forwarding rule!)
-                        HostAndPort hp = loc.getSocketEndpointFor(source, port);
-                        if (hp!=null) {
-                            log.debug("BrooklynAccessUtils created port-forwarded address {} for entity {}, port {}, using {}",
-                                    new Object[] {hp, entity, port, loc});
-                            return hp;
-                        }
-                    } else {
-                        log.warn("No "+MANAGEMENT_ACCESS_CIDR.getName()+" configured for "+entity+", so cannot forward "
-                                +"port "+port+" "+"even though "+PORT_FORWARDING_MANAGER.getName()+" was supplied, and "
-                                +"have location supporting port forwarding "+loc);
-                    }
-                }
-            }
-        }
-        
-        host = entity.getAttribute(Attributes.HOSTNAME);
-        if (host!=null) return HostAndPort.fromParts(host, port);
-        
-        throw new IllegalStateException("Cannot find way to access port "+port+" on "+entity+" from Brooklyn (no host.name)");
-    }
-
-    /** attempts to resolve hostnameTarget from origin
-     * @return null if it definitively can't be resolved,  
-     * best-effort IP address if possible, or blank if we could not run ssh or make sense of the output */
-    public static String getResolvedAddress(Entity entity, SshMachineLocation origin, String hostnameTarget) {
-        ProcessTaskWrapper<Integer> task = SshTasks.newSshExecTaskFactory(origin, "ping -c 1 -t 1 "+hostnameTarget)
-            .summary("checking resolution of "+hostnameTarget).allowingNonZeroExitCode().newTask();
-        DynamicTasks.queueIfPossible(task).orSubmitAndBlock(entity).asTask().blockUntilEnded();
-        if (task.asTask().isError()) {
-            log.warn("ping could not be run, at "+entity+" / "+origin+": "+Tasks.getError(task.asTask()));
-            return "";
-        }
-        if (task.getExitCode()==null || task.getExitCode()!=0) {
-            if (task.getExitCode()!=null && task.getExitCode()<10) {
-                // small number means ping failed to resolve or ping the hostname
-                log.debug("not able to resolve "+hostnameTarget+" from "+origin+" for "+entity+" because exit code was "+task.getExitCode());
-                return null;
-            }
-            // large number means ping probably did not run
-            log.warn("ping not run as expected, at "+entity+" / "+origin+" (code "+task.getExitCode()+"):\n"+task.getStdout().trim()+" --- "+task.getStderr().trim());
-            return "";
-        }
-        String out = task.getStdout();
-        try {
-            String line1 = Strings.getFirstLine(out);
-            String ip = Strings.getFragmentBetween(line1, "(", ")");
-            if (Strings.isNonBlank(ip)) 
-                return ip;
-        } catch (Exception e) {
-            Exceptions.propagateIfFatal(e);
-            /* ignore non-parseable output */ 
-        }
-        if (out.contains("127.0.0.1")) return "127.0.0.1";
-        return "";
-    }
-
-    public static Supplier<String> resolvedAddressSupplier(final Entity entity, final SshMachineLocation origin, final String hostnameTarget) {
-        return new Supplier<String>() {
-            @Override
-            public String get() {
-                return getResolvedAddress(entity, origin, hostnameTarget);
-            }
-        };
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/access/PortForwardManager.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/access/PortForwardManager.java b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/access/PortForwardManager.java
deleted file mode 100644
index 21e579c..0000000
--- a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/access/PortForwardManager.java
+++ /dev/null
@@ -1,328 +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 org.apache.brooklyn.core.location.access;
-
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.config.ConfigKey;
-import org.apache.brooklyn.core.config.ConfigKeys;
-
-import com.google.common.annotations.Beta;
-import com.google.common.base.Objects;
-import com.google.common.base.Predicate;
-import com.google.common.net.HostAndPort;
-
-import java.util.Collection;
-
-/**
- * Acts as a registry for existing port mappings (e.g. the public endpoints for accessing specific
- * ports on private VMs). This could be using DNAT, or iptables port-forwarding, or Docker port-mapping 
- * via the host, or any other port mapping approach.
- * 
- * Also controls the allocation of ports via {@link #acquirePublicPort(String)}
- * (e.g. for port-mapping with DNAT, then which port to use for the public side).
- * 
- * Implementations typically will not know anything about what the firewall/IP actually is, they just 
- * handle a unique identifier for it.
- * 
- * To use, see {@link PortForwardManagerLocationResolver}, with code such as 
- * {@code managementContext.getLocationRegistry().resolve("portForwardManager(scope=global)")}.
- * 
- * @see PortForwardManagerImpl for implementation notes and considerations.
- */
-@Beta
-public interface PortForwardManager extends Location {
-
-    @Beta
-    class AssociationMetadata {
-        private final String publicIpId;
-        private final HostAndPort publicEndpoint;
-        private final Location location;
-        private final int privatePort;
-
-        /**
-         * Users are discouraged from calling this constructor; the signature may change in future releases.
-         * Instead, instances will be created automatically by Brooklyn to be passed to the
-         * {@link AssociationListener#onAssociationCreated(AssociationMetadata)} method.
-         */
-        public AssociationMetadata(String publicIpId, HostAndPort publicEndpoint, Location location, int privatePort) {
-            this.publicIpId = publicIpId;
-            this.publicEndpoint = publicEndpoint;
-            this.location = location;
-            this.privatePort = privatePort;
-        }
-
-        public String getPublicIpId() {
-            return publicIpId;
-        }
-
-        public HostAndPort getPublicEndpoint() {
-            return publicEndpoint;
-        }
-
-        public Location getLocation() {
-            return location;
-        }
-
-        public int getPrivatePort() {
-            return privatePort;
-        }
-
-        public String toString() {
-            return Objects.toStringHelper(this)
-                    .add("publicIpId", publicIpId)
-                    .add("publicEndpoint", publicEndpoint)
-                    .add("location", location)
-                    .add("privatePort", privatePort)
-                    .toString();
-        }
-    }
-
-    @Beta
-    interface AssociationListener {
-        void onAssociationCreated(AssociationMetadata metadata);
-        void onAssociationDeleted(AssociationMetadata metadata);
-    }
-
-    /**
-     * The intention is that there is one PortForwardManager instance per "scope". If you 
-     * use global, then it will be a shared instance (for that management context). If you 
-     * pass in your own name (e.g. "docker-fjie3") then it will shared with just any other
-     * places that use that same location spec (e.g. {@code portForwardManager(scope=docker-fjie3)}).
-     */
-    // TODO Note: using name "scope" rather than "brooklyn.portForwardManager.scope" so that location spec 
-    // "portForwardManager(scope=global)" works, rather than having to do 
-    // portForwardManager(brooklyn.portForwardManager.scope=global).
-    // The config being read by the PortForwardManagerLocationResolver doesn't respect @SetFromFlag("scope").
-    public static final ConfigKey<String> SCOPE = ConfigKeys.newStringConfigKey(
-            "scope",
-            "The scope that this applies to, defaulting to global",
-            "global");
-
-    @Beta
-    public static final ConfigKey<Integer> PORT_FORWARD_MANAGER_STARTING_PORT = ConfigKeys.newIntegerConfigKey(
-            "brooklyn.portForwardManager.startingPort",
-            "The starting port for assigning port numbers, such as for DNAT",
-            11000);
-
-    public String getScope();
-
-    /**
-     * Reserves a unique public port on the given publicIpId.
-     * <p>
-     * Often followed by {@link #associate(String, HostAndPort, int)} or {@link #associate(String, HostAndPort, Location, int)}
-     * to enable {@link #lookup(String, int)} or {@link #lookup(Location, int)} respectively.
-     */
-    public int acquirePublicPort(String publicIpId);
-
-    /**
-     * Records a location and private port against a public endpoint (ip and port),
-     * to support {@link #lookup(Location, int)}.
-     * <p>
-     * Superfluous if {@link #acquirePublicPort(String, Location, int)} was used,
-     * but strongly recommended if {@link #acquirePublicPortExplicit(String, int)} was used
-     * e.g. if the location is not known ahead of time.
-     */
-    public void associate(String publicIpId, HostAndPort publicEndpoint, Location l, int privatePort);
-
-    /**
-     * Records a mapping for publicIpId:privatePort to a public endpoint, such that it can
-     * subsequently be looked up using {@link #lookup(String, int)}.
-     */
-    public void associate(String publicIpId, HostAndPort publicEndpoint, int privatePort);
-
-    /**
-     * Registers a listener, which will be notified each time a new port mapping is associated. See {@link #associate(String, HostAndPort, int)}
-     * and {@link #associate(String, HostAndPort, Location, int)}.
-     */
-    @Beta
-    public void addAssociationListener(AssociationListener listener, Predicate<? super AssociationMetadata> filter);
-
-    @Beta
-    public void removeAssociationListener(AssociationListener listener);
-    
-    /**
-     * Returns the public ip hostname and public port for use contacting the given endpoint.
-     * <p>
-     * Will return null if:
-     * <ul>
-     * <li>No publicPort is associated with this location and private port.
-     * <li>No publicIpId is associated with this location and private port.
-     * <li>No publicIpHostname is recorded against the associated publicIpId.
-     * </ul>
-     * Conceivably this may have to be access-location specific.
-     *
-     * @see #recordPublicIpHostname(String, String)
-     */
-    public HostAndPort lookup(Location l, int privatePort);
-
-    /**
-     * Returns the public endpoint (host and port) for use contacting the given endpoint.
-     * 
-     * Expects a previous call to {@link #associate(String, HostAndPort, int)}, to register
-     * the endpoint.
-     * 
-     * Will return null if there has not been a public endpoint associated with this pairing.
-     */
-    public HostAndPort lookup(String publicIpId, int privatePort);
-
-    /** 
-     * Clears the given port mapping, returning true if there was a match.
-     */
-    public boolean forgetPortMapping(String publicIpId, int publicPort);
-    
-    /** 
-     * Clears the port mappings associated with the given location, returning true if there were any matches.
-     */
-    public boolean forgetPortMappings(Location location);
-    
-    /** 
-     * Clears the port mappings associated with the given publicIpId, returning true if there were any matches.
-     */
-    public boolean forgetPortMappings(String publicIpId);
-    
-    public String toVerboseString();
-
-    
-    ///////////////////////////////////////////////////////////////////////////////////
-    // Deprecated
-    ///////////////////////////////////////////////////////////////////////////////////
-
-    /**
-     * Reserves a unique public port for the purpose of forwarding to the given target,
-     * associated with a given location for subsequent lookup purpose.
-     * <p>
-     * If already allocated, returns the previously allocated.
-     * 
-     * @deprecated since 0.7.0; use {@link #acquirePublicPort(String)}, and then use {@link #associate(String, HostAndPort, int)} or {@link #associate(String, HostAndPort, Location, int)}
-     */
-    @Deprecated
-    public int acquirePublicPort(String publicIpId, Location l, int privatePort);
-
-    /** 
-     * Returns old mapping if it existed, null if it is new.
-     * 
-     * @deprecated since 0.7.0; use {@link #associate(String, HostAndPort, int)} or {@link #associate(String, HostAndPort, Location, int)}
-     */
-    @Deprecated
-    public PortMapping acquirePublicPortExplicit(String publicIpId, int port);
-
-    /**
-     * Records a location and private port against a publicIp and public port,
-     * to support {@link #lookup(Location, int)}.
-     * <p>
-     * Superfluous if {@link #acquirePublicPort(String, Location, int)} was used,
-     * but strongly recommended if {@link #acquirePublicPortExplicit(String, int)} was used
-     * e.g. if the location is not known ahead of time.
-     * 
-     * @deprecated Use {@link #associate(String, HostAndPort, Location, int)}
-     */
-    @Deprecated
-    public void associate(String publicIpId, int publicPort, Location l, int privatePort);
-
-    /**
-     * Records a public hostname or address to be associated with the given publicIpId for lookup purposes.
-     * <p>
-     * Conceivably this may have to be access-location specific.
-     * 
-     * @deprecated Use {@link #associate(String, HostAndPort, int)} or {@link #associate(String, HostAndPort, Location, int)}
-     */
-    @Deprecated
-    public void recordPublicIpHostname(String publicIpId, String hostnameOrPublicIpAddress);
-
-    /**
-     * Returns a recorded public hostname or address.
-     * 
-     * @deprecated Use {@link #lookup(String, int)} or {@link #lookup(Location, int)}
-     */
-    @Deprecated
-    public String getPublicIpHostname(String publicIpId);
-    
-    /**
-     * Clears a previous call to {@link #recordPublicIpHostname(String, String)}.
-     * 
-     * @deprecated Use {@link #forgetPortMapping(String, int)} or {@link #forgetPortMappings(Location)}
-     */
-    @Deprecated
-    public boolean forgetPublicIpHostname(String publicIpId);
-
-    /**
-     * Returns true if this implementation is a client which is immutable/safe for serialization
-     * i.e. it delegates to something on an entity or location elsewhere.
-     * 
-     * @deprecated since 0.7.0; no need to separate client-proxy from impl
-     */
-    @Deprecated
-    public boolean isClient();
-    
-
-    ///////////////////////////////////////////////////////////////////////////////////
-    // Deprecated; just internal
-    ///////////////////////////////////////////////////////////////////////////////////
-
-    /** 
-     * Returns the port mapping for a given publicIpId and public port.
-     * 
-     * @deprecated since 0.7.0; this method will be internal only
-     */
-    @Deprecated
-    public PortMapping getPortMappingWithPublicSide(String publicIpId, int publicPort);
-
-    /** 
-     * Returns the subset of port mappings associated with a given public IP ID.
-     * 
-     * @deprecated since 0.7.0; this method will be internal only
-     */
-    @Deprecated
-    public Collection<PortMapping> getPortMappingWithPublicIpId(String publicIpId);
-
-    /** 
-     * @see {@link #forgetPortMapping(String, int)} and {@link #forgetPortMappings(Location)}
-     * 
-     * @deprecated since 0.7.0; this method will be internal only
-     */
-    @Deprecated
-    public boolean forgetPortMapping(PortMapping m);
-
-    /**
-     * Returns the public host and port for use accessing the given mapping.
-     * <p>
-     * Conceivably this may have to be access-location specific.
-     * 
-     * @deprecated since 0.7.0; this method will be internal only
-     */
-    @Deprecated
-    public HostAndPort getPublicHostAndPort(PortMapping m);
-
-    /** 
-     * Returns the subset of port mappings associated with a given location.
-     * 
-     * @deprecated since 0.7.0; this method will be internal only
-     */
-    @Deprecated
-    public Collection<PortMapping> getLocationPublicIpIds(Location l);
-        
-    /** 
-     * Returns the mapping to a given private port, or null if none.
-     * 
-     * @deprecated since 0.7.0; this method will be internal only
-     */
-    @Deprecated
-    public PortMapping getPortMappingWithPrivateSide(Location l, int privatePort);
-
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/access/PortForwardManagerAuthority.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/access/PortForwardManagerAuthority.java b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/access/PortForwardManagerAuthority.java
deleted file mode 100644
index 89c57f3..0000000
--- a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/location/access/PortForwardManagerAuthority.java
+++ /dev/null
@@ -1,46 +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 org.apache.brooklyn.core.location.access;
-
-
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.core.entity.EntityInternal;
-
-/**
- * @deprecated since 0.7.0; use {@link PortForwardManagerImpl}
- */
-@Deprecated
-public class PortForwardManagerAuthority extends PortForwardManagerImpl {
-    private Entity owningEntity;
-
-    public PortForwardManagerAuthority() {
-    }
-
-    public PortForwardManagerAuthority(Entity owningEntity) {
-        this.owningEntity = owningEntity;
-    }
-
-    protected void onChanged() {
-        if (owningEntity != null) {
-            ((EntityInternal) owningEntity).requestPersist();
-        } else {
-            super.onChanged();
-        }
-    }
-}


Mime
View raw message