You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by ha...@apache.org on 2015/08/09 04:55:30 UTC

[23/28] incubator-brooklyn git commit: brooklyn-rest-api: add org.apache package prefix

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4c98f111/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
deleted file mode 100644
index 2ad5457..0000000
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/EntitySummary.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.rest.domain;
-
-import com.google.common.collect.ImmutableMap;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
-
-import java.io.Serializable;
-import java.net.URI;
-import java.util.Map;
-
-public class EntitySummary implements HasId, HasName, Serializable {
-
-    private static final long serialVersionUID = 100490507982229165L;
-    
-    private final String id;
-    private final String name;
-    private final String type;
-    @JsonSerialize(include = Inclusion.NON_NULL)
-    private final String catalogItemId;
-    private final Map<String, URI> links;
-
-    public EntitySummary(
-            @JsonProperty("id") String id,
-            @JsonProperty("name") String name,
-            @JsonProperty("type") String type,
-            @JsonProperty("catalogItemId") String catalogItemId,
-            @JsonProperty("links") Map<String, URI> links) {
-        this.type = type;
-        this.id = id;
-        this.name = name;
-        this.catalogItemId = catalogItemId;
-        this.links = (links == null) ? ImmutableMap.<String, URI> of() : ImmutableMap.copyOf(links);
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    @Override
-    public String getId() {
-        return id;
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    public String getCatalogItemId() {
-        return catalogItemId;
-    }
-
-    public Map<String, URI> getLinks() {
-        return links;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        return (o instanceof EntitySummary) && id.equals(((EntitySummary) o).getId());
-    }
-
-    @Override
-    public int hashCode() {
-        return id != null ? id.hashCode() : 0;
-    }
-
-    @Override
-    public String toString() {
-        return "EntitySummary{"
-                + "id='" + id + '\''
-                + ", name=" + name
-                + ", type=" + type
-                + ", catalogItemId=" + catalogItemId
-                + ", links=" + links
-                + '}';
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4c98f111/usage/rest-api/src/main/java/brooklyn/rest/domain/HasConfig.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/brooklyn/rest/domain/HasConfig.java b/usage/rest-api/src/main/java/brooklyn/rest/domain/HasConfig.java
deleted file mode 100644
index 14fbfa3..0000000
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/HasConfig.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.rest.domain;
-
-import java.util.Map;
-
-/** Marker interface for summary objects with a name field */
-public interface HasConfig {
-
-    public Map<String, ?> getConfig();
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4c98f111/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
deleted file mode 100644
index 7879c47..0000000
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/HasId.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-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/4c98f111/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
deleted file mode 100644
index 511c249..0000000
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/HasName.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-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/4c98f111/usage/rest-api/src/main/java/brooklyn/rest/domain/HighAvailabilitySummary.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/brooklyn/rest/domain/HighAvailabilitySummary.java b/usage/rest-api/src/main/java/brooklyn/rest/domain/HighAvailabilitySummary.java
deleted file mode 100644
index 3d127c5..0000000
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/HighAvailabilitySummary.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.rest.domain;
-
-import java.io.Serializable;
-import java.net.URI;
-import java.util.Map;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableMap;
-
-public class HighAvailabilitySummary implements Serializable {
-
-    private static final long serialVersionUID = -317333127094471223L;
-
-    public static class HaNodeSummary implements Serializable {
-        private static final long serialVersionUID = 9205960988226816539L;
-        
-        private final String nodeId;
-        private final URI nodeUri;
-        private final String status;
-        private final Long localTimestamp;
-        private final Long remoteTimestamp;
-        
-        public HaNodeSummary(
-                @JsonProperty("nodeId") String nodeId,
-                @JsonProperty("nodeUri") URI nodeUri,
-                @JsonProperty("status") String status,
-                @JsonProperty("localTimestamp") Long localTimestamp,
-                @JsonProperty("remoteTimestamp") Long remoteTimestamp) {
-            this.nodeId = nodeId;
-            this.nodeUri = nodeUri;
-            this.status = status;
-            this.localTimestamp = localTimestamp;
-            this.remoteTimestamp = remoteTimestamp;
-        }
-
-        public String getNodeId() {
-            return nodeId;
-        }
-
-        public URI getNodeUri() {
-            return nodeUri;
-        }
-
-        public String getStatus() {
-            return status;
-        }
-
-        public Long getLocalTimestamp() {
-            return localTimestamp;
-        }
-
-        public Long getRemoteTimestamp() {
-            return remoteTimestamp;
-        }
-
-        @Override
-        public boolean equals(Object o) {
-            return (o instanceof HaNodeSummary) && Objects.equal(nodeId, ((HaNodeSummary) o).getNodeId());
-        }
-
-        @Override
-        public int hashCode() {
-            return Objects.hashCode(nodeId);
-        }
-
-        @Override
-        public String toString() {
-            return "HighAvailabilitySummary{"
-                    + "nodeId='" + nodeId + '\''
-                    + ", status='" + status + '\''
-                    + '}';
-        }
-    }
-
-    private final String ownId;
-    private final String masterId;
-    private final Map<String, HaNodeSummary> nodes;
-    private final Map<String, URI> links;
-
-    public HighAvailabilitySummary(
-            @JsonProperty("ownId") String ownId,
-            @JsonProperty("masterId") String masterId,
-            @JsonProperty("nodes") Map<String, HaNodeSummary> nodes,
-            @JsonProperty("links") Map<String, URI> links) {
-        this.ownId = ownId;
-        this.masterId = masterId;
-        this.nodes = (nodes == null) ? ImmutableMap.<String, HaNodeSummary>of() : nodes;
-        this.links = (links == null) ? ImmutableMap.<String, URI>of() : ImmutableMap.copyOf(links);
-    }
-
-    public String getOwnId() {
-        return ownId;
-    }
-
-    public String getMasterId() {
-        return masterId;
-    }
-
-    public Map<String, HaNodeSummary> getNodes() {
-        return nodes;
-    }
-
-    public Map<String, URI> getLinks() {
-        return links;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        return (o instanceof HighAvailabilitySummary) && ownId.equals(((HighAvailabilitySummary) o).getOwnId());
-    }
-
-    @Override
-    public int hashCode() {
-        return ownId != null ? ownId.hashCode() : 0;
-    }
-
-    @Override
-    public String toString() {
-        return "HighAvailabilitySummary{"
-                + "ownId='" + ownId + '\''
-                + ", links=" + links
-                + '}';
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4c98f111/usage/rest-api/src/main/java/brooklyn/rest/domain/LinkWithMetadata.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/brooklyn/rest/domain/LinkWithMetadata.java b/usage/rest-api/src/main/java/brooklyn/rest/domain/LinkWithMetadata.java
deleted file mode 100644
index 253da9a..0000000
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/LinkWithMetadata.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.rest.domain;
-
-import java.io.Serializable;
-import java.util.Map;
-
-import javax.annotation.Nullable;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-
-import com.google.common.annotations.Beta;
-import com.google.common.collect.ImmutableMap;
-
-@Beta
-public class LinkWithMetadata implements Serializable {
-
-    // TODO remove 'metadata' and promote its contents to be top-level fields; then unmark as Beta
-
-    private static final long serialVersionUID = 3146368899471495143L;
-    
-    private final String link;
-    private final Map<String,Object> metadata;
-    
-    public LinkWithMetadata(
-            @JsonProperty("link") String link, 
-            @Nullable @JsonProperty("metadata") Map<String,?> metadata) {
-        this.link = link;
-        this.metadata = (metadata == null) ? ImmutableMap.<String,Object>of() : ImmutableMap.<String,Object>copyOf(metadata);
-    }
-    
-    public String getLink() {
-        return link;
-    }
-    
-    public Map<String, Object> getMetadata() {
-        return metadata;
-    }
-
-    @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + ((link == null) ? 0 : link.hashCode());
-        result = prime * result + ((metadata == null) ? 0 : metadata.hashCode());
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj)
-            return true;
-        if (obj == null)
-            return false;
-        if (getClass() != obj.getClass())
-            return false;
-        LinkWithMetadata other = (LinkWithMetadata) obj;
-        if (link == null) {
-            if (other.link != null)
-                return false;
-        } else if (!link.equals(other.link))
-            return false;
-        if (metadata == null) {
-            if (other.metadata != null)
-                return false;
-        } else if (!metadata.equals(other.metadata))
-            return false;
-        return true;
-    }
-
-    
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4c98f111/usage/rest-api/src/main/java/brooklyn/rest/domain/LocationConfigSummary.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/brooklyn/rest/domain/LocationConfigSummary.java b/usage/rest-api/src/main/java/brooklyn/rest/domain/LocationConfigSummary.java
deleted file mode 100644
index b315459..0000000
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/LocationConfigSummary.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.rest.domain;
-
-import java.net.URI;
-import java.util.List;
-import java.util.Map;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
-
-import com.google.common.collect.ImmutableMap;
-
-public class LocationConfigSummary extends ConfigSummary {
-
-    @JsonSerialize(include = Inclusion.NON_NULL)
-    private final Map<String, URI> links;
-
-    public LocationConfigSummary(
-            @JsonProperty("name") String name,
-            @JsonProperty("type") String type,
-            @JsonProperty("description") String description,
-            @JsonProperty("defaultValue") Object defaultValue,
-            @JsonProperty("reconfigurable") boolean reconfigurable,
-            @JsonProperty("label") String label,
-            @JsonProperty("priority") Double priority,
-            @JsonProperty("possibleValues") List<Map<String, String>> possibleValues,
-            @JsonProperty("links") Map<String, URI> links) {
-        super(name, type, description, defaultValue, reconfigurable, label, priority, possibleValues);
-        this.links = (links == null) ? ImmutableMap.<String, URI>of() : ImmutableMap.copyOf(links);
-    }
-
-    @Override
-    public Map<String, URI> getLinks() {
-        return links;
-    }
-
-    @Override
-    public String toString() {
-        return "LocationConfigSummary{"
-                + "name='" + getName() + '\''
-                + ", type='" + getType() + '\''
-                + '}';
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4c98f111/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
deleted file mode 100644
index 862b34d..0000000
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/LocationSpec.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.rest.domain;
-
-import java.io.Serializable;
-import java.util.Collections;
-import java.util.Map;
-
-import javax.annotation.Nullable;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
-
-import com.google.common.base.Objects;
-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 implements HasName, HasConfig, Serializable {
-
-    private static final long serialVersionUID = -1562824224808185255L;
-    
-    @JsonSerialize(include = Inclusion.NON_NULL)
-    private final String name;
-    @JsonSerialize(include = Inclusion.NON_NULL)
-    private final String spec;
-
-    @JsonSerialize(include = Inclusion.NON_EMPTY)
-    private final Map<String, ?> config;
-
-    public static LocationSpec localhost() {
-        return new LocationSpec("localhost", "localhost", null);
-    }
-
-    public LocationSpec(
-            @JsonProperty("name") String name,
-            @JsonProperty("spec") String spec,
-            @JsonProperty("config") @Nullable Map<String, ?> config) {
-        this.name = name;
-        this.spec = spec;
-        this.config = (config == null) ? Collections.<String, String> emptyMap() : ImmutableMap.copyOf(config);
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    public String getSpec() {
-        return spec;
-    }
-
-    public Map<String, ?> getConfig() {
-        return config;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        LocationSpec that = (LocationSpec) o;
-        return Objects.equal(name, that.name) && Objects.equal(spec, that.spec) && Objects.equal(config, that.config);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(spec, name, config);
-    }
-
-    @Override
-    public String toString() {
-        return "LocationSpec{"
-                + "name='" + name + '\''
-                + "spec='" + spec + '\''
-                + ", config=" + config
-                + '}';
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4c98f111/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
deleted file mode 100644
index f975211..0000000
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/LocationSummary.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.rest.domain;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.net.URI;
-import java.util.Map;
-
-import javax.annotation.Nullable;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-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 implements HasName, HasId {
-
-    private static final long serialVersionUID = -4559153719273573670L;
-
-    private final String id;
-
-    /** only intended for instantiated Locations, not definitions */
-    @JsonSerialize(include = Inclusion.NON_NULL)
-    private final String type;
-    private final Map<String, URI> links;
-
-    public LocationSummary(
-            @JsonProperty("id") String id,
-            @JsonProperty("name") String name,
-            @JsonProperty("spec") String spec,
-            @JsonProperty("type") String type,
-            @JsonProperty("config") @Nullable Map<String, ?> config,
-            @JsonProperty("links") Map<String, URI> links) {
-        super(name, spec, config);
-        this.id = checkNotNull(id);
-        this.type = type;
-        this.links = (links == null) ? ImmutableMap.<String, URI> of() : ImmutableMap.copyOf(links);
-    }
-
-    @Override
-    public String getId() {
-        return id;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public Map<String, URI> getLinks() {
-        return links;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (!super.equals(o)) return false;
-        LocationSummary that = (LocationSummary) o;
-        return Objects.equal(id, that.id);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(id, links);
-    }
-
-    @Override
-    public String toString() {
-        return "LocationSummary{"
-                + "id='" + getId() + '\''
-                + "name='" + getName() + '\''
-                + "spec='" + getSpec() + '\''
-                + "type='" + getType() + '\''
-                + ", config=" + getConfig()
-                + ", links=" + links
-                + '}';
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4c98f111/usage/rest-api/src/main/java/brooklyn/rest/domain/PolicyConfigSummary.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/brooklyn/rest/domain/PolicyConfigSummary.java b/usage/rest-api/src/main/java/brooklyn/rest/domain/PolicyConfigSummary.java
deleted file mode 100644
index b59ebea..0000000
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/PolicyConfigSummary.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.rest.domain;
-
-import java.net.URI;
-import java.util.Map;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
-
-import com.google.common.collect.ImmutableMap;
-
-public class PolicyConfigSummary extends ConfigSummary {
-
-    private static final long serialVersionUID = 4339330833863794513L;
-    
-    @JsonSerialize(include = Inclusion.NON_NULL)
-    private final Map<String, URI> links;
-
-    public PolicyConfigSummary(
-            @JsonProperty("name") String name,
-            @JsonProperty("type") String type,
-            @JsonProperty("description") String description,
-            @JsonProperty("defaultValue") Object defaultValue,
-            @JsonProperty("reconfigurable") boolean reconfigurable,
-            @JsonProperty("links") Map<String, URI> links) {
-        super(name, type, description, defaultValue, reconfigurable, null, null, null);
-        this.links = (links == null) ? ImmutableMap.<String, URI>of() : ImmutableMap.copyOf(links);
-    }
-
-    @Override
-    public Map<String, URI> getLinks() {
-        return links;
-    }
-
-    @Override
-    public String toString() {
-        return "PolicyConfigSummary{"
-                + "name='" + getName() + '\''
-                + ", type='" + getType() + '\''
-                + '}';
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4c98f111/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
deleted file mode 100644
index 8398a4d..0000000
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/PolicySummary.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.rest.domain;
-
-import java.io.Serializable;
-import java.net.URI;
-import java.util.Map;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
-
-import com.google.common.collect.ImmutableMap;
-
-public class PolicySummary implements HasName, HasId, Serializable {
-
-    private static final long serialVersionUID = -5086680835225136768L;
-    
-    private final String id;
-    private final String name;
-    @JsonSerialize(include = Inclusion.NON_NULL)
-    private final String catalogItemId;
-    private final Status state;
-    private final Map<String, URI> links;
-
-    public PolicySummary(
-            @JsonProperty("id") String id,
-            @JsonProperty("name") String name,
-            @JsonProperty("catalogItemId") String catalogItemId,
-            @JsonProperty("state") Status state,
-            @JsonProperty("links") Map<String, URI> links) {
-        this.id = id;
-        this.name = name;
-        this.catalogItemId = catalogItemId;
-        this.state = state;
-        this.links = (links == null) ? ImmutableMap.<String, URI> of() : ImmutableMap.copyOf(links);
-    }
-
-    @Override
-    public String getId() {
-        return id;
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    public String getCatalogItemId() {
-        return catalogItemId;
-    }
-
-    public Status getState() {
-        return state;
-    }
-
-    public Map<String, URI> getLinks() {
-        return links;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        PolicySummary that = (PolicySummary) o;
-
-        if (id != null ? !id.equals(that.id) : that.id != null)
-            return false;
-        if (name != null ? !name.equals(that.name) : that.name != null)
-            return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = name != null ? name.hashCode() : 0;
-        result = 31 * result + (id != null ? id.hashCode() : 0);
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "ConfigSummary{"
-                + "name='" + name + '\''
-                + ", id='" + id + '\''
-                + ", catalogItemId='" + catalogItemId + '\''
-                + ", links=" + links
-                + '}';
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4c98f111/usage/rest-api/src/main/java/brooklyn/rest/domain/ScriptExecutionSummary.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/brooklyn/rest/domain/ScriptExecutionSummary.java b/usage/rest-api/src/main/java/brooklyn/rest/domain/ScriptExecutionSummary.java
deleted file mode 100644
index d7f0c03..0000000
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/ScriptExecutionSummary.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.rest.domain;
-
-import java.io.Serializable;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
-
-public class ScriptExecutionSummary implements Serializable {
-
-    private static final long serialVersionUID = -7707936602991185960L;
-    
-    @JsonSerialize(include = Inclusion.NON_NULL)
-    private final Object result;
-    @JsonSerialize(include = Inclusion.NON_EMPTY)
-    private final String problem;
-    @JsonSerialize(include = Inclusion.NON_EMPTY)
-    private final String stdout;
-    @JsonSerialize(include = Inclusion.NON_EMPTY)
-    private final String stderr;
-
-    public ScriptExecutionSummary(
-            @JsonProperty("result") Object result, 
-            @JsonProperty("problem") String problem, 
-            @JsonProperty("stdout") String stdout, 
-            @JsonProperty("stderr") String stderr) {
-        super();
-        this.result = result;
-        this.problem = problem;
-        this.stdout = stdout;
-        this.stderr = stderr;
-    }
-
-    public Object getResult() {
-        return result;
-    }
-
-    public String getProblem() {
-        return problem;
-    }
-
-    public String getStderr() {
-        return stderr;
-    }
-
-    public String getStdout() {
-        return stdout;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4c98f111/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
deleted file mode 100644
index ad552ad..0000000
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/SensorSummary.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.rest.domain;
-
-import java.io.Serializable;
-import java.net.URI;
-import java.util.Map;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
-
-import com.google.common.collect.ImmutableMap;
-
-public class SensorSummary implements HasName, Serializable {
-
-    private static final long serialVersionUID = 1154308408351165426L;
-    
-    private final String name;
-    private final String type;
-    @JsonSerialize(include = Inclusion.NON_NULL)
-    private final String description;
-    @JsonSerialize(include = Inclusion.NON_NULL)
-    private final Map<String, URI> links;
-
-    public SensorSummary(
-            @JsonProperty("name") String name,
-            @JsonProperty("type") String type,
-            @JsonProperty("description") String description,
-            @JsonProperty("links") Map<String, URI> links) {
-        this.name = name;
-        this.type = type;
-        this.description = description;
-        this.links = (links == null) ? ImmutableMap.<String, URI> of() : ImmutableMap.copyOf(links);
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public Map<String, URI> getLinks() {
-        return links;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        SensorSummary that = (SensorSummary) o;
-
-        if (description != null ? !description.equals(that.description) : that.description != null)
-            return false;
-        if (links != null ? !links.equals(that.links) : that.links != null)
-            return false;
-        if (name != null ? !name.equals(that.name) : that.name != null)
-            return false;
-        if (type != null ? !type.equals(that.type) : that.type != null)
-            return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = name != null ? name.hashCode() : 0;
-        result = 31 * result + (type != null ? type.hashCode() : 0);
-        result = 31 * result + (description != null ? description.hashCode() : 0);
-        result = 31 * result + (links != null ? links.hashCode() : 0);
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "SensorSummary{"
-                + "name='" + name + '\''
-                + ", type='" + type + '\''
-                + ", description='" + description + '\''
-                + ", links=" + links
-                + '}';
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4c98f111/usage/rest-api/src/main/java/brooklyn/rest/domain/Status.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/brooklyn/rest/domain/Status.java b/usage/rest-api/src/main/java/brooklyn/rest/domain/Status.java
deleted file mode 100644
index d0f7baf..0000000
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/Status.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.rest.domain;
-
-/**
- * @author Adam Lowe
- */
-public enum Status {
-    ACCEPTED,
-    STARTING,
-    RUNNING,
-    STOPPING,
-    STOPPED,
-    DESTROYED,
-    ERROR,
-    UNKNOWN
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4c98f111/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
deleted file mode 100644
index e5f366d..0000000
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/SummaryComparators.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.rest.domain;
-
-import java.util.Comparator;
-
-import javax.annotation.Nonnull;
-
-import brooklyn.basic.BrooklynObject;
-import brooklyn.util.text.NaturalOrderComparator;
-import brooklyn.util.text.Strings;
-
-/**
- * Useful comparators for domain objects
- */
-public class SummaryComparators {
-    
-    private SummaryComparators() {}
-    
-    private static NaturalOrderComparator COMPARATOR = new NaturalOrderComparator();
-    
-    @Nonnull
-    static String getDisplayNameOrName(HasName o1) {
-        String n1 = null;
-        if (o1 instanceof BrooklynObject)
-            n1 = ((BrooklynObject)o1).getDisplayName();
-        if (Strings.isEmpty(n1) && o1 instanceof HasConfig && ((HasConfig)o1).getConfig()!=null)
-            n1 = Strings.toString(((HasConfig)o1).getConfig().get("displayName"));
-        // prefer display name if set
-        if (Strings.isEmpty(n1))
-            n1 = o1.getName();
-        if (n1==null) {
-            // put last
-            return "~~~";
-        }
-        return n1;
-    }
-    
-    public static Comparator<HasName> displayNameComparator() {
-        return new Comparator<HasName>() {
-            @Override
-            public int compare(HasName o1, HasName o2) {
-                return COMPARATOR.compare(getDisplayNameOrName(o1).toLowerCase(), getDisplayNameOrName(o2).toLowerCase());
-            }
-        };
-    }
-
-    public static Comparator<HasName> nameComparator() {
-        return new Comparator<HasName>() {
-            @Override
-            public int compare(HasName o1, HasName o2) {
-                return COMPARATOR.compare(o1.getName(), 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/4c98f111/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
deleted file mode 100644
index f6ffeaf..0000000
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/TaskSummary.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.rest.domain;
-
-import java.io.Serializable;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
-
-import brooklyn.util.collections.Jsonya;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-
-public class TaskSummary implements HasId, Serializable {
-
-    private static final long serialVersionUID = 4637850742127078158L;
-    
-    private final String id;
-    private final String displayName;
-    private final String entityId;
-    private final String entityDisplayName;
-    private final String description;
-    private final Collection<Object> tags;
-
-    private final Long submitTimeUtc;
-    private final Long startTimeUtc;
-    private final Long endTimeUtc;
-
-    private final String currentStatus;
-    private final Object result;
-    private final boolean isError;
-    private final boolean isCancelled;
-
-    private final List<LinkWithMetadata> children;
-    private final LinkWithMetadata submittedByTask;
-
-    @JsonSerialize(include = Inclusion.NON_NULL)
-    private final LinkWithMetadata blockingTask;
-    @JsonSerialize(include = Inclusion.NON_NULL)
-    private final String blockingDetails;
-
-    private final String detailedStatus;
-
-    @JsonSerialize(include = Inclusion.NON_NULL)
-    private final Map<String, LinkWithMetadata> streams;
-
-    private final Map<String, URI> links;
-
-    public TaskSummary(
-            @JsonProperty("id") String id, 
-            @JsonProperty("displayName") String displayName, 
-            @JsonProperty("description") String description, 
-            @JsonProperty("entityId") String entityId, 
-            @JsonProperty("entityDisplayName") String entityDisplayName, 
-            @JsonProperty("tags") Set<Object> tags,
-            @JsonProperty("submitTimeUtc") Long submitTimeUtc, 
-            @JsonProperty("startTimeUtc") Long startTimeUtc, 
-            @JsonProperty("endTimeUtc") Long endTimeUtc, 
-            @JsonProperty("currentStatus") String currentStatus, 
-            @JsonProperty("result") Object result, 
-            @JsonProperty("isError") boolean isError, 
-            @JsonProperty("isCancelled") boolean isCancelled, 
-            @JsonProperty("children") List<LinkWithMetadata> children,
-            @JsonProperty("submittedByTask") LinkWithMetadata submittedByTask,
-            @JsonProperty("blockingTask") LinkWithMetadata blockingTask,
-            @JsonProperty("blockingDetails") String blockingDetails,
-            @JsonProperty("detailedStatus") String detailedStatus,
-            @JsonProperty("streams") Map<String, LinkWithMetadata> streams,
-            @JsonProperty("links") Map<String, URI> links) {
-        this.id = id;
-        this.displayName = displayName;
-        this.description = description;
-        this.entityId = entityId;
-        this.entityDisplayName = entityDisplayName;
-        this.tags = (tags == null) ? ImmutableList.of() : ImmutableList.<Object> copyOf(tags);
-        this.submitTimeUtc = submitTimeUtc;
-        this.startTimeUtc = startTimeUtc;
-        this.endTimeUtc = endTimeUtc;
-        this.currentStatus = currentStatus;
-        this.result = result;
-        this.isError = isError;
-        this.isCancelled = isCancelled;
-        this.children = children;
-        this.blockingDetails = blockingDetails;
-        this.blockingTask = blockingTask;
-        this.submittedByTask = submittedByTask;
-        this.detailedStatus = detailedStatus;
-        this.streams = streams;
-        this.links = (links == null) ? ImmutableMap.<String, URI> of() : ImmutableMap.copyOf(links);
-    }
-
-    @Override
-    public String getId() {
-        return id;
-    }
-
-    public String getDisplayName() {
-        return displayName;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public String getEntityId() {
-        return entityId;
-    }
-
-    public String getEntityDisplayName() {
-        return entityDisplayName;
-    }
-
-    public Collection<Object> getTags() {
-        List<Object> result = new ArrayList<Object>();
-        for (Object t : tags) {
-            // TODO if we had access to a mapper we could use it to give better json
-            result.add(Jsonya.convertToJsonPrimitive(t));
-        }
-        return result;
-    }
-
-    @JsonIgnore
-    public Collection<Object> getRawTags() {
-        return tags;
-    }
-
-    public Long getSubmitTimeUtc() {
-        return submitTimeUtc;
-    }
-
-    public Long getStartTimeUtc() {
-        return startTimeUtc;
-    }
-
-    public Long getEndTimeUtc() {
-        return endTimeUtc;
-    }
-
-    public String getCurrentStatus() {
-        return currentStatus;
-    }
-
-    public Object getResult() {
-        return result;
-    }
-
-    /** @deprecated since 0.7.0 use {@link #isError} instead. */
-    @Deprecated
-    @JsonIgnore
-    public boolean getIsError() {
-        return isError;
-    }
-
-    /** @deprecated since 0.7.0 use {@link #isCancelled} instead. */
-    @Deprecated
-    @JsonIgnore
-    public boolean getIsCancelled() {
-        return isCancelled;
-    }
-
-    public boolean isError() {
-        return isError;
-    }
-
-    public boolean isCancelled() {
-        return isCancelled;
-    }
-
-    public List<LinkWithMetadata> getChildren() {
-        return children;
-    }
-
-    public LinkWithMetadata getSubmittedByTask() {
-        return submittedByTask;
-    }
-
-    public LinkWithMetadata getBlockingTask() {
-        return blockingTask;
-    }
-
-    public String getBlockingDetails() {
-        return blockingDetails;
-    }
-
-    public String getDetailedStatus() {
-        return detailedStatus;
-    }
-
-    public Map<String, LinkWithMetadata> getStreams() {
-        return streams;
-    }
-
-    public Map<String, URI> getLinks() {
-        return links;
-    }
-
-    @Override
-    public String toString() {
-        return "TaskSummary{"
-                + "id='" + id + '\''
-                + ", displayName='" + displayName + '\''
-                + ", currentStatus='" + currentStatus + '\''
-                + ", startTimeUtc='" + startTimeUtc + '\''
-                + ", endTimeUtc='" + endTimeUtc + '\''
-                + '}';
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4c98f111/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
deleted file mode 100644
index 08425db..0000000
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/UsageStatistic.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.rest.domain;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableMap;
-
-import java.io.Serializable;
-import java.net.URI;
-import java.util.Map;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * @author Adam Lowe
- */
-public class UsageStatistic implements HasId, Serializable {
-    
-    private static final long serialVersionUID = 5701414937003064442L;
-    
-    private final Status status;
-    private final String id;
-    private final String applicationId;
-    private final String start;
-    private final String end;
-    private final long duration;
-    private final Map<String,String> metadata;
-
-    public UsageStatistic(
-            @JsonProperty("status") Status status, 
-            @JsonProperty("id") String id, 
-            @JsonProperty("applicationId") String applicationId,
-            @JsonProperty("start") String start,
-            @JsonProperty("end") String end,
-            @JsonProperty("duration") long duration, 
-            @JsonProperty("metadata") Map<String, String> metadata) {
-        this.status = checkNotNull(status, "status");
-        this.id = checkNotNull(id, "id");
-        this.applicationId = applicationId;
-        this.start = start;
-        this.end = end;
-        this.duration = duration;
-        this.metadata = (metadata == null) ? ImmutableMap.<String, String>of() : metadata;
-    }
-
-    public Status getStatus() {
-        return status;
-    }
-
-    @Override
-    public String getId() {
-        return id;
-    }
-
-    public String getApplicationId() {
-        return applicationId;
-    }
-
-    public String getStart() {
-        return start;
-    }
-
-    public String getEnd() {
-        return end;
-    }
-
-    public long getDuration() {
-        return duration;
-    }
-
-    public Map<String, String> getMetadata() {
-        return metadata;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-        UsageStatistic statistic = (UsageStatistic) o;
-
-        return Objects.equal(status, statistic.status) &&
-                Objects.equal(id, statistic.id) &&
-                Objects.equal(applicationId, statistic.applicationId) &&
-                Objects.equal(start, statistic.start) &&
-                Objects.equal(end, statistic.end) &&
-                Objects.equal(metadata, statistic.metadata);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(status, id, applicationId, start, end, metadata);
-    }
-
-    @Override
-    public String toString() {
-        return "UsageStatistic{" +
-                "status=" + status +
-                ", id='" + id + '\'' +
-                ", applicationId='" + applicationId + '\'' +
-                ", start='" + start + '\'' +
-                ", end='" + end + '\'' +
-                ", duration=" + duration +
-                ", metadata=" + metadata +
-                '}';
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4c98f111/usage/rest-api/src/main/java/brooklyn/rest/domain/UsageStatistics.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/brooklyn/rest/domain/UsageStatistics.java b/usage/rest-api/src/main/java/brooklyn/rest/domain/UsageStatistics.java
deleted file mode 100644
index fe985b1..0000000
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/UsageStatistics.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.rest.domain;
-
-import java.io.Serializable;
-import java.net.URI;
-import java.util.List;
-import java.util.Map;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-
-/**
- * @author Aled Sage
- */
-public class UsageStatistics implements Serializable {
-
-    private static final long serialVersionUID = -1842301852728290967L;
-    
-    // TODO populate links with /apps endpoint to link to /usage/applications/{id}, to make it more
-    // RESTy
-
-    private final List<UsageStatistic> statistics;
-    private final Map<String, URI> links;
-
-    public UsageStatistics(@JsonProperty("statistics") List<UsageStatistic> statistics,
-                           @JsonProperty("links") Map<String, URI> links) {
-        this.statistics = statistics == null ? ImmutableList.<UsageStatistic> of() : ImmutableList.copyOf(statistics);
-        this.links = (links == null) ? ImmutableMap.<String, URI> of() : ImmutableMap.copyOf(links);
-    }
-
-    public List<UsageStatistic> getStatistics() {
-        return statistics;
-    }
-
-    public Map<String, URI> getLinks() {
-        return links;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (!(o instanceof UsageStatistics))
-            return false;
-        UsageStatistics other = (UsageStatistics) o;
-        return Objects.equal(statistics, other.statistics);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(statistics);
-    }
-
-    @Override
-    public String toString() {
-        return "UsageStatistics{" + "statistics=" + statistics + ", links=" + links + '}';
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4c98f111/usage/rest-api/src/main/java/brooklyn/rest/domain/VersionSummary.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/brooklyn/rest/domain/VersionSummary.java b/usage/rest-api/src/main/java/brooklyn/rest/domain/VersionSummary.java
deleted file mode 100644
index 0127735..0000000
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/VersionSummary.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package brooklyn.rest.domain;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.io.Serializable;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import org.codehaus.jackson.annotate.JsonProperty;
-
-public class VersionSummary implements Serializable {
-
-    private static final long serialVersionUID = 7275038546963638540L;
-    
-    private final String version;
-    private final String buildSha1;
-    private final String buildBranch;
-    private final List<BrooklynFeatureSummary> features;
-
-    public VersionSummary(String version) {
-        this(version, null, null);
-    }
-
-    public VersionSummary(String version, String buildSha1, String buildBranch) {
-        this(version, buildSha1, buildBranch, Collections.<BrooklynFeatureSummary>emptyList());
-    }
-
-    public VersionSummary(
-            @JsonProperty("version") String version,
-            @JsonProperty("buildSha1") String buildSha1,
-            @JsonProperty("buildBranch") String buildBranch,
-            @JsonProperty("features") List<BrooklynFeatureSummary> features) {
-        this.version = checkNotNull(version, "version");
-        this.buildSha1 = buildSha1;
-        this.buildBranch = buildBranch;
-        this.features = checkNotNull(features, "features");
-    }
-
-    @Nonnull
-    public String getVersion() {
-        return version;
-    }
-
-    @Nullable
-    public String getBuildSha1() {
-        return buildSha1;
-    }
-
-    @Nullable
-    public String getBuildBranch() {
-        return buildBranch;
-    }
-
-    @Nonnull
-    public List<BrooklynFeatureSummary> getFeatures() {
-        return features;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4c98f111/usage/rest-api/src/main/java/org/apache/brooklyn/rest/api/AccessApi.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/org/apache/brooklyn/rest/api/AccessApi.java b/usage/rest-api/src/main/java/org/apache/brooklyn/rest/api/AccessApi.java
new file mode 100644
index 0000000..f5cd9ae
--- /dev/null
+++ b/usage/rest-api/src/main/java/org/apache/brooklyn/rest/api/AccessApi.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.rest.api;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import brooklyn.rest.apidoc.Apidoc;
+import org.apache.brooklyn.rest.domain.AccessSummary;
+
+import com.google.common.annotations.Beta;
+import com.wordnik.swagger.core.ApiOperation;
+import com.wordnik.swagger.core.ApiParam;
+
+@Beta
+@Path("/v1/access")
+@Apidoc("Access Control")
+@Produces(MediaType.APPLICATION_JSON)
+@Consumes(MediaType.APPLICATION_JSON)
+public interface AccessApi {
+
+    // TODO First access use-case is to disable location-provisioning (for Citrix's Cloud Portal Business Manager (CPBM)).
+    // We rely on location implementations calling `managementContext.getAccessController().canProvisionLocation(parent)`,
+    // which isn't ideal (because some impls might forget to do this). We can't just do it in the core management-context
+    // because things like JcloudsLocation will provision the VM and only then create the JcloudsSshMachineLocation.
+    
+    @GET
+    @ApiOperation(
+            value = "Fetch access control summary",
+            responseClass = "org.apache.brooklyn.rest.domain.AccessSummary"
+            )
+    public AccessSummary get();
+
+    @POST
+    @Path("/locationProvisioningAllowed")
+    @ApiOperation(value = "Sets whether location provisioning is permitted (beta feature)")
+    public Response locationProvisioningAllowed(
+            @ApiParam(name = "allowed", value = "Whether allowed or not", required = true)
+            @QueryParam("allowed") boolean allowed);
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4c98f111/usage/rest-api/src/main/java/org/apache/brooklyn/rest/api/ActivityApi.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/org/apache/brooklyn/rest/api/ActivityApi.java b/usage/rest-api/src/main/java/org/apache/brooklyn/rest/api/ActivityApi.java
new file mode 100644
index 0000000..4ba7e0f
--- /dev/null
+++ b/usage/rest-api/src/main/java/org/apache/brooklyn/rest/api/ActivityApi.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.rest.api;
+
+import java.util.List;
+
+import brooklyn.rest.apidoc.Apidoc;
+import org.apache.brooklyn.rest.domain.TaskSummary;
+
+import com.wordnik.swagger.core.ApiError;
+import com.wordnik.swagger.core.ApiErrors;
+import com.wordnik.swagger.core.ApiOperation;
+import com.wordnik.swagger.core.ApiParam;
+
+import javax.ws.rs.*;
+import javax.ws.rs.core.MediaType;
+
+@Path("/v1/activities")
+@Apidoc("Activities")
+@Produces(MediaType.APPLICATION_JSON)
+@Consumes(MediaType.APPLICATION_JSON)
+public interface ActivityApi {
+
+    @GET
+    @Path("/{task}")
+    @ApiOperation(value = "Fetch task details", responseClass = "org.apache.brooklyn.rest.domain.TaskSummary")
+    @ApiErrors(value = {
+            @ApiError(code = 404, reason = "Could not find task")
+    })
+//  @Produces("text/json")
+    public TaskSummary get(
+            @ApiParam(value = "Task ID", required = true) @PathParam("task") String taskId
+            );
+
+    @GET
+    @Path("/{task}/children")
+    @ApiOperation(value = "Fetch list of children tasks of this task")
+    @ApiErrors(value = {
+            @ApiError(code = 404, reason = "Could not find task")
+    })
+    public List<TaskSummary> children(
+            @ApiParam(value = "Task ID", required = true) @PathParam("task") String taskId);
+
+    @GET
+    @Path("/{task}/stream/{streamId}")
+    @ApiOperation(value = "Return the contents of the given stream")
+    @ApiErrors(value = {
+            @ApiError(code = 404, reason = "Could not find task or stream")
+    })
+    public String stream(
+            @ApiParam(value = "Task ID", required = true) @PathParam("task") String taskId,
+            @ApiParam(value = "Stream ID", required = true) @PathParam("streamId") String streamId);
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4c98f111/usage/rest-api/src/main/java/org/apache/brooklyn/rest/api/ApplicationApi.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/org/apache/brooklyn/rest/api/ApplicationApi.java b/usage/rest-api/src/main/java/org/apache/brooklyn/rest/api/ApplicationApi.java
new file mode 100644
index 0000000..a05f5f1
--- /dev/null
+++ b/usage/rest-api/src/main/java/org/apache/brooklyn/rest/api/ApplicationApi.java
@@ -0,0 +1,222 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.rest.api;
+
+import java.util.List;
+import java.util.Map;
+
+import javax.validation.Valid;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.codehaus.jackson.JsonNode;
+
+import brooklyn.rest.apidoc.Apidoc;
+import org.apache.brooklyn.rest.domain.ApplicationSpec;
+import org.apache.brooklyn.rest.domain.ApplicationSummary;
+import org.apache.brooklyn.rest.domain.EntitySummary;
+
+import com.wordnik.swagger.core.ApiError;
+import com.wordnik.swagger.core.ApiErrors;
+import com.wordnik.swagger.core.ApiOperation;
+import com.wordnik.swagger.core.ApiParam;
+
+@Path("/v1/applications")
+@Apidoc("Applications")
+@Produces(MediaType.APPLICATION_JSON)
+@Consumes(MediaType.APPLICATION_JSON)
+public interface ApplicationApi {
+
+    @GET
+    @Path("/tree")
+    @ApiOperation(
+            value = "Fetch applications and entities tree hierarchy"
+    )
+    /** @deprecated since 0.6.0 use {@link #fetch(String)} (with slightly different, but better semantics) */
+    @Deprecated
+    public JsonNode applicationTree();
+
+    @GET
+    @Path("/fetch")
+    @ApiOperation(
+            value = "Fetch display details for all applications and optionally selected additional entities"
+    )
+    public JsonNode fetch(
+            @ApiParam(value="Selected additional entity ID's to include, comma-separated", required=false)
+            @DefaultValue("")
+            @QueryParam("items") String items);
+
+    @GET
+    @ApiOperation(
+            value = "Fetch list of applications, as ApplicationSummary objects",
+            responseClass = "org.apache.brooklyn.rest.domain.ApplicationSummary"
+    )
+    public List<ApplicationSummary> list(
+            @ApiParam(value = "Regular expression to filter by", required = false)
+            @DefaultValue(".*")
+            @QueryParam("typeRegex") String typeRegex);
+
+    // would be nice to have this on the API so default type regex not needed, but
+    // not yet implemented, as per: https://issues.jboss.org/browse/RESTEASY-798
+    // (this method was added to this class, but it breaks the rest client)
+//    /** As {@link #list(String)}, filtering for <code>.*</code>. */
+//    public List<ApplicationSummary> list();
+
+    @GET
+    @Path("/{application}")
+    @ApiOperation(
+            value = "Fetch a specific application",
+            responseClass = "org.apache.brooklyn.rest.domain.ApplicationSummary"
+    )
+    @ApiErrors(value = {
+            @ApiError(code = 404, reason = "Application not found")
+    })
+    public ApplicationSummary get(
+            @ApiParam(
+                    value = "ID or name of application whose details will be returned",
+                    required = true)
+            @PathParam("application") String application);
+
+    @POST
+    @Consumes({"application/x-yaml",
+            // see http://stackoverflow.com/questions/332129/yaml-mime-type
+            "text/yaml", "text/x-yaml", "application/yaml"})
+    @ApiOperation(
+            value = "Create and start a new application from YAML",
+            responseClass = "org.apache.brooklyn.rest.domain.TaskSummary"
+    )
+    @ApiErrors(value = {
+            @ApiError(code = 404, reason = "Undefined entity or location"),
+            @ApiError(code = 412, reason = "Application already registered")
+    })
+    public Response createFromYaml(
+            @ApiParam(
+                    name = "applicationSpec",
+                    value = "App spec in CAMP YAML format",
+                    required = true)
+            String yaml);
+
+    // TODO archives
+//    @Consumes({"application/x-tar", "application/x-tgz", "application/x-zip"})
+
+    @POST
+    @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_OCTET_STREAM, MediaType.TEXT_PLAIN})
+    @ApiOperation(
+            value = "Create and start a new application from miscellaneous types, including JSON either new CAMP format or legacy AppSpec format",
+            responseClass = "org.apache.brooklyn.rest.domain.TaskSummary"
+    )
+    @ApiErrors(value = {
+            @ApiError(code = 404, reason = "Undefined entity or location"),
+            @ApiError(code = 412, reason = "Application already registered")
+    })
+    public Response createPoly(
+            @ApiParam(
+                    name = "applicationSpec",
+                    value = "App spec in JSON, YAML, or other (auto-detected) format",
+                    required = true)
+            byte[] autodetectedInput);
+
+    @POST
+    @Consumes({MediaType.APPLICATION_FORM_URLENCODED})
+    @ApiOperation(
+            value = "Create and start a new application from form URL-encoded contents (underlying type autodetected)",
+            responseClass = "org.apache.brooklyn.rest.domain.TaskSummary"
+    )
+    @ApiErrors(value = {
+            @ApiError(code = 404, reason = "Undefined entity or location"),
+            @ApiError(code = 412, reason = "Application already registered")
+    })
+    public Response createFromForm(
+            @ApiParam(
+                    name = "applicationSpec",
+                    value = "App spec in form-encoded YAML, JSON, or other (auto-detected) format",
+                    required = true)
+            @Valid String contents);
+
+    @DELETE
+    @Path("/{application}")
+    @ApiOperation(
+            value = "Delete a specified application",
+            responseClass = "org.apache.brooklyn.rest.domain.TaskSummary"
+    )
+    @ApiErrors(value = {
+            @ApiError(code = 404, reason = "Application not found")
+    })
+    public Response delete(
+            @ApiParam(
+                    name = "application",
+                    value = "Application name",
+                    required = true)
+            @PathParam("application") String application);
+
+    /** @deprecated since 0.7.0 the {@link ApplicationSpec} is being retired in favour of CAMP YAML/ZIP
+     * (however in 0.7.0 you can still pass this object as JSON and it will be autodetected) */
+    @POST
+    @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_OCTET_STREAM, MediaType.TEXT_PLAIN})
+    @ApiOperation(
+            value = "Create and start a new application from miscellaneous types, including JSON either new CAMP format or legacy AppSpec format",
+            responseClass = "org.apache.brooklyn.rest.domain.TaskSummary"
+    )
+    @ApiErrors(value = {
+            @ApiError(code = 404, reason = "Undefined entity or location"),
+            @ApiError(code = 412, reason = "Application already registered")
+    })
+    @Path("/createLegacy")
+    @Deprecated
+    public Response create(ApplicationSpec applicationSpec);
+
+    @GET
+    @Path("/{application}/descendants")
+    @ApiOperation(value = "Fetch entity info for all (or filtered) descendants",
+            responseClass = "org.apache.brooklyn.rest.domain.EntitySummary")
+    @ApiErrors(value = {
+            @ApiError(code = 404, reason = "Application or entity missing")
+    })
+    public List<EntitySummary> getDescendants(
+            @ApiParam(value = "Application ID or name", required = true)
+            @PathParam("application") String application,
+            @ApiParam(value="Regular expression for an entity type which must be matched", required=false)
+            @DefaultValue(".*")
+            @QueryParam("typeRegex") String typeRegex);
+
+    @GET
+    @Path("/{application}/descendants/sensor/{sensor}")
+            @ApiOperation(value = "Fetch values of a given sensor for all (or filtered) descendants")
+    @ApiErrors(value = {
+            @ApiError(code = 404, reason = "Application or entity missing")
+    })
+    public Map<String,Object> getDescendantsSensor(
+            @ApiParam(value = "Application ID or name", required = true)
+            @PathParam("application") String application,
+            @ApiParam(value = "Sensor name", required = true)
+            @PathParam("sensor") String sensor,
+            @ApiParam(value="Regular expression for an entity type which must be matched", required=false)
+            @DefaultValue(".*")
+            @QueryParam("typeRegex") String typeRegex);
+
+}