Rest ApplicationApi can filter applications by interface type

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

Branch: refs/heads/master
Commit: a5debedc395dca1aad887b55d446f069137ec535
Parents: 7b57f99
Author: Sam Corbett <[email protected]>
Authored: Tue Apr 28 20:14:02 2015 +0100
Committer: Sam Corbett <[email protected]>
Committed: Tue May 5 12:14:59 2015 +0100

----------------------------------------------------------------------
 .../src/main/java/brooklyn/rest/api/ApplicationApi.java |  6 ++++++
 .../brooklyn/rest/resources/ApplicationResource.java    | 12 ++++++++++++
 2 files changed, 18 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a5debedc/usage/rest-api/src/main/java/brooklyn/rest/api/ApplicationApi.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/brooklyn/rest/api/ApplicationApi.java 
b/usage/rest-api/src/main/java/brooklyn/rest/api/ApplicationApi.java
index 9292197..865024a 100644
--- a/usage/rest-api/src/main/java/brooklyn/rest/api/ApplicationApi.java
+++ b/usage/rest-api/src/main/java/brooklyn/rest/api/ApplicationApi.java
@@ -76,6 +76,12 @@ public interface ApplicationApi {
             value = "Fetch list of applications, as ApplicationSummary 
objects",
             responseClass = "brooklyn.rest.domain.ApplicationSummary"
     )
+    public List<ApplicationSummary> list(
+            @ApiParam(value = "Regular expression to filter by", required = 
false)
+            @DefaultValue(".*")
+            @QueryParam("typeRegex") String typeRegex);
+
+    /** As {@link #list(String)}, filtering for <code>.*</code>. */
     public List<ApplicationSummary> list();
 
     @GET

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a5debedc/usage/rest-server/src/main/java/brooklyn/rest/resources/ApplicationResource.java
----------------------------------------------------------------------
diff --git 
a/usage/rest-server/src/main/java/brooklyn/rest/resources/ApplicationResource.java
 
b/usage/rest-server/src/main/java/brooklyn/rest/resources/ApplicationResource.java
index fbee750..27a93a9 100644
--- 
a/usage/rest-server/src/main/java/brooklyn/rest/resources/ApplicationResource.java
+++ 
b/usage/rest-server/src/main/java/brooklyn/rest/resources/ApplicationResource.java
@@ -22,6 +22,9 @@ import static 
com.google.common.base.Preconditions.checkNotNull;
 import static javax.ws.rs.core.Response.created;
 import static javax.ws.rs.core.Response.status;
 import static javax.ws.rs.core.Response.Status.ACCEPTED;
+
+import brooklyn.entity.basic.EntityPredicates;
+import brooklyn.util.text.Strings;
 import io.brooklyn.camp.spi.AssemblyTemplate;
 
 import java.io.StringReader;
@@ -216,9 +219,18 @@ public class ApplicationResource extends 
AbstractBrooklynRestResource implements
 
     @Override
     public List<ApplicationSummary> list() {
+        return list(".*");
+    }
+
+    @Override
+    public List<ApplicationSummary> list(String typeRegex) {
+        if (Strings.isBlank(typeRegex)) {
+            typeRegex = ".*";
+        }
         return FluentIterable
                 .from(mgmt().getApplications())
                 
.filter(EntitlementPredicates.isEntitled(mgmt().getEntitlementManager(), 
Entitlements.SEE_ENTITY))
+                .filter(EntityPredicates.hasInterfaceMatching(typeRegex))
                 .transform(ApplicationTransformer.FROM_APPLICATION)
                 .toList();
     }

Reply via email to