You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by sj...@apache.org on 2016/04/07 13:14:12 UTC

[6/9] brooklyn-server git commit: Remove jersey compatibility

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3be4fe11/rest/rest-server-jersey/src/main/java/org/apache/brooklyn/rest/filter/SwaggerFilter.java
----------------------------------------------------------------------
diff --git a/rest/rest-server-jersey/src/main/java/org/apache/brooklyn/rest/filter/SwaggerFilter.java b/rest/rest-server-jersey/src/main/java/org/apache/brooklyn/rest/filter/SwaggerFilter.java
deleted file mode 100644
index ce8b747..0000000
--- a/rest/rest-server-jersey/src/main/java/org/apache/brooklyn/rest/filter/SwaggerFilter.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 org.apache.brooklyn.rest.filter;
-
-import java.io.IOException;
-
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-
-import org.apache.brooklyn.rest.apidoc.RestApiResourceScanner;
-
-import io.swagger.config.ScannerFactory;
-import io.swagger.models.Info;
-import io.swagger.models.License;
-import io.swagger.models.Swagger;
-
-/**
- * Bootstraps swagger.
- * <p>
- * Swagger was intended to run as a servlet.
- *
- * @author Ciprian Ciubotariu <ch...@gmx.net>
- */
-public class SwaggerFilter implements Filter {
-
-    static Info info = new Info()
-            .title("Brooklyn API Documentation")
-            .version("v1") // API version, not BROOKLYN_VERSION
-            .license(new License()
-                    .name("Apache 2.0")
-                    .url("http://www.apache.org/licenses/LICENSE-2.0.html"));
-
-    @Override
-    public void init(FilterConfig filterConfig) throws ServletException {
-//        ReflectiveJaxrsScanner scanner = new ReflectiveJaxrsScanner();
-//        scanner.setResourcePackage("org.apache.brooklyn.rest.api,org.apache.brooklyn.rest.apidoc,org.apache.brooklyn.rest.resources");
-//        ScannerFactory.setScanner(scanner);
-        ScannerFactory.setScanner(new RestApiResourceScanner());
-
-        ServletContext context = filterConfig.getServletContext();
-        Swagger swagger = new Swagger()
-                .info(info);
-        context.setAttribute("swagger", swagger);
-    }
-
-    @Override
-    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
-        chain.doFilter(request, response);
-    }
-
-    @Override
-    public void destroy() {
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3be4fe11/rest/rest-server-jersey/src/main/java/org/apache/brooklyn/rest/resources/ApiListingResource.java
----------------------------------------------------------------------
diff --git a/rest/rest-server-jersey/src/main/java/org/apache/brooklyn/rest/resources/ApiListingResource.java b/rest/rest-server-jersey/src/main/java/org/apache/brooklyn/rest/resources/ApiListingResource.java
deleted file mode 100644
index 74f8426..0000000
--- a/rest/rest-server-jersey/src/main/java/org/apache/brooklyn/rest/resources/ApiListingResource.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * Copyright 2015 The Apache Software Foundation.
- *
- * Licensed 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.resources;
-
-import com.sun.jersey.spi.container.servlet.WebConfig;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.config.FilterFactory;
-import io.swagger.config.Scanner;
-import io.swagger.config.ScannerFactory;
-import io.swagger.config.SwaggerConfig;
-import io.swagger.core.filter.SpecFilter;
-import io.swagger.core.filter.SwaggerSpecFilter;
-import io.swagger.jaxrs.Reader;
-import io.swagger.jaxrs.config.JaxrsScanner;
-import io.swagger.jaxrs.config.ReaderConfigUtils;
-import io.swagger.jaxrs.listing.SwaggerSerializers;
-import io.swagger.models.Swagger;
-import io.swagger.util.Yaml;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.Cookie;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-
-import org.apache.brooklyn.util.text.Strings;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * ApiListingResource usable within a jersey servlet filter.
- *
- * Taken from io.swagger:swagger-jaxrs, class
- * io.swagger.jaxrs.listing.ApiListingResource, which can only be used within a
- * servlet context. We are here using a filter, but jersey has a WebConfig class
- * that can substitute ServletConfig and FilterConfig.
- *
- * @todo Remove when the rest-server is no longer running within a filter (e.g.
- * as a standalone OSGi http service)
- *
- * @author Ciprian Ciubotariu <ch...@gmx.net>
- */
-public class ApiListingResource {
-
-    static Logger LOGGER = LoggerFactory.getLogger(ApiListingResource.class);
-
-    @Context
-    ServletContext context;
-
-    boolean initialized = false;
-
-    private static class ServletConfigAdapter implements ServletConfig {
-
-        private final WebConfig webConfig;
-
-        private ServletConfigAdapter(WebConfig webConfig) {
-            this.webConfig = webConfig;
-        }
-
-        @Override
-        public String getServletName() {
-            return webConfig.getName();
-        }
-
-        @Override
-        public ServletContext getServletContext() {
-            return webConfig.getServletContext();
-        }
-
-        @Override
-        public String getInitParameter(String name) {
-            return webConfig.getInitParameter(name);
-        }
-
-        @Override
-        public Enumeration<String> getInitParameterNames() {
-            return webConfig.getInitParameterNames();
-        }
-
-    }
-
-    protected synchronized Swagger scan(Application app, WebConfig sc) {
-        Swagger swagger = null;
-        Scanner scanner = ScannerFactory.getScanner();
-        LOGGER.debug("using scanner " + scanner);
-
-        if (scanner != null) {
-            SwaggerSerializers.setPrettyPrint(scanner.getPrettyPrint());
-            swagger = (Swagger) context.getAttribute("swagger");
-
-            Set<Class<?>> classes;
-            if (scanner instanceof JaxrsScanner) {
-                JaxrsScanner jaxrsScanner = (JaxrsScanner) scanner;
-                classes = jaxrsScanner.classesFromContext(app, new ServletConfigAdapter(sc));
-            } else {
-                classes = scanner.classes();
-            }
-            if (classes != null) {
-                Reader reader = new Reader(swagger, ReaderConfigUtils.getReaderConfig(context));
-                swagger = reader.read(classes);
-                if (scanner instanceof SwaggerConfig) {
-                    swagger = ((SwaggerConfig) scanner).configure(swagger);
-                } else {
-                    SwaggerConfig configurator = (SwaggerConfig) context.getAttribute("reader");
-                    if (configurator != null) {
-                        LOGGER.debug("configuring swagger with " + configurator);
-                        configurator.configure(swagger);
-                    } else {
-                        LOGGER.debug("no configurator");
-                    }
-                }
-                context.setAttribute("swagger", swagger);
-            }
-        }
-        initialized = true;
-        return swagger;
-    }
-
-    private Swagger process(
-            Application app,
-            WebConfig sc,
-            HttpHeaders headers,
-            UriInfo uriInfo) {
-        Swagger swagger = (Swagger) context.getAttribute("swagger");
-        if (!initialized) {
-            swagger = scan(app, sc);
-        }
-        if (swagger != null) {
-            SwaggerSpecFilter filterImpl = FilterFactory.getFilter();
-            if (filterImpl != null) {
-                SpecFilter f = new SpecFilter();
-                swagger = f.filter(swagger, filterImpl, getQueryParams(uriInfo.getQueryParameters()), getCookies(headers),
-                        getHeaders(headers));
-            }
-        }
-        return swagger;
-    }
-
-    @GET
-    @Produces({MediaType.APPLICATION_JSON, "application/yaml"})
-    @ApiOperation(value = "The swagger definition in either JSON or YAML", hidden = true)
-    @Path("/swagger.{type:json|yaml}")
-    public Response getListing(
-            @Context Application app,
-            @Context WebConfig sc,
-            @Context HttpHeaders headers,
-            @Context UriInfo uriInfo,
-            @PathParam("type") String type) {
-        if (Strings.isNonBlank(type) && type.trim().equalsIgnoreCase("yaml")) {
-            return getListingYaml(app, sc, headers, uriInfo);
-        } else {
-            return getListingJson(app, sc, headers, uriInfo);
-        }
-    }
-
-    @GET
-    @Produces({MediaType.APPLICATION_JSON})
-    @Path("/swagger")
-    @ApiOperation(value = "The swagger definition in JSON", hidden = true)
-    public Response getListingJson(
-            @Context Application app,
-            @Context WebConfig sc,
-            @Context HttpHeaders headers,
-            @Context UriInfo uriInfo) {
-        Swagger swagger = process(app, sc, headers, uriInfo);
-
-        if (swagger != null) {
-            return Response.ok().entity(swagger).build();
-        } else {
-            return Response.status(404).build();
-        }
-    }
-
-    @GET
-    @Produces("application/yaml")
-    @Path("/swagger")
-    @ApiOperation(value = "The swagger definition in YAML", hidden = true)
-    public Response getListingYaml(
-            @Context Application app,
-            @Context WebConfig sc,
-            @Context HttpHeaders headers,
-            @Context UriInfo uriInfo) {
-        Swagger swagger = process(app, sc, headers, uriInfo);
-        try {
-            if (swagger != null) {
-                String yaml = Yaml.mapper().writeValueAsString(swagger);
-                StringBuilder b = new StringBuilder();
-                String[] parts = yaml.split("\n");
-                for (String part : parts) {
-                    b.append(part);
-                    b.append("\n");
-                }
-                return Response.ok().entity(b.toString()).type("application/yaml").build();
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return Response.status(404).build();
-    }
-
-    protected Map<String, List<String>> getQueryParams(MultivaluedMap<String, String> params) {
-        Map<String, List<String>> output = new HashMap<>();
-        if (params != null) {
-            for (String key : params.keySet()) {
-                List<String> values = params.get(key);
-                output.put(key, values);
-            }
-        }
-        return output;
-    }
-
-    protected Map<String, String> getCookies(HttpHeaders headers) {
-        Map<String, String> output = new HashMap<>();
-        if (headers != null) {
-            for (String key : headers.getCookies().keySet()) {
-                Cookie cookie = headers.getCookies().get(key);
-                output.put(key, cookie.getValue());
-            }
-        }
-        return output;
-    }
-
-    protected Map<String, List<String>> getHeaders(HttpHeaders headers) {
-        Map<String, List<String>> output = new HashMap<>();
-        if (headers != null) {
-            for (String key : headers.getRequestHeaders().keySet()) {
-                List<String> values = headers.getRequestHeaders().get(key);
-                output.put(key, values);
-            }
-        }
-        return output;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3be4fe11/rest/rest-server-jersey/src/main/java/org/apache/brooklyn/rest/resources/ApidocResource.java
----------------------------------------------------------------------
diff --git a/rest/rest-server-jersey/src/main/java/org/apache/brooklyn/rest/resources/ApidocResource.java b/rest/rest-server-jersey/src/main/java/org/apache/brooklyn/rest/resources/ApidocResource.java
deleted file mode 100644
index 1cf6523..0000000
--- a/rest/rest-server-jersey/src/main/java/org/apache/brooklyn/rest/resources/ApidocResource.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 org.apache.brooklyn.rest.resources;
-
-
-import javax.ws.rs.Path;
-
-import io.swagger.annotations.Api;
-
-/**
- * @author Ciprian Ciubotariu <ch...@gmx.net>
- */
-@Api("API Documentation")
-@Path("/apidoc")
-public class ApidocResource extends ApiListingResource {
-
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3be4fe11/rest/rest-server-jersey/src/main/java/org/apache/brooklyn/rest/util/FormMapProvider.java
----------------------------------------------------------------------
diff --git a/rest/rest-server-jersey/src/main/java/org/apache/brooklyn/rest/util/FormMapProvider.java b/rest/rest-server-jersey/src/main/java/org/apache/brooklyn/rest/util/FormMapProvider.java
deleted file mode 100644
index 2b5c19b..0000000
--- a/rest/rest-server-jersey/src/main/java/org/apache/brooklyn/rest/util/FormMapProvider.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 org.apache.brooklyn.rest.util;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.util.List;
-import java.util.Map;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyReader;
-import javax.ws.rs.ext.Provider;
-
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.sun.jersey.core.impl.provider.entity.FormMultivaluedMapProvider;
-import com.sun.jersey.core.util.MultivaluedMapImpl;
-
-/**
- * A MessageBodyReader producing a <code>Map&lt;String, Object&gt;</code>, where Object
- * is either a <code>String</code>, a <code>List&lt;String&gt;</code> or null.
- */
-@Provider
-@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
-public class FormMapProvider implements MessageBodyReader<Map<String, Object>> {
-
-    @Override
-    public boolean isReadable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
-        if (!Map.class.equals(type) || !(genericType instanceof ParameterizedType)) {
-            return false;
-        }
-        ParameterizedType parameterized = (ParameterizedType) genericType;
-        return parameterized.getActualTypeArguments().length == 2 &&
-                parameterized.getActualTypeArguments()[0] == String.class &&
-                parameterized.getActualTypeArguments()[1] == Object.class;
-    }
-
-    @Override
-    public Map<String, Object> readFrom(Class<Map<String, Object>> type, Type genericType, Annotation[] annotations,
-            MediaType mediaType, MultivaluedMap<String, String> httpHeaders, InputStream entityStream)
-            throws IOException, WebApplicationException {
-        FormMultivaluedMapProvider delegate = new FormMultivaluedMapProvider();
-        MultivaluedMap<String, String> multi = new MultivaluedMapImpl();
-        multi = delegate.readFrom(multi, mediaType, entityStream);
-
-        Map<String, Object> map = Maps.newHashMapWithExpectedSize(multi.keySet().size());
-        for (String key : multi.keySet()) {
-            List<String> value = multi.get(key);
-            if (value.size() > 1) {
-                map.put(key, Lists.newArrayList(value));
-            } else if (value.size() == 1) {
-                map.put(key, Iterables.getOnlyElement(value));
-            } else {
-                map.put(key, null);
-            }
-        }
-        return map;
-    }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3be4fe11/rest/rest-server-jersey/src/main/resources/build-metadata.properties
----------------------------------------------------------------------
diff --git a/rest/rest-server-jersey/src/main/resources/build-metadata.properties b/rest/rest-server-jersey/src/main/resources/build-metadata.properties
deleted file mode 100644
index eab85ef..0000000
--- a/rest/rest-server-jersey/src/main/resources/build-metadata.properties
+++ /dev/null
@@ -1,18 +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.
-git-sha-1 = ${buildNumber}
-git-branch-name = ${scmBranch}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3be4fe11/rest/rest-server-jersey/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/rest/rest-server-jersey/src/main/webapp/WEB-INF/web.xml b/rest/rest-server-jersey/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index 40fb79f..0000000
--- a/rest/rest-server-jersey/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,149 +0,0 @@
-<!DOCTYPE web-app PUBLIC
-        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
-        "http://java.sun.com/dtd/web-app_2_3.dtd" >
-<!--
-    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.
--->
-<web-app>
-    <display-name>Brooklyn REST API v1</display-name>
-
-    <filter>
-        <filter-name>Brooklyn Request Tagging Filter</filter-name>
-        <filter-class>org.apache.brooklyn.rest.filter.RequestTaggingFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>Brooklyn Request Tagging Filter</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-
-    <filter>
-        <filter-name>Brooklyn Properties Authentication Filter</filter-name>
-        <filter-class>org.apache.brooklyn.rest.filter.BrooklynPropertiesSecurityFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>Brooklyn Properties Authentication Filter</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-
-    <filter>
-        <filter-name>Brooklyn Logging Filter</filter-name>
-        <filter-class>org.apache.brooklyn.rest.filter.LoggingFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>Brooklyn Logging Filter</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-
-    <filter>
-        <filter-name>Brooklyn HA Master Filter</filter-name>
-        <filter-class>org.apache.brooklyn.rest.filter.HaMasterCheckFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>Brooklyn HA Master Filter</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-
-    <filter>
-        <filter-name>Brooklyn Swagger Bootstrap</filter-name>
-        <filter-class>org.apache.brooklyn.rest.filter.SwaggerFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>Brooklyn Swagger Bootstrap</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-
-    <!-- Brooklyn REST is usually run as a filter so static content can be placed in a webapp
-         to which this is added; to run as a servlet directly, replace the filter tags 
-         below (after the comment) with the servlet tags (commented out immediately below),
-         (and do the same for the matching tags at the bottom)
-        <servlet>
-            <servlet-name>Brooklyn REST API v1 Servlet</servlet-name>
-            <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
-     -->
-    <filter>
-        <filter-name>Brooklyn REST API v1 Filter</filter-name>
-        <filter-class>com.sun.jersey.spi.container.servlet.ServletContainer</filter-class>
-
-        <!-- load our REST API jersey resources explicitly 
-            (the package scanner will only pick up classes with @Path annotations - doesn't look at implemented interfaces) 
-        -->
-        <init-param>
-            <param-name>com.sun.jersey.config.property.resourceConfigClass</param-name>
-            <param-value>com.sun.jersey.api.core.ClassNamesResourceConfig</param-value>
-        </init-param>
-        <init-param>
-            <param-name>com.sun.jersey.config.property.classnames</param-name>
-            <param-value>
-                io.swagger.jaxrs.listing.SwaggerSerializers;
-                org.apache.brooklyn.rest.util.FormMapProvider;
-                com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
-                org.apache.brooklyn.rest.filter.RequestTaggingRsFilter;
-                org.apache.brooklyn.rest.filter.NoCacheFilter;
-                org.apache.brooklyn.rest.filter.HaHotCheckResourceFilter;
-                org.apache.brooklyn.rest.filter.EntitlementContextFilter;
-                org.apache.brooklyn.rest.util.ManagementContextProvider;
-                org.apache.brooklyn.rest.resources.AccessResource;
-                org.apache.brooklyn.rest.resources.ActivityResource;
-                org.apache.brooklyn.rest.resources.ApidocResource;
-                org.apache.brooklyn.rest.resources.ApplicationResource;
-                org.apache.brooklyn.rest.resources.CatalogResource;
-                org.apache.brooklyn.rest.resources.EffectorResource;
-                org.apache.brooklyn.rest.resources.EntityConfigResource;
-                org.apache.brooklyn.rest.resources.EntityResource;
-                org.apache.brooklyn.rest.resources.LocationResource;
-                org.apache.brooklyn.rest.resources.PolicyConfigResource;
-                org.apache.brooklyn.rest.resources.PolicyResource;
-                org.apache.brooklyn.rest.resources.ScriptResource;
-                org.apache.brooklyn.rest.resources.SensorResource;
-                org.apache.brooklyn.rest.resources.ServerResource;
-                org.apache.brooklyn.rest.resources.UsageResource;
-                org.apache.brooklyn.rest.resources.VersionResource;
-            </param-value>
-        </init-param>
-
-        <init-param>
-            <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
-            <param-value>true</param-value>
-        </init-param>
-
-        <!-- no need for WADL. of course you can turn it back on it you want. -->
-        <init-param>
-            <param-name>com.sun.jersey.config.feature.DisableWADL</param-name>
-            <param-value>true</param-value>
-        </init-param>
-
-        <init-param>
-            <param-name>com.sun.jersey.config.feature.FilterContextPath</param-name>
-            <param-value>/v1</param-value>
-        </init-param>
-
-    </filter>
-    <filter-mapping>
-        <filter-name>Brooklyn REST API v1 Filter</filter-name>
-        <url-pattern>/v1/*</url-pattern>
-    </filter-mapping>
-    <!-- Brooklyn REST as a filter above; replace above 5 lines with those commented out below,
-         to run it as a servlet (see note above) 
-            <load-on-startup>1</load-on-startup>
-        </servlet>
-        <servlet-mapping>
-            <servlet-name>Brooklyn REST API v1 Servlet</servlet-name>
-            <url-pattern>/*</url-pattern>
-        </servlet-mapping>
-    -->
-</web-app>

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3be4fe11/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/BrooklynPropertiesSecurityFilterTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/BrooklynPropertiesSecurityFilterTest.java b/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/BrooklynPropertiesSecurityFilterTest.java
deleted file mode 100644
index e855841..0000000
--- a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/BrooklynPropertiesSecurityFilterTest.java
+++ /dev/null
@@ -1,151 +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 org.apache.brooklyn.rest;
-
-import static org.testng.Assert.assertTrue;
-
-import java.net.URI;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.http.HttpHeaders;
-import org.apache.http.NameValuePair;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.utils.URLEncodedUtils;
-import org.apache.http.entity.ContentType;
-import org.apache.http.message.BasicNameValuePair;
-import org.eclipse.jetty.server.Server;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.Test;
-import org.apache.brooklyn.rest.security.provider.AnyoneSecurityProvider;
-import org.apache.brooklyn.util.collections.MutableMap;
-import org.apache.brooklyn.util.http.HttpTool;
-import org.apache.brooklyn.util.http.HttpToolResponse;
-import org.apache.brooklyn.util.time.Time;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.base.Charsets;
-import com.google.common.base.Stopwatch;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-
-public class BrooklynPropertiesSecurityFilterTest extends BrooklynRestApiLauncherTestFixture {
-
-    private static final Logger LOG = LoggerFactory.getLogger(BrooklynPropertiesSecurityFilterTest.class);
-
-    /*
-        Exception java.lang.AssertionError
-        
-        Message: error creating app. response code=400 expected [true] but found [false]
-        Stacktrace:
-        
-        
-        at org.testng.Assert.fail(Assert.java:94)
-        at org.testng.Assert.failNotEquals(Assert.java:494)
-        at org.testng.Assert.assertTrue(Assert.java:42)
-        at org.apache.brooklyn.rest.BrooklynPropertiesSecurityFilterTest.startAppAtNode(BrooklynPropertiesSecurityFilterTest.java:94)
-        at org.apache.brooklyn.rest.BrooklynPropertiesSecurityFilterTest.testInteractionOfSecurityFilterAndFormMapProvider(BrooklynPropertiesSecurityFilterTest.java:64)
-        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
-        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-        at java.lang.reflect.Method.invoke(Method.java:606)
-        at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)
-        at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
-        at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
-        at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
-        at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
-        at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
-        at org.testng.TestRunner.privateRun(TestRunner.java:767)
-        at org.testng.TestRunner.run(TestRunner.java:617)
-        at org.testng.SuiteRunner.runTest(SuiteRunner.java:348)
-        at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:343)
-        at org.testng.SuiteRunner.privateRun(SuiteRunner.java:305)
-        at org.testng.SuiteRunner.run(SuiteRunner.java:254)
-        at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
-        at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
-        at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)
-        at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
-        at org.testng.TestNG.run(TestNG.java:1057)
-        at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:115)
-        at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:205)
-        at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:108)
-        at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:111)
-        at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203)
-        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155)
-        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
-     */
-    // Would be great for this to be a unit test but it takes almost ten seconds.
-    @Test(groups = {"Integration","Broken"})
-    public void testInteractionOfSecurityFilterAndFormMapProvider() throws Exception {
-        Stopwatch stopwatch = Stopwatch.createStarted();
-        try {
-            Server server = useServerForTest(BrooklynRestApiLauncher.launcher()
-                    .securityProvider(AnyoneSecurityProvider.class)
-                    .forceUseOfDefaultCatalogWithJavaClassPath(true)
-                    .withoutJsgui()
-                    .start());
-            String appId = startAppAtNode(server);
-            String entityId = getTestEntityInApp(server, appId);
-            HttpClient client = HttpTool.httpClientBuilder()
-                    .uri(getBaseUri(server))
-                    .build();
-            List<? extends NameValuePair> nvps = Lists.newArrayList(
-                    new BasicNameValuePair("arg", "bar"));
-            String effector = String.format("/v1/applications/%s/entities/%s/effectors/identityEffector", appId, entityId);
-            HttpToolResponse response = HttpTool.httpPost(client, URI.create(getBaseUri() + effector),
-                    ImmutableMap.of(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_FORM_URLENCODED.getMimeType()),
-                    URLEncodedUtils.format(nvps, Charsets.UTF_8).getBytes());
-
-            LOG.info("Effector response: {}", response.getContentAsString());
-            assertTrue(HttpTool.isStatusCodeHealthy(response.getResponseCode()), "response code=" + response.getResponseCode());
-        } finally {
-            LOG.info("testInteractionOfSecurityFilterAndFormMapProvider complete in " + Time.makeTimeStringRounded(stopwatch));
-        }
-    }
-
-    private String startAppAtNode(Server server) throws Exception {
-        String blueprint = "name: TestApp\n" +
-                "location: localhost\n" +
-                "services:\n" +
-                "- type: org.apache.brooklyn.test.entity.TestEntity";
-        HttpClient client = HttpTool.httpClientBuilder()
-                .uri(getBaseUri(server))
-                .build();
-        HttpToolResponse response = HttpTool.httpPost(client, URI.create(getBaseUri() + "/v1/applications"),
-                ImmutableMap.of(HttpHeaders.CONTENT_TYPE, "application/x-yaml"),
-                blueprint.getBytes());
-        assertTrue(HttpTool.isStatusCodeHealthy(response.getResponseCode()), "error creating app. response code=" + response.getResponseCode());
-        @SuppressWarnings("unchecked")
-        Map<String, Object> body = new ObjectMapper().readValue(response.getContent(), HashMap.class);
-        return (String) body.get("entityId");
-    }
-
-    @SuppressWarnings("rawtypes")
-    private String getTestEntityInApp(Server server, String appId) throws Exception {
-        HttpClient client = HttpTool.httpClientBuilder()
-                .uri(getBaseUri(server))
-                .build();
-        List entities = new ObjectMapper().readValue(
-                HttpTool.httpGet(client, URI.create(getBaseUri() + "/v1/applications/" + appId + "/entities"), MutableMap.<String, String>of()).getContent(), List.class);
-        LOG.info((String) ((Map) entities.get(0)).get("id"));
-        return (String) ((Map) entities.get(0)).get("id");
-    }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3be4fe11/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/BrooklynRestApiLauncher.java
----------------------------------------------------------------------
diff --git a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/BrooklynRestApiLauncher.java b/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/BrooklynRestApiLauncher.java
deleted file mode 100644
index 8b67b12..0000000
--- a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/BrooklynRestApiLauncher.java
+++ /dev/null
@@ -1,498 +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 org.apache.brooklyn.rest;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.io.File;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.util.EnumSet;
-import java.util.List;
-
-import javax.servlet.DispatcherType;
-import javax.servlet.Filter;
-
-import org.apache.brooklyn.api.mgmt.ManagementContext;
-import org.apache.brooklyn.camp.brooklyn.BrooklynCampPlatformLauncherAbstract;
-import org.apache.brooklyn.camp.brooklyn.BrooklynCampPlatformLauncherNoServer;
-import org.apache.brooklyn.core.internal.BrooklynProperties;
-import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
-import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
-import org.apache.brooklyn.core.server.BrooklynServerConfig;
-import org.apache.brooklyn.core.server.BrooklynServiceAttributes;
-import org.apache.brooklyn.rest.filter.BrooklynPropertiesSecurityFilter;
-import org.apache.brooklyn.rest.filter.HaMasterCheckFilter;
-import org.apache.brooklyn.rest.filter.LoggingFilter;
-import org.apache.brooklyn.rest.filter.NoCacheFilter;
-import org.apache.brooklyn.rest.filter.RequestTaggingFilter;
-import org.apache.brooklyn.rest.filter.SwaggerFilter;
-import org.apache.brooklyn.rest.security.provider.AnyoneSecurityProvider;
-import org.apache.brooklyn.rest.security.provider.SecurityProvider;
-import org.apache.brooklyn.rest.util.ManagementContextProvider;
-import org.apache.brooklyn.rest.util.ServerStoppingShutdownHandler;
-import org.apache.brooklyn.rest.util.ShutdownHandlerProvider;
-import org.apache.brooklyn.util.core.osgi.Compat;
-import org.apache.brooklyn.util.exceptions.Exceptions;
-import org.apache.brooklyn.util.guava.Maybe;
-import org.apache.brooklyn.util.net.Networking;
-import org.apache.brooklyn.util.text.WildcardGlobs;
-import org.eclipse.jetty.server.NetworkConnector;
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.handler.ContextHandler;
-import org.eclipse.jetty.servlet.FilterHolder;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.eclipse.jetty.webapp.WebAppContext;
-import org.reflections.util.ClasspathHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.annotations.Beta;
-import com.google.common.base.Charsets;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-import com.google.common.io.Files;
-import com.sun.jersey.api.core.DefaultResourceConfig;
-import com.sun.jersey.api.core.ResourceConfig;
-import com.sun.jersey.spi.container.servlet.ServletContainer;
-
-/** Convenience and demo for launching programmatically. Also used for automated tests.
- * <p>
- * BrooklynLauncher has a more full-featured CLI way to start, 
- * but if you want more control you can:
- * <li> take the WAR this project builds (REST API) -- NB probably want the unshaded one (containing all deps)
- * <li> take the WAR from the brooklyn-jsgui project (brooklyn-ui repo) _and_ this WAR and combine them
- *      (this one should run as a filter on the others, _not_ as a ResourceCollection where they fight over who's got root)
- * <li> programmatically install things, following the examples herein; 
- *      in particular {@link #installAsServletFilter(ServletContextHandler)} is quite handy! 
- * <p>
- * You can also just run this class. In most installs it just works, assuming your IDE or maven-fu gives you the classpath.
- * Add more apps and entities on the classpath and they'll show up in the catalog.
- **/
-public class BrooklynRestApiLauncher {
-
-    private static final Logger log = LoggerFactory.getLogger(BrooklynRestApiLauncher.class);
-    final static int FAVOURITE_PORT = 8081;
-    public static final String SCANNING_CATALOG_BOM_URL = "classpath://brooklyn/scanning.catalog.bom";
-
-    enum StartMode {
-        FILTER, SERVLET, /** web-xml is not fully supported */ @Beta WEB_XML
-    }
-
-    public static final List<Class<? extends Filter>> DEFAULT_FILTERS = ImmutableList.of(
-            RequestTaggingFilter.class,
-            BrooklynPropertiesSecurityFilter.class,
-            LoggingFilter.class,
-            HaMasterCheckFilter.class,
-            SwaggerFilter.class);
-
-    private boolean forceUseOfDefaultCatalogWithJavaClassPath = false;
-    private Class<? extends SecurityProvider> securityProvider;
-    private List<Class<? extends Filter>> filters = DEFAULT_FILTERS;
-    private StartMode mode = StartMode.FILTER;
-    private ManagementContext mgmt;
-    private ContextHandler customContext;
-    private boolean deployJsgui = true;
-    private boolean disableHighAvailability = true;
-    private ServerStoppingShutdownHandler shutdownListener;
-
-    protected BrooklynRestApiLauncher() {}
-
-    public BrooklynRestApiLauncher managementContext(ManagementContext mgmt) {
-        this.mgmt = mgmt;
-        return this;
-    }
-
-    public BrooklynRestApiLauncher forceUseOfDefaultCatalogWithJavaClassPath(boolean forceUseOfDefaultCatalogWithJavaClassPath) {
-        this.forceUseOfDefaultCatalogWithJavaClassPath = forceUseOfDefaultCatalogWithJavaClassPath;
-        return this;
-    }
-
-    public BrooklynRestApiLauncher securityProvider(Class<? extends SecurityProvider> securityProvider) {
-        this.securityProvider = securityProvider;
-        return this;
-    }
-
-    /**
-     * Runs the server with the given set of filters. 
-     * Overrides any previously supplied set (or {@link #DEFAULT_FILTERS} which is used by default).
-     */
-    public BrooklynRestApiLauncher filters(@SuppressWarnings("unchecked") Class<? extends Filter>... filters) {
-        this.filters = Lists.newArrayList(filters);
-        return this;
-    }
-
-    public BrooklynRestApiLauncher mode(StartMode mode) {
-        this.mode = checkNotNull(mode, "mode");
-        return this;
-    }
-
-    /** Overrides start mode to use an explicit context */
-    public BrooklynRestApiLauncher customContext(ContextHandler customContext) {
-        this.customContext = checkNotNull(customContext, "customContext");
-        return this;
-    }
-
-    public BrooklynRestApiLauncher withJsgui() {
-        this.deployJsgui = true;
-        return this;
-    }
-
-    public BrooklynRestApiLauncher withoutJsgui() {
-        this.deployJsgui = false;
-        return this;
-    }
-
-    public BrooklynRestApiLauncher disableHighAvailability(boolean value) {
-        this.disableHighAvailability = value;
-        return this;
-    }
-
-    public Server start() {
-        if (this.mgmt == null) {
-            mgmt = new LocalManagementContext();
-        }
-        BrooklynCampPlatformLauncherAbstract platform = new BrooklynCampPlatformLauncherNoServer()
-                .useManagementContext(mgmt)
-                .launch();
-        ((LocalManagementContext)mgmt).noteStartupComplete();
-        log.debug("started "+platform);
-
-        ContextHandler context;
-        String summary;
-        if (customContext == null) {
-            switch (mode) {
-            case SERVLET:
-                context = servletContextHandler(mgmt);
-                summary = "programmatic Jersey ServletContainer servlet";
-                break;
-            case WEB_XML:
-                context = webXmlContextHandler(mgmt);
-                summary = "from WAR at " + ((WebAppContext) context).getWar();
-                break;
-            case FILTER:
-            default:
-                context = filterContextHandler(mgmt);
-                summary = "programmatic Jersey ServletContainer filter on webapp at " + ((WebAppContext) context).getWar();
-                break;
-            }
-        } else {
-            context = customContext;
-            summary = (context instanceof WebAppContext)
-                    ? "from WAR at " + ((WebAppContext) context).getWar()
-                    : "from custom context";
-        }
-
-        if (securityProvider != null) {
-            ((BrooklynProperties) mgmt.getConfig()).put(
-                    BrooklynWebConfig.SECURITY_PROVIDER_CLASSNAME, securityProvider.getName());
-        }
-
-        if (forceUseOfDefaultCatalogWithJavaClassPath) {
-            // sets URLs for a surefire
-            ((BrooklynProperties) mgmt.getConfig()).put(BrooklynServerConfig.BROOKLYN_CATALOG_URL, SCANNING_CATALOG_BOM_URL);
-            ((LocalManagementContext) mgmt).setBaseClassPathForScanning(ClasspathHelper.forJavaClassPath());
-        } else {
-            // don't use any catalog.xml which is set
-            ((BrooklynProperties) mgmt.getConfig()).put(BrooklynServerConfig.BROOKLYN_CATALOG_URL, ManagementContextInternal.EMPTY_CATALOG_URL);
-        }
-
-        Server server = startServer(mgmt, context, summary, disableHighAvailability);
-        if (shutdownListener!=null) {
-            // not available in some modes, eg webapp
-            shutdownListener.setServer(server);
-        }
-        return server;
-    }
-
-    private ContextHandler filterContextHandler(ManagementContext mgmt) {
-        WebAppContext context = new WebAppContext();
-        context.setAttribute(BrooklynServiceAttributes.BROOKLYN_MANAGEMENT_CONTEXT, mgmt);
-        context.setContextPath("/");
-        installWar(context);
-        installAsServletFilter(context, this.filters);
-        return context;
-    }
-
-    private void installWar(WebAppContext context) {
-        // here we run with the JS GUI, for convenience, if we can find it, else set up an empty dir
-        // TODO pretty sure there is an option to monitor this dir and load changes to static content
-        // NOTE: When running Brooklyn from an IDE (i.e. by launching BrooklynJavascriptGuiLauncher.main())
-        // you will need to ensure that the working directory is set to the brooklyn-ui repo folder. For IntelliJ,
-        // set the 'Working directory' of the Run/Debug Configuration to $MODULE_DIR$/brooklyn-server/launcher.
-        // For Eclipse, use the default option of ${workspace_loc:brooklyn-launcher}.
-        // If the working directory is not set correctly, Brooklyn will be unable to find the jsgui .war
-        // file and the 'gui not available' message will be shown.
-        context.setWar(this.deployJsgui && findJsguiWebappInSource().isPresent()
-                       ? findJsguiWebappInSource().get()
-                       : createTempWebDirWithIndexHtml("Brooklyn REST API <p> (gui not available)"));
-    }
-
-    private ContextHandler servletContextHandler(ManagementContext managementContext) {
-        ResourceConfig config = new DefaultResourceConfig();
-        for (Object r: BrooklynRestApi.getAllResources())
-            config.getSingletons().add(r);
-        config.getSingletons().add(new ManagementContextProvider());
-        addShutdownListener(config, mgmt);
-
-
-        WebAppContext context = new WebAppContext();
-        context.setAttribute(BrooklynServiceAttributes.BROOKLYN_MANAGEMENT_CONTEXT, managementContext);
-        ServletHolder servletHolder = new ServletHolder(new ServletContainer(config));
-        context.addServlet(servletHolder, "/v1/*");
-        context.setContextPath("/");
-
-        installWar(context);
-        installBrooklynFilters(context, this.filters);
-        return context;
-    }
-
-    /** NB: not fully supported; use one of the other {@link StartMode}s */
-    private ContextHandler webXmlContextHandler(ManagementContext mgmt) {
-        // TODO add security to web.xml
-        WebAppContext context;
-        if (findMatchingFile("src/main/webapp")!=null) {
-            // running in source mode; need to use special classpath
-            context = new WebAppContext("src/main/webapp", "/");
-            context.setExtraClasspath("./target/classes");
-        } else if (findRestApiWar()!=null) {
-            context = new WebAppContext(findRestApiWar(), "/");
-        } else {
-            throw new IllegalStateException("Cannot find WAR for REST API. Expected in target/*.war, Maven repo, or in source directories.");
-        }
-        context.setAttribute(BrooklynServiceAttributes.BROOKLYN_MANAGEMENT_CONTEXT, mgmt);
-        // TODO shutdown hook
-        
-        return context;
-    }
-
-    /** starts a server, on all NICs if security is configured,
-     * otherwise (no security) only on loopback interface 
-     * @deprecated since 0.9.0 becoming private */
-    @Deprecated
-    public static Server startServer(ManagementContext mgmt, ContextHandler context, String summary, boolean disableHighAvailability) {
-        // TODO this repeats code in BrooklynLauncher / WebServer. should merge the two paths.
-        boolean secure = mgmt != null && !BrooklynWebConfig.hasNoSecurityOptions(mgmt.getConfig());
-        if (secure) {
-            log.debug("Detected security configured, launching server on all network interfaces");
-        } else {
-            log.debug("Detected no security configured, launching server on loopback (localhost) network interface only");
-            if (mgmt!=null) {
-                log.debug("Detected no security configured, running on loopback; disabling authentication");
-                ((BrooklynProperties)mgmt.getConfig()).put(BrooklynWebConfig.SECURITY_PROVIDER_CLASSNAME, AnyoneSecurityProvider.class.getName());
-            }
-        }
-        if (mgmt != null && disableHighAvailability)
-            mgmt.getHighAvailabilityManager().disabled();
-        InetSocketAddress bindLocation = new InetSocketAddress(
-                secure ? Networking.ANY_NIC : Networking.LOOPBACK,
-                        Networking.nextAvailablePort(FAVOURITE_PORT));
-        return startServer(context, summary, bindLocation);
-    }
-
-    /** @deprecated since 0.9.0 becoming private */
-    @Deprecated
-    public static Server startServer(ContextHandler context, String summary, InetSocketAddress bindLocation) {
-        Server server = new Server(bindLocation);
-        
-        server.setHandler(context);
-        try {
-            server.start();
-        } catch (Exception e) {
-            throw Exceptions.propagate(e);
-        }
-        log.info("Brooklyn REST server started ("+summary+") on");
-        log.info("  http://localhost:"+((NetworkConnector)server.getConnectors()[0]).getLocalPort()+"/");
-
-        return server;
-    }
-
-    public static BrooklynRestApiLauncher launcher() {
-        return new BrooklynRestApiLauncher();
-    }
-
-    public static void main(String[] args) throws Exception {
-        startRestResourcesViaFilter();
-        log.info("Press Ctrl-C to quit.");
-    }
-
-    public static Server startRestResourcesViaFilter() {
-        return new BrooklynRestApiLauncher()
-                .mode(StartMode.FILTER)
-                .start();
-    }
-
-    public static Server startRestResourcesViaServlet() throws Exception {
-        return new BrooklynRestApiLauncher()
-                .mode(StartMode.SERVLET)
-                .start();
-    }
-
-    public static Server startRestResourcesViaWebXml() throws Exception {
-        return new BrooklynRestApiLauncher()
-                .mode(StartMode.WEB_XML)
-                .start();
-    }
-
-    public void installAsServletFilter(ServletContextHandler context) {
-        installAsServletFilter(context, DEFAULT_FILTERS);
-    }
-
-    private void installAsServletFilter(ServletContextHandler context, List<Class<? extends Filter>> filters) {
-        installBrooklynFilters(context, filters);
-
-        // now set up the REST servlet resources
-        ResourceConfig config = new DefaultResourceConfig();
-        // load all our REST API modules, JSON, and Swagger
-        for (Object r: BrooklynRestApi.getAllResources())
-            config.getSingletons().add(r);
-
-        // disable caching for dynamic content
-        config.getProperties().put(ResourceConfig.PROPERTY_CONTAINER_RESPONSE_FILTERS, NoCacheFilter.class.getName());
-        // Checks if appropriate request given HA status
-        config.getProperties().put(ResourceConfig.PROPERTY_RESOURCE_FILTER_FACTORIES, org.apache.brooklyn.rest.filter.HaHotCheckResourceFilter.class.getName());
-        // configure to match empty path, or any thing which looks like a file path with /assets/ and extension html, css, js, or png
-        // and treat that as static content
-        config.getProperties().put(ServletContainer.PROPERTY_WEB_PAGE_CONTENT_REGEX, "(/?|[^?]*/assets/[^?]+\\.[A-Za-z0-9_]+)");
-        // and anything which is not matched as a servlet also falls through (but more expensive than a regex check?)
-        config.getFeatures().put(ServletContainer.FEATURE_FILTER_FORWARD_ON_404, true);
-        // finally create this as a _filter_ which falls through to a web app or something (optionally)
-        FilterHolder filterHolder = new FilterHolder(new ServletContainer(config));
-        // Let the filter know the context path where it lives
-        filterHolder.setInitParameter(ServletContainer.PROPERTY_FILTER_CONTEXT_PATH, "/v1");
-        context.addFilter(filterHolder, "/v1/*", EnumSet.allOf(DispatcherType.class));
-
-        ManagementContext mgmt = getManagementContext(context);
-        config.getSingletons().add(new ManagementContextProvider());
-        addShutdownListener(config, mgmt);
-    }
-
-    protected synchronized void addShutdownListener(ResourceConfig config, ManagementContext mgmt) {
-        if (shutdownListener!=null) throw new IllegalStateException("Can only retrieve one shutdown listener");
-        shutdownListener = new ServerStoppingShutdownHandler(mgmt);
-        config.getSingletons().add(new ShutdownHandlerProvider(shutdownListener));
-    }
-
-    private static void installBrooklynFilters(ServletContextHandler context, List<Class<? extends Filter>> filters) {
-        for (Class<? extends Filter> filter : filters) {
-            context.addFilter(filter, "/*", EnumSet.allOf(DispatcherType.class));
-        }
-    }
-
-    /**
-     * Starts the server on all nics (even if security not enabled).
-     * @deprecated since 0.6.0; use {@link #launcher()} and set a custom context
-     */
-    @Deprecated
-    public static Server startServer(ContextHandler context, String summary) {
-        return BrooklynRestApiLauncher.startServer(context, summary,
-                new InetSocketAddress(Networking.ANY_NIC, Networking.nextAvailablePort(FAVOURITE_PORT)));
-    }
-
-    /** look for the JS GUI webapp in common source places, returning path to it if found, or null.
-     * assumes `brooklyn-ui` is checked out as a sibling to `brooklyn-server`, and both are 2, 3, 1, or 0
-     * levels above the CWD. */
-    @Beta
-    public static Maybe<String> findJsguiWebappInSource() {
-    	// normally up 2 levels to where brooklyn-* folders are, then into ui
-    	// (but in rest projects it might be 3 up, and in some IDEs we might run from parent dirs.)
-        // TODO could also look in maven repo ?
-    	return findFirstMatchingFile(
-    			"../../brooklyn-ui/src/main/webapp",
-    			"../../../brooklyn-ui/src/main/webapp",
-    			"../brooklyn-ui/src/main/webapp",
-    			"./brooklyn-ui/src/main/webapp",
-    			"../../brooklyn-ui/target/*.war",
-    			"../../..brooklyn-ui/target/*.war",
-    			"../brooklyn-ui/target/*.war",
-    			"./brooklyn-ui/target/*.war");
-    }
-
-    /** look for the REST WAR file in common places, returning path to it if found, or null */
-    private static String findRestApiWar() {
-        // don't look at src/main/webapp here -- because classes won't be there!
-        // could also look in maven repo ?
-    	// TODO looks like this stopped working at runtime a long time ago;
-    	// only needed for WEB_XML mode, and not used, but should remove or check?
-    	// (probably will be superseded by CXF/OSGi work however)
-        return findMatchingFile("../rest/target/*.war").orNull();
-    }
-
-    /** as {@link #findMatchingFile(String)} but finding the first */
-    public static Maybe<String> findFirstMatchingFile(String ...filenames) {
-    	for (String f: filenames) {
-    		Maybe<String> result = findMatchingFile(f);
-    		if (result.isPresent()) return result;
-    	}
-    	return Maybe.absent();
-    }
-    
-    /** returns the supplied filename if it exists (absolute or relative to the current directory);
-     * supports globs in the filename portion only, in which case it returns the _newest_ matching file.
-     * <p>
-     * otherwise returns null */
-    @Beta // public because used in dependent test projects
-    public static Maybe<String> findMatchingFile(String filename) {
-        final File f = new File(filename);
-        if (f.exists()) return Maybe.of(filename);
-        File dir = f.getParentFile();
-        File result = null;
-        if (dir.exists()) {
-            File[] matchingFiles = dir.listFiles(new FilenameFilter() {
-                @Override
-                public boolean accept(File dir, String name) {
-                    return WildcardGlobs.isGlobMatched(f.getName(), name);
-                }
-            });
-            for (File mf: matchingFiles) {
-                if (result==null || mf.lastModified() > result.lastModified()) result = mf;
-            }
-        }
-        if (result==null) return Maybe.absent();
-        return Maybe.of(result.getAbsolutePath());
-    }
-
-    /** create a directory with a simple index.html so we have some content being served up */
-    private static String createTempWebDirWithIndexHtml(String indexHtmlContent) {
-        File dir = Files.createTempDir();
-        dir.deleteOnExit();
-        try {
-            Files.write(indexHtmlContent, new File(dir, "index.html"), Charsets.UTF_8);
-        } catch (IOException e) {
-            Exceptions.propagate(e);
-        }
-        return dir.getAbsolutePath();
-    }
-    
-    /**
-     * Compatibility methods between karaf launcher and monolithic launcher.
-     *
-     * @todo Remove after transition to karaf launcher.
-     */
-    static ManagementContext getManagementContext(ContextHandler jettyServerHandler) {
-        ManagementContext managementContext = Compat.getInstance().getManagementContext();
-        if (managementContext == null && jettyServerHandler != null) {
-            managementContext = (ManagementContext) jettyServerHandler.getAttribute(BrooklynServiceAttributes.BROOKLYN_MANAGEMENT_CONTEXT);
-        }
-        return managementContext;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3be4fe11/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/BrooklynRestApiLauncherTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/BrooklynRestApiLauncherTest.java b/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/BrooklynRestApiLauncherTest.java
deleted file mode 100644
index 1a65f2c..0000000
--- a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/BrooklynRestApiLauncherTest.java
+++ /dev/null
@@ -1,77 +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 org.apache.brooklyn.rest;
-
-import static org.apache.brooklyn.rest.BrooklynRestApiLauncher.StartMode.FILTER;
-import static org.apache.brooklyn.rest.BrooklynRestApiLauncher.StartMode.SERVLET;
-import static org.apache.brooklyn.rest.BrooklynRestApiLauncher.StartMode.WEB_XML;
-
-import java.util.concurrent.Callable;
-
-import org.apache.brooklyn.entity.brooklynnode.BrooklynNode;
-import org.apache.brooklyn.rest.security.provider.AnyoneSecurityProvider;
-import org.apache.brooklyn.test.Asserts;
-import org.apache.brooklyn.util.http.HttpAsserts;
-import org.apache.brooklyn.util.http.HttpTool;
-import org.apache.http.HttpStatus;
-import org.eclipse.jetty.server.NetworkConnector;
-import org.eclipse.jetty.server.Server;
-import org.testng.annotations.Test;
-
-public class BrooklynRestApiLauncherTest extends BrooklynRestApiLauncherTestFixture {
-
-    @Test(enabled = false) // to be deleted
-    public void testFilterStart() throws Exception {
-        checkRestCatalogEntities(useServerForTest(baseLauncher().mode(FILTER).start()));
-    }
-
-    @Test(enabled = false) // to be deleted
-    public void testServletStart() throws Exception {
-        checkRestCatalogEntities(useServerForTest(baseLauncher().mode(SERVLET).start()));
-    }
-
-    @Test(enabled = false) // to be deleted
-    public void testWebAppStart() throws Exception {
-        checkRestCatalogEntities(useServerForTest(baseLauncher().mode(WEB_XML).start()));
-    }
-
-    private BrooklynRestApiLauncher baseLauncher() {
-        return BrooklynRestApiLauncher.launcher()
-                .securityProvider(AnyoneSecurityProvider.class)
-                .forceUseOfDefaultCatalogWithJavaClassPath(true);
-    }
-    
-    private static void checkRestCatalogEntities(Server server) throws Exception {
-        final String rootUrl = "http://localhost:"+((NetworkConnector)server.getConnectors()[0]).getLocalPort();
-        int code = Asserts.succeedsEventually(new Callable<Integer>() {
-            @Override
-            public Integer call() throws Exception {
-                int code = HttpTool.getHttpStatusCode(rootUrl+"/v1/catalog/entities");
-                if (code == HttpStatus.SC_FORBIDDEN) {
-                    throw new RuntimeException("Retry request");
-                } else {
-                    return code;
-                }
-            }
-        });
-        HttpAsserts.assertHealthyStatusCode(code);
-        HttpAsserts.assertContentContainsText(rootUrl+"/v1/catalog/entities", BrooklynNode.class.getSimpleName());
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3be4fe11/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/BrooklynRestApiLauncherTestFixture.java
----------------------------------------------------------------------
diff --git a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/BrooklynRestApiLauncherTestFixture.java b/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/BrooklynRestApiLauncherTestFixture.java
deleted file mode 100644
index c894f3e..0000000
--- a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/BrooklynRestApiLauncherTestFixture.java
+++ /dev/null
@@ -1,109 +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 org.apache.brooklyn.rest;
-
-import org.apache.brooklyn.api.mgmt.ManagementContext;
-import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.internal.BrooklynProperties;
-import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
-import org.apache.brooklyn.core.server.BrooklynServerConfig;
-import org.apache.brooklyn.rest.security.provider.AnyoneSecurityProvider;
-import org.apache.brooklyn.util.exceptions.Exceptions;
-import org.eclipse.jetty.server.NetworkConnector;
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.handler.ContextHandler;
-import org.reflections.util.ClasspathHelper;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-
-public abstract class BrooklynRestApiLauncherTestFixture {
-
-    Server server = null;
-    
-    @AfterMethod(alwaysRun=true)
-    public void stopServer() throws Exception {
-        if (server!=null) {
-            ManagementContext mgmt = getManagementContextFromJettyServerAttributes(server);
-            server.stop();
-            if (mgmt!=null) Entities.destroyAll(mgmt);
-            server = null;
-        }
-    }
-    
-    protected Server newServer() {
-        try {
-            Server server = BrooklynRestApiLauncher.launcher()
-                    .forceUseOfDefaultCatalogWithJavaClassPath(true)
-                    .securityProvider(AnyoneSecurityProvider.class)
-                    .start();
-            return server;
-        } catch (Exception e) {
-            throw Exceptions.propagate(e);
-        }
-    }
-    
-    protected Server useServerForTest(Server server) {
-        if (this.server!=null) {
-            Assert.fail("Test only meant for single server; already have "+this.server+" when checking "+server);
-        } else {
-            this.server = server;
-        }
-        return server;
-    }
-    
-    protected String getBaseUri() {
-        return getBaseUri(server);
-    }
-    public static String getBaseUri(Server server) {
-        return "http://localhost:"+((NetworkConnector)server.getConnectors()[0]).getLocalPort();
-    }
-    
-    public static void forceUseOfDefaultCatalogWithJavaClassPath(Server server) {
-        ManagementContext mgmt = getManagementContextFromJettyServerAttributes(server);
-        forceUseOfDefaultCatalogWithJavaClassPath(mgmt);
-    }
-
-    public static void forceUseOfDefaultCatalogWithJavaClassPath(ManagementContext manager) {
-        // TODO duplication with BrooklynRestApiLauncher ?
-        
-        // don't use any catalog.xml which is set
-        ((BrooklynProperties)manager.getConfig()).put(BrooklynServerConfig.BROOKLYN_CATALOG_URL, BrooklynRestApiLauncher.SCANNING_CATALOG_BOM_URL);
-        // sets URLs for a surefire
-        ((LocalManagementContext)manager).setBaseClassPathForScanning(ClasspathHelper.forJavaClassPath());
-        // this also works
-//        ((LocalManagementContext)manager).setBaseClassPathForScanning(ClasspathHelper.forPackage("brooklyn"));
-        // but this (near-default behaviour) does not
-//        ((LocalManagementContext)manager).setBaseClassLoader(getClass().getClassLoader());
-    }
-
-    public static void enableAnyoneLogin(Server server) {
-        ManagementContext mgmt = getManagementContextFromJettyServerAttributes(server);
-        enableAnyoneLogin(mgmt);
-    }
-
-    public static void enableAnyoneLogin(ManagementContext mgmt) {
-        ((BrooklynProperties)mgmt.getConfig()).put(BrooklynWebConfig.SECURITY_PROVIDER_CLASSNAME, 
-                AnyoneSecurityProvider.class.getName());
-    }
-
-    public static ManagementContext getManagementContextFromJettyServerAttributes(Server server) {
-        return BrooklynRestApiLauncher.getManagementContext((ContextHandler) server.getHandler());
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3be4fe11/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/HaHotCheckTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/HaHotCheckTest.java b/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/HaHotCheckTest.java
deleted file mode 100644
index 044e54d..0000000
--- a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/HaHotCheckTest.java
+++ /dev/null
@@ -1,160 +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 org.apache.brooklyn.rest;
-
-import static org.testng.Assert.assertEquals;
-
-import javax.ws.rs.core.MediaType;
-
-import org.apache.brooklyn.api.mgmt.ha.HighAvailabilityManager;
-import org.apache.brooklyn.api.mgmt.ha.HighAvailabilityMode;
-import org.apache.brooklyn.api.mgmt.ha.ManagementNodeState;
-import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
-import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
-import org.apache.brooklyn.rest.filter.HaHotCheckResourceFilter;
-import org.apache.brooklyn.rest.testing.BrooklynRestResourceTest;
-import org.apache.brooklyn.rest.util.TestingHaHotStateCheckClassResource;
-import org.apache.brooklyn.rest.util.TestingHaHotStateCheckResource;
-import org.apache.brooklyn.rest.util.TestingHaMasterCheckResource;
-import org.apache.brooklyn.rest.util.ManagementContextProvider;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource.Builder;
-import com.sun.jersey.api.core.ResourceConfig;
-
-public class HaHotCheckTest extends BrooklynRestResourceTest {
-
-    // setup and teardown before/after each method
-    
-    @BeforeMethod(alwaysRun = true)
-    public void setUp() throws Exception { super.setUp(); }
-
-    @AfterMethod(alwaysRun = true)
-    public void tearDown() throws Exception { super.tearDown(); }
-    
-    @Override
-    protected void addBrooklynResources() {
-        config.getProperties().put(ResourceConfig.PROPERTY_RESOURCE_FILTER_FACTORIES,
-            new HaHotCheckResourceFilter(new ManagementContextProvider(getManagementContext())));
-        addResource(new TestingHaHotStateCheckResource());
-        addResource(new TestingHaHotStateCheckClassResource());
-        addResource(new TestingHaMasterCheckResource());
-        
-        ((LocalManagementContext)getManagementContext()).noteStartupComplete();
-    }
-
-    @Test
-    public void testHaCheck() {
-        HighAvailabilityManager ha = getManagementContext().getHighAvailabilityManager();
-        assertEquals(ha.getNodeState(), ManagementNodeState.MASTER);
-        testResourceFetch("/v1/ha/method/ok", 200);
-        testResourceFetch("/v1/ha/method/fail", 200);
-        testResourceFetch("/v1/ha/class/fail", 200);
-        testResourcePost("/v1/ha/post", 204);
-        testResourcePost("/v1/server/shutdown", 204);
-
-        getManagementContext().getHighAvailabilityManager().changeMode(HighAvailabilityMode.STANDBY);
-        assertEquals(ha.getNodeState(), ManagementNodeState.STANDBY);
-
-        testResourceFetch("/v1/ha/method/ok", 200);
-        testResourceFetch("/v1/ha/method/fail", 403);
-        testResourceFetch("/v1/ha/class/fail", 403);
-        testResourcePost("/v1/ha/post", 403);
-        testResourcePost("/v1/server/shutdown", 204);
-
-        ((ManagementContextInternal)getManagementContext()).terminate();
-        assertEquals(ha.getNodeState(), ManagementNodeState.TERMINATED);
-
-        testResourceFetch("/v1/ha/method/ok", 200);
-        testResourceFetch("/v1/ha/method/fail", 403);
-        testResourceFetch("/v1/ha/class/fail", 403);
-        testResourcePost("/v1/ha/post", 403);
-        testResourcePost("/v1/server/shutdown", 204);
-    }
-
-    @Test
-    public void testHaCheckForce() {
-        HighAvailabilityManager ha = getManagementContext().getHighAvailabilityManager();
-        assertEquals(ha.getNodeState(), ManagementNodeState.MASTER);
-        testResourceForcedFetch("/v1/ha/method/ok", 200);
-        testResourceForcedFetch("/v1/ha/method/fail", 200);
-        testResourceForcedFetch("/v1/ha/class/fail", 200);
-        testResourceForcedPost("/v1/ha/post", 204);
-        testResourceForcedPost("/v1/server/shutdown", 204);
-
-        getManagementContext().getHighAvailabilityManager().changeMode(HighAvailabilityMode.STANDBY);
-        assertEquals(ha.getNodeState(), ManagementNodeState.STANDBY);
-
-        testResourceForcedFetch("/v1/ha/method/ok", 200);
-        testResourceForcedFetch("/v1/ha/method/fail", 200);
-        testResourceForcedFetch("/v1/ha/class/fail", 200);
-        testResourceForcedPost("/v1/ha/post", 204);
-        testResourceForcedPost("/v1/server/shutdown", 204);
-
-        ((ManagementContextInternal)getManagementContext()).terminate();
-        assertEquals(ha.getNodeState(), ManagementNodeState.TERMINATED);
-
-        testResourceForcedFetch("/v1/ha/method/ok", 200);
-        testResourceForcedFetch("/v1/ha/method/fail", 200);
-        testResourceForcedFetch("/v1/ha/class/fail", 200);
-        testResourceForcedPost("/v1/ha/post", 204);
-        testResourceForcedPost("/v1/server/shutdown", 204);
-    }
-
-
-    private void testResourceFetch(String resourcePath, int code) {
-        testResourceFetch(resourcePath, false, code);
-    }
-
-    private void testResourcePost(String resourcePath, int code) {
-        testResourcePost(resourcePath, false, code);
-    }
-
-    private void testResourceForcedFetch(String resourcePath, int code) {
-        testResourceFetch(resourcePath, true, code);
-    }
-
-    private void testResourceForcedPost(String resourcePath, int code) {
-        testResourcePost(resourcePath, true, code);
-    }
-
-    private void testResourceFetch(String resourcePath, boolean force, int code) {
-        Builder resource = client().resource(resourcePath)
-                .accept(MediaType.APPLICATION_JSON_TYPE);
-        if (force) {
-            resource.header(HaHotCheckResourceFilter.SKIP_CHECK_HEADER, "true");
-        }
-        ClientResponse response = resource
-                .get(ClientResponse.class);
-        assertEquals(response.getStatus(), code);
-    }
-
-    private void testResourcePost(String resourcePath, boolean force, int code) {
-        Builder resource = client().resource(resourcePath)
-                .accept(MediaType.APPLICATION_JSON_TYPE);
-        if (force) {
-            resource.header(HaHotCheckResourceFilter.SKIP_CHECK_HEADER, "true");
-        }
-        ClientResponse response = resource.post(ClientResponse.class);
-        assertEquals(response.getStatus(), code);
-    }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3be4fe11/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/HaMasterCheckFilterTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/HaMasterCheckFilterTest.java b/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/HaMasterCheckFilterTest.java
deleted file mode 100644
index 424c0c1..0000000
--- a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/HaMasterCheckFilterTest.java
+++ /dev/null
@@ -1,218 +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 org.apache.brooklyn.rest;
-
-import static org.testng.Assert.assertEquals;
-
-import java.io.File;
-import java.net.URI;
-import java.util.concurrent.Callable;
-import java.util.concurrent.TimeoutException;
-
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.mgmt.EntityManager;
-import org.apache.brooklyn.api.mgmt.ManagementContext;
-import org.apache.brooklyn.api.mgmt.ha.HighAvailabilityMode;
-import org.apache.brooklyn.api.mgmt.ha.ManagementNodeState;
-import org.apache.brooklyn.camp.brooklyn.BrooklynCampPlatformLauncherNoServer;
-import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.mgmt.rebind.RebindTestUtils;
-import org.apache.brooklyn.entity.stock.BasicApplication;
-import org.apache.http.HttpStatus;
-import org.apache.http.client.HttpClient;
-import org.eclipse.jetty.server.Server;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.Test;
-import org.apache.brooklyn.rest.security.provider.AnyoneSecurityProvider;
-import org.apache.brooklyn.test.Asserts;
-import org.apache.brooklyn.util.http.HttpTool;
-import org.apache.brooklyn.util.http.HttpToolResponse;
-import org.apache.brooklyn.util.os.Os;
-import org.apache.brooklyn.util.time.Duration;
-
-import com.google.common.base.Predicates;
-import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableMap;
-
-public class HaMasterCheckFilterTest extends BrooklynRestApiLauncherTestFixture {
-    private static final Duration TIMEOUT = Duration.THIRTY_SECONDS;
-
-    private File mementoDir;
-    private ManagementContext writeMgmt;
-    private ManagementContext readMgmt;
-    private String appId;
-    private Server server;
-    private HttpClient client;
-
-    @AfterMethod(alwaysRun=true)
-    public void tearDown() throws Exception {
-System.err.println("TEAR DOWN");
-        server.stop();
-        Entities.destroyAll(writeMgmt);
-        Entities.destroyAll(readMgmt);
-        Os.deleteRecursively(mementoDir);
-    }
-
-    @Test(groups = "Integration")
-    public void testEntitiesExistOnDisabledHA() throws Exception {
-        initHaCluster(HighAvailabilityMode.DISABLED, HighAvailabilityMode.DISABLED);
-        assertReadIsMaster();
-        assertEntityExists(new ReturnCodeCheck());
-    }
-
-    @Test(groups = "Integration")
-    public void testEntitiesExistOnMasterPromotion() throws Exception {
-        initHaCluster(HighAvailabilityMode.AUTO, HighAvailabilityMode.AUTO);
-        stopWriteNode();
-        assertEntityExists(new ReturnCodeCheck());
-        assertReadIsMaster();
-    }
-
-    @Test(groups = "Integration")
-    public void testEntitiesExistOnHotStandbyAndPromotion() throws Exception {
-        initHaCluster(HighAvailabilityMode.AUTO, HighAvailabilityMode.HOT_STANDBY);
-        assertEntityExists(new ReturnCodeCheck());
-        stopWriteNode();
-        assertEntityExists(new ReturnCodeAndNodeState());
-        assertReadIsMaster();
-    }
-
-    @Test(groups = "Integration")
-    public void testEntitiesExistOnHotBackup() throws Exception {
-        initHaCluster(HighAvailabilityMode.AUTO, HighAvailabilityMode.HOT_BACKUP);
-        Asserts.continually(
-                ImmutableMap.<String,Object>of(
-                        "timeout", Duration.THIRTY_SECONDS,
-                        "period", Duration.ZERO),
-                new ReturnCodeSupplier(),
-                Predicates.or(Predicates.equalTo(200), Predicates.equalTo(403)));
-    }
-
-    private HttpClient getClient(Server server) {
-        HttpClient client = HttpTool.httpClientBuilder()
-                .uri(getBaseUri(server))
-                .build();
-        return client;
-    }
-
-    private int getAppResponseCode() {
-        HttpToolResponse response = HttpTool.httpGet(
-                client, URI.create(getBaseUri(server) + "/v1/applications/" + appId),
-                ImmutableMap.<String,String>of());
-        return response.getResponseCode();
-    }
-
-    private String createApp(ManagementContext mgmt) {
-        EntityManager entityMgr = mgmt.getEntityManager();
-        Entity app = entityMgr.createEntity(EntitySpec.create(BasicApplication.class));
-        entityMgr.manage(app);
-        return app.getId();
-    }
-
-    private ManagementContext createManagementContext(File mementoDir, HighAvailabilityMode mode) {
-        ManagementContext mgmt = RebindTestUtils.managementContextBuilder(mementoDir, getClass().getClassLoader())
-                .persistPeriodMillis(1)
-                .forLive(false)
-                .emptyCatalog(true)
-                .buildUnstarted();
-
-        if (mode == HighAvailabilityMode.DISABLED) {
-            mgmt.getHighAvailabilityManager().disabled();
-        } else {
-            mgmt.getHighAvailabilityManager().start(mode);
-        }
-
-        new BrooklynCampPlatformLauncherNoServer()
-            .useManagementContext(mgmt)
-            .launch();
-
-        return mgmt;
-    }
-
-    private void initHaCluster(HighAvailabilityMode writeMode, HighAvailabilityMode readMode) throws InterruptedException, TimeoutException {
-        mementoDir = Os.newTempDir(getClass());
-
-        writeMgmt = createManagementContext(mementoDir, writeMode);
-        appId = createApp(writeMgmt);
-        writeMgmt.getRebindManager().waitForPendingComplete(TIMEOUT, true);
-
-        if (readMode == HighAvailabilityMode.DISABLED) {
-            //no HA, one node only
-            readMgmt = writeMgmt;
-        } else {
-            readMgmt = createManagementContext(mementoDir, readMode);
-        }
-
-        server = useServerForTest(BrooklynRestApiLauncher.launcher()
-                .managementContext(readMgmt)
-                .securityProvider(AnyoneSecurityProvider.class)
-                .forceUseOfDefaultCatalogWithJavaClassPath(true)
-                .withoutJsgui()
-                .disableHighAvailability(false)
-                .start());
-        client = getClient(server);
-    }
-
-    private void assertEntityExists(Callable<Integer> c) {
-        assertEquals((int)Asserts.succeedsEventually(c), 200);
-    }
-
-    private void assertReadIsMaster() {
-        assertEquals(readMgmt.getHighAvailabilityManager().getNodeState(), ManagementNodeState.MASTER);
-    }
-
-    private void stopWriteNode() {
-        writeMgmt.getHighAvailabilityManager().stop();
-    }
-
-    private class ReturnCodeCheck implements Callable<Integer> {
-        @Override
-        public Integer call() {
-            int retCode = getAppResponseCode();
-            if (retCode == 403) {
-                throw new RuntimeException("Not ready, retry. Response - " + retCode);
-            } else {
-                return retCode;
-            }
-        }
-    }
-
-    private class ReturnCodeAndNodeState extends ReturnCodeCheck {
-        @Override
-        public Integer call() {
-            Integer ret = super.call();
-            if (ret == HttpStatus.SC_OK) {
-                ManagementNodeState state = readMgmt.getHighAvailabilityManager().getNodeState();
-                if (state != ManagementNodeState.MASTER) {
-                    throw new RuntimeException("Not master yet " + state);
-                }
-            }
-            return ret;
-        }
-    }
-
-    private class ReturnCodeSupplier implements Supplier<Integer> {
-        @Override
-        public Integer get() {
-            return getAppResponseCode();
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3be4fe11/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/domain/AbstractDomainTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/domain/AbstractDomainTest.java b/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/domain/AbstractDomainTest.java
deleted file mode 100644
index dc1131d..0000000
--- a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/domain/AbstractDomainTest.java
+++ /dev/null
@@ -1,44 +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 org.apache.brooklyn.rest.domain;
-
-import java.io.IOException;
-
-import org.testng.annotations.Test;
-
-import static org.apache.brooklyn.rest.util.RestApiTestUtils.asJson;
-import static org.apache.brooklyn.rest.util.RestApiTestUtils.fromJson;
-import static org.apache.brooklyn.rest.util.RestApiTestUtils.jsonFixture;
-import static org.testng.Assert.assertEquals;
-
-public abstract class AbstractDomainTest {
-
-    protected abstract String getPath();
-    protected abstract Object getDomainObject();
-
-    @Test
-    public void testSerializeToJSON() throws IOException {
-        assertEquals(asJson(getDomainObject()), jsonFixture(getPath()));
-    }
-
-    @Test
-    public void testDeserializeFromJSON() throws IOException {
-        assertEquals(fromJson(jsonFixture(getPath()), getDomainObject().getClass()), getDomainObject());
-    }
-}