Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ public class Ds3ClientBuilder implements Builder<Ds3Client> {
static final private String ACCESS_KEY = "DS3_ACCESS_KEY";
static final private String SECRET_KEY = "DS3_SECRET_KEY";

private NetworkClient networkClient;
final private String endpoint;
final private Credentials credentials;

Expand Down Expand Up @@ -198,11 +199,22 @@ public Ds3ClientBuilder withUserAgent(final String userAgent) {
return this;
}

/**
* Set a custom NetworkClient implementation. If this is set, all other connection parameters will be ignored.
*/
public Ds3ClientBuilder withNetworkClient(final NetworkClient networkClient) {
this.networkClient = networkClient;
return this;
}

/**
* Returns a new Ds3Client instance.
*/
@Override
public Ds3Client build() {
if (this.networkClient != null) {
return new Ds3ClientImpl(this.networkClient);
}
LOG.info("Making connection details for endpoint [{}] using this authorization id [{}]",
this.endpoint, this.credentials.getClientId());
final ConnectionDetailsImpl.Builder connBuilder = ConnectionDetailsImpl
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ public NetworkClientImpl(final ConnectionDetails connectionDetails) {
this(connectionDetails, createDefaultClient(connectionDetails));
}

private NetworkClientImpl(final ConnectionDetails connectionDetails, final CloseableHttpClient client) {
public NetworkClientImpl(final ConnectionDetails connectionDetails, final CloseableHttpClient client) {
if (connectionDetails == null) throw new AssertionError("ConnectionDetails cannot be null");
if (client == null) throw new AssertionError("CloseableHttpClient cannot be null");
try {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.spectralogic.ds3client;

import com.spectralogic.ds3client.models.common.Credentials;
import com.spectralogic.ds3client.networking.ConnectionDetails;
import com.spectralogic.ds3client.networking.NetworkClient;
import com.spectralogic.ds3client.networking.NetworkClientImpl;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.junit.Test;
import static org.mockito.Mockito.mock;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;

public class Issue625Injection_Test {

@Test(timeout = 10000)
public void testHttpClientInjection() {
final ConnectionDetails connectionDetails = ConnectionDetailsImpl.builder("http://localhost:8080", new Credentials("id", "key")).build();
final CloseableHttpClient customHttpClient = HttpClients.createDefault();

// This constructor was previously private
final NetworkClient netClient = new NetworkClientImpl(connectionDetails, customHttpClient);

final Ds3Client ds3Client = new Ds3ClientImpl(netClient);

assertThat(((Ds3ClientImpl)ds3Client).getNetClient(), is(netClient));
}

@Test(timeout = 10000)
public void testBuilderNetworkClientInjection() {
final NetworkClient netClient = mock(NetworkClient.class);

final Ds3Client ds3Client = Ds3ClientBuilder.create("http://localhost:8080", new Credentials("id", "key"))
.withNetworkClient(netClient)
.build();

assertThat(((Ds3ClientImpl)ds3Client).getNetClient(), is(netClient));
}
}
Loading