JcloudsLocationResolver extensible

Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/326583f1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/326583f1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/326583f1

Branch: refs/heads/master
Commit: 326583f144114140ec6c9f3e0ec926e24d01f624
Parents: cf49a2b
Author: Sam Corbett <[email protected]>
Authored: Fri May 22 15:32:11 2015 +0100
Committer: Sam Corbett <[email protected]>
Committed: Fri May 29 14:45:01 2015 +0100

----------------------------------------------------------------------
 .../basic/LocalhostLocationResolver.java        |  3 ++-
 .../jclouds/JcloudsLocationResolver.java        | 20 ++++++++++++--------
 .../jclouds/BrooklynMachinePoolLiveTest.java    |  2 +-
 3 files changed, 15 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/326583f1/core/src/main/java/brooklyn/location/basic/LocalhostLocationResolver.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/brooklyn/location/basic/LocalhostLocationResolver.java 
b/core/src/main/java/brooklyn/location/basic/LocalhostLocationResolver.java
index 08963a4..6451ed1 100644
--- a/core/src/main/java/brooklyn/location/basic/LocalhostLocationResolver.java
+++ b/core/src/main/java/brooklyn/location/basic/LocalhostLocationResolver.java
@@ -58,7 +58,8 @@ public class LocalhostLocationResolver extends 
AbstractLocationResolver implemen
     protected SpecParser getSpecParser() {
         return new 
AbstractLocationResolver.SpecParser(getPrefix()).setExampleUsage("\"localhost\" 
or \"localhost(displayName=abc)\"");
     }
-    
+
+    @Override
     protected Map<String, Object> getFilteredLocationProperties(String 
provider, String namedLocation, Map<String, ?> globalProperties) {
         return new 
LocalhostPropertiesFromBrooklynProperties().getLocationProperties("localhost", 
namedLocation, globalProperties);
     }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/326583f1/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsLocationResolver.java
----------------------------------------------------------------------
diff --git 
a/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsLocationResolver.java
 
b/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsLocationResolver.java
index 5d42da3..3a90653 100644
--- 
a/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsLocationResolver.java
+++ 
b/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsLocationResolver.java
@@ -50,7 +50,7 @@ public class JcloudsLocationResolver implements 
LocationResolver {
 
     public static final Logger log = 
LoggerFactory.getLogger(JcloudsLocationResolver.class);
     
-    public static final String JCLOUDS = "jclouds";
+    private static final String JCLOUDS = "jclouds";
     
     public static final Map<String,ProviderMetadata> PROVIDERS = 
getProvidersMap();
     public static final Map<String,ApiMetadata> APIS = getApisMap();
@@ -83,15 +83,15 @@ public class JcloudsLocationResolver implements 
LocationResolver {
         this.managementContext = checkNotNull(managementContext, 
"managementContext");
     }
     
-    protected static class JcloudsSpecParser {
+    protected class JcloudsSpecParser {
         String providerOrApi;
         String parameter;
         
-        public static JcloudsSpecParser parse(String spec, boolean dryrun) {
+        public JcloudsSpecParser parse(String spec, boolean dryrun) {
             JcloudsSpecParser result = new JcloudsSpecParser();
             int split = spec.indexOf(':');
             if (split<0) {
-                if (spec.equalsIgnoreCase(JCLOUDS)) {
+                if (spec.equalsIgnoreCase(getPrefix())) {
                     if (dryrun) return null;
                     throw new IllegalArgumentException("Cannot use '"+spec+"' 
as a location ID; it is insufficient. "+
                            "Try jclouds:aws-ec2 (for example).");
@@ -102,7 +102,7 @@ public class JcloudsLocationResolver implements 
LocationResolver {
                 result.providerOrApi = spec.substring(0, split);
                 result.parameter = spec.substring(split+1);
                 int numJcloudsPrefixes = 0;
-                while (result.providerOrApi.equalsIgnoreCase(JCLOUDS)) {
+                while (result.providerOrApi.equalsIgnoreCase(getPrefix())) {
                     //strip any number of jclouds: prefixes, for use by static 
"resolve" method
                     numJcloudsPrefixes++;
                     result.providerOrApi = result.parameter;
@@ -152,7 +152,7 @@ public class JcloudsLocationResolver implements 
LocationResolver {
     public JcloudsLocation newLocationFromString(Map locationFlags, String 
spec, brooklyn.location.LocationRegistry registry) {
         Map globalProperties = registry.getProperties();
 
-        JcloudsSpecParser details = JcloudsSpecParser.parse(spec, false);
+        JcloudsSpecParser details = new JcloudsSpecParser().parse(spec, false);
         String namedLocation = (String) 
locationFlags.get(LocationInternal.NAMED_SPEC_NAME.getName());
 
         boolean isProvider = details.isProvider();
@@ -193,7 +193,7 @@ public class JcloudsLocationResolver implements 
LocationResolver {
             }
         }
         
-        return 
managementContext.getLocationManager().createLocation(LocationSpec.create(JcloudsLocation.class)
+        return 
managementContext.getLocationManager().createLocation(LocationSpec.create(getLocationClass())
                 .configure(LocationConfigUtils.finalAndOriginalSpecs(spec, 
jcloudsProperties, globalProperties, namedLocation))
                 .configure(jcloudsProperties) );
     }
@@ -210,11 +210,15 @@ public class JcloudsLocationResolver implements 
LocationResolver {
     public String getPrefix() {
         return JCLOUDS;
     }
+
+    protected Class<? extends JcloudsLocation> getLocationClass() {
+        return JcloudsLocation.class;
+    }
     
     @Override
     public boolean accepts(String spec, LocationRegistry registry) {
         if (BasicLocationRegistry.isResolverPrefixForSpec(this, spec, true)) 
return true;
-        JcloudsSpecParser details = JcloudsSpecParser.parse(spec, true);
+        JcloudsSpecParser details = new JcloudsSpecParser().parse(spec, true);
         if (details==null) return false;
         if (details.isProvider() || details.isApi()) return true;
         return false;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/326583f1/locations/jclouds/src/test/java/brooklyn/location/jclouds/BrooklynMachinePoolLiveTest.java
----------------------------------------------------------------------
diff --git 
a/locations/jclouds/src/test/java/brooklyn/location/jclouds/BrooklynMachinePoolLiveTest.java
 
b/locations/jclouds/src/test/java/brooklyn/location/jclouds/BrooklynMachinePoolLiveTest.java
index 3504570..7a52f04 100644
--- 
a/locations/jclouds/src/test/java/brooklyn/location/jclouds/BrooklynMachinePoolLiveTest.java
+++ 
b/locations/jclouds/src/test/java/brooklyn/location/jclouds/BrooklynMachinePoolLiveTest.java
@@ -98,6 +98,6 @@ public class BrooklynMachinePoolLiveTest {
     
 
     private JcloudsLocation resolve(String spec) {
-        return (JcloudsLocation) 
managementContext.getLocationRegistry().resolve(JcloudsLocationResolver.JCLOUDS+":"+spec);
+        return (JcloudsLocation) 
managementContext.getLocationRegistry().resolve(new 
JcloudsLocationResolver().getPrefix() + ":" + spec);
     }
 }

Reply via email to