You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2015/11/05 18:29:42 UTC
[3/9] incubator-brooklyn git commit: Per client HTTP connection
pooling
Per client HTTP connection pooling
Implementation with static factory method
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/934bb74f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/934bb74f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/934bb74f
Branch: refs/heads/master
Commit: 934bb74f77a53eaaea0ea6e3425bd6b40c02d454
Parents: 971c217
Author: Guglielmo Nigri <gu...@cloudsoftcorp.com>
Authored: Thu Nov 5 12:45:30 2015 +0100
Committer: Guglielmo Nigri <gu...@cloudsoftcorp.com>
Committed: Thu Nov 5 12:45:30 2015 +0100
----------------------------------------------------------------------
.../brooklyn/rest/client/BrooklynApi.java | 172 ++++++++++++++-----
.../rest/client/BrooklynApiFactory.java | 29 ----
.../rest/client/DefaultBrooklynApiFactory.java | 50 ------
.../rest/client/PoolingBrooklynApiFactory.java | 108 ------------
.../ApplicationResourceIntegrationTest.java | 4 +-
.../rest/client/BrooklynApiRestClientTest.java | 4 +-
6 files changed, 131 insertions(+), 236 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/934bb74f/usage/rest-client/src/main/java/org/apache/brooklyn/rest/client/BrooklynApi.java
----------------------------------------------------------------------
diff --git a/usage/rest-client/src/main/java/org/apache/brooklyn/rest/client/BrooklynApi.java b/usage/rest-client/src/main/java/org/apache/brooklyn/rest/client/BrooklynApi.java
index 184b659..e848f99 100644
--- a/usage/rest-client/src/main/java/org/apache/brooklyn/rest/client/BrooklynApi.java
+++ b/usage/rest-client/src/main/java/org/apache/brooklyn/rest/client/BrooklynApi.java
@@ -30,12 +30,18 @@ import java.net.URL;
import javax.annotation.Nullable;
import javax.ws.rs.core.Response;
+import com.google.common.base.Supplier;
+import com.google.common.base.Suppliers;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.Credentials;
import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.impl.client.*;
+import org.apache.http.client.CredentialsProvider;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
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;
@@ -68,18 +74,18 @@ import com.wordnik.swagger.core.ApiOperation;
/**
* @author Adam Lowe
- */
+ */
@SuppressWarnings("deprecation")
public class BrooklynApi {
private final String target;
private final ClientExecutor clientExecutor;
+ private final int maxPoolSize;
+ private final int timeOutInMillis;
private static final Logger LOG = LoggerFactory.getLogger(BrooklynApi.class);
/**
- * @deprecated since 0.9.0. Use {@link BrooklynApiFactory#getBrooklynApi(java.net.URL, String, String)} instead
- * @see org.apache.brooklyn.rest.client.DefaultBrooklynApiFactory
- * @see org.apache.brooklyn.rest.client.PoolingBrooklynApiFactory
+ * @deprecated since 0.9.0. Use {@link BrooklynApi#newInstance(String)} instead
*/
@Deprecated
public BrooklynApi(URL endpoint) {
@@ -87,9 +93,7 @@ public class BrooklynApi {
}
/**
- * @deprecated since 0.9.0. Use {@link BrooklynApiFactory#getBrooklynApi(java.net.URL, String, String)} instead
- * @see org.apache.brooklyn.rest.client.DefaultBrooklynApiFactory
- * @see org.apache.brooklyn.rest.client.PoolingBrooklynApiFactory
+ * @deprecated since 0.9.0. Use {@link BrooklynApi#newInstance(String)} instead
*/
@Deprecated
public BrooklynApi(String endpoint) {
@@ -98,9 +102,7 @@ public class BrooklynApi {
}
/**
- * @deprecated since 0.9.0. Use {@link BrooklynApiFactory#getBrooklynApi(java.net.URL, String, String)} instead
- * @see org.apache.brooklyn.rest.client.DefaultBrooklynApiFactory
- * @see org.apache.brooklyn.rest.client.PoolingBrooklynApiFactory
+ * @deprecated since 0.9.0. Use {@link BrooklynApi#newInstance(String, String, String)} instead
*/
@Deprecated
public BrooklynApi(URL endpoint, String username, String password) {
@@ -108,9 +110,7 @@ public class BrooklynApi {
}
/**
- * @deprecated since 0.9.0. Use {@link BrooklynApiFactory#getBrooklynApi(java.net.URL, String, String)} instead
- * @see org.apache.brooklyn.rest.client.DefaultBrooklynApiFactory
- * @see org.apache.brooklyn.rest.client.PoolingBrooklynApiFactory
+ * @deprecated since 0.9.0. Use {@link BrooklynApi#newInstance(String, String, String)} instead
*/
@Deprecated
public BrooklynApi(String endpoint, String username, String password) {
@@ -118,9 +118,7 @@ public class BrooklynApi {
}
/**
- * @deprecated since 0.9.0. Use {@link BrooklynApiFactory#getBrooklynApi(java.net.URL, String, String)} instead
- * @see org.apache.brooklyn.rest.client.DefaultBrooklynApiFactory
- * @see org.apache.brooklyn.rest.client.PoolingBrooklynApiFactory
+ * @deprecated since 0.9.0. Use {@link BrooklynApi#newInstance(String, String, String)} instead
*/
@Deprecated
public BrooklynApi(URL endpoint, @Nullable Credentials credentials) {
@@ -128,43 +126,131 @@ public class BrooklynApi {
}
/**
- * @deprecated since 0.9.0. Use {@link BrooklynApiFactory#getBrooklynApi(java.net.URL, String, String)} instead
- * @see org.apache.brooklyn.rest.client.DefaultBrooklynApiFactory
- * @see org.apache.brooklyn.rest.client.PoolingBrooklynApiFactory
+ * Creates a BrooklynApi using an HTTP connection pool
+ *
+ * @deprecated since 0.9.0. Use {@link BrooklynApi#newInstance(String, String, String)} instead
*/
@Deprecated
public BrooklynApi(String endpoint, @Nullable Credentials credentials) {
+ this(endpoint, credentials, 20, 5000);
+ }
+
+ /**
+ * Creates a BrooklynApi using a custom ClientExecutor
+ *
+ * @param endpoint the Brooklyn endpoint
+ * @param clientExecutor the ClientExecutor
+ * @see #getClientExecutor(org.apache.http.auth.Credentials)
+ */
+ public BrooklynApi(URL endpoint, ClientExecutor clientExecutor) {
+ this.target = checkNotNull(endpoint, "endpoint").toString();
+ this.maxPoolSize = -1;
+ this.timeOutInMillis = -1;
+ this.clientExecutor = checkNotNull(clientExecutor, "clientExecutor");
+ }
+
+ /**
+ * Creates a BrooklynApi using an HTTP connection pool
+ *
+ * @param endpoint the Brooklyn endpoint
+ * @param credentials user credentials or null
+ * @param maxPoolSize maximum pool size
+ * @param timeOutInMillis connection timeout in milliseconds
+ */
+ public BrooklynApi(String endpoint, @Nullable Credentials credentials, int maxPoolSize, int timeOutInMillis) {
try {
new URL(checkNotNull(endpoint, "endpoint"));
} catch (MalformedURLException e) {
throw new IllegalArgumentException(e);
}
-
this.target = endpoint;
- if (credentials != null) {
- DefaultHttpClient httpClient = new DefaultHttpClient();
- httpClient.getCredentialsProvider().setCredentials(AuthScope.ANY, credentials);
- this.clientExecutor = new ApacheHttpClient4Executor(httpClient);
- } else {
- this.clientExecutor = ClientRequest.getDefaultExecutor();
+ this.maxPoolSize = maxPoolSize;
+ this.timeOutInMillis = timeOutInMillis;
+ this.clientExecutor = getClientExecutor(credentials);
+ }
+
+ private Supplier<PoolingHttpClientConnectionManager> connectionManagerSupplier = Suppliers.memoize(new Supplier<PoolingHttpClientConnectionManager>() {
+ @Override
+ public PoolingHttpClientConnectionManager get() {
+ PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager();
+ connManager.setMaxTotal(maxPoolSize);
+ connManager.setDefaultMaxPerRoute(maxPoolSize);
+ return connManager;
}
+ });
+
+ private Supplier<RequestConfig> reqConfSupplier = Suppliers.memoize(new Supplier<RequestConfig>() {
+ @Override
+ public RequestConfig get() {
+ return RequestConfig.custom()
+ .setConnectTimeout(timeOutInMillis)
+ .setConnectionRequestTimeout(timeOutInMillis)
+ .build();
+ }
+ });
+
+ /**
+ * Creates a ClientExecutor for this BrooklynApi
+ */
+ protected ClientExecutor getClientExecutor(Credentials credentials) {
+ CredentialsProvider provider = new BasicCredentialsProvider();
+ if (credentials != null) provider.setCredentials(AuthScope.ANY, credentials);
+
+ CloseableHttpClient httpClient = HttpClients.custom()
+ .setDefaultCredentialsProvider(provider)
+ .setDefaultRequestConfig(reqConfSupplier.get())
+ .setConnectionManager(connectionManagerSupplier.get())
+ .build();
+
+ return new ApacheHttpClient4Executor(httpClient);
}
/**
- * @deprecated since 0.9.0. Use {@link BrooklynApiFactory#getBrooklynApi(java.net.URL, String, String)} instead
- * @see org.apache.brooklyn.rest.client.DefaultBrooklynApiFactory
- * @see org.apache.brooklyn.rest.client.PoolingBrooklynApiFactory
+ * Creates a BrooklynApi using an HTTP connection pool
+ *
+ * @param endpoint the Brooklyn endpoint
+ * @return a new BrooklynApi instance
*/
- @Deprecated
- public BrooklynApi(URL endpoint, ClientExecutor clientExecutor) {
- this.target = checkNotNull(endpoint, "endpoint").toString();
- this.clientExecutor = checkNotNull(clientExecutor, "clientExecutor");
+ public static BrooklynApi newInstance(String endpoint) {
+ return new BrooklynApi(endpoint, null);
}
- // to be used by factories
- BrooklynApi(ClientExecutor clientExecutor, URL endpoint) {
- this.target = checkNotNull(endpoint, "endpoint").toString();
- this.clientExecutor = checkNotNull(clientExecutor, "clientExecutor");
+ /**
+ * Creates a BrooklynApi using an HTTP connection pool
+ *
+ * @param endpoint the Brooklyn endpoint
+ * @param maxPoolSize maximum connection pool size
+ * @param timeOutInMillis connection timeout in millisecond
+ * @return a new BrooklynApi instance
+ */
+ public static BrooklynApi newInstance(String endpoint, int maxPoolSize, int timeOutInMillis) {
+ return new BrooklynApi(endpoint, null, maxPoolSize, timeOutInMillis);
+ }
+
+ /**
+ * Creates a BrooklynApi using an HTTP connection pool
+ *
+ * @param endpoint the Brooklyn endpoint
+ * @param username for authentication
+ * @param password for authentication
+ * @return a new BrooklynApi instance
+ */
+ public static BrooklynApi newInstance(String endpoint, String username, String password) {
+ return new BrooklynApi(endpoint, new UsernamePasswordCredentials(username, password));
+ }
+
+ /**
+ * Creates a BrooklynApi using an HTTP connection pool
+ *
+ * @param endpoint the Brooklyn endpoint
+ * @param username for authentication
+ * @param password for authentication
+ * @param maxPoolSize maximum connection pool size
+ * @param timeOutInMillis connection timeout in millisecond
+ * @return a new BrooklynApi instance
+ */
+ public static BrooklynApi newInstance(String endpoint, String username, String password, int maxPoolSize, int timeOutInMillis) {
+ return new BrooklynApi(endpoint, new UsernamePasswordCredentials(username, password), maxPoolSize, timeOutInMillis);
}
@SuppressWarnings("unchecked")
@@ -172,7 +258,7 @@ public class BrooklynApi {
final T result0 = ProxyFactory.create(clazz, target, clientExecutor);
return (T) Proxy.newProxyInstance(clazz.getClassLoader(), new Class<?>[] { clazz }, new InvocationHandler() {
@Override
- public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
try {
Object result1 = method.invoke(result0, args);
Class<?> type = String.class;
@@ -191,11 +277,11 @@ public class BrooklynApi {
e = ((InvocationTargetException)e).getTargetException();
}
throw Exceptions.propagate(e);
- }
+ }
}
-
+
private boolean isStatusCodeHealthy(int code) { return (code>=200 && code<=299); }
-
+
private Class<?> getClassFromMethodAnnotationOrDefault(Method method, Class<?> def){
Class<?> type;
try{
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/934bb74f/usage/rest-client/src/main/java/org/apache/brooklyn/rest/client/BrooklynApiFactory.java
----------------------------------------------------------------------
diff --git a/usage/rest-client/src/main/java/org/apache/brooklyn/rest/client/BrooklynApiFactory.java b/usage/rest-client/src/main/java/org/apache/brooklyn/rest/client/BrooklynApiFactory.java
deleted file mode 100644
index b32c227..0000000
--- a/usage/rest-client/src/main/java/org/apache/brooklyn/rest/client/BrooklynApiFactory.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.brooklyn.rest.client;
-
-import java.net.URL;
-
-/**
- * Creates {@link BrooklynApi} instances.
- */
-public interface BrooklynApiFactory {
-
- BrooklynApi getBrooklynApi(URL endpoint, String username, String password);
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/934bb74f/usage/rest-client/src/main/java/org/apache/brooklyn/rest/client/DefaultBrooklynApiFactory.java
----------------------------------------------------------------------
diff --git a/usage/rest-client/src/main/java/org/apache/brooklyn/rest/client/DefaultBrooklynApiFactory.java b/usage/rest-client/src/main/java/org/apache/brooklyn/rest/client/DefaultBrooklynApiFactory.java
deleted file mode 100644
index 48e0eeb..0000000
--- a/usage/rest-client/src/main/java/org/apache/brooklyn/rest/client/DefaultBrooklynApiFactory.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.brooklyn.rest.client;
-
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.jboss.resteasy.client.ClientExecutor;
-import org.jboss.resteasy.client.ClientRequest;
-import org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor;
-
-import java.net.URL;
-
-/**
- * BrooklynApi factory.
- * <p/>
- * This Factory creates BrooklynApi instances that use an {@link ApacheHttpClient4Executor}
- */
-public class DefaultBrooklynApiFactory implements BrooklynApiFactory {
-
- @SuppressWarnings("deprecation")
- @Override
- public BrooklynApi getBrooklynApi(URL endpoint, String username, String password) {
- ClientExecutor clientExecutor;
- if (username != null) {
- DefaultHttpClient httpClient = new DefaultHttpClient();
- httpClient.getCredentialsProvider().setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, password));
- clientExecutor = new ApacheHttpClient4Executor(httpClient);
- } else {
- clientExecutor = ClientRequest.getDefaultExecutor();
- }
- return new BrooklynApi(clientExecutor, endpoint);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/934bb74f/usage/rest-client/src/main/java/org/apache/brooklyn/rest/client/PoolingBrooklynApiFactory.java
----------------------------------------------------------------------
diff --git a/usage/rest-client/src/main/java/org/apache/brooklyn/rest/client/PoolingBrooklynApiFactory.java b/usage/rest-client/src/main/java/org/apache/brooklyn/rest/client/PoolingBrooklynApiFactory.java
deleted file mode 100644
index f58f4f5..0000000
--- a/usage/rest-client/src/main/java/org/apache/brooklyn/rest/client/PoolingBrooklynApiFactory.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * 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.brooklyn.rest.client;
-
-import com.google.common.base.Supplier;
-import com.google.common.base.Suppliers;
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.Credentials;
-import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.client.CredentialsProvider;
-import org.apache.http.client.config.RequestConfig;
-import org.apache.http.impl.client.BasicCredentialsProvider;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
-import org.jboss.resteasy.client.ClientExecutor;
-import org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor;
-
-import java.net.URL;
-
-/**
- * BrooklynApi factory.
- * <p/>
- * This Factory uses a {@link PoolingHttpClientConnectionManager} to reuse HTTP connections.
- */
-public class PoolingBrooklynApiFactory implements BrooklynApiFactory {
-
- private Supplier<PoolingHttpClientConnectionManager> connectionManagerSupplier = Suppliers.memoize(new Supplier<PoolingHttpClientConnectionManager>() {
- @Override
- public PoolingHttpClientConnectionManager get() {
- PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager();
- connManager.setMaxTotal(maxPoolSize);
- connManager.setDefaultMaxPerRoute(maxPoolSize);
- return connManager;
- }
- });
-
- private Supplier<RequestConfig> reqConfSupplier = Suppliers.memoize(new Supplier<RequestConfig>() {
- @Override
- public RequestConfig get() {
-
- return RequestConfig.custom()
- .setConnectTimeout(timeOutInMillis)
- .setConnectionRequestTimeout(timeOutInMillis)
- .build();
- }
- });
-
- protected final int maxPoolSize;
- protected final int timeOutInMillis;
-
- @SuppressWarnings("deprecation")
- private ClientExecutor getPoolingClientExecutor(Credentials credentials) {
- CredentialsProvider provider = new BasicCredentialsProvider();
- provider.setCredentials(AuthScope.ANY, credentials);
-
- CloseableHttpClient httpClient = HttpClients.custom()
- .setDefaultCredentialsProvider(provider)
- .setDefaultRequestConfig(reqConfSupplier.get())
- .setConnectionManager(connectionManagerSupplier.get())
- .build();
-
- return new ApacheHttpClient4Executor(httpClient);
- }
-
- /**
- * Creates a new PoolingBrooklynApiFactory with a max pool size of 20
- * connections, and a connection timeout of 5000 milliseconds
- */
- public PoolingBrooklynApiFactory() {
- this(20, 5000);
- }
-
- /**
- * Creates a new PoolingBrooklynApiFactory
- * @param maxPoolSize the maximum size of the pool
- * @param timeOutInMillis connection timeout in milliseconds
- */
- public PoolingBrooklynApiFactory(int maxPoolSize, int timeOutInMillis) {
- this.maxPoolSize = maxPoolSize;
- this.timeOutInMillis = timeOutInMillis;
- }
-
- @SuppressWarnings("deprecation")
- @Override
- public BrooklynApi getBrooklynApi(URL endpoint, String username, String password) {
- UsernamePasswordCredentials credentials =
- (username != null) ? new UsernamePasswordCredentials(username, password)
- : null;
- return new BrooklynApi(getPoolingClientExecutor(credentials), endpoint);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/934bb74f/usage/rest-client/src/test/java/org/apache/brooklyn/rest/client/ApplicationResourceIntegrationTest.java
----------------------------------------------------------------------
diff --git a/usage/rest-client/src/test/java/org/apache/brooklyn/rest/client/ApplicationResourceIntegrationTest.java b/usage/rest-client/src/test/java/org/apache/brooklyn/rest/client/ApplicationResourceIntegrationTest.java
index 7015113..645fd8b 100644
--- a/usage/rest-client/src/test/java/org/apache/brooklyn/rest/client/ApplicationResourceIntegrationTest.java
+++ b/usage/rest-client/src/test/java/org/apache/brooklyn/rest/client/ApplicationResourceIntegrationTest.java
@@ -89,9 +89,7 @@ public class ApplicationResourceIntegrationTest {
.managementContext(getManagementContext())
.start();
- DefaultBrooklynApiFactory defaultBrooklynApiFactory = new DefaultBrooklynApiFactory();
-
- api = defaultBrooklynApiFactory.getBrooklynApi(new URL("http://localhost:" + server.getConnectors()[0].getPort() + "/"), null, null);
+ api = BrooklynApi.newInstance("http://localhost:" + server.getConnectors()[0].getPort() + "/");
}
@AfterClass(alwaysRun = true)
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/934bb74f/usage/rest-client/src/test/java/org/apache/brooklyn/rest/client/BrooklynApiRestClientTest.java
----------------------------------------------------------------------
diff --git a/usage/rest-client/src/test/java/org/apache/brooklyn/rest/client/BrooklynApiRestClientTest.java b/usage/rest-client/src/test/java/org/apache/brooklyn/rest/client/BrooklynApiRestClientTest.java
index abc3bfe..f952c01 100644
--- a/usage/rest-client/src/test/java/org/apache/brooklyn/rest/client/BrooklynApiRestClientTest.java
+++ b/usage/rest-client/src/test/java/org/apache/brooklyn/rest/client/BrooklynApiRestClientTest.java
@@ -71,9 +71,7 @@ public class BrooklynApiRestClientTest {
.securityProvider(TestSecurityProvider.class)
.start();
- DefaultBrooklynApiFactory defaultBrooklynApiFactory = new DefaultBrooklynApiFactory();
-
- api = defaultBrooklynApiFactory.getBrooklynApi(new URL("http://localhost:" + server.getConnectors()[0].getPort() + "/"),
+ api = BrooklynApi.newInstance("http://localhost:" + server.getConnectors()[0].getPort() + "/",
TestSecurityProvider.USER, TestSecurityProvider.PASSWORD);
}