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 2015/05/21 23:09:04 UTC
incubator-slider git commit: SLIDER-878 move AMWebClient to using
BaseRestClient for its REST operations. This drops the http/https logic
Repository: incubator-slider
Updated Branches:
refs/heads/feature/SLIDER-878-jersey-jdk8 6263573dc -> e95d516a3
SLIDER-878 move AMWebClient to using BaseRestClient for its REST operations. This drops the http/https logic
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/e95d516a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/e95d516a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/e95d516a
Branch: refs/heads/feature/SLIDER-878-jersey-jdk8
Commit: e95d516a336ad1a09418559733cd6d8ee8f16a2e
Parents: 6263573
Author: Steve Loughran <st...@apache.org>
Authored: Thu May 21 21:57:33 2015 +0100
Committer: Steve Loughran <st...@apache.org>
Committed: Thu May 21 21:57:33 2015 +0100
----------------------------------------------------------------------
.../funtest/accumulo/AccumuloBasicIT.groovy | 4 +-
.../org/apache/slider/client/SliderClient.java | 8 ++--
.../slider/client/rest/BaseRestClient.java | 19 ++-------
.../core/registry/retrieve/AMWebClient.java | 27 ++++++++-----
.../registry/retrieve/RegistryRetriever.java | 14 +++----
.../core/restclient/UgiJerseyBinding.java | 42 ++++++++++++++++----
.../TestStandaloneYarnRegistryAM.groovy | 2 +-
7 files changed, 67 insertions(+), 49 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e95d516a/app-packages/accumulo/src/test/groovy/org/apache/slider/funtest/accumulo/AccumuloBasicIT.groovy
----------------------------------------------------------------------
diff --git a/app-packages/accumulo/src/test/groovy/org/apache/slider/funtest/accumulo/AccumuloBasicIT.groovy b/app-packages/accumulo/src/test/groovy/org/apache/slider/funtest/accumulo/AccumuloBasicIT.groovy
index f0504e4..56014d7 100644
--- a/app-packages/accumulo/src/test/groovy/org/apache/slider/funtest/accumulo/AccumuloBasicIT.groovy
+++ b/app-packages/accumulo/src/test/groovy/org/apache/slider/funtest/accumulo/AccumuloBasicIT.groovy
@@ -174,7 +174,9 @@ class AccumuloBasicIT extends AccumuloAgentCommandTestBase {
SliderKeys.APP_TYPE,
clusterName);
ServiceRecord instance = sliderClient.resolve(path)
- RegistryRetriever retriever = new RegistryRetriever(instance)
+ RegistryRetriever retriever = new RegistryRetriever(
+ sliderClient.config,
+ instance)
PublishedConfiguration configuration = retriever.retrieveConfiguration(
retriever.getConfigurations(true), exportName, true)
return configuration
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e95d516a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
index 98f1344..4380173 100644
--- a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
+++ b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
@@ -3937,7 +3937,7 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe
ServiceRecord instance = lookupServiceRecord(registryArgs);
- RegistryRetriever retriever = new RegistryRetriever(instance);
+ RegistryRetriever retriever = new RegistryRetriever(getConfig(), instance);
PublishedConfigSet configurations =
retriever.getConfigurations(!registryArgs.internal);
PrintStream out = null;
@@ -3977,7 +3977,7 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe
throws YarnException, IOException {
ServiceRecord instance = lookupServiceRecord(registryArgs);
- RegistryRetriever retriever = new RegistryRetriever(instance);
+ RegistryRetriever retriever = new RegistryRetriever(getConfig(), instance);
PublishedExportsSet exports =
retriever.getExports(!registryArgs.internal);
PrintStream out = null;
@@ -4025,7 +4025,7 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe
throws YarnException, IOException {
ServiceRecord instance = lookupServiceRecord(registryArgs);
- RegistryRetriever retriever = new RegistryRetriever(instance);
+ RegistryRetriever retriever = new RegistryRetriever(getConfig(), instance);
boolean external = !registryArgs.internal;
PublishedConfigSet configurations =
retriever.getConfigurations(external);
@@ -4050,7 +4050,7 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe
throws YarnException, IOException {
ServiceRecord instance = lookupServiceRecord(registryArgs);
- RegistryRetriever retriever = new RegistryRetriever(instance);
+ RegistryRetriever retriever = new RegistryRetriever(getConfig(), instance);
boolean external = !registryArgs.internal;
PublishedExportsSet exports =
retriever.getExports(external);
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e95d516a/slider-core/src/main/java/org/apache/slider/client/rest/BaseRestClient.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/client/rest/BaseRestClient.java b/slider-core/src/main/java/org/apache/slider/client/rest/BaseRestClient.java
index b0e64ac..856fe4e 100644
--- a/slider-core/src/main/java/org/apache/slider/client/rest/BaseRestClient.java
+++ b/slider-core/src/main/java/org/apache/slider/client/rest/BaseRestClient.java
@@ -119,7 +119,7 @@ public class BaseRestClient {
* @param u the URI of the resource.
* @return the Web resource.
*/
- protected WebResource resource(URI u) {
+ public WebResource resource(URI u) {
return client.resource(u);
}
@@ -130,21 +130,8 @@ public class BaseRestClient {
* @return the Web resource.
*/
- protected WebResource resource(String url) {
- WebResource resource = client.resource(url);
- return resource;
+ public WebResource resource(String url) {
+ return client.resource(url);
}
- protected WebResource jsonResource(String url) {
- WebResource resource = resource(url);
- resource.type(MediaType.APPLICATION_JSON);
- return resource;
- }
-
-
- protected WebResource jsonResource(URI u) {
- WebResource resource = resource(u);
- resource.type(MediaType.APPLICATION_JSON);
- return resource;
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e95d516a/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/AMWebClient.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/AMWebClient.java b/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/AMWebClient.java
index dd9af16..c6f0fe0 100644
--- a/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/AMWebClient.java
+++ b/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/AMWebClient.java
@@ -27,6 +27,8 @@ import com.sun.jersey.client.urlconnection.HttpURLConnectionFactory;
import com.sun.jersey.client.urlconnection.URLConnectionClientHandler;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.security.ssl.SSLFactory;
+import org.apache.slider.client.rest.BaseRestClient;
+import org.apache.slider.core.restclient.UgiJerseyBinding;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -45,10 +47,14 @@ import java.net.URL;
* the redirection and security logic properly
*/
public class AMWebClient {
- private static final Client client;
+
+
+ private Client client;
+ private BaseRestClient restClient;
private static final Logger
log = LoggerFactory.getLogger(AMWebClient.class);
+/*
static {
ClientConfig clientConfig = new DefaultClientConfig();
@@ -62,15 +68,17 @@ public class AMWebClient {
client = new Client(handler, clientConfig);
client.setFollowRedirects(true);
}
+*/
+
+ public AMWebClient(Configuration conf) {
+ UgiJerseyBinding binding = new UgiJerseyBinding(conf);
+ client = binding.createJerseyClient();
+
+ restClient = new BaseRestClient(client);
- /**
- * Get the Jersey Client
- * @return the client
- */
- public static Client getClient() {
- return client;
}
+
private static URLConnectionClientHandler getUrlConnectionClientHandler() {
return new URLConnectionClientHandler(new HttpURLConnectionFactory() {
@Override
@@ -107,7 +115,7 @@ public class AMWebClient {
c.setHostnameVerifier(hv);
} catch (Exception e) {
log.info("Unable to configure HTTPS connection from "
- + "configuration. Leveraging JDK properties.");
+ + "configuration. Using JDK properties.");
}
}
@@ -117,8 +125,7 @@ public class AMWebClient {
}
public WebResource resource(String url) {
- WebResource resource = client.resource(url);
- return resource;
+ return restClient.resource(url);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e95d516a/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/RegistryRetriever.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/RegistryRetriever.java b/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/RegistryRetriever.java
index 6c665a2..03564fa 100644
--- a/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/RegistryRetriever.java
+++ b/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/RegistryRetriever.java
@@ -21,6 +21,7 @@ package org.apache.slider.core.registry.retrieve;
import com.beust.jcommander.Strings;
import com.sun.jersey.api.client.UniformInterfaceException;
import com.sun.jersey.api.client.WebResource;
+import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.registry.client.exceptions.RegistryIOException;
import org.apache.hadoop.registry.client.types.ServiceRecord;
import static org.apache.slider.client.ClientRegistryBinder.*;
@@ -50,23 +51,18 @@ public class RegistryRetriever extends AMWebClient {
private final String externalExportsURL;
private final String internalExportsURL;
- public RegistryRetriever(String externalConfigurationURL, String internalConfigurationURL,
- String externalExportsURL, String internalExportsURL) {
- this.externalConfigurationURL = externalConfigurationURL;
- this.internalConfigurationURL = internalConfigurationURL;
- this.externalExportsURL = externalExportsURL;
- this.internalExportsURL = internalExportsURL;
- }
-
/**
* Retrieve from a service by locating the
* exported {@link CustomRegistryConstants#PUBLISHER_CONFIGURATIONS_API}
* and working off it.
+ *
+ * @param conf
* @param record service record
* @throws RegistryIOException the address type of the endpoint does
* not match that expected (i.e. not a list of URLs), missing endpoint...
*/
- public RegistryRetriever(ServiceRecord record) throws RegistryIOException {
+ public RegistryRetriever(Configuration conf, ServiceRecord record) throws RegistryIOException {
+ super(new Configuration());
externalConfigurationURL = lookupRestAPI(record,
PUBLISHER_CONFIGURATIONS_API, true);
internalConfigurationURL = lookupRestAPI(record,
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e95d516a/slider-core/src/main/java/org/apache/slider/core/restclient/UgiJerseyBinding.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/restclient/UgiJerseyBinding.java b/slider-core/src/main/java/org/apache/slider/core/restclient/UgiJerseyBinding.java
index d19c621..bf71861 100644
--- a/slider-core/src/main/java/org/apache/slider/core/restclient/UgiJerseyBinding.java
+++ b/slider-core/src/main/java/org/apache/slider/core/restclient/UgiJerseyBinding.java
@@ -19,23 +19,19 @@
package org.apache.slider.core.restclient;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.ClientResponse;
+import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.UniformInterfaceException;
+import com.sun.jersey.api.client.config.ClientConfig;
+import com.sun.jersey.api.client.config.DefaultClientConfig;
+import com.sun.jersey.api.json.JSONConfiguration;
import com.sun.jersey.client.urlconnection.HttpURLConnectionFactory;
import com.sun.jersey.client.urlconnection.URLConnectionClientHandler;
import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.PathAccessDeniedException;
-import org.apache.hadoop.fs.PathIOException;
-import org.apache.hadoop.fs.PathNotFoundException;
import org.apache.hadoop.security.authentication.client.AuthenticationException;
-import org.apache.hadoop.yarn.webapp.ForbiddenException;
-import org.apache.hadoop.yarn.webapp.NotFoundException;
import org.apache.slider.core.exceptions.ExceptionConverter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.servlet.http.HttpServletResponse;
-import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
@@ -123,6 +119,36 @@ public class UgiJerseyBinding implements
return ExceptionConverter.convertJerseyException(verb.getVerb(),
url, ex);
}
+
+ /**
+ * Create the standard Jersey client Config
+ * @return the recommended Jersey Client config
+ */
+ public ClientConfig createJerseyClientConfig() {
+ ClientConfig clientConfig = new DefaultClientConfig();
+ clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, true);
+ return clientConfig;
+ }
+
+ /**
+ * Create a jersey client bonded to this handler, using the
+ * supplied client config
+ * @param clientConfig client configuratin
+ * @return a new client instance to use
+ */
+ public Client createJerseyClient(ClientConfig clientConfig) {
+ return new Client(getHandler(), clientConfig);
+ }
+
+ /**
+ * Create a jersey client bonded to this handler, using the
+ * client config created with {@link #createJerseyClientConfig()}
+ * @return a new client instance to use
+ */
+ public Client createJerseyClient() {
+ return createJerseyClient(createJerseyClientConfig());
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e95d516a/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneYarnRegistryAM.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneYarnRegistryAM.groovy b/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneYarnRegistryAM.groovy
index 62a8c40..139860a 100644
--- a/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneYarnRegistryAM.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneYarnRegistryAM.groovy
@@ -357,7 +357,7 @@ class TestStandaloneYarnRegistryAM extends AgentMiniClusterTestBase {
describe "Registry Retrieval Class"
// retrieval
- RegistryRetriever retriever = new RegistryRetriever(serviceRecord)
+ RegistryRetriever retriever = new RegistryRetriever(launcher.configuration, serviceRecord)
log.info retriever.toString()
assert retriever.hasConfigurations(true)