Repository: incubator-brooklyn
Updated Branches:
  refs/heads/master d767d781f -> 342a33679


Adds HasId and HasName marker interfaces for Rest API domain objects

Simplifies sorting of summary objects by name/id


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

Branch: refs/heads/master
Commit: c358310eeabdbbdbcd92f1d221d4b3b0f60f06b0
Parents: f8756e2
Author: Sam Corbett <sam.corb...@cloudsoftcorp.com>
Authored: Fri Jul 4 12:04:23 2014 +0100
Committer: Sam Corbett <sam.corb...@cloudsoftcorp.com>
Committed: Wed Jul 9 14:28:40 2014 +0100

----------------------------------------------------------------------
 .../brooklyn/rest/domain/ApplicationSpec.java   |  3 +-
 .../rest/domain/ApplicationSummary.java         |  3 +-
 .../rest/domain/CatalogItemSummary.java         |  4 ++-
 .../brooklyn/rest/domain/ConfigSummary.java     |  3 +-
 .../brooklyn/rest/domain/EffectorSummary.java   |  6 ++--
 .../java/brooklyn/rest/domain/EntitySpec.java   |  3 +-
 .../brooklyn/rest/domain/EntitySummary.java     |  4 ++-
 .../main/java/brooklyn/rest/domain/HasId.java   |  8 ++++++
 .../main/java/brooklyn/rest/domain/HasName.java |  8 ++++++
 .../java/brooklyn/rest/domain/LocationSpec.java |  3 +-
 .../brooklyn/rest/domain/LocationSummary.java   |  3 +-
 .../brooklyn/rest/domain/PolicySummary.java     |  4 ++-
 .../brooklyn/rest/domain/SensorSummary.java     |  3 +-
 .../rest/domain/SummaryComparators.java         | 30 ++++++++++++++++++++
 .../java/brooklyn/rest/domain/TaskSummary.java  |  3 +-
 .../brooklyn/rest/domain/UsageStatistic.java    |  3 +-
 .../rest/resources/CatalogResource.java         | 30 ++++++++------------
 .../rest/resources/EffectorResource.java        |  8 ++----
 .../rest/resources/LocationResource.java        |  9 ++----
 .../brooklyn/rest/resources/PolicyResource.java |  8 ++----
 20 files changed, 95 insertions(+), 51 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c358310e/usage/rest-api/src/main/java/brooklyn/rest/domain/ApplicationSpec.java
