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(); }
