You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by st...@apache.org on 2014/07/02 18:00:53 UTC
[24/26] git commit: 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
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/5960dd07
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/5960dd07
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/5960dd07
Branch: refs/heads/feature/SLIDER-151_Implement_full_slider_API_in_REST_and_switch_client_to_it
Commit: 5960dd07a2931d397b22f712c2a7ce3c2851a58c
Parents: 6d96ba9
Author: Steve Loughran <st...@apache.org>
Authored: Thu Jun 19 14:54:44 2014 -0700
Committer: Steve Loughran <st...@apache.org>
Committed: Wed Jul 2 17:00:06 2014 +0100
----------------------------------------------------------------------
.../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 | 55 +++++++++++---------
10 files changed, 103 insertions(+), 44 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/5960dd07/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/5960dd07/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/5960dd07/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 d55635f..35d0f15 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
@@ -26,7 +26,8 @@ public class RestPaths {
public static final String WS_CONTEXT = "ws";
public static final String WS_CONTEXT_ROOT = "/" + WS_CONTEXT;
public static final String SLIDER_CONTEXT_ROOT = WS_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/5960dd07/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/5960dd07/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 96b7b47..d9dcdd5 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
@@ -17,6 +17,7 @@
package org.apache.slider.server.appmaster.web.rest.agent;
import org.apache.slider.server.appmaster.web.WebAppApi;
+import org.apache.slider.server.appmaster.web.rest.AbstractSliderResource;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.map.annotate.JsonSerialize;
@@ -36,13 +37,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/5960dd07/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/5960dd07/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/5960dd07/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/5960dd07/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/5960dd07/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 a439d9b..89a7d83 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
@@ -26,6 +26,7 @@ import org.apache.slider.core.registry.docstore.PublishedConfigurationOutputter;
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;
@@ -42,7 +43,6 @@ import java.net.URL;
import java.net.URLClassLoader;
import java.util.Arrays;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
@@ -52,18 +52,21 @@ 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 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();
}
@@ -106,7 +109,7 @@ public class PublisherResource {
}
@GET
- @Path("/classpath")
+ @Path(CLASSPATH)
@Produces({MediaType.APPLICATION_JSON})
public Set<URL> getAMClassPath() {
URL[] urls = ((URLClassLoader) getClass().getClassLoader()).getURLs();
@@ -114,10 +117,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);
@@ -133,11 +136,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);
@@ -164,12 +167,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,
@@ -177,11 +180,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,
@@ -189,12 +192,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 {
@@ -215,11 +218,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) {