SLIDER-151 moving rest paths slightly, making more constants, and adding a shared base class AbstractSliderResource for all resources that need at the slider web api
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/aced331b Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/aced331b Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/aced331b Branch: refs/heads/develop Commit: aced331b43e5f36d1c268111ae4daa6834b76378 Parents: db83a7c Author: Steve Loughran <[email protected]> Authored: Thu Jun 19 14:54:44 2014 -0700 Committer: Steve Loughran <[email protected]> Committed: Tue Dec 16 20:25:39 2014 +0000 ---------------------------------------------------------------------- .../web/rest/AMWadlGeneratorConfig.java | 4 +- .../web/rest/AbstractSliderResource.java | 34 +++++++++++++ .../server/appmaster/web/rest/RestPaths.java | 3 +- .../web/rest/SliderJacksonJaxbJsonProvider.java | 1 - .../appmaster/web/rest/agent/AgentResource.java | 6 +-- .../web/rest/management/ManagementResource.java | 15 +++--- .../management/resources/ActionsResource.java | 22 +++++++++ .../resources/AggregateConfResource.java | 4 +- .../management/resources/ConfTreeResource.java | 3 +- .../web/rest/publisher/PublisherResource.java | 52 +++++++++++--------- 10 files changed, 103 insertions(+), 41 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/aced331b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/AMWadlGeneratorConfig.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/AMWadlGeneratorConfig.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/AMWadlGeneratorConfig.java index 4ae7490..ea9f22b 100644 --- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/AMWadlGeneratorConfig.java +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/AMWadlGeneratorConfig.java @@ -22,9 +22,9 @@ import com.sun.jersey.api.wadl.config.WadlGeneratorDescription; import java.util.List; /** - * + * App master's WADL generation support */ -public class AMWadlGeneratorConfig extends WadlGeneratorConfig{ +public class AMWadlGeneratorConfig extends WadlGeneratorConfig { public static final String CLASSNAME = "org.apache.slider.server.appmaster.web.rest.AMWadlGeneratorConfig"; @Override http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/aced331b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/AbstractSliderResource.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/AbstractSliderResource.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/AbstractSliderResource.java new file mode 100644 index 0000000..4f41815 --- /dev/null +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/AbstractSliderResource.java @@ -0,0 +1,34 @@ +/* + * 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.slider.server.appmaster.web.rest; + +import org.apache.slider.server.appmaster.web.WebAppApi; + +/** + * Abstract resource base class for REST resources + * that use the slider WebAppApi + */ +public abstract class AbstractSliderResource { + + protected final WebAppApi slider; + + public AbstractSliderResource(WebAppApi slider) { + this.slider = slider; + } +} http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/aced331b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/RestPaths.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/RestPaths.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/RestPaths.java index be18914..c3c81fc 100644 --- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/RestPaths.java +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/RestPaths.java @@ -29,7 +29,8 @@ public class RestPaths { public static final String WS_AGENT_CONTEXT_ROOT = "/" + AGENT_WS_CONTEXT; public static final String SLIDER_CONTEXT_ROOT = WS_CONTEXT_ROOT +"/v1/slider"; public static final String SLIDER_AGENT_CONTEXT_ROOT = WS_AGENT_CONTEXT_ROOT +"/v1/slider"; - public static final String SLIDER_SUBPATH_MANAGEMENT = "/mgmt"; + public static final String MANAGEMENT = "mgmt"; + public static final String SLIDER_SUBPATH_MANAGEMENT = "/" + MANAGEMENT; public static final String SLIDER_SUBPATH_AGENTS = "/agents"; public static final String SLIDER_SUBPATH_PUBLISHER = "/publisher"; http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/aced331b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/SliderJacksonJaxbJsonProvider.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/SliderJacksonJaxbJsonProvider.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/SliderJacksonJaxbJsonProvider.java index 95b0aa1..86d68a8 100644 --- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/SliderJacksonJaxbJsonProvider.java +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/SliderJacksonJaxbJsonProvider.java @@ -42,7 +42,6 @@ import javax.ws.rs.ext.Provider; public class SliderJacksonJaxbJsonProvider extends JacksonJaxbJsonProvider { public SliderJacksonJaxbJsonProvider() { - super(); } @Override http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/aced331b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/AgentResource.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/AgentResource.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/AgentResource.java index 9d1e840..f1e105a 100644 --- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/AgentResource.java +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/agent/AgentResource.java @@ -19,6 +19,7 @@ package org.apache.slider.server.appmaster.web.rest.agent; import org.apache.slider.server.appmaster.web.WebAppApi; import org.apache.slider.server.services.security.SignCertResponse; import org.apache.slider.server.services.security.SignMessage; +import org.apache.slider.server.appmaster.web.rest.AbstractSliderResource; import org.codehaus.jackson.annotate.JsonIgnoreProperties; import org.codehaus.jackson.map.annotate.JsonSerialize; @@ -39,13 +40,12 @@ import javax.ws.rs.core.Response; */ @JsonIgnoreProperties(ignoreUnknown = true) @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) -public class AgentResource { +public class AgentResource extends AbstractSliderResource { - private final WebAppApi slider; private String agent_name; public AgentResource(WebAppApi slider) { - this.slider = slider; + super(slider); } private void init(HttpServletResponse res) { http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/aced331b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/ManagementResource.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/ManagementResource.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/ManagementResource.java index 94db409..02199cf 100644 --- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/ManagementResource.java +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/ManagementResource.java @@ -18,6 +18,7 @@ package org.apache.slider.server.appmaster.web.rest.management; import org.apache.slider.core.conf.AggregateConf; import org.apache.slider.server.appmaster.web.WebAppApi; +import org.apache.slider.server.appmaster.web.rest.AbstractSliderResource; import org.apache.slider.server.appmaster.web.rest.RestPaths; import org.apache.slider.server.appmaster.web.rest.management.resources.AggregateConfResource; import org.apache.slider.server.appmaster.web.rest.management.resources.ConfTreeResource; @@ -36,18 +37,18 @@ import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; +import java.net.URI; import java.net.URL; /** * */ -public class ManagementResource { +public class ManagementResource extends AbstractSliderResource { protected static final Logger log = LoggerFactory.getLogger(ManagementResource.class); - private final WebAppApi slider; public ManagementResource(WebAppApi slider) { - this.slider = slider; + super(slider); } private void init(HttpServletResponse res) { @@ -57,7 +58,7 @@ public class ManagementResource { @GET public Response getWadl (@Context HttpServletRequest request) { try { - java.net.URI location = new URL(request.getScheme(), + URI location = new URL(request.getScheme(), request.getServerName(), request.getServerPort(), "/application.wadl").toURI(); @@ -87,9 +88,9 @@ public class ManagementResource { init(res); AggregateConfResource aggregateConf = ResourceFactory.createAggregateConfResource(getAggregateConf(), - uriInfo.getBaseUriBuilder() - .path(RestPaths.SLIDER_CONTEXT_ROOT).path( - "mgmt/app")); + uriInfo.getBaseUriBuilder() + .path(RestPaths.SLIDER_CONTEXT_ROOT) + .path(RestPaths.MANAGEMENT + "/app")); return aggregateConf.getConfTree(config); } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/aced331b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/ActionsResource.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/ActionsResource.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/ActionsResource.java new file mode 100644 index 0000000..9b340fa --- /dev/null +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/ActionsResource.java @@ -0,0 +1,22 @@ +/* + * 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.slider.server.appmaster.web.rest.management.resources; + +public class ActionsResource { +} http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/aced331b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/AggregateConfResource.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/AggregateConfResource.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/AggregateConfResource.java index 9df692a..dc26699 100644 --- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/AggregateConfResource.java +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/AggregateConfResource.java @@ -38,7 +38,7 @@ public class AggregateConfResource { public AggregateConfResource(AggregateConf conf, UriBuilder uriBuilder) { if (uriBuilder != null) { this.href = - uriBuilder.build(null).toASCIIString(); + uriBuilder.build().toASCIIString(); resources = ResourceFactory.createConfTreeResource(conf.getAppConf(), uriBuilder.clone().path( @@ -63,7 +63,7 @@ public class AggregateConfResource { } private void initConfMap() { - confMap = new HashMap<String, ConfTreeResource>(); + confMap = new HashMap<>(); confMap.put("internal", internal); confMap.put("resources", resources); confMap.put("appConf", appConf); http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/aced331b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/ConfTreeResource.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/ConfTreeResource.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/ConfTreeResource.java index 79f5399..407bab6 100644 --- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/ConfTreeResource.java +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/management/resources/ConfTreeResource.java @@ -42,8 +42,7 @@ public class ConfTreeResource { metadata = confTree.metadata; global = confTree.global; components = confTree.components; - uriBuilder = uriBuilder.clone(); - this.href = uriBuilder.build(null).toASCIIString(); + this.href = uriBuilder.build().toASCIIString(); } else { this.href = null; this.metadata = null; http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/aced331b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/publisher/PublisherResource.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/publisher/PublisherResource.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/publisher/PublisherResource.java index d2ad09e..df19687 100644 --- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/publisher/PublisherResource.java +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/publisher/PublisherResource.java @@ -28,6 +28,7 @@ import org.apache.slider.core.registry.docstore.PublishedExportsSet; import org.apache.slider.core.registry.docstore.UriMap; import org.apache.slider.server.appmaster.state.StateAccessForProviders; import org.apache.slider.server.appmaster.web.WebAppApi; +import org.apache.slider.server.appmaster.web.rest.AbstractSliderResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,21 +54,26 @@ import static org.apache.slider.server.appmaster.web.rest.RestPaths.*; /** * This publishes configuration sets */ -public class PublisherResource { +public class PublisherResource extends AbstractSliderResource { protected static final Logger log = LoggerFactory.getLogger(PublisherResource.class); - private final WebAppApi slider; public static final String EXPORTS_NAME = "exports"; public static final String EXPORTS_RESOURCES_PATH = "/" + EXPORTS_NAME; public static final String EXPORT_RESOURCE_PATH = EXPORTS_RESOURCES_PATH + "/{exportname}" ; public static final String SET_NAME = "{setname: " + PUBLISHED_CONFIGURATION_SET_REGEXP + "}"; - private static final String CONFIG = - SET_NAME + "/{config: " + PUBLISHED_CONFIGURATION_REGEXP + "}"; + public static final String SETNAME = "setname"; + public static final String CLASSPATH = "/classpath"; + public static final String CONFIG = "config"; + + public static final String SETNAME_PATTERN = + "{"+ SETNAME+": " + PUBLISHED_CONFIGURATION_SET_REGEXP + "}"; + private static final String CONFIG_PATTERN = + SETNAME_PATTERN + "/{"+ CONFIG +": " + PUBLISHED_CONFIGURATION_REGEXP + "}"; private final StateAccessForProviders appState; public PublisherResource(WebAppApi slider) { - this.slider = slider; + super(slider); appState = slider.getAppState(); } @@ -112,7 +118,7 @@ public class PublisherResource { } @GET - @Path("/classpath") + @Path(CLASSPATH) @Produces({MediaType.APPLICATION_JSON}) public Set<URL> getAMClassPath() { URL[] urls = ((URLClassLoader) getClass().getClassLoader()).getURLs(); @@ -140,10 +146,10 @@ public class PublisherResource { } @GET - @Path("/"+ SET_NAME) + @Path("/"+ SETNAME_PATTERN) @Produces({MediaType.APPLICATION_JSON}) public PublishedConfigSet getPublishedConfiguration( - @PathParam("setname") String setname, + @PathParam(SETNAME) String setname, @Context UriInfo uriInfo, @Context HttpServletResponse res) { init(res, uriInfo); @@ -159,11 +165,11 @@ public class PublisherResource { } @GET - @Path("/" + CONFIG) + @Path("/" + CONFIG_PATTERN) @Produces({MediaType.APPLICATION_JSON}) public PublishedConfiguration getConfigurationInstance( - @PathParam("setname") String setname, - @PathParam("config") String config, + @PathParam(SETNAME) String setname, + @PathParam(CONFIG) String config, @Context UriInfo uriInfo, @Context HttpServletResponse res) { init(res, uriInfo); @@ -190,12 +196,12 @@ public class PublisherResource { } @GET - @Path("/" + CONFIG + ".json") + @Path("/" + CONFIG_PATTERN + ".json") @Produces({MediaType.APPLICATION_JSON}) public String getConfigurationContentJson( - @PathParam("setname") String setname, + @PathParam(SETNAME) String setname, - @PathParam("config") String config, + @PathParam(CONFIG) String config, @Context UriInfo uriInfo, @Context HttpServletResponse res) throws IOException { return getStringRepresentation(setname, config, uriInfo, res, @@ -203,11 +209,11 @@ public class PublisherResource { } @GET - @Path("/" + CONFIG + ".xml") + @Path("/" + CONFIG_PATTERN + ".xml") @Produces({MediaType.APPLICATION_XML}) public String getConfigurationContentXML( - @PathParam("setname") String setname, - @PathParam("config") String config, + @PathParam(SETNAME) String setname, + @PathParam(CONFIG) String config, @Context UriInfo uriInfo, @Context HttpServletResponse res) throws IOException { return getStringRepresentation(setname, config, uriInfo, res, @@ -215,12 +221,12 @@ public class PublisherResource { } @GET - @Path("/" + CONFIG + ".properties") + @Path("/" + CONFIG_PATTERN + ".properties") @Produces({MediaType.APPLICATION_XML}) public String getConfigurationContentProperties( - @PathParam("setname") String setname, + @PathParam(SETNAME) String setname, - @PathParam("config") String config, + @PathParam(CONFIG) String config, @Context UriInfo uriInfo, @Context HttpServletResponse res) throws IOException { @@ -241,11 +247,11 @@ public class PublisherResource { } @GET - @Path("/" + CONFIG +"/{propertyName}") + @Path("/" + CONFIG_PATTERN +"/{propertyName}") @Produces({MediaType.APPLICATION_JSON}) public Map<String,String> getConfigurationProperty( - @PathParam("setname") String setname, - @PathParam("config") String config, + @PathParam(SETNAME) String setname, + @PathParam(CONFIG) String config, @PathParam("propertyName") String propertyName, @Context UriInfo uriInfo, @Context HttpServletResponse res) {
