http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a2da61d1/utils/common/src/main/java/brooklyn/util/text/QuotedStringTokenizer.java
----------------------------------------------------------------------
diff --git 
a/utils/common/src/main/java/brooklyn/util/text/QuotedStringTokenizer.java 
b/utils/common/src/main/java/brooklyn/util/text/QuotedStringTokenizer.java
index 4673458..1946235 100644
--- a/utils/common/src/main/java/brooklyn/util/text/QuotedStringTokenizer.java
+++ b/utils/common/src/main/java/brooklyn/util/text/QuotedStringTokenizer.java
@@ -28,54 +28,54 @@ import java.util.StringTokenizer;
  */  
 public class QuotedStringTokenizer {
 
-       final StringTokenizer delegate;
-       final String quoteChars;
-       final boolean includeQuotes;
-       final String delimiters;
-       final boolean includeDelimiters;
+    final StringTokenizer delegate;
+    final String quoteChars;
+    final boolean includeQuotes;
+    final String delimiters;
+    final boolean includeDelimiters;
 
-       public static String DEFAULT_QUOTE_CHARS = "\"\'";
-       
-       
-       protected String DEFAULT_QUOTE_CHARS() {
-               return DEFAULT_QUOTE_CHARS;
-       }
-       
-       public final static String DEFAULT_DELIMITERS = " \t\n\r\f";    
-       
-       /** default quoted tokenizer, using single and double quotes as quote 
chars and returning quoted results
-        * (use unquoteToken to unquote), and using whitespace chars as 
delimeters (not included as tokens);
-        * string may be null if the nothing will be tokenized and the class is 
used only for
-        * quoteToken(String) and unquote(String).
-        */
-       public QuotedStringTokenizer(String stringToTokenize) {
-               this(stringToTokenize, true);
-       }
-       public QuotedStringTokenizer(String stringToTokenize, boolean 
includeQuotes) {
-               this(stringToTokenize, null, includeQuotes);
-       }
-       public QuotedStringTokenizer(String stringToTokenize, String 
quoteChars, boolean includeQuotes) {
-               this(stringToTokenize, quoteChars, includeQuotes, null, false);
-       }
+    public static String DEFAULT_QUOTE_CHARS = "\"\'";
+    
+    
+    protected String DEFAULT_QUOTE_CHARS() {
+        return DEFAULT_QUOTE_CHARS;
+    }
+    
+    public final static String DEFAULT_DELIMITERS = " \t\n\r\f";    
+    
+    /** default quoted tokenizer, using single and double quotes as quote 
chars and returning quoted results
+     * (use unquoteToken to unquote), and using whitespace chars as delimeters 
(not included as tokens);
+     * string may be null if the nothing will be tokenized and the class is 
used only for
+     * quoteToken(String) and unquote(String).
+     */
+    public QuotedStringTokenizer(String stringToTokenize) {
+        this(stringToTokenize, true);
+    }
+    public QuotedStringTokenizer(String stringToTokenize, boolean 
includeQuotes) {
+        this(stringToTokenize, null, includeQuotes);
+    }
+    public QuotedStringTokenizer(String stringToTokenize, String quoteChars, 
boolean includeQuotes) {
+        this(stringToTokenize, quoteChars, includeQuotes, null, false);
+    }
 
-       public QuotedStringTokenizer(String stringToTokenize, String 
quoteChars, boolean includeQuotes, String delimiters, boolean 
includeDelimiters) {
-               delegate = new StringTokenizer(stringToTokenize==null ? "" : 
stringToTokenize, (delimiters==null ? DEFAULT_DELIMITERS : delimiters), true);
-               this.quoteChars = quoteChars==null ? DEFAULT_QUOTE_CHARS() : 
quoteChars;
-               this.includeQuotes = includeQuotes;
-               this.delimiters = delimiters==null ? DEFAULT_DELIMITERS : 
delimiters;
-               this.includeDelimiters = includeDelimiters;
-               updateNextToken();
-       }
-       
-       public static class Builder {
-           private String quoteChars = DEFAULT_QUOTE_CHARS;
-           private boolean includeQuotes=true;
-           private String delimiterChars=DEFAULT_DELIMITERS;
-           private boolean includeDelimiters=false;
+    public QuotedStringTokenizer(String stringToTokenize, String quoteChars, 
boolean includeQuotes, String delimiters, boolean includeDelimiters) {
+        delegate = new StringTokenizer(stringToTokenize==null ? "" : 
stringToTokenize, (delimiters==null ? DEFAULT_DELIMITERS : delimiters), true);
+        this.quoteChars = quoteChars==null ? DEFAULT_QUOTE_CHARS() : 
quoteChars;
+        this.includeQuotes = includeQuotes;
+        this.delimiters = delimiters==null ? DEFAULT_DELIMITERS : delimiters;
+        this.includeDelimiters = includeDelimiters;
+        updateNextToken();
+    }
+    
+    public static class Builder {
+        private String quoteChars = DEFAULT_QUOTE_CHARS;
+        private boolean includeQuotes=true;
+        private String delimiterChars=DEFAULT_DELIMITERS;
+        private boolean includeDelimiters=false;
 
-           public QuotedStringTokenizer build(String stringToTokenize) {
-               return new QuotedStringTokenizer(stringToTokenize, quoteChars, 
includeQuotes, delimiterChars, includeDelimiters);
-           }
+        public QuotedStringTokenizer build(String stringToTokenize) {
+            return new QuotedStringTokenizer(stringToTokenize, quoteChars, 
includeQuotes, delimiterChars, includeDelimiters);
+        }
         public List<String> buildList(String stringToTokenize) {
             return new QuotedStringTokenizer(stringToTokenize, quoteChars, 
includeQuotes, delimiterChars, includeDelimiters).remainderAsList();
         }
@@ -86,73 +86,73 @@ public class QuotedStringTokenizer {
         public Builder delimiterChars(String delimiterChars) { 
this.delimiterChars = delimiterChars; return this; }
         public Builder addDelimiterChars(String delimiterChars) { 
this.delimiterChars = this.delimiterChars + delimiterChars; return this; }
         public Builder includeDelimiters(boolean includeDelimiters) { 
this.includeDelimiters = includeDelimiters; return this; } 
-       }
+    }
     public static Builder builder() {
         return new Builder();
     }
 
-       String peekedNextToken = null;
-       
-       public synchronized boolean hasMoreTokens() {
-               return peekedNextToken!=null;
-       }
-       
-       public synchronized String nextToken() {        
-               if (peekedNextToken==null) throw new NoSuchElementException();
-               String lastToken = peekedNextToken;
-               updateNextToken();
-               return includeQuotes ? lastToken : unquoteToken(lastToken);
-       }
+    String peekedNextToken = null;
+    
+    public synchronized boolean hasMoreTokens() {
+        return peekedNextToken!=null;
+    }
+    
+    public synchronized String nextToken() {    
+        if (peekedNextToken==null) throw new NoSuchElementException();
+        String lastToken = peekedNextToken;
+        updateNextToken();
+        return includeQuotes ? lastToken : unquoteToken(lastToken);
+    }
 
-       /** this method removes all unescaped quote chars, i.e. quote chars 
preceded by no backslashes (or a larger even number of them);
-        * it also unescapes '\\' as '\'.  it does no other unescaping.  */
-       public String unquoteToken(String word) {
-               // ( (\\A|[^\\\\]) (\\\\\\\\)* ) [ Pattern.quote(quoteChars) ]  
$1
-               word = word.replaceAll(
-                               "((\\A|[^\\\\])(\\\\\\\\)*)["+
-                                       //Pattern.quote(
-                                               quoteChars
-                                       //)
-                                               +"]+",
-                               "$1");
-               //above pattern removes any quote preceded by even number of 
backslashes
-               //now it is safe to replace any \c by c
-               word = word.replaceAll("\\\\"+"([\\\\"+
-                               //Pattern.quote(
-                               quoteChars
-                               //)
-                               +"])", "$1");
-                               
-               return word;
-       }
-       
-       /** returns the input text escaped for use with unquoteTokens, and 
wrapped in the quoteChar[0] (usu a double quote) */
-       public String quoteToken(String unescapedText) {
-               String result = unescapedText;
-               //replace every backslash by two backslashes
-               result = result.replaceAll("\\\\", "\\\\\\\\");
-               //now replace every quote char by backslash quote char
-               result = result.replaceAll("(["+quoteChars+"])", "\\\\$1");
-               //then wrap in quote
-               result = quoteChars.charAt(0) + result + quoteChars.charAt(0);
-               return result;
-       }
+    /** this method removes all unescaped quote chars, i.e. quote chars 
preceded by no backslashes (or a larger even number of them);
+     * it also unescapes '\\' as '\'.  it does no other unescaping.  */
+    public String unquoteToken(String word) {
+        // ( (\\A|[^\\\\]) (\\\\\\\\)* ) [ Pattern.quote(quoteChars) ]  $1
+        word = word.replaceAll(
+                "((\\A|[^\\\\])(\\\\\\\\)*)["+
+                    //Pattern.quote(
+                        quoteChars
+                    //)
+                        +"]+",
+                "$1");
+        //above pattern removes any quote preceded by even number of 
backslashes
+        //now it is safe to replace any \c by c
+        word = word.replaceAll("\\\\"+"([\\\\"+
+                //Pattern.quote(
+                quoteChars
+                //)
+                +"])", "$1");
+                
+        return word;
+    }
+    
+    /** returns the input text escaped for use with unquoteTokens, and wrapped 
in the quoteChar[0] (usu a double quote) */
+    public String quoteToken(String unescapedText) {
+        String result = unescapedText;
+        //replace every backslash by two backslashes
+        result = result.replaceAll("\\\\", "\\\\\\\\");
+        //now replace every quote char by backslash quote char
+        result = result.replaceAll("(["+quoteChars+"])", "\\\\$1");
+        //then wrap in quote
+        result = quoteChars.charAt(0) + result + quoteChars.charAt(0);
+        return result;
+    }
 
-       protected synchronized void updateNextToken() {
-               peekedNextToken = null;
-               String token;
-               do {
-                       if (!delegate.hasMoreTokens()) return;
-                       token = delegate.nextToken();
-                       //skip delimeters
-               } while (!includeDelimiters && 
token.matches("["+delimiters+"]+"));
-               
-               StringBuffer nextToken = new StringBuffer(token);
-               pullUntilValid(nextToken);
-               peekedNextToken = nextToken.toString();
-       }
+    protected synchronized void updateNextToken() {
+        peekedNextToken = null;
+        String token;
+        do {
+            if (!delegate.hasMoreTokens()) return;
+            token = delegate.nextToken();
+            //skip delimeters
+        } while (!includeDelimiters && token.matches("["+delimiters+"]+"));
+        
+        StringBuffer nextToken = new StringBuffer(token);
+        pullUntilValid(nextToken);
+        peekedNextToken = nextToken.toString();
+    }
 
-       private void pullUntilValid(StringBuffer nextToken) {
+    private void pullUntilValid(StringBuffer nextToken) {
         while (hasOpenQuote(nextToken.toString(), quoteChars) && 
delegate.hasMoreTokens()) {
             //keep appending until the quote is ended or there are no more 
quotes
             nextToken.append(delegate.nextToken());
@@ -160,37 +160,37 @@ public class QuotedStringTokenizer {
     }
 
     public static boolean hasOpenQuote(String stringToCheck) {
-               return hasOpenQuote(stringToCheck, DEFAULT_QUOTE_CHARS);
-       }
+        return hasOpenQuote(stringToCheck, DEFAULT_QUOTE_CHARS);
+    }
 
-       public static boolean hasOpenQuote(String stringToCheck, String 
quoteChars) {           
-               String x = stringToCheck;
-               if (x==null) return false;
+    public static boolean hasOpenQuote(String stringToCheck, String 
quoteChars) {        
+        String x = stringToCheck;
+        if (x==null) return false;
 
-               StringBuffer xi = new StringBuffer();
-               for (int i=0; i<x.length(); i++) {
-                       char c = x.charAt(i);
-                       if (c=='\\') i++;
-                       else if (quoteChars.indexOf(c)>=0) {
-                               xi.append(c);
-                       }
-               }
-               x = xi.toString();
-               
-               while (x.length()>0) {
-                       char c = x.charAt(0);
-                       int match = x.indexOf(c, 1);
-                       if (match==-1) return true;
-                       x = x.substring(match+1);
-               }
-               return false;
-       }
+        StringBuffer xi = new StringBuffer();
+        for (int i=0; i<x.length(); i++) {
+            char c = x.charAt(i);
+            if (c=='\\') i++;
+            else if (quoteChars.indexOf(c)>=0) {
+                xi.append(c);
+            }
+        }
+        x = xi.toString();
+        
+        while (x.length()>0) {
+            char c = x.charAt(0);
+            int match = x.indexOf(c, 1);
+            if (match==-1) return true;
+            x = x.substring(match+1);
+        }
+        return false;
+    }
 
-       public List<String> remainderAsList() {
-               List<String> l = new ArrayList<String>();
-               while (hasMoreTokens())
-                       l.add(nextToken());
-               return l;
-       }
+    public List<String> remainderAsList() {
+        List<String> l = new ArrayList<String>();
+        while (hasMoreTokens())
+            l.add(nextToken());
+        return l;
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a2da61d1/utils/common/src/main/java/brooklyn/util/text/Strings.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/brooklyn/util/text/Strings.java 
b/utils/common/src/main/java/brooklyn/util/text/Strings.java
index 98ef7bd..528fa72 100644
--- a/utils/common/src/main/java/brooklyn/util/text/Strings.java
+++ b/utils/common/src/main/java/brooklyn/util/text/Strings.java
@@ -353,8 +353,7 @@ public class Strings {
      * @return such a string
      */
     public static String makeRealString(double x, int maxlen, int prec, int 
leftPadLen, double skipDecimalThreshhold, boolean useEForSmallNumbers) {
-        if (x<0) return
-            "-"+makeRealString(-x, maxlen, prec, leftPadLen);
+        if (x<0) return "-"+makeRealString(-x, maxlen, prec, leftPadLen);
         NumberFormat df = DecimalFormat.getInstance();
         //df.setMaximumFractionDigits(maxlen);
         df.setMinimumFractionDigits(0);

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a2da61d1/utils/common/src/main/java/brooklyn/util/time/Time.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/brooklyn/util/time/Time.java 
b/utils/common/src/main/java/brooklyn/util/time/Time.java
index 7fb5e1b..921c973 100644
--- a/utils/common/src/main/java/brooklyn/util/time/Time.java
+++ b/utils/common/src/main/java/brooklyn/util/time/Time.java
@@ -38,23 +38,23 @@ import com.google.common.base.Stopwatch;
 public class Time {
 
     public static final String DATE_FORMAT_PREFERRED = "yyyy-MM-dd 
HH:mm:ss.SSS";
-       public static final String DATE_FORMAT_STAMP = "yyyyMMdd-HHmmssSSS";
+    public static final String DATE_FORMAT_STAMP = "yyyyMMdd-HHmmssSSS";
 
-       public static final long MILLIS_IN_SECOND = 1000;
-       public static final long MILLIS_IN_MINUTE = 60*MILLIS_IN_SECOND;
-       public static final long MILLIS_IN_HOUR = 60*MILLIS_IN_MINUTE;
-       public static final long MILLIS_IN_DAY = 24*MILLIS_IN_HOUR;
-       public static final long MILLIS_IN_YEAR = 365*MILLIS_IN_DAY;
-       
+    public static final long MILLIS_IN_SECOND = 1000;
+    public static final long MILLIS_IN_MINUTE = 60*MILLIS_IN_SECOND;
+    public static final long MILLIS_IN_HOUR = 60*MILLIS_IN_MINUTE;
+    public static final long MILLIS_IN_DAY = 24*MILLIS_IN_HOUR;
+    public static final long MILLIS_IN_YEAR = 365*MILLIS_IN_DAY;
+    
     /** returns the current time in YYYY-MM-DD HH:MM:SS.mss format */
     public static String makeDateString() {
         return makeDateString(System.currentTimeMillis());
     }
 
-       /** returns the time in YYYY-MM-DD HH:MM:SS.mss format, given a long 
(e.g. returned by System.currentTimeMillis) */
-       public static String makeDateString(long date) {
-               return new SimpleDateFormat(DATE_FORMAT_PREFERRED).format(new 
Date(date));
-       }
+    /** returns the time in YYYY-MM-DD HH:MM:SS.mss format, given a long (e.g. 
returned by System.currentTimeMillis) */
+    public static String makeDateString(long date) {
+        return new SimpleDateFormat(DATE_FORMAT_PREFERRED).format(new 
Date(date));
+    }
 
     public static Function<Long, String> toDateString() { return dateString; }
     private static Function<Long, String> dateString = new Function<Long, 
String>() {
@@ -120,47 +120,47 @@ public class Time {
         return makeTimeStringNanoRounded(d.toNanoseconds());
     }
     /** given an elapsed time, makes it readable, eg 44d 6h, or 8s 923ms, 
optionally rounding */
-       public static String makeTimeString(long t, boolean round) {
-           return makeTimeStringNano(t*1000000L, round);
-       }
+    public static String makeTimeString(long t, boolean round) {
+        return makeTimeStringNano(t*1000000L, round);
+    }
     /** @see #makeTimeString(long, boolean) */
-       public static String makeTimeStringNanoExact(long tn) {
-           return makeTimeStringNano(tn, false);
-       }
+    public static String makeTimeStringNanoExact(long tn) {
+        return makeTimeStringNano(tn, false);
+    }
     /** @see #makeTimeString(long, boolean) */
-       public static String makeTimeStringNanoRounded(long tn) {
-           return makeTimeStringNano(tn, true);
-       }
+    public static String makeTimeStringNanoRounded(long tn) {
+        return makeTimeStringNano(tn, true);
+    }
     /** @see #makeTimeString(long, boolean) */
-       public static String makeTimeStringNano(long tn, boolean round) {
-           if (tn<0) return "-"+makeTimeStringNano(-tn, round);
-           if (tn==0) return "0";
-           
-               long tnm = tn % 1000000;
-               long t = tn/1000000;
-               String result = "";
-               
-               long d = t/MILLIS_IN_DAY;  t %= MILLIS_IN_DAY;
-               long h = t/MILLIS_IN_HOUR;  t %= MILLIS_IN_HOUR;
-               long m = t/MILLIS_IN_MINUTE;  t %= MILLIS_IN_MINUTE;
-               long s = t/MILLIS_IN_SECOND;  t %= MILLIS_IN_SECOND;
-               long ms = t;
-               
-               int segments = 0;
-               if (d>0) { result += d+"d "; segments++; }
-               if (h>0) { result += h+"h "; segments++; }
-               if (round && segments>=2) return 
Strings.removeAllFromEnd(result, " ");
-               if (m>0) { result += m+"m "; segments++; }
-               if (round && (segments>=2 || d>0)) return 
Strings.removeAllFromEnd(result, " ");
-               if (s>0) {
-                   if (ms==0 && tnm==0) {
-                       result += s+"s"; segments++;
+    public static String makeTimeStringNano(long tn, boolean round) {
+        if (tn<0) return "-"+makeTimeStringNano(-tn, round);
+        if (tn==0) return "0";
+        
+        long tnm = tn % 1000000;
+        long t = tn/1000000;
+        String result = "";
+        
+        long d = t/MILLIS_IN_DAY;  t %= MILLIS_IN_DAY;
+        long h = t/MILLIS_IN_HOUR;  t %= MILLIS_IN_HOUR;
+        long m = t/MILLIS_IN_MINUTE;  t %= MILLIS_IN_MINUTE;
+        long s = t/MILLIS_IN_SECOND;  t %= MILLIS_IN_SECOND;
+        long ms = t;
+        
+        int segments = 0;
+        if (d>0) { result += d+"d "; segments++; }
+        if (h>0) { result += h+"h "; segments++; }
+        if (round && segments>=2) return Strings.removeAllFromEnd(result, " ");
+        if (m>0) { result += m+"m "; segments++; }
+        if (round && (segments>=2 || d>0)) return 
Strings.removeAllFromEnd(result, " ");
+        if (s>0) {
+            if (ms==0 && tnm==0) {
+                result += s+"s"; segments++;
                 return result;
-                   }
-                   if (round && segments>0) {
-                       result += s+"s"; segments++;
-                       return result;
-                   }
+            }
+            if (round && segments>0) {
+                result += s+"s"; segments++;
+                return result;
+            }
             if (round && s>10) {
                 result += toDecimal(s, ms/1000.0, 1)+"s"; segments++;
                 return result;
@@ -170,10 +170,10 @@ public class Time {
                 return result;
             }
             result += s+"s ";
-               }
-               if (round && segments>0)
-                   return Strings.removeAllFromEnd(result, " ");
-               if (ms>0) {
+        }
+        if (round && segments>0)
+            return Strings.removeAllFromEnd(result, " ");
+        if (ms>0) {
             if (tnm==0) {
                 result += ms+"ms"; segments++;
                 return result;
@@ -191,16 +191,16 @@ public class Time {
                 return result;
             }
             result += ms+"ms ";
-               }
-               
-               long us = tnm/1000;
-               long ns = tnm % 1000;
+        }
+        
+        long us = tnm/1000;
+        long ns = tnm % 1000;
 
-               if (us>0) {
-                   if (ns==0) {
-                       result += us+"us"; segments++;
-                       return result;
-                   }
+        if (us>0) {
+            if (ns==0) {
+                result += us+"us"; segments++;
+                return result;
+            }
             if (round && us>=100) {
                 result += toDecimal(us, ns/1000.0, 1)+"us"; segments++;
                 return result;
@@ -209,16 +209,16 @@ public class Time {
                 result += toDecimal(us, ns/1000.0, 2)+"us"; segments++;
                 return result;
             }
-                   if (round) {
-                       result += toDecimal(us, ns/1000.0, 3)+"us"; segments++;
-                       return result;
-                   }
-                   result += us+"us ";
-               }
+            if (round) {
+                result += toDecimal(us, ns/1000.0, 3)+"us"; segments++;
+                return result;
+            }
+            result += us+"us ";
+        }
 
-               if (ns>0) result += ns+"ns";
-               return Strings.removeAllFromEnd(result, " ");
-       }
+        if (ns>0) result += ns+"ns";
+        return Strings.removeAllFromEnd(result, " ");
+    }
 
     public static Function<Long, String> fromLongToTimeStringExact() { return 
LONG_TO_TIME_STRING_EXACT; }
     private static final Function<Long, String> LONG_TO_TIME_STRING_EXACT = 
new FunctionLongToTimeStringExact();
@@ -274,35 +274,35 @@ public class Time {
         }
     }
 
-       private static String toDecimal(long intPart, double fracPart, int 
decimalPrecision) {
-               long powTen = 1;
-               for (int i=0; i<decimalPrecision; i++) powTen *= 10;
-               long fpr = Math.round(fracPart * powTen);
-               if (fpr==powTen) {
-                       intPart++;
-                       fpr = 0;
-               }
-               return intPart + "." + Strings.makePaddedString(""+fpr, 
decimalPrecision, "0", "");
-       }
+    private static String toDecimal(long intPart, double fracPart, int 
decimalPrecision) {
+        long powTen = 1;
+        for (int i=0; i<decimalPrecision; i++) powTen *= 10;
+        long fpr = Math.round(fracPart * powTen);
+        if (fpr==powTen) {
+            intPart++;
+            fpr = 0;
+        }
+        return intPart + "." + Strings.makePaddedString(""+fpr, 
decimalPrecision, "0", "");
+    }
 
-       /** sleep which propagates Interrupted as unchecked */
-       public static void sleep(long millis) {
-               try {
-                       Thread.sleep(millis);
-               } catch (InterruptedException e) {
-                       throw Exceptions.propagate(e);
-               }
-       }
-       
-       /** as {@link #sleep(long)} */
+    /** sleep which propagates Interrupted as unchecked */
+    public static void sleep(long millis) {
+        try {
+            Thread.sleep(millis);
+        } catch (InterruptedException e) {
+            throw Exceptions.propagate(e);
+        }
+    }
+    
+    /** as {@link #sleep(long)} */
     public static void sleep(Duration duration) {
         Time.sleep(duration.toMillisecondsRoundingUp());
     }    
 
-       /**
-        * Calculates the number of milliseconds past midnight for a given UTC 
time.
-        */
-       public static long getTimeOfDayFromUtc(long timeUtc) {
+    /**
+     * Calculates the number of milliseconds past midnight for a given UTC 
time.
+     */
+    public static long getTimeOfDayFromUtc(long timeUtc) {
         GregorianCalendar gregorianCalendar = new 
GregorianCalendar(TimeZone.getTimeZone("UTC"));
         gregorianCalendar.setTimeInMillis(timeUtc);
         int hour = gregorianCalendar.get(Calendar.HOUR_OF_DAY);
@@ -310,8 +310,8 @@ public class Time {
         int sec = gregorianCalendar.get(Calendar.SECOND);
         int millis = gregorianCalendar.get(Calendar.MILLISECOND);
         return (((((hour * 60) + min) * 60) + sec) * 1000) + millis;
-       }
-       
+    }
+    
     /**
      * Calculates the number of milliseconds past epoch for a given UTC time.
      */
@@ -349,87 +349,87 @@ public class Time {
         return (result == 0) ? -1 : result;
     }
     
-       /** parses a string eg '5s' or '20m 22.123ms', returning the number of 
milliseconds it represents (rounded);
-        * -1 on blank or "never" or "off" or "false";
-        * number of millis if no units specified.
-        * 
-        * @throws NumberFormatException if cannot be parsed (or if null)
-        */
-       public static long parseTimeString(String timeString) {
-               return (long) parseTimeStringAsDouble(timeString);
-       }
+    /** parses a string eg '5s' or '20m 22.123ms', returning the number of 
milliseconds it represents (rounded);
+     * -1 on blank or "never" or "off" or "false";
+     * number of millis if no units specified.
+     * 
+     * @throws NumberFormatException if cannot be parsed (or if null)
+     */
+    public static long parseTimeString(String timeString) {
+        return (long) parseTimeStringAsDouble(timeString);
+    }
 
-       /** parses a string eg '5s' or '20m 22.123ms', returning the number of 
milliseconds it represents; -1 on blank or never or off or false;
-        * number of millis if no units specified.
-        * 
+    /** parses a string eg '5s' or '20m 22.123ms', returning the number of 
milliseconds it represents; -1 on blank or never or off or false;
+     * number of millis if no units specified.
+     * 
      * @throws NumberFormatException if cannot be parsed (or if null)
-        */
-       public static double parseTimeStringAsDouble(String timeString) {
-               if (timeString==null)
-                       throw new 
NumberFormatException("GeneralHelper.parseTimeString cannot parse a null 
string");
-               try {
-                       double d = Double.parseDouble(timeString);
-                       return d;
-               } catch (NumberFormatException e) {
-                       //look for a type marker
-                       timeString = timeString.trim();
-                       String s = 
Strings.getLastWord(timeString).toLowerCase();
-                       timeString = timeString.substring(0, 
timeString.length()-s.length()).trim();
-                       int i=0;
-                       while (s.length()>i) {
-                               char c = s.charAt(i);
-                               if (c=='.' || Character.isDigit(c)) i++;
-                               else break;
-                       }
-                       String num = s.substring(0, i);
-                       if (i==0) {
-                               num = 
Strings.getLastWord(timeString).toLowerCase();
-                               timeString = timeString.substring(0, 
timeString.length()-num.length()).trim();
-                       } else {
-                               s = s.substring(i);
-                       }
-                       long multiplier = 0;
-                       if (num.length()==0) {
-                               //must be never or something
-                               if (s.equalsIgnoreCase("never") || 
s.equalsIgnoreCase("off") || s.equalsIgnoreCase("false"))
-                                       return -1;
-                               throw new NumberFormatException("unrecognised 
word  '"+s+"' in time string");
-                       }
-                       if (s.equalsIgnoreCase("ms") || 
s.equalsIgnoreCase("milli") || s.equalsIgnoreCase("millis")
-                                       || s.equalsIgnoreCase("millisec") || 
s.equalsIgnoreCase("millisecs")
-                                       || s.equalsIgnoreCase("millisecond") || 
s.equalsIgnoreCase("milliseconds"))
-                               multiplier = 1;
-                       else if (s.equalsIgnoreCase("s") || 
s.equalsIgnoreCase("sec") || s.equalsIgnoreCase("secs")
-                                       || s.equalsIgnoreCase("second") || 
s.equalsIgnoreCase("seconds"))
-                               multiplier = 1000;
-                       else if (s.equalsIgnoreCase("m") || 
s.equalsIgnoreCase("min") || s.equalsIgnoreCase("mins")
-                                       || s.equalsIgnoreCase("minute") || 
s.equalsIgnoreCase("minutes"))
-                               multiplier = 60*1000;
-                       else if (s.equalsIgnoreCase("h") || 
s.equalsIgnoreCase("hr") || s.equalsIgnoreCase("hrs")
-                                       || s.equalsIgnoreCase("hour") || 
s.equalsIgnoreCase("hours"))
-                               multiplier = 60*60*1000;
-                       else if (s.equalsIgnoreCase("d") || 
s.equalsIgnoreCase("day") || s.equalsIgnoreCase("days"))
-                               multiplier = 24*60*60*1000;
-                       else
-                               throw new NumberFormatException("unknown unit 
'"+s+"' in time string");
-                       double d = Double.parseDouble(num);
-                       double dd = 0;
-                       if (timeString.length()>0) {
-                               dd = parseTimeStringAsDouble(timeString);
-                               if (dd==-1) {
-                                       throw new NumberFormatException("cannot 
combine '"+timeString+"' with '"+num+" "+s+"'");
-                               }
-                       }
-                       return d*multiplier + dd;
-               }
-       }
+     */
+    public static double parseTimeStringAsDouble(String timeString) {
+        if (timeString==null)
+            throw new NumberFormatException("GeneralHelper.parseTimeString 
cannot parse a null string");
+        try {
+            double d = Double.parseDouble(timeString);
+            return d;
+        } catch (NumberFormatException e) {
+            //look for a type marker
+            timeString = timeString.trim();
+            String s = Strings.getLastWord(timeString).toLowerCase();
+            timeString = timeString.substring(0, 
timeString.length()-s.length()).trim();
+            int i=0;
+            while (s.length()>i) {
+                char c = s.charAt(i);
+                if (c=='.' || Character.isDigit(c)) i++;
+                else break;
+            }
+            String num = s.substring(0, i);
+            if (i==0) {
+                num = Strings.getLastWord(timeString).toLowerCase();
+                timeString = timeString.substring(0, 
timeString.length()-num.length()).trim();
+            } else {
+                s = s.substring(i);
+            }
+            long multiplier = 0;
+            if (num.length()==0) {
+                //must be never or something
+                if (s.equalsIgnoreCase("never") || s.equalsIgnoreCase("off") 
|| s.equalsIgnoreCase("false"))
+                    return -1;
+                throw new NumberFormatException("unrecognised word  '"+s+"' in 
time string");
+            }
+            if (s.equalsIgnoreCase("ms") || s.equalsIgnoreCase("milli") || 
s.equalsIgnoreCase("millis")
+                    || s.equalsIgnoreCase("millisec") || 
s.equalsIgnoreCase("millisecs")
+                    || s.equalsIgnoreCase("millisecond") || 
s.equalsIgnoreCase("milliseconds"))
+                multiplier = 1;
+            else if (s.equalsIgnoreCase("s") || s.equalsIgnoreCase("sec") || 
s.equalsIgnoreCase("secs")
+                    || s.equalsIgnoreCase("second") || 
s.equalsIgnoreCase("seconds"))
+                multiplier = 1000;
+            else if (s.equalsIgnoreCase("m") || s.equalsIgnoreCase("min") || 
s.equalsIgnoreCase("mins")
+                    || s.equalsIgnoreCase("minute") || 
s.equalsIgnoreCase("minutes"))
+                multiplier = 60*1000;
+            else if (s.equalsIgnoreCase("h") || s.equalsIgnoreCase("hr") || 
s.equalsIgnoreCase("hrs")
+                    || s.equalsIgnoreCase("hour") || 
s.equalsIgnoreCase("hours"))
+                multiplier = 60*60*1000;
+            else if (s.equalsIgnoreCase("d") || s.equalsIgnoreCase("day") || 
s.equalsIgnoreCase("days"))
+                multiplier = 24*60*60*1000;
+            else
+                throw new NumberFormatException("unknown unit '"+s+"' in time 
string");
+            double d = Double.parseDouble(num);
+            double dd = 0;
+            if (timeString.length()>0) {
+                dd = parseTimeStringAsDouble(timeString);
+                if (dd==-1) {
+                    throw new NumberFormatException("cannot combine 
'"+timeString+"' with '"+num+" "+s+"'");
+                }
+            }
+            return d*multiplier + dd;
+        }
+    }
 
-       /**
-        * Parses the given date, accepting either a UTC timestamp (i.e. a 
long), or a formatted date.
-        * @param dateString
-        * @param format
-        * @return
-        */
+    /**
+     * Parses the given date, accepting either a UTC timestamp (i.e. a long), 
or a formatted date.
+     * @param dateString
+     * @param format
+     * @return
+     */
     public static Date parseDateString(String dateString, DateFormat format) {
         if (dateString == null) 
             throw new NumberFormatException("GeneralHelper.parseDateString 
cannot parse a null string");

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a2da61d1/utils/common/src/test/java/brooklyn/util/internal/CommandLineUtilTest.java
----------------------------------------------------------------------
diff --git 
a/utils/common/src/test/java/brooklyn/util/internal/CommandLineUtilTest.java 
b/utils/common/src/test/java/brooklyn/util/internal/CommandLineUtilTest.java
index bac53da..642ef7b 100644
--- a/utils/common/src/test/java/brooklyn/util/internal/CommandLineUtilTest.java
+++ b/utils/common/src/test/java/brooklyn/util/internal/CommandLineUtilTest.java
@@ -31,35 +31,35 @@ import com.google.common.collect.Lists;
 
 public class CommandLineUtilTest {
 
-       @Test
-       public void testGetCommandReturnsDefaultIfNotPresent() throws Exception 
{
-               List<String> args = Lists.newArrayList("k1", "v1");
-               String result = CommandLineUtil.getCommandLineOption(args, 
"notthere", "mydefault");
-               assertEquals(result, "mydefault");
-               assertEquals(args, Arrays.asList("k1", "v1"));
-       }
-       
-       @Test
-       public void testGetCommandReturnsParamAndRemovesIt() throws Exception {
-           List<String> args = Lists.newArrayList("k1", "v1");
-               String result = CommandLineUtil.getCommandLineOption(args, 
"k1");
-               assertEquals(result, "v1");
-               assertEquals(args, Arrays.asList());
-       }
-       
-       @Test
-       public void testGetCommandReturnsParamAndRemovesItButLeavesOtherVals() 
throws Exception {
-           List<String> args = Lists.newArrayList("k1", "v1", "k2", "v2");
-               String result = CommandLineUtil.getCommandLineOption(args, 
"k1");
-               assertEquals(result, "v1");
-               assertEquals(args, Arrays.asList("k2", "v2"));
-       }
-       
-       @Test
-       public void 
testGetCommandReturnsParamAndRemovesItButLeavesOtherValsWhenDuplicateVals() 
throws Exception {
-           List<String> args = Lists.newArrayList("k1", "vdup", "k2", "v2", 
"k3", "vdup");
-               String result = CommandLineUtil.getCommandLineOption(args, 
"k3");
-               assertEquals(result, "vdup");
-               assertEquals(args, Arrays.asList("k1", "vdup", "k2", "v2"));
-       }
+    @Test
+    public void testGetCommandReturnsDefaultIfNotPresent() throws Exception {
+        List<String> args = Lists.newArrayList("k1", "v1");
+        String result = CommandLineUtil.getCommandLineOption(args, "notthere", 
"mydefault");
+        assertEquals(result, "mydefault");
+        assertEquals(args, Arrays.asList("k1", "v1"));
+    }
+    
+    @Test
+    public void testGetCommandReturnsParamAndRemovesIt() throws Exception {
+        List<String> args = Lists.newArrayList("k1", "v1");
+        String result = CommandLineUtil.getCommandLineOption(args, "k1");
+        assertEquals(result, "v1");
+        assertEquals(args, Arrays.asList());
+    }
+    
+    @Test
+    public void testGetCommandReturnsParamAndRemovesItButLeavesOtherVals() 
throws Exception {
+        List<String> args = Lists.newArrayList("k1", "v1", "k2", "v2");
+        String result = CommandLineUtil.getCommandLineOption(args, "k1");
+        assertEquals(result, "v1");
+        assertEquals(args, Arrays.asList("k2", "v2"));
+    }
+    
+    @Test
+    public void 
testGetCommandReturnsParamAndRemovesItButLeavesOtherValsWhenDuplicateVals() 
throws Exception {
+        List<String> args = Lists.newArrayList("k1", "vdup", "k2", "v2", "k3", 
"vdup");
+        String result = CommandLineUtil.getCommandLineOption(args, "k3");
+        assertEquals(result, "vdup");
+        assertEquals(args, Arrays.asList("k1", "vdup", "k2", "v2"));
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a2da61d1/utils/common/src/test/java/brooklyn/util/repeat/RepeaterTest.java
----------------------------------------------------------------------
diff --git a/utils/common/src/test/java/brooklyn/util/repeat/RepeaterTest.java 
b/utils/common/src/test/java/brooklyn/util/repeat/RepeaterTest.java
index 1109dec..1be68dd 100644
--- a/utils/common/src/test/java/brooklyn/util/repeat/RepeaterTest.java
+++ b/utils/common/src/test/java/brooklyn/util/repeat/RepeaterTest.java
@@ -217,18 +217,18 @@ public class RepeaterTest {
     @Test
     public void testNoRethrowsException() {
         try {
-               boolean result = new Repeater("throwRuntimeException")
-                   .every(Duration.millis(10))
-                   .until(callableThrowingUnsupportedFail())
-                   .limitIterationsTo(2)
-                   .run();
-               assertFalse(result);
+            boolean result = new Repeater("throwRuntimeException")
+                .every(Duration.millis(10))
+                .until(callableThrowingUnsupportedFail())
+                .limitIterationsTo(2)
+                .run();
+            assertFalse(result);
         } catch (RuntimeException re) {
             fail("Exception should not have been thrown: " + re.getMessage());
         }
     }
-       
-       private static Callable<Boolean> callableThrowingUnsupportedFail() {
+    
+    private static Callable<Boolean> callableThrowingUnsupportedFail() {
         return new Callable<Boolean>() {
             @Override
             public Boolean call() throws Exception {
@@ -236,5 +236,5 @@ public class RepeaterTest {
             }
         };
     }
-       
+    
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a2da61d1/utils/common/src/test/java/brooklyn/util/text/StringEscapesTest.java
----------------------------------------------------------------------
diff --git 
a/utils/common/src/test/java/brooklyn/util/text/StringEscapesTest.java 
b/utils/common/src/test/java/brooklyn/util/text/StringEscapesTest.java
index a9a83b2..3b326b6 100644
--- a/utils/common/src/test/java/brooklyn/util/text/StringEscapesTest.java
+++ b/utils/common/src/test/java/brooklyn/util/text/StringEscapesTest.java
@@ -33,19 +33,19 @@ public class StringEscapesTest {
     }
 
     
-       @Test
-       public void testBashEscaping() {
-               Assert.assertEquals(
-               BashStringEscapes.doubleQuoteLiteralsForBash("-Dname=Bob 
Johnson", "-Dnet.worth=$100"),
-                       "\"-Dname=Bob Johnson\" \"-Dnet.worth=\\$100\"");
-       }
+    @Test
+    public void testBashEscaping() {
+        Assert.assertEquals(
+            BashStringEscapes.doubleQuoteLiteralsForBash("-Dname=Bob Johnson", 
"-Dnet.worth=$100"),
+            "\"-Dname=Bob Johnson\" \"-Dnet.worth=\\$100\"");
+    }
 
-       @Test
-       public void testBashEscapable() {
-               
Assert.assertTrue(BashStringEscapes.isValidForDoubleQuotingInBash("Bob 
Johnson"));
-               
Assert.assertFalse(BashStringEscapes.isValidForDoubleQuotingInBash("\""));
-               
Assert.assertTrue(BashStringEscapes.isValidForDoubleQuotingInBash("\\\""));
-       }       
+    @Test
+    public void testBashEscapable() {
+        Assert.assertTrue(BashStringEscapes.isValidForDoubleQuotingInBash("Bob 
Johnson"));
+        
Assert.assertFalse(BashStringEscapes.isValidForDoubleQuotingInBash("\""));
+        
Assert.assertTrue(BashStringEscapes.isValidForDoubleQuotingInBash("\\\""));
+    }    
     
     /** Bash handles ampersand in double quoted strings without escaping. */
     @Test

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a2da61d1/utils/common/src/test/java/brooklyn/util/text/WildcardGlobsTest.java
----------------------------------------------------------------------
diff --git 
a/utils/common/src/test/java/brooklyn/util/text/WildcardGlobsTest.java 
b/utils/common/src/test/java/brooklyn/util/text/WildcardGlobsTest.java
index 95aee44..1417cfe 100644
--- a/utils/common/src/test/java/brooklyn/util/text/WildcardGlobsTest.java
+++ b/utils/common/src/test/java/brooklyn/util/text/WildcardGlobsTest.java
@@ -32,205 +32,205 @@ import 
brooklyn.util.text.WildcardGlobs.SpecialistGlobExpander;
 public class WildcardGlobsTest extends Assert {
 
     @Test
-       public void testBasic() throws InvalidPatternException {
-               assertTrue(WildcardGlobs.isGlobMatched("a?{ex,in}", "akin")); 
-               assertTrue(WildcardGlobs.isGlobMatched("a?{ex,in}", "alex"));
-               assertFalse(WildcardGlobs.isGlobMatched("a?{ex,in}", "appin"));
-       }
-       
-       @Test
-       public void testEmpty() throws InvalidPatternException {
-               assertTrue(WildcardGlobs.isGlobMatched("a{,?}{,b}", "a"));
-               assertTrue(WildcardGlobs.isGlobMatched("a{,?}{,b}", "ab"));
-               assertTrue(WildcardGlobs.isGlobMatched("a{,?}{,b}", "ac"));
-               assertTrue(WildcardGlobs.isGlobMatched("a{,?}{,b}", "acb"));
-               assertFalse(WildcardGlobs.isGlobMatched("a{,?}{,b}", "abc"));
-               assertFalse(WildcardGlobs.isGlobMatched("a{,?}{,b}", "accb"));
-       }
-
-       @Test
-       public void testNum() throws InvalidPatternException {
-               assertTrue(newGlobExpander().isGlobMatchedNumeric("{1-3}", 
"1"));
-               assertTrue(newGlobExpander().isGlobMatchedNumeric("a{1-3}", 
"a1"));
-               assertTrue(newGlobExpander().isGlobMatchedNumeric("a{1-3,5}", 
"a1"));
-               assertTrue(newGlobExpander().isGlobMatchedNumeric("a{1-3,5}", 
"a3"));
-               assertTrue(newGlobExpander().isGlobMatchedNumeric("a{1-3,5}", 
"a5"));
-               assertFalse(newGlobExpander().isGlobMatchedNumeric("a{1-3,5}", 
"a4"));
-               assertFalse(newGlobExpander().isGlobMatchedNumeric("a{1-3,5}", 
"a01"));
-       }
-
-       @Test
-       public void testNumLeadZero() throws InvalidPatternException {
-               
assertTrue(newGlobExpander().isGlobMatchedNumeric("a{01-03,05}", "a01"));
-               assertTrue(newGlobExpander().isGlobMatchedNumeric("a{ 01  - 03 
, 05 }", "a01"));
-               assertTrue(newGlobExpander().isGlobMatchedNumeric("a{ 01  - 03 
, 05 }", "a02"));
-               assertTrue(newGlobExpander().isGlobMatchedNumeric("a{ 01  - 03 
, 05 }", "a03"));
-               assertTrue(newGlobExpander().isGlobMatchedNumeric("a{ 01  - 03 
, 05 }", "a 05 "));
-               
assertTrue(newGlobExpander().isGlobMatchedNumeric("a{01-03,05}", "a05"));
-               
assertFalse(newGlobExpander().isGlobMatchedNumeric("a{01-03,05}", "a04"));
-               
assertFalse(newGlobExpander().isGlobMatchedNumeric("a{01-03,05}", "a3"));
-       }
-
-       @Test
-       public void testOrder() throws InvalidPatternException {
-           List<String> result;
-           result = newGlobExpander().expand("{a,b}");
-           assertEquals(result, Arrays.asList("a","b"), "Expansion was 
"+result);
-           result = newGlobExpander().expand("{{a},b}");
-           assertEquals(result, Arrays.asList("a","b"), "Expansion was 
"+result);
+    public void testBasic() throws InvalidPatternException {
+        assertTrue(WildcardGlobs.isGlobMatched("a?{ex,in}", "akin")); 
+        assertTrue(WildcardGlobs.isGlobMatched("a?{ex,in}", "alex"));
+        assertFalse(WildcardGlobs.isGlobMatched("a?{ex,in}", "appin"));
+    }
+    
+    @Test
+    public void testEmpty() throws InvalidPatternException {
+        assertTrue(WildcardGlobs.isGlobMatched("a{,?}{,b}", "a"));
+        assertTrue(WildcardGlobs.isGlobMatched("a{,?}{,b}", "ab"));
+        assertTrue(WildcardGlobs.isGlobMatched("a{,?}{,b}", "ac"));
+        assertTrue(WildcardGlobs.isGlobMatched("a{,?}{,b}", "acb"));
+        assertFalse(WildcardGlobs.isGlobMatched("a{,?}{,b}", "abc"));
+        assertFalse(WildcardGlobs.isGlobMatched("a{,?}{,b}", "accb"));
+    }
+
+    @Test
+    public void testNum() throws InvalidPatternException {
+        assertTrue(newGlobExpander().isGlobMatchedNumeric("{1-3}", "1"));
+        assertTrue(newGlobExpander().isGlobMatchedNumeric("a{1-3}", "a1"));
+        assertTrue(newGlobExpander().isGlobMatchedNumeric("a{1-3,5}", "a1"));
+        assertTrue(newGlobExpander().isGlobMatchedNumeric("a{1-3,5}", "a3"));
+        assertTrue(newGlobExpander().isGlobMatchedNumeric("a{1-3,5}", "a5"));
+        assertFalse(newGlobExpander().isGlobMatchedNumeric("a{1-3,5}", "a4"));
+        assertFalse(newGlobExpander().isGlobMatchedNumeric("a{1-3,5}", "a01"));
+    }
+
+    @Test
+    public void testNumLeadZero() throws InvalidPatternException {
+        assertTrue(newGlobExpander().isGlobMatchedNumeric("a{01-03,05}", 
"a01"));
+        assertTrue(newGlobExpander().isGlobMatchedNumeric("a{ 01  - 03 , 05 
}", "a01"));
+        assertTrue(newGlobExpander().isGlobMatchedNumeric("a{ 01  - 03 , 05 
}", "a02"));
+        assertTrue(newGlobExpander().isGlobMatchedNumeric("a{ 01  - 03 , 05 
}", "a03"));
+        assertTrue(newGlobExpander().isGlobMatchedNumeric("a{ 01  - 03 , 05 
}", "a 05 "));
+        assertTrue(newGlobExpander().isGlobMatchedNumeric("a{01-03,05}", 
"a05"));
+        assertFalse(newGlobExpander().isGlobMatchedNumeric("a{01-03,05}", 
"a04"));
+        assertFalse(newGlobExpander().isGlobMatchedNumeric("a{01-03,05}", 
"a3"));
+    }
+
+    @Test
+    public void testOrder() throws InvalidPatternException {
+        List<String> result;
+        result = newGlobExpander().expand("{a,b}");
+        assertEquals(result, Arrays.asList("a","b"), "Expansion was "+result);
+        result = newGlobExpander().expand("{{a},b}");
+        assertEquals(result, Arrays.asList("a","b"), "Expansion was "+result);
         result = newGlobExpander().expand("{a,b}{1,2}");
         assertEquals(result, Arrays.asList("a1","a2","b1","b2"), "Expansion 
was "+result);
-           result = newGlobExpander().expand("{80{8{1,2},90},8000+}");
-           assertEquals(result, Arrays.asList("8081","8082","8090","8000+"), 
"Expansion was "+result);
-       }
-          
-       @Test
-       public void testQuotes() throws InvalidPatternException {
-               List<String> result;
-               SpecialistGlobExpander notSpecial = new 
SpecialistGlobExpander(true, PhraseTreatment.NOT_A_SPECIAL_CHAR, 
PhraseTreatment.NOT_A_SPECIAL_CHAR);
-               result = notSpecial.expand("hello \"{1-3}\"");
-               assertEquals(3, result.size());
-               assertEquals("hello \"1\"", result.get(0));
-               
-               SpecialistGlobExpander expanding = new 
SpecialistGlobExpander(true, PhraseTreatment.INTERIOR_EXPANDABLE, 
PhraseTreatment.NOT_A_SPECIAL_CHAR);
-               result = expanding.expand("hello \"{1-3}\"");
-               assertEquals(3, result.size());
-               assertEquals("hello \"1\"", result.get(0));
-               result = expanding.expand("hello \"{1,2-3}\"");
-               assertEquals(3, result.size());
-               assertEquals("hello \"2\"", result.get(1));
-
-               SpecialistGlobExpander notExpanding = new 
SpecialistGlobExpander(true, PhraseTreatment.INTERIOR_NOT_EXPANDABLE, 
PhraseTreatment.NOT_A_SPECIAL_CHAR);
-               result = notExpanding.expand("hello \"{1,2-3}\"");
-               assertEquals(1, result.size());
-               assertEquals("hello \"{1,2-3}\"", result.get(0));
-
-               
-               result = notSpecial.expand("hello {\"1,2,3\"}");
-               assertEquals(3, result.size());
-               assertEquals("hello \"1", result.get(0));
-
-               result = expanding.expand("hello {\"1,2,3\"}");
-               assertEquals(1, result.size());
-               assertEquals("hello \"1,2,3\"", result.get(0));
-
-               result = notExpanding.expand("hello {\"1,2,3\"}");
-               assertEquals(1, result.size());
-               assertEquals("hello \"1,2,3\"", result.get(0));
-
-               
-               result = notSpecial.expand("hello {\"1,{02-03,04}\"}");
-               assertEquals(4, result.size());
-               assertEquals("hello \"1", result.get(0));
-               assertEquals("hello 03\"", result.get(2));
-
-               result = expanding.expand("hello {\"1,{02-03,04}\"}");
-               assertEquals(3, result.size());
-               assertEquals("hello \"1,02\"", result.get(0));
-
-               result = notExpanding.expand("hello {\"1,{02-03,04}\"}");
-               assertEquals(1, result.size());
-               assertEquals("hello \"1,{02-03,04}\"", result.get(0));
-               
-               //no exception
-               notSpecial.expand("{\"}");
-               notSpecial.expand("\"{\"}");
-               //exceptions
-               try {
-                       expanding.expand("\"");                 
-                       fail("exception expected");
-               } catch (InvalidPatternException e) { /* expected */ }
-               try {
-                       expanding.expand("{\"}");                       
-                       fail("exception expected");
-               } catch (InvalidPatternException e) { /* expected */ }
-               try {
-                       expanding.expand("\"{\"");                      
-                       fail("exception expected");
-               } catch (InvalidPatternException e) { /* expected */ }
-               try {
-                       notExpanding.expand("\"");                      
-                       fail("exception expected");
-               } catch (InvalidPatternException e) { /* expected */ }
-               try {
-                       notExpanding.expand("{\"}");                    
-                       fail("exception expected");
-               } catch (InvalidPatternException e) { /* expected */ }
-               //no exception
-               notExpanding.expand("\"{\"");                   
-       }
-
-       @Test
-       public void testParen() throws InvalidPatternException {
-               List<String> result;
-               SpecialistGlobExpander notSpecial = new 
SpecialistGlobExpander(true, PhraseTreatment.NOT_A_SPECIAL_CHAR, 
PhraseTreatment.NOT_A_SPECIAL_CHAR);
-               result = notSpecial.expand("hello ({1-3})");
-               assertEquals(3, result.size());
-               assertEquals("hello (1)", result.get(0));
-               
-               SpecialistGlobExpander expanding = new 
SpecialistGlobExpander(true, PhraseTreatment.INTERIOR_NOT_EXPANDABLE, 
PhraseTreatment.INTERIOR_EXPANDABLE);
-               result = expanding.expand("hello ({1-3})");
-               assertEquals(3, result.size());
-               assertEquals("hello (1)", result.get(0));
-               result = expanding.expand("hello ({1,2-3})");
-               assertEquals(3, result.size());
-               assertEquals("hello (2)", result.get(1));
-
-               SpecialistGlobExpander notExpanding = new 
SpecialistGlobExpander(true, PhraseTreatment.INTERIOR_EXPANDABLE, 
PhraseTreatment.INTERIOR_NOT_EXPANDABLE);
-               result = notExpanding.expand("hello ({1,2-3})");
-               assertEquals(1, result.size());
-               assertEquals("hello ({1,2-3})", result.get(0));
-               
-               result = notSpecial.expand("hello {(1,2,3)}");
-               assertEquals(3, result.size());
-               assertEquals("hello (1", result.get(0));
-
-               result = expanding.expand("hello {(1,2,3)}");
-               assertEquals(1, result.size());
-               assertEquals("hello (1,2,3)", result.get(0));
-
-               result = notExpanding.expand("hello {(1,2,3)}");
-               assertEquals(1, result.size());
-               assertEquals("hello (1,2,3)", result.get(0));
-
-               
-               result = notSpecial.expand("hello {(1,{02-03,04})}");
-               assertEquals(4, result.size());
-               assertEquals("hello (1", result.get(0));
-               assertEquals("hello 03)", result.get(2));
-
-               result = expanding.expand("hello {(1,{02-03,04})}");
-               assertEquals(3, result.size());
-               assertEquals("hello (1,02)", result.get(0));
-
-               result = notExpanding.expand("hello {(1,{02-03,04})}");
-               assertEquals(1, result.size());
-               assertEquals("hello (1,{02-03,04})", result.get(0));
-               
-               try {
-                       notExpanding.expand("{(}");                     
-                       fail("exception expected");
-               } catch (InvalidPatternException e) { /* expected */ }
-               try {
-                       notExpanding.expand("(()");                     
-                       fail("exception expected");
-               } catch (InvalidPatternException e) { /* expected */ }
-               notExpanding.expand("({())");                   
-       }
-
-       @Test
-       public void testQuotesAndParen() throws InvalidPatternException {
-               List<String> result;
-               SpecialistGlobExpander special = new 
SpecialistGlobExpander(true, PhraseTreatment.INTERIOR_EXPANDABLE, 
PhraseTreatment.INTERIOR_NOT_EXPANDABLE);
-               result = 
special.expand("\"{hello,goodbye}{1-2,({3-4}),(\")}\"");
-               assertEquals(8, result.size());
-               assertTrue(result.contains("\"goodbye2\""));
-               assertTrue(result.contains("\"hello({3-4})\""));
-               assertTrue(result.contains("\"goodbye(\")\""));
-       }
-       
-       private SpecialistGlobExpander newGlobExpander() {
-               return new SpecialistGlobExpander(true, 
PhraseTreatment.NOT_A_SPECIAL_CHAR, PhraseTreatment.NOT_A_SPECIAL_CHAR);
-       }
+        result = newGlobExpander().expand("{80{8{1,2},90},8000+}");
+        assertEquals(result, Arrays.asList("8081","8082","8090","8000+"), 
"Expansion was "+result);
+    }
+       
+    @Test
+    public void testQuotes() throws InvalidPatternException {
+        List<String> result;
+        SpecialistGlobExpander notSpecial = new SpecialistGlobExpander(true, 
PhraseTreatment.NOT_A_SPECIAL_CHAR, PhraseTreatment.NOT_A_SPECIAL_CHAR);
+        result = notSpecial.expand("hello \"{1-3}\"");
+        assertEquals(3, result.size());
+        assertEquals("hello \"1\"", result.get(0));
+        
+        SpecialistGlobExpander expanding = new SpecialistGlobExpander(true, 
PhraseTreatment.INTERIOR_EXPANDABLE, PhraseTreatment.NOT_A_SPECIAL_CHAR);
+        result = expanding.expand("hello \"{1-3}\"");
+        assertEquals(3, result.size());
+        assertEquals("hello \"1\"", result.get(0));
+        result = expanding.expand("hello \"{1,2-3}\"");
+        assertEquals(3, result.size());
+        assertEquals("hello \"2\"", result.get(1));
+
+        SpecialistGlobExpander notExpanding = new SpecialistGlobExpander(true, 
PhraseTreatment.INTERIOR_NOT_EXPANDABLE, PhraseTreatment.NOT_A_SPECIAL_CHAR);
+        result = notExpanding.expand("hello \"{1,2-3}\"");
+        assertEquals(1, result.size());
+        assertEquals("hello \"{1,2-3}\"", result.get(0));
+
+        
+        result = notSpecial.expand("hello {\"1,2,3\"}");
+        assertEquals(3, result.size());
+        assertEquals("hello \"1", result.get(0));
+
+        result = expanding.expand("hello {\"1,2,3\"}");
+        assertEquals(1, result.size());
+        assertEquals("hello \"1,2,3\"", result.get(0));
+
+        result = notExpanding.expand("hello {\"1,2,3\"}");
+        assertEquals(1, result.size());
+        assertEquals("hello \"1,2,3\"", result.get(0));
+
+        
+        result = notSpecial.expand("hello {\"1,{02-03,04}\"}");
+        assertEquals(4, result.size());
+        assertEquals("hello \"1", result.get(0));
+        assertEquals("hello 03\"", result.get(2));
+
+        result = expanding.expand("hello {\"1,{02-03,04}\"}");
+        assertEquals(3, result.size());
+        assertEquals("hello \"1,02\"", result.get(0));
+
+        result = notExpanding.expand("hello {\"1,{02-03,04}\"}");
+        assertEquals(1, result.size());
+        assertEquals("hello \"1,{02-03,04}\"", result.get(0));
+        
+        //no exception
+        notSpecial.expand("{\"}");
+        notSpecial.expand("\"{\"}");
+        //exceptions
+        try {
+            expanding.expand("\"");            
+            fail("exception expected");
+        } catch (InvalidPatternException e) { /* expected */ }
+        try {
+            expanding.expand("{\"}");            
+            fail("exception expected");
+        } catch (InvalidPatternException e) { /* expected */ }
+        try {
+            expanding.expand("\"{\"");            
+            fail("exception expected");
+        } catch (InvalidPatternException e) { /* expected */ }
+        try {
+            notExpanding.expand("\"");            
+            fail("exception expected");
+        } catch (InvalidPatternException e) { /* expected */ }
+        try {
+            notExpanding.expand("{\"}");            
+            fail("exception expected");
+        } catch (InvalidPatternException e) { /* expected */ }
+        //no exception
+        notExpanding.expand("\"{\"");            
+    }
+
+    @Test
+    public void testParen() throws InvalidPatternException {
+        List<String> result;
+        SpecialistGlobExpander notSpecial = new SpecialistGlobExpander(true, 
PhraseTreatment.NOT_A_SPECIAL_CHAR, PhraseTreatment.NOT_A_SPECIAL_CHAR);
+        result = notSpecial.expand("hello ({1-3})");
+        assertEquals(3, result.size());
+        assertEquals("hello (1)", result.get(0));
+        
+        SpecialistGlobExpander expanding = new SpecialistGlobExpander(true, 
PhraseTreatment.INTERIOR_NOT_EXPANDABLE, PhraseTreatment.INTERIOR_EXPANDABLE);
+        result = expanding.expand("hello ({1-3})");
+        assertEquals(3, result.size());
+        assertEquals("hello (1)", result.get(0));
+        result = expanding.expand("hello ({1,2-3})");
+        assertEquals(3, result.size());
+        assertEquals("hello (2)", result.get(1));
+
+        SpecialistGlobExpander notExpanding = new SpecialistGlobExpander(true, 
PhraseTreatment.INTERIOR_EXPANDABLE, PhraseTreatment.INTERIOR_NOT_EXPANDABLE);
+        result = notExpanding.expand("hello ({1,2-3})");
+        assertEquals(1, result.size());
+        assertEquals("hello ({1,2-3})", result.get(0));
+        
+        result = notSpecial.expand("hello {(1,2,3)}");
+        assertEquals(3, result.size());
+        assertEquals("hello (1", result.get(0));
+
+        result = expanding.expand("hello {(1,2,3)}");
+        assertEquals(1, result.size());
+        assertEquals("hello (1,2,3)", result.get(0));
+
+        result = notExpanding.expand("hello {(1,2,3)}");
+        assertEquals(1, result.size());
+        assertEquals("hello (1,2,3)", result.get(0));
+
+        
+        result = notSpecial.expand("hello {(1,{02-03,04})}");
+        assertEquals(4, result.size());
+        assertEquals("hello (1", result.get(0));
+        assertEquals("hello 03)", result.get(2));
+
+        result = expanding.expand("hello {(1,{02-03,04})}");
+        assertEquals(3, result.size());
+        assertEquals("hello (1,02)", result.get(0));
+
+        result = notExpanding.expand("hello {(1,{02-03,04})}");
+        assertEquals(1, result.size());
+        assertEquals("hello (1,{02-03,04})", result.get(0));
+        
+        try {
+            notExpanding.expand("{(}");            
+            fail("exception expected");
+        } catch (InvalidPatternException e) { /* expected */ }
+        try {
+            notExpanding.expand("(()");            
+            fail("exception expected");
+        } catch (InvalidPatternException e) { /* expected */ }
+        notExpanding.expand("({())");            
+    }
+
+    @Test
+    public void testQuotesAndParen() throws InvalidPatternException {
+        List<String> result;
+        SpecialistGlobExpander special = new SpecialistGlobExpander(true, 
PhraseTreatment.INTERIOR_EXPANDABLE, PhraseTreatment.INTERIOR_NOT_EXPANDABLE);
+        result = special.expand("\"{hello,goodbye}{1-2,({3-4}),(\")}\"");
+        assertEquals(8, result.size());
+        assertTrue(result.contains("\"goodbye2\""));
+        assertTrue(result.contains("\"hello({3-4})\""));
+        assertTrue(result.contains("\"goodbye(\")\""));
+    }
+    
+    private SpecialistGlobExpander newGlobExpander() {
+        return new SpecialistGlobExpander(true, 
PhraseTreatment.NOT_A_SPECIAL_CHAR, PhraseTreatment.NOT_A_SPECIAL_CHAR);
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a2da61d1/utils/jmx/jmxrmi-agent/src/main/java/brooklyn/util/jmx/jmxrmi/JmxRmiAgent.java
----------------------------------------------------------------------
diff --git 
a/utils/jmx/jmxrmi-agent/src/main/java/brooklyn/util/jmx/jmxrmi/JmxRmiAgent.java
 
b/utils/jmx/jmxrmi-agent/src/main/java/brooklyn/util/jmx/jmxrmi/JmxRmiAgent.java
index b504ae7..089de45 100644
--- 
a/utils/jmx/jmxrmi-agent/src/main/java/brooklyn/util/jmx/jmxrmi/JmxRmiAgent.java
+++ 
b/utils/jmx/jmxrmi-agent/src/main/java/brooklyn/util/jmx/jmxrmi/JmxRmiAgent.java
@@ -170,8 +170,8 @@ public class JmxRmiAgent {
         String hostname = properties == null ? null : 
properties.getProperty(RMI_HOSTNAME_PROPERTY);
         if ("0.0.0.0".equals(hostname)) {
             System.err.println("WARN: invalid hostname 0.0.0.0 specified for 
JmxRmiAgent; " +
-                       "it typically must be an address or hostname which is 
bindable on the machine where " +
-                       "this service is running AND accessible by a client 
machine (access will likely be impossible)");
+                    "it typically must be an address or hostname which is 
bindable on the machine where " +
+                    "this service is running AND accessible by a client 
machine (access will likely be impossible)");
         }
         if (hostname == null || hostname.isEmpty()) {
             hostname = InetAddress.getLocalHost().getHostName();

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a2da61d1/utils/test-support/src/main/java/brooklyn/test/StatusListener.java
----------------------------------------------------------------------
diff --git a/utils/test-support/src/main/java/brooklyn/test/StatusListener.java 
b/utils/test-support/src/main/java/brooklyn/test/StatusListener.java
index 85a7b2f..ec044e9 100644
--- a/utils/test-support/src/main/java/brooklyn/test/StatusListener.java
+++ b/utils/test-support/src/main/java/brooklyn/test/StatusListener.java
@@ -35,9 +35,9 @@ import org.testng.ITestResult;
  * normally not used, preferring instead LoggingVerboseReporter which prints 
out config info
  */
 public class StatusListener implements ITestListener {
-       
-       public static final Logger log = 
LoggerFactory.getLogger(StatusListener.class);
-       
+    
+    public static final Logger log = 
LoggerFactory.getLogger(StatusListener.class);
+    
     /**
      * Holds test classes actually running in all threads.
      */
@@ -50,7 +50,7 @@ public class StatusListener implements ITestListener {
 
     //TODO instead of system.out.println we should log -- *and* perhaps write 
to sysout if logger doesn't?
     protected static void log(String msg) {
-       log.info(msg);
+        log.info(msg);
     }
     
     public void onTestStart(ITestResult res) {

Reply via email to