----------------------------------------------------------------------
diff --git 
a/usage/rest-api/src/main/java/brooklyn/rest/domain/ApplicationSpec.java 
b/usage/rest-api/src/main/java/brooklyn/rest/domain/ApplicationSpec.java
index 07c1c1a..0ee625c 100644
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/ApplicationSpec.java
+++ b/usage/rest-api/src/main/java/brooklyn/rest/domain/ApplicationSpec.java
@@ -14,7 +14,7 @@ import 
org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 
-public class ApplicationSpec {
+public class ApplicationSpec implements HasName {
 
   public static Builder builder() {
     return new Builder();
@@ -91,6 +91,7 @@ public class ApplicationSpec {
 //    if (this.entities==null && this.type==null) throw new 
IllegalStateException("must supply either type or entities for an application 
spec");
   }
 
+  @Override
   public String getName() {
     return name;
   }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c358310e/usage/rest-api/src/main/java/brooklyn/rest/domain/ApplicationSummary.java
----------------------------------------------------------------------
diff --git 
a/usage/rest-api/src/main/java/brooklyn/rest/domain/ApplicationSummary.java 
b/usage/rest-api/src/main/java/brooklyn/rest/domain/ApplicationSummary.java
index 36c3beb..5afd0d2 100644
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/ApplicationSummary.java
+++ b/usage/rest-api/src/main/java/brooklyn/rest/domain/ApplicationSummary.java
@@ -9,7 +9,7 @@ import org.codehaus.jackson.annotate.JsonProperty;
 
 import com.google.common.collect.ImmutableMap;
 
-public class ApplicationSummary {
+public class ApplicationSummary implements HasId {
 
     private final static Map<Status, Status> validTransitions =
             ImmutableMap.<Status, Status>builder()
@@ -38,6 +38,7 @@ public class ApplicationSummary {
         this.links = links == null ? ImmutableMap.<String, URI>of() : 
ImmutableMap.copyOf(links);
     }
 
+    @Override
     public String getId() {
         return id;
     }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c358310e/usage/rest-api/src/main/java/brooklyn/rest/domain/CatalogItemSummary.java
----------------------------------------------------------------------
diff --git 
a/usage/rest-api/src/main/java/brooklyn/rest/domain/CatalogItemSummary.java 
b/usage/rest-api/src/main/java/brooklyn/rest/domain/CatalogItemSummary.java
index fb66d7f..1b971ee 100644
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/CatalogItemSummary.java
+++ b/usage/rest-api/src/main/java/brooklyn/rest/domain/CatalogItemSummary.java
@@ -13,7 +13,7 @@ import com.google.common.collect.ImmutableMap;
 
 /** variant of Catalog*ItemDto objects for JS/JSON serialization;
  * see also, subclasses */
-public class CatalogItemSummary {
+public class CatalogItemSummary implements HasId, HasName {
 
     private final String id;
     
@@ -53,6 +53,7 @@ public class CatalogItemSummary {
         this.links = ImmutableMap.copyOf(links);
     }
     
+    @Override
     public String getId() {
         return id;
     }
@@ -73,6 +74,7 @@ public class CatalogItemSummary {
         return planYaml;
     }
     
+    @Override
     public String getName() {
         return name;
     }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c358310e/usage/rest-api/src/main/java/brooklyn/rest/domain/ConfigSummary.java
----------------------------------------------------------------------
diff --git 
a/usage/rest-api/src/main/java/brooklyn/rest/domain/ConfigSummary.java 
b/usage/rest-api/src/main/java/brooklyn/rest/domain/ConfigSummary.java
index ddfb8c0..6b2f61d 100644
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/ConfigSummary.java
+++ b/usage/rest-api/src/main/java/brooklyn/rest/domain/ConfigSummary.java
@@ -18,7 +18,7 @@ import com.google.common.base.Function;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableMap;
 
-public abstract class ConfigSummary {
+public abstract class ConfigSummary implements HasName {
 
   private final String name;
   private final String type;
@@ -94,6 +94,7 @@ public abstract class ConfigSummary {
     }
   }
 
+  @Override
   public String getName() {
     return name;
   }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c358310e/usage/rest-api/src/main/java/brooklyn/rest/domain/EffectorSummary.java
----------------------------------------------------------------------
diff --git 
a/usage/rest-api/src/main/java/brooklyn/rest/domain/EffectorSummary.java 
b/usage/rest-api/src/main/java/brooklyn/rest/domain/EffectorSummary.java
index ffaa314..8d94457 100644
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/EffectorSummary.java
+++ b/usage/rest-api/src/main/java/brooklyn/rest/domain/EffectorSummary.java
@@ -11,9 +11,9 @@ import 
org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableMap;
 
-public class EffectorSummary {
+public class EffectorSummary implements HasName {
 
-  public static class ParameterSummary<T> {
+  public static class ParameterSummary<T> implements HasName {
     private final String name;
     private final String type;
     @JsonSerialize(include=Inclusion.NON_NULL)
@@ -32,6 +32,7 @@ public class EffectorSummary {
       this.defaultValue = defaultValue;
     }
 
+    @Override
     public String getName() {
       return name;
     }
@@ -102,6 +103,7 @@ public class EffectorSummary {
     this.links = links != null ? ImmutableMap.copyOf(links) : null;
   }
 
+  @Override
   public String getName() {
     return name;
   }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c358310e/usage/rest-api/src/main/java/brooklyn/rest/domain/EntitySpec.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/brooklyn/rest/domain/EntitySpec.java 
b/usage/rest-api/src/main/java/brooklyn/rest/domain/EntitySpec.java
index 85c458a..3a12fc4 100644
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/EntitySpec.java
+++ b/usage/rest-api/src/main/java/brooklyn/rest/domain/EntitySpec.java
@@ -7,7 +7,7 @@ import org.codehaus.jackson.annotate.JsonProperty;
 import java.util.Collections;
 import java.util.Map;
 
-public class EntitySpec {
+public class EntitySpec implements HasName {
 
   private final String name;
   private final String type;
@@ -31,6 +31,7 @@ public class EntitySpec {
     this.config = (config != null) ? ImmutableMap.copyOf(config) : 
ImmutableMap.<String, String>of();
   }
 
+  @Override
   public String getName() {
     return name;
   }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c358310e/usage/rest-api/src/main/java/brooklyn/rest/domain/EntitySummary.java
----------------------------------------------------------------------
diff --git 
a/usage/rest-api/src/main/java/brooklyn/rest/domain/EntitySummary.java 
b/usage/rest-api/src/main/java/brooklyn/rest/domain/EntitySummary.java
index 054340b..0c4e48a 100644
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/EntitySummary.java
+++ b/usage/rest-api/src/main/java/brooklyn/rest/domain/EntitySummary.java
@@ -6,7 +6,7 @@ import org.codehaus.jackson.annotate.JsonProperty;
 import java.net.URI;
 import java.util.Map;
 
-public class EntitySummary {
+public class EntitySummary implements HasId, HasName {
 
   private final String id;
   private final String name;
@@ -29,10 +29,12 @@ public class EntitySummary {
     return type;
   }
 
+  @Override
   public String getId() {
     return id;
   }
   
+  @Override
   public String getName() {
     return name;
   }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c358310e/usage/rest-api/src/main/java/brooklyn/rest/domain/HasId.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/brooklyn/rest/domain/HasId.java 
b/usage/rest-api/src/main/java/brooklyn/rest/domain/HasId.java
new file mode 100644
index 0000000..640917a
--- /dev/null
+++ b/usage/rest-api/src/main/java/brooklyn/rest/domain/HasId.java
@@ -0,0 +1,8 @@
+package brooklyn.rest.domain;
+
+/** Marker interface for summary objects with an id field */
+public interface HasId {
+
+    public String getId();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c358310e/usage/rest-api/src/main/java/brooklyn/rest/domain/HasName.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/brooklyn/rest/domain/HasName.java 
b/usage/rest-api/src/main/java/brooklyn/rest/domain/HasName.java
new file mode 100644
index 0000000..94da59a
--- /dev/null
+++ b/usage/rest-api/src/main/java/brooklyn/rest/domain/HasName.java
@@ -0,0 +1,8 @@
+package brooklyn.rest.domain;
+
+/** Marker interface for summary objects with a name field */
+public interface HasName {
+
+    public String getName();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c358310e/usage/rest-api/src/main/java/brooklyn/rest/domain/LocationSpec.java
----------------------------------------------------------------------
diff --git 
a/usage/rest-api/src/main/java/brooklyn/rest/domain/LocationSpec.java 
b/usage/rest-api/src/main/java/brooklyn/rest/domain/LocationSpec.java
index 67554fd..6297bbb 100644
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/LocationSpec.java
+++ b/usage/rest-api/src/main/java/brooklyn/rest/domain/LocationSpec.java
@@ -14,7 +14,7 @@ import com.google.common.collect.ImmutableMap;
 
 // FIXME change name, due to confusion with brooklyn.location.LocationSpec <- 
no need, as we can kill the class instead soon!
 /** @deprecated since 0.7.0 location spec objects will not be used from the 
client, instead pass yaml location spec strings */
-public class LocationSpec {
+public class LocationSpec implements HasName {
 
   @JsonSerialize(include=Inclusion.NON_NULL)
   private final String name;
@@ -38,6 +38,7 @@ public class LocationSpec {
     this.config = (config == null) ? Collections.<String, String>emptyMap() : 
ImmutableMap.copyOf(config);
   }
 
+  @Override
   public String getName() {
     return name;
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c358310e/usage/rest-api/src/main/java/brooklyn/rest/domain/LocationSummary.java
----------------------------------------------------------------------
diff --git 
a/usage/rest-api/src/main/java/brooklyn/rest/domain/LocationSummary.java 
b/usage/rest-api/src/main/java/brooklyn/rest/domain/LocationSummary.java
index 3764a75..2abab77 100644
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/LocationSummary.java
+++ b/usage/rest-api/src/main/java/brooklyn/rest/domain/LocationSummary.java
@@ -14,7 +14,7 @@ import 
org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableMap;
 
-public class LocationSummary extends LocationSpec {
+public class LocationSummary extends LocationSpec implements HasName, HasId {
 
   private final String id;
   
@@ -37,6 +37,7 @@ public class LocationSummary extends LocationSpec {
     this.links = ImmutableMap.copyOf(links);
   }
 
+  @Override
   public String getId() {
     return id;
   }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c358310e/usage/rest-api/src/main/java/brooklyn/rest/domain/PolicySummary.java
----------------------------------------------------------------------
diff --git 
a/usage/rest-api/src/main/java/brooklyn/rest/domain/PolicySummary.java 
b/usage/rest-api/src/main/java/brooklyn/rest/domain/PolicySummary.java
index d9b83b4..4fe2be1 100644
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/PolicySummary.java
+++ b/usage/rest-api/src/main/java/brooklyn/rest/domain/PolicySummary.java
@@ -6,7 +6,7 @@ import org.codehaus.jackson.annotate.JsonProperty;
 import java.net.URI;
 import java.util.Map;
 
-public class PolicySummary {
+public class PolicySummary implements HasName, HasId {
 
   private final String id;
   private final String name;
@@ -25,10 +25,12 @@ public class PolicySummary {
     this.links = ImmutableMap.copyOf(links);
   }
 
+  @Override
   public String getId() {
       return id;
   }
   
+  @Override
   public String getName() {
     return name;
   }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c358310e/usage/rest-api/src/main/java/brooklyn/rest/domain/SensorSummary.java
----------------------------------------------------------------------
diff --git 
a/usage/rest-api/src/main/java/brooklyn/rest/domain/SensorSummary.java 
b/usage/rest-api/src/main/java/brooklyn/rest/domain/SensorSummary.java
index 4e7b6f0..da462a1 100644
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/SensorSummary.java
+++ b/usage/rest-api/src/main/java/brooklyn/rest/domain/SensorSummary.java
@@ -9,7 +9,7 @@ import 
org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
 
 import com.google.common.collect.ImmutableMap;
 
-public class SensorSummary {
+public class SensorSummary implements HasName {
 
   private final String name;
   private final String type;
@@ -30,6 +30,7 @@ public class SensorSummary {
     this.links = links != null ? ImmutableMap.copyOf(links) : null;
   }
 
+  @Override
   public String getName() {
     return name;
   }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c358310e/usage/rest-api/src/main/java/brooklyn/rest/domain/SummaryComparators.java
----------------------------------------------------------------------
diff --git 
a/usage/rest-api/src/main/java/brooklyn/rest/domain/SummaryComparators.java 
b/usage/rest-api/src/main/java/brooklyn/rest/domain/SummaryComparators.java
new file mode 100644
index 0000000..2ebadf3
--- /dev/null
+++ b/usage/rest-api/src/main/java/brooklyn/rest/domain/SummaryComparators.java
@@ -0,0 +1,30 @@
+package brooklyn.rest.domain;
+
+import java.util.Comparator;
+
+/**
+ * Useful comparators for domain objects
+ */
+public class SummaryComparators {
+    
+    private SummaryComparators() {}
+    
+    public static Comparator<HasName> nameComparator() {
+        return new Comparator<HasName>() {
+            @Override
+            public int compare(HasName o1, HasName o2) {
+                return o1.getName().compareTo(o2.getName());
+            }
+        };
+    }
+
+    public static Comparator<HasId> idComparator() {
+        return new Comparator<HasId>() {
+            @Override
+            public int compare(HasId o1, HasId o2) {
+                return o1.getId().compareTo(o2.getId());
+            }
+        };
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c358310e/usage/rest-api/src/main/java/brooklyn/rest/domain/TaskSummary.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/brooklyn/rest/domain/TaskSummary.java 
b/usage/rest-api/src/main/java/brooklyn/rest/domain/TaskSummary.java
index 0664125..451524a 100644
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/TaskSummary.java
+++ b/usage/rest-api/src/main/java/brooklyn/rest/domain/TaskSummary.java
@@ -17,7 +17,7 @@ import brooklyn.util.collections.Jsonya;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 
-public class TaskSummary {
+public class TaskSummary implements HasId {
 
   private final String id;
   private final String displayName;
@@ -94,6 +94,7 @@ public class TaskSummary {
 }
 
 
+  @Override
   public String getId() {
       return id;
   }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c358310e/usage/rest-api/src/main/java/brooklyn/rest/domain/UsageStatistic.java
----------------------------------------------------------------------
diff --git 
a/usage/rest-api/src/main/java/brooklyn/rest/domain/UsageStatistic.java 
b/usage/rest-api/src/main/java/brooklyn/rest/domain/UsageStatistic.java
index 007dcc2..bbdde0d 100644
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/UsageStatistic.java
+++ b/usage/rest-api/src/main/java/brooklyn/rest/domain/UsageStatistic.java
@@ -11,7 +11,7 @@ import static 
com.google.common.base.Preconditions.checkNotNull;
 /**
  * @author Adam Lowe
  */
-public class UsageStatistic {
+public class UsageStatistic implements HasId {
     private final Status status;
     private final String id;
     private final String applicationId;
@@ -37,6 +37,7 @@ public class UsageStatistic {
         return status;
     }
 
+    @Override
     public String getId() {
         return id;
     }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c358310e/usage/rest-server/src/main/java/brooklyn/rest/resources/CatalogResource.java
----------------------------------------------------------------------
diff --git 
a/usage/rest-server/src/main/java/brooklyn/rest/resources/CatalogResource.java 
b/usage/rest-server/src/main/java/brooklyn/rest/resources/CatalogResource.java
index 78ca63c..2872a64 100644
--- 
a/usage/rest-server/src/main/java/brooklyn/rest/resources/CatalogResource.java
+++ 
b/usage/rest-server/src/main/java/brooklyn/rest/resources/CatalogResource.java
@@ -23,6 +23,7 @@ import brooklyn.rest.api.CatalogApi;
 import brooklyn.rest.domain.ApiError;
 import brooklyn.rest.domain.CatalogEntitySummary;
 import brooklyn.rest.domain.CatalogItemSummary;
+import brooklyn.rest.domain.SummaryComparators;
 import brooklyn.rest.transform.CatalogTransformer;
 import brooklyn.rest.util.WebResourceUtils;
 import brooklyn.util.ResourceUtils;
@@ -33,6 +34,7 @@ import com.google.common.base.Charsets;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
+import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.io.CharStreams;
@@ -81,24 +83,18 @@ public class CatalogResource extends 
AbstractBrooklynRestResource implements Cat
     }
 
     @Override
-    public List<CatalogItemSummary> listEntities(
-        final String regex,
-        final String fragment
-    ) {
+    public List<CatalogItemSummary> listEntities(String regex, String 
fragment) {
         return 
getCatalogItemSummariesMatchingRegexFragment(CatalogPredicates.IS_ENTITY, 
regex, fragment);
     }
 
     @Override
-    public List<CatalogItemSummary> listApplications(
-            final String regex,
-            final  String fragment
-    ) {
+    public List<CatalogItemSummary> listApplications(String regex, String 
fragment) {
         return 
getCatalogItemSummariesMatchingRegexFragment(CatalogPredicates.IS_TEMPLATE, 
regex, fragment);
     }
 
     @Override
     @SuppressWarnings("unchecked")
-    public CatalogEntitySummary getEntity(String entityId) throws Exception {
+    public CatalogEntitySummary getEntity(String entityId) {
       CatalogItem<?,?> result = 
brooklyn().getCatalog().getCatalogItem(entityId);
       if (result==null) {
         throw WebResourceUtils.notFound("Entity with id '%s' not found", 
entityId);
@@ -108,16 +104,12 @@ public class CatalogResource extends 
AbstractBrooklynRestResource implements Cat
     }
 
     @Override
-    public List<CatalogItemSummary> listPolicies(
-            final String regex,
-            final String fragment
-    ) {
+    public List<CatalogItemSummary> listPolicies(String regex, String 
fragment) {
         return 
getCatalogItemSummariesMatchingRegexFragment(CatalogPredicates.IS_POLICY, 
regex, fragment);
     }
     
     @Override
-    public CatalogItemSummary getPolicy(
-        String policyId) throws Exception {
+    public CatalogItemSummary getPolicy(String policyId) {
         CatalogItem<?,?> result = 
brooklyn().getCatalog().getCatalogItem(policyId);
         if (result==null) {
           throw WebResourceUtils.notFound("Policy with id '%s' not found", 
policyId);
@@ -134,9 +126,11 @@ public class CatalogResource extends 
AbstractBrooklynRestResource implements Cat
             
filters.add(CatalogPredicates.xml(StringPredicates.containsRegex(regex)));
         if (Strings.isNonEmpty(fragment))
             
filters.add(CatalogPredicates.xml(StringPredicates.containsLiteralCaseInsensitive(fragment)));
-        return ImmutableList.copyOf(Iterables.transform(
-                
brooklyn().getCatalog().getCatalogItems(Predicates.and(filters)),
-                TO_CATALOG_ITEM_SUMMARY));        
+
+        return FluentIterable.from(brooklyn().getCatalog().getCatalogItems())
+                .filter(Predicates.and(filters))
+                .transform(TO_CATALOG_ITEM_SUMMARY)
+                .toSortedList(SummaryComparators.idComparator());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c358310e/usage/rest-server/src/main/java/brooklyn/rest/resources/EffectorResource.java
----------------------------------------------------------------------
diff --git 
a/usage/rest-server/src/main/java/brooklyn/rest/resources/EffectorResource.java 
b/usage/rest-server/src/main/java/brooklyn/rest/resources/EffectorResource.java
index eb81d11..1e61324 100644
--- 
a/usage/rest-server/src/main/java/brooklyn/rest/resources/EffectorResource.java
+++ 
b/usage/rest-server/src/main/java/brooklyn/rest/resources/EffectorResource.java
@@ -17,6 +17,7 @@ import brooklyn.management.Task;
 import brooklyn.management.internal.EffectorUtils;
 import brooklyn.rest.api.EffectorApi;
 import brooklyn.rest.domain.EffectorSummary;
+import brooklyn.rest.domain.SummaryComparators;
 import brooklyn.rest.transform.EffectorTransformer;
 import brooklyn.rest.transform.TaskTransformer;
 import brooklyn.rest.util.WebResourceUtils;
@@ -30,11 +31,6 @@ import com.google.common.collect.FluentIterable;
 public class EffectorResource extends AbstractBrooklynRestResource implements 
EffectorApi {
 
     private static final Logger log = 
LoggerFactory.getLogger(EffectorResource.class);
-    private static final Comparator<EffectorSummary> SUMMARY_NAME_COMPARATOR = 
new Comparator<EffectorSummary>() {
-        @Override public int compare(EffectorSummary o1, EffectorSummary o2) {
-            return o1.getName().compareTo(o2.getName());
-        }
-    };
 
    @Override
   public List<EffectorSummary> list(final String application, final String 
entityToken) {
@@ -46,7 +42,7 @@ public class EffectorResource extends 
AbstractBrooklynRestResource implements Ef
                     return EffectorTransformer.effectorSummary(entity, 
effector);
                 }
             })
-           .toSortedList(SUMMARY_NAME_COMPARATOR);
+           .toSortedList(SummaryComparators.nameComparator());
    }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c358310e/usage/rest-server/src/main/java/brooklyn/rest/resources/LocationResource.java
----------------------------------------------------------------------
diff --git 
a/usage/rest-server/src/main/java/brooklyn/rest/resources/LocationResource.java 
b/usage/rest-server/src/main/java/brooklyn/rest/resources/LocationResource.java
index 5ff2955..efc13f5 100644
--- 
a/usage/rest-server/src/main/java/brooklyn/rest/resources/LocationResource.java
+++ 
b/usage/rest-server/src/main/java/brooklyn/rest/resources/LocationResource.java
@@ -19,6 +19,7 @@ import brooklyn.location.basic.LocationConfigKeys;
 import brooklyn.rest.api.LocationApi;
 import brooklyn.rest.domain.LocationSpec;
 import brooklyn.rest.domain.LocationSummary;
+import brooklyn.rest.domain.SummaryComparators;
 import brooklyn.rest.transform.LocationTransformer;
 import brooklyn.rest.transform.LocationTransformer.LocationDetailLevel;
 import brooklyn.rest.util.EntityLocationUtils;
@@ -60,16 +61,10 @@ public class LocationResource extends 
AbstractBrooklynRestResource implements Lo
                 }
             }
         };
-        Comparator<LocationSummary> nameComparator = new 
Comparator<LocationSummary>() {
-            @Override
-            public int compare(LocationSummary o1, LocationSummary o2) {
-                return o1.getName().compareTo(o2.getName());
-            }
-        };
         return 
FluentIterable.from(brooklyn().getLocationRegistry().getDefinedLocations().values())
                 .transform(transformer)
                 .filter(LocationSummary.class)
-                .toSortedList(nameComparator);
+                .toSortedList(SummaryComparators.nameComparator());
     }
 
     // this is here to support the web GUI's circles

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c358310e/usage/rest-server/src/main/java/brooklyn/rest/resources/PolicyResource.java
----------------------------------------------------------------------
diff --git 
a/usage/rest-server/src/main/java/brooklyn/rest/resources/PolicyResource.java 
b/usage/rest-server/src/main/java/brooklyn/rest/resources/PolicyResource.java
index 423fdc0..06b475d 100644
--- 
a/usage/rest-server/src/main/java/brooklyn/rest/resources/PolicyResource.java
+++ 
b/usage/rest-server/src/main/java/brooklyn/rest/resources/PolicyResource.java
@@ -16,6 +16,7 @@ import brooklyn.policy.basic.Policies;
 import brooklyn.rest.api.PolicyApi;
 import brooklyn.rest.domain.PolicySummary;
 import brooklyn.rest.domain.Status;
+import brooklyn.rest.domain.SummaryComparators;
 import brooklyn.rest.transform.ApplicationTransformer;
 import brooklyn.rest.transform.PolicyTransformer;
 import brooklyn.util.exceptions.Exceptions;
@@ -27,11 +28,6 @@ import com.google.common.collect.Maps;
 public class PolicyResource extends AbstractBrooklynRestResource implements 
PolicyApi {
 
     private static final Logger log = 
LoggerFactory.getLogger(PolicyResource.class);
-    private static final Comparator<PolicySummary> SUMMARY_NAME_COMPARATOR = 
new Comparator<PolicySummary>() {
-        @Override public int compare(PolicySummary o1, PolicySummary o2) {
-            return o1.getName().compareTo(o2.getName());
-        }
-    };
 
     @Override
     public List<PolicySummary> list( final String application, final String 
entityToken) {
@@ -43,7 +39,7 @@ public class PolicyResource extends 
AbstractBrooklynRestResource implements Poli
                     return PolicyTransformer.policySummary(entity, policy);
                 }
             })
-            .toSortedList(SUMMARY_NAME_COMPARATOR);
+            .toSortedList(SummaryComparators.nameComparator());
     }
 
     // TODO support parameters  ?show=value,summary&name=xxx

Reply via email to