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 2015/01/19 19:56:57 UTC
[1/2] incubator-brooklyn git commit: Rest client authenticates
Repository: incubator-brooklyn
Updated Branches:
refs/heads/master fe425079f -> 09377df27
Rest client authenticates
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/317b69e1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/317b69e1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/317b69e1
Branch: refs/heads/master
Commit: 317b69e17338bb541bc903b5ed97e30e58a929a6
Parents: fe42507
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Mon Jan 19 16:15:55 2015 +0000
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Mon Jan 19 16:15:55 2015 +0000
----------------------------------------------------------------------
.../java/brooklyn/rest/client/BrooklynApi.java | 86 ++++++++++++++++----
.../rest/client/BrooklynApiRestClientTest.java | 7 +-
2 files changed, 74 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/317b69e1/usage/rest-client/src/main/java/brooklyn/rest/client/BrooklynApi.java
----------------------------------------------------------------------
diff --git a/usage/rest-client/src/main/java/brooklyn/rest/client/BrooklynApi.java b/usage/rest-client/src/main/java/brooklyn/rest/client/BrooklynApi.java
index 1bdd92f..1dbdf6c 100644
--- a/usage/rest-client/src/main/java/brooklyn/rest/client/BrooklynApi.java
+++ b/usage/rest-client/src/main/java/brooklyn/rest/client/BrooklynApi.java
@@ -18,13 +18,23 @@
*/
package brooklyn.rest.client;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.net.MalformedURLException;
import java.net.URL;
import javax.ws.rs.core.Response;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.jboss.resteasy.client.ClientExecutor;
+import org.jboss.resteasy.client.ClientRequest;
import org.jboss.resteasy.client.ClientResponse;
import org.jboss.resteasy.client.ProxyFactory;
+import org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor;
import org.jboss.resteasy.util.GenericType;
+import com.google.common.base.Charsets;
+
import brooklyn.rest.api.AccessApi;
import brooklyn.rest.api.ActivityApi;
import brooklyn.rest.api.ApplicationApi;
@@ -48,73 +58,113 @@ import brooklyn.rest.api.VersionApi;
public class BrooklynApi {
private final String target;
+ private final ClientExecutor clientExecutor;
+
+ public BrooklynApi(URL endpoint) {
+ this(checkNotNull(endpoint, "endpoint").toString());
+ }
public BrooklynApi(String endpoint) {
- target = endpoint;
+ this(endpoint, null, null);
}
- public BrooklynApi(URL endpoint) {
- this(endpoint.toString());
+ public BrooklynApi(URL endpoint, String username, String password) {
+ this(endpoint.toString(), username, password);
+ }
+
+ public BrooklynApi(final String endpoint, final String username, final String password) {
+ URL target = null;
+ try {
+ target = new URL(checkNotNull(endpoint, "endpoint"));
+ } catch (MalformedURLException e) {
+ throw new IllegalArgumentException(e);
+ }
+ this.target = endpoint;
+
+ // Resteasy is a big pain.
+ DefaultHttpClient client = new DefaultHttpClient();
+ if (username != null && password != null) {
+ clientExecutor = new ApacheHttpClient4Executor(client) {
+ @Override
+ public ClientResponse execute(ClientRequest request) throws Exception {
+ String token = username + ":" + password;
+ String base64Token = Base64.encodeBase64String(token.getBytes(Charsets.UTF_8));
+ request.header("Authorization", "Basic " + base64Token);
+ return super.execute(request);
+ }
+ };
+ } else {
+ clientExecutor = new ApacheHttpClient4Executor(client);
+ }
+ }
+
+ public BrooklynApi(URL endpoint, ClientExecutor clientExecutor) {
+ this.target = checkNotNull(endpoint, "endpoint").toString();
+ this.clientExecutor = checkNotNull(clientExecutor, "clientExecutor");
+ }
+
+ private <T> T proxy(Class<T> clazz) {
+ return ProxyFactory.create(clazz, target, clientExecutor);
}
public ActivityApi getActivityApi() {
- return ProxyFactory.create(ActivityApi.class, target);
+ return proxy(ActivityApi.class);
}
public ApplicationApi getApplicationApi() {
- return ProxyFactory.create(ApplicationApi.class, target);
+ return proxy(ApplicationApi.class);
}
public CatalogApi getCatalogApi() {
- return ProxyFactory.create(CatalogApi.class, target);
+ return proxy(CatalogApi.class);
}
public EffectorApi getEffectorApi() {
- return ProxyFactory.create(EffectorApi.class, target);
+ return proxy(EffectorApi.class);
}
public EntityConfigApi getEntityConfigApi() {
- return ProxyFactory.create(EntityConfigApi.class, target);
+ return proxy(EntityConfigApi.class);
}
public EntityApi getEntityApi() {
- return ProxyFactory.create(EntityApi.class, target);
+ return proxy(EntityApi.class);
}
public LocationApi getLocationApi() {
- return ProxyFactory.create(LocationApi.class, target);
+ return proxy(LocationApi.class);
}
public PolicyConfigApi getPolicyConfigApi() {
- return ProxyFactory.create(PolicyConfigApi.class, target);
+ return proxy(PolicyConfigApi.class);
}
public PolicyApi getPolicyApi() {
- return ProxyFactory.create(PolicyApi.class, target);
+ return proxy(PolicyApi.class);
}
public ScriptApi getScriptApi() {
- return ProxyFactory.create(ScriptApi.class, target);
+ return proxy(ScriptApi.class);
}
public SensorApi getSensorApi() {
- return ProxyFactory.create(SensorApi.class, target);
+ return proxy(SensorApi.class);
}
public ServerApi getServerApi() {
- return ProxyFactory.create(ServerApi.class, target);
+ return proxy(ServerApi.class);
}
public UsageApi getUsageApi() {
- return ProxyFactory.create(UsageApi.class, target);
+ return proxy(UsageApi.class);
}
public VersionApi getVersionApi() {
- return ProxyFactory.create(VersionApi.class, target);
+ return proxy(VersionApi.class);
}
public AccessApi getAccessApi() {
- return ProxyFactory.create(AccessApi.class, target);
+ return proxy(AccessApi.class);
}
@SuppressWarnings("unchecked")
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/317b69e1/usage/rest-client/src/test/java/brooklyn/rest/client/BrooklynApiRestClientTest.java
----------------------------------------------------------------------
diff --git a/usage/rest-client/src/test/java/brooklyn/rest/client/BrooklynApiRestClientTest.java b/usage/rest-client/src/test/java/brooklyn/rest/client/BrooklynApiRestClientTest.java
index b7e35a3..b67b972 100644
--- a/usage/rest-client/src/test/java/brooklyn/rest/client/BrooklynApiRestClientTest.java
+++ b/usage/rest-client/src/test/java/brooklyn/rest/client/BrooklynApiRestClientTest.java
@@ -38,6 +38,9 @@ import brooklyn.management.internal.LocalManagementContext;
import brooklyn.rest.BrooklynRestApiLauncher;
import brooklyn.rest.BrooklynRestApiLauncherTest;
import brooklyn.rest.domain.LocationSummary;
+import brooklyn.rest.security.provider.ExplicitUsersSecurityProvider;
+import brooklyn.rest.security.provider.SecurityProvider;
+import brooklyn.rest.security.provider.TestSecurityProvider;
@Test
public class BrooklynApiRestClientTest {
@@ -69,10 +72,12 @@ public class BrooklynApiRestClientTest {
Server server = BrooklynRestApiLauncher.launcher()
.managementContext(manager)
+ .securityProvider(TestSecurityProvider.class)
.customContext(context)
.start();
- api = new BrooklynApi("http://localhost:" + server.getConnectors()[0].getPort() + "/");
+ api = new BrooklynApi("http://localhost:" + server.getConnectors()[0].getPort() + "/",
+ TestSecurityProvider.USER, TestSecurityProvider.PASSWORD);
}
@AfterClass(alwaysRun = true)
[2/2] incubator-brooklyn git commit: This closes #457
Posted by sj...@apache.org.
This closes #457
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/09377df2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/09377df2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/09377df2
Branch: refs/heads/master
Commit: 09377df278bacfad5c1e0f426eb88dc7a4d14edd
Parents: fe42507 317b69e
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Mon Jan 19 18:45:32 2015 +0000
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Mon Jan 19 18:45:32 2015 +0000
----------------------------------------------------------------------
.../java/brooklyn/rest/client/BrooklynApi.java | 86 ++++++++++++++++----
.../rest/client/BrooklynApiRestClientTest.java | 7 +-
2 files changed, 74 insertions(+), 19 deletions(-)
----------------------------------------------------------------------