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) {