Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Deprecate Guava Multimap and Function in favor of JDK & Remove Guava collections #217

Merged
merged 6 commits into from
Mar 1, 2023
Merged
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
20 changes: 17 additions & 3 deletions src/main/java/com/treasuredata/client/AbstractTDClientBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,12 @@
*/
package com.treasuredata.client;

import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.Multimap;

import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Optional;
import java.util.stream.Stream;
Expand Down Expand Up @@ -66,7 +69,7 @@ public abstract class AbstractTDClientBuilder<ClientImpl, BuilderImpl extends Ab
protected int connectTimeoutMillis = 15000;
protected int readTimeoutMillis = 60000;
protected int connectionPoolSize = 64;
protected Multimap<String, String> headers = ImmutableMultimap.of();
protected Map<String, Collection<String>> headers = Collections.emptyMap();

private static Optional<String> getConfigProperty(Properties p, TDClientConfig.Type key)
{
Expand Down Expand Up @@ -328,9 +331,20 @@ public BuilderImpl setConnectionPoolSize(int connectionPoolSize)
return self();
}

/**
* @deprecated Use {@link #setHeaders(Map)} instead.
* @param headers
* @return
*/
@Deprecated
public BuilderImpl setHeaders(Multimap<String, String> headers)
{
this.headers = ImmutableMultimap.copyOf(headers);
return this.setHeaders(headers.asMap());
}

public BuilderImpl setHeaders(Map<String, ? extends Collection<String>> headers)
{
this.headers = Collections.unmodifiableMap(new HashMap<>(headers));
return self();
}

Expand Down
74 changes: 60 additions & 14 deletions src/main/java/com/treasuredata/client/TDApiRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,20 @@
*/
package com.treasuredata.client;

import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.Multimap;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.Collections;

import static java.util.Objects.requireNonNull;

Expand All @@ -45,7 +46,7 @@ public class TDApiRequest
private final TDHttpMethod method;
private final String path;
private final Map<String, String> queryParams;
private final Multimap<String, String> headerParams;
private final Map<String, Collection<String>> headerParams;
private final Optional<String> postJson;
private final Optional<File> putFile;
private final Optional<byte[]> content;
Expand All @@ -57,7 +58,7 @@ public class TDApiRequest
TDHttpMethod method,
String path,
Map<String, String> queryParams,
Multimap<String, String> headerParams,
Map<String, Collection<String>> headerParams,
Optional<String> postJson,
Optional<File> putFile,
Optional<byte[]> content,
Expand All @@ -80,7 +81,7 @@ public class TDApiRequest

public TDApiRequest withUri(String uri)
{
return new TDApiRequest(method, uri, ImmutableMap.copyOf(queryParams), ImmutableMultimap.copyOf(headerParams), postJson, putFile, content, contentOffset, contentLength, followRedirects);
return new TDApiRequest(method, uri, Collections.unmodifiableMap(new HashMap<>(queryParams)), Collections.unmodifiableMap(new HashMap<>(headerParams)), postJson, putFile, content, contentOffset, contentLength, followRedirects);
}

public String getPath()
Expand All @@ -98,7 +99,21 @@ public Map<String, String> getQueryParams()
return queryParams;
}

/**
* @deprecated Use {@link #getAllHeaders()} instead.
* @return
*/
@Deprecated
public Multimap<String, String> getHeaderParams()
{
ImmutableMultimap.Builder<String, String> builder = new ImmutableMultimap.Builder<>();
for (Map.Entry<String, Collection<String>> e : headerParams.entrySet()) {
builder.putAll(e.getKey(), e.getValue());
}
return builder.build();
}

public Map<String, Collection<String>> getAllHeaders()
{
return headerParams;
}
Expand Down Expand Up @@ -135,12 +150,12 @@ public Optional<Boolean> getFollowRedirects()

public static class Builder
{
private static final Map<String, String> EMPTY_MAP = ImmutableMap.of();
private static final Multimap<String, String> EMPTY_HEADERS = ImmutableMultimap.of();
private static final Map<String, String> EMPTY_MAP = Collections.emptyMap();
private static final Map<String, Collection<String>> EMPTY_HEADERS = Collections.emptyMap();
private TDHttpMethod method;
private String path;
private Map<String, String> queryParams;
private ImmutableMultimap.Builder<String, String> headerParams;
private HashMap<String, Collection<String>> headerParams;
private Optional<String> postJson = Optional.empty();
private Optional<File> file = Optional.empty();
private Optional<byte[]> content = Optional.empty();
Expand Down Expand Up @@ -175,23 +190,54 @@ public static Builder DELETE(String uri)
}

public Builder addHeader(String key, String value)
{
return addHeaders(key, Collections.singletonList(value));
}

/**
* @deprecated Use {@link #addHeaders(Map)} or {@link #addHeaders(String, Collection)} instead.
* @param headers
* @return
*/
@Deprecated
public Builder addHeaders(Multimap<String, String> headers)
{
return this.addHeaders(headers.asMap());
}

public Builder addHeaders(String key, Collection<String> values)
{
if (headerParams == null) {
headerParams = ImmutableMultimap.builder();
headerParams = new HashMap<>();
}
headerParams.put(key, value);
addHeaderValues(key, values);
return this;
}

public Builder addHeaders(Multimap<String, String> headers)
public Builder addHeaders(Map<String, ? extends Collection<String>> headers)
{
if (headerParams == null) {
headerParams = ImmutableMultimap.builder();
headerParams = new HashMap<>();
}
for (Map.Entry<String, ? extends Collection<String>> e : headers.entrySet()) {
addHeaderValues(e.getKey(), e.getValue());
}
headerParams.putAll(headers);
return this;
}

private void addHeaderValues(String key, Collection<String> values)
{
headerParams.compute(key, (unused, list) -> {
if (list == null) {
return new ArrayList<>(values);
}
else {
list.addAll(values);
return list;
}
});
}

public Builder addQueryParam(String key, String value)
{
if (queryParams == null) {
Expand Down Expand Up @@ -233,7 +279,7 @@ public TDApiRequest build()
method,
path,
queryParams != null ? queryParams : EMPTY_MAP,
headerParams != null ? headerParams.build() : EMPTY_HEADERS,
headerParams != null ? Collections.unmodifiableMap(new HashMap<>(headerParams)) : EMPTY_HEADERS,
postJson,
file,
content,
Expand Down
Loading