diff --git a/pom.xml b/pom.xml
index 9c48ce63..d69b0c45 100644
--- a/pom.xml
+++ b/pom.xml
@@ -160,6 +160,14 @@
2.9.9
+
+
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jdk8
+ 2.9.9
+
+
org.slf4j
slf4j-api
diff --git a/src/main/java/com/treasuredata/client/AbstractTDClientBuilder.java b/src/main/java/com/treasuredata/client/AbstractTDClientBuilder.java
index 64e969d6..7680479a 100644
--- a/src/main/java/com/treasuredata/client/AbstractTDClientBuilder.java
+++ b/src/main/java/com/treasuredata/client/AbstractTDClientBuilder.java
@@ -18,10 +18,10 @@
*/
package com.treasuredata.client;
-import com.google.common.base.Optional;
import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.Multimap;
+import java.util.Optional;
import java.util.Properties;
import static com.treasuredata.client.TDClientConfig.ENV_TD_CLIENT_APIKEY;
@@ -50,13 +50,13 @@
*/
public abstract class AbstractTDClientBuilder>
{
- protected Optional endpoint = Optional.absent();
- protected Optional port = Optional.absent();
+ protected Optional endpoint = Optional.empty();
+ protected Optional port = Optional.empty();
protected boolean useSSL = true;
- protected Optional apiKey = Optional.absent();
- protected Optional user = Optional.absent();
- protected Optional password = Optional.absent();
- protected Optional proxy = Optional.absent();
+ protected Optional apiKey = Optional.empty();
+ protected Optional user = Optional.empty();
+ protected Optional password = Optional.empty();
+ protected Optional proxy = Optional.empty();
protected int retryLimit = 7;
protected int retryInitialIntervalMillis = 500;
protected int retryMaxIntervalMillis = 60000;
@@ -73,7 +73,7 @@ private static Optional getConfigProperty(Properties p, TDClientConfig.T
private static Optional getConfigProperty(Properties p, String key)
{
- return Optional.fromNullable(p.getProperty(key));
+ return Optional.ofNullable(p.getProperty(key));
}
private static Optional getConfigPropertyInt(Properties p, TDClientConfig.Type key)
@@ -93,7 +93,7 @@ private static Optional getConfigPropertyInt(Properties p, String key)
}
}
else {
- return Optional.absent();
+ return Optional.empty();
}
}
@@ -114,7 +114,7 @@ private static Optional getConfigPropertyBoolean(Properties p, String k
}
}
else {
- return Optional.absent();
+ return Optional.empty();
}
}
@@ -130,7 +130,7 @@ private static Optional getConfigPropertyDouble(Properties p, TDClientCo
}
}
else {
- return Optional.absent();
+ return Optional.empty();
}
}
@@ -169,24 +169,29 @@ protected AbstractTDClientBuilder(boolean loadTDConf)
*/
public BuilderImpl setProperties(Properties p)
{
- this.endpoint = getConfigProperty(p, API_ENDPOINT)
- .or(getConfigProperty(p, "endpoint"))
- .or(endpoint);
- this.port = getConfigPropertyInt(p, API_PORT)
- .or(getConfigPropertyInt(p, "port"))
- .or(port);
- this.useSSL = getConfigPropertyBoolean(p, USESSL)
- .or(getConfigPropertyBoolean(p, "usessl"))
- .or(useSSL);
- this.apiKey = getConfigProperty(p, APIKEY)
- .or(getConfigProperty(p, "apikey"))
- .or(apiKey);
- this.user = getConfigProperty(p, USER)
- .or(getConfigProperty(p, "user"))
- .or(user);
- this.password = getConfigProperty(p, PASSOWRD)
- .or(getConfigProperty(p, "password"))
- .or(password);
+ this.endpoint = getConfigProperty(p, API_ENDPOINT).isPresent()
+ ? getConfigProperty(p, API_ENDPOINT) : getConfigProperty(p, "endpoint").isPresent()
+ ? getConfigProperty(p, "endpoint") : endpoint;
+
+ this.port = getConfigPropertyInt(p, API_PORT).isPresent()
+ ? getConfigPropertyInt(p, API_PORT) : getConfigPropertyInt(p, "port").isPresent()
+ ? getConfigPropertyInt(p, "port") : port;
+
+ this.useSSL = getConfigPropertyBoolean(p, USESSL).isPresent()
+ ? getConfigPropertyBoolean(p, USESSL).get() : getConfigPropertyBoolean(p, "usessl").isPresent()
+ ? getConfigPropertyBoolean(p, "usessl").get() : useSSL;
+
+ this.apiKey = getConfigProperty(p, APIKEY).isPresent()
+ ? getConfigProperty(p, APIKEY) : getConfigProperty(p, "apikey").isPresent()
+ ? getConfigProperty(p, "apikey") : apiKey;
+
+ this.user = getConfigProperty(p, USER).isPresent()
+ ? getConfigProperty(p, USER) : getConfigProperty(p, "user").isPresent()
+ ? getConfigProperty(p, "user") : user;
+
+ this.password = getConfigProperty(p, PASSOWRD).isPresent()
+ ? getConfigProperty(p, PASSOWRD) : getConfigProperty(p, "password").isPresent()
+ ? getConfigProperty(p, "password") : password;
// proxy
boolean hasProxy = false;
@@ -223,16 +228,24 @@ public BuilderImpl setProperties(Properties p)
hasProxy = true;
proxyConfig.setPassword(proxyPassword.get());
}
- this.proxy = Optional.fromNullable(hasProxy ? proxyConfig.createProxyConfig() : null);
+ this.proxy = Optional.ofNullable(hasProxy ? proxyConfig.createProxyConfig() : null);
// http client parameter
- this.retryLimit = getConfigPropertyInt(p, RETRY_LIMIT).or(retryLimit);
- this.retryInitialIntervalMillis = getConfigPropertyInt(p, RETRY_INITIAL_INTERVAL_MILLIS).or(retryInitialIntervalMillis);
- this.retryMaxIntervalMillis = getConfigPropertyInt(p, RETRY_MAX_INTERVAL_MILLIS).or(retryMaxIntervalMillis);
- this.retryMultiplier = getConfigPropertyDouble(p, RETRY_MULTIPLIER).or(retryMultiplier);
- this.connectTimeoutMillis = getConfigPropertyInt(p, CONNECT_TIMEOUT_MILLIS).or(connectTimeoutMillis);
- this.readTimeoutMillis = getConfigPropertyInt(p, READ_TIMEOUT_MILLIS).or(readTimeoutMillis);
- this.connectionPoolSize = getConfigPropertyInt(p, CONNECTION_POOL_SIZE).or(connectionPoolSize);
+
+ this.retryLimit = getConfigPropertyInt(p, RETRY_LIMIT).isPresent()
+ ? getConfigPropertyInt(p, RETRY_LIMIT).get() : retryLimit;
+ this.retryInitialIntervalMillis = getConfigPropertyInt(p, RETRY_INITIAL_INTERVAL_MILLIS).isPresent()
+ ? getConfigPropertyInt(p, RETRY_INITIAL_INTERVAL_MILLIS).get() : retryInitialIntervalMillis;
+ this.retryMaxIntervalMillis = getConfigPropertyInt(p, RETRY_MAX_INTERVAL_MILLIS).isPresent()
+ ? getConfigPropertyInt(p, RETRY_MAX_INTERVAL_MILLIS).get() : retryMaxIntervalMillis;
+ this.retryMultiplier = getConfigPropertyDouble(p, RETRY_MULTIPLIER).isPresent()
+ ? getConfigPropertyDouble(p, RETRY_MULTIPLIER).get() : retryMultiplier;
+ this.connectTimeoutMillis = getConfigPropertyInt(p, CONNECT_TIMEOUT_MILLIS).isPresent()
+ ? getConfigPropertyInt(p, CONNECT_TIMEOUT_MILLIS).get() : connectTimeoutMillis;
+ this.readTimeoutMillis = getConfigPropertyInt(p, READ_TIMEOUT_MILLIS).isPresent()
+ ? getConfigPropertyInt(p, READ_TIMEOUT_MILLIS).get() : readTimeoutMillis;
+ this.connectionPoolSize = getConfigPropertyInt(p, CONNECTION_POOL_SIZE).isPresent()
+ ? getConfigPropertyInt(p, CONNECTION_POOL_SIZE).get() : connectionPoolSize;
return self();
}
diff --git a/src/main/java/com/treasuredata/client/ProxyConfig.java b/src/main/java/com/treasuredata/client/ProxyConfig.java
index 6e779c6d..aae46871 100644
--- a/src/main/java/com/treasuredata/client/ProxyConfig.java
+++ b/src/main/java/com/treasuredata/client/ProxyConfig.java
@@ -18,11 +18,11 @@
*/
package com.treasuredata.client;
-import com.google.common.base.Optional;
-
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.Optional;
+
/**
* Proxy configuration to access TD API
*/
@@ -102,8 +102,8 @@ public static class ProxyConfigBuilder
private String host = "localhost";
private int port = 8080;
private boolean useSSL = false;
- private Optional user = Optional.absent();
- private Optional password = Optional.absent();
+ private Optional user = Optional.empty();
+ private Optional password = Optional.empty();
public ProxyConfigBuilder()
{
diff --git a/src/main/java/com/treasuredata/client/TDApiRequest.java b/src/main/java/com/treasuredata/client/TDApiRequest.java
index ccabe43f..f32d28f7 100644
--- a/src/main/java/com/treasuredata/client/TDApiRequest.java
+++ b/src/main/java/com/treasuredata/client/TDApiRequest.java
@@ -18,7 +18,6 @@
*/
package com.treasuredata.client;
-import com.google.common.base.Optional;
import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableMultimap;
@@ -32,6 +31,7 @@
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
+import java.util.Optional;
import static com.google.common.base.Preconditions.checkNotNull;
@@ -142,12 +142,12 @@ public static class Builder
private String path;
private Map queryParams;
private ImmutableMultimap.Builder headerParams;
- private Optional postJson = Optional.absent();
- private Optional file = Optional.absent();
- private Optional content = Optional.absent();
+ private Optional postJson = Optional.empty();
+ private Optional file = Optional.empty();
+ private Optional content = Optional.empty();
private int contentOffset;
private int contentLength;
- private Optional followRedirects = Optional.absent();
+ private Optional followRedirects = Optional.empty();
Builder(TDHttpMethod method, String path)
{
diff --git a/src/main/java/com/treasuredata/client/TDClient.java b/src/main/java/com/treasuredata/client/TDClient.java
index 37eb604f..a5d35001 100644
--- a/src/main/java/com/treasuredata/client/TDClient.java
+++ b/src/main/java/com/treasuredata/client/TDClient.java
@@ -24,7 +24,6 @@
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Function;
-import com.google.common.base.Optional;
import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
@@ -76,6 +75,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Properties;
import java.util.regex.Pattern;
@@ -237,13 +237,13 @@ protected ResultType doPost(String path, Map queryP
protected ResultType doPost(String path, Class resultTypeClass)
throws TDClientException
{
- return this.doPost(path, ImmutableMap.of(), Optional.absent(), resultTypeClass);
+ return this.doPost(path, ImmutableMap.of(), Optional.empty(), resultTypeClass);
}
protected ResultType doPost(String path, Map queryParam, Class resultTypeClass)
throws TDClientException
{
- return this.doPost(path, queryParam, Optional.absent(), resultTypeClass);
+ return this.doPost(path, queryParam, Optional.empty(), resultTypeClass);
}
protected ResultType doPut(String path, Map queryParam, File file, Class resultTypeClass)
@@ -343,7 +343,7 @@ public TDUserList listUsers()
public String serverStatus()
{
// No API key is requried for server_status
- return httpClient.call(TDApiRequest.Builder.GET("/v3/system/server_status").build(), Optional.absent());
+ return httpClient.call(TDApiRequest.Builder.GET("/v3/system/server_status").build(), Optional.empty());
}
@Override
@@ -654,7 +654,7 @@ public String submit(TDJobRequest jobRequest)
doPost(
buildUrl("/v3/job/issue", jobRequest.getType().getType(), jobRequest.getDatabase()),
queryParam,
- jobRequest.getConfig().transform(new Function()
+ jobRequest.getConfig().map(new Function()
{
public String apply(ObjectNode config)
{
@@ -781,13 +781,13 @@ public void performBulkImportSession(String sessionName, Optional poolNa
@Override
public void performBulkImportSession(String sessionName, TDJob.Priority priority)
{
- performBulkImportSession(sessionName, Optional.absent(), priority);
+ performBulkImportSession(sessionName, Optional.empty(), priority);
}
@Override
public void performBulkImportSession(String sessionName, Optional poolName, TDJob.Priority priority)
{
- Optional jsonBody = Optional.absent();
+ Optional jsonBody = Optional.empty();
if (poolName.isPresent()) {
jsonBody = Optional.of(JSONObject.toJSONString(ImmutableMap.of("pool_name", poolName.get())));
}
@@ -1062,7 +1062,7 @@ public Optional tableDistribution(String databaseName, Stri
return Optional.of(distribution);
}
catch (TDClientHttpNotFoundException e) {
- return Optional.absent();
+ return Optional.empty();
}
}
diff --git a/src/main/java/com/treasuredata/client/TDClientApi.java b/src/main/java/com/treasuredata/client/TDClientApi.java
index 699f650f..22943534 100644
--- a/src/main/java/com/treasuredata/client/TDClientApi.java
+++ b/src/main/java/com/treasuredata/client/TDClientApi.java
@@ -19,7 +19,6 @@
package com.treasuredata.client;
import com.google.common.base.Function;
-import com.google.common.base.Optional;
import com.google.common.collect.Multimap;
import com.treasuredata.client.model.TDApiKey;
import com.treasuredata.client.model.TDBulkImportSession;
@@ -50,6 +49,7 @@
import java.io.InputStream;
import java.util.Date;
import java.util.List;
+import java.util.Optional;
/**
* Treasure Data Client API
diff --git a/src/main/java/com/treasuredata/client/TDClientConfig.java b/src/main/java/com/treasuredata/client/TDClientConfig.java
index 35d59ead..3702633a 100644
--- a/src/main/java/com/treasuredata/client/TDClientConfig.java
+++ b/src/main/java/com/treasuredata/client/TDClientConfig.java
@@ -19,7 +19,6 @@
package com.treasuredata.client;
import com.fasterxml.jackson.annotation.JsonCreator;
-import com.google.common.base.Optional;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Multimap;
import com.google.common.io.Files;
@@ -33,6 +32,7 @@
import java.net.URISyntaxException;
import java.nio.charset.StandardCharsets;
import java.util.List;
+import java.util.Optional;
import java.util.Properties;
/**
@@ -122,7 +122,7 @@ public static List knownProperties()
int connectionPoolSize,
Multimap headers)
{
- this.endpoint = endpoint.or("api.treasuredata.com");
+ this.endpoint = endpoint.orElse("api.treasuredata.com");
this.port = port;
this.useSSL = useSSL;
this.apiKey = apiKey;
diff --git a/src/main/java/com/treasuredata/client/TDClientException.java b/src/main/java/com/treasuredata/client/TDClientException.java
index 49820131..71d00fb8 100644
--- a/src/main/java/com/treasuredata/client/TDClientException.java
+++ b/src/main/java/com/treasuredata/client/TDClientException.java
@@ -18,7 +18,7 @@
*/
package com.treasuredata.client;
-import com.google.common.base.Optional;
+import java.util.Optional;
import static com.google.common.base.Preconditions.checkNotNull;
@@ -84,7 +84,7 @@ public TDClientException(ErrorType errorType, Exception cause)
public TDClientException(ErrorType errorType, String message)
{
- this(errorType, message, Optional.absent());
+ this(errorType, message, Optional.empty());
}
public ErrorType getErrorType()
diff --git a/src/main/java/com/treasuredata/client/TDClientHttpConflictException.java b/src/main/java/com/treasuredata/client/TDClientHttpConflictException.java
index 02c5953a..0dd01490 100644
--- a/src/main/java/com/treasuredata/client/TDClientHttpConflictException.java
+++ b/src/main/java/com/treasuredata/client/TDClientHttpConflictException.java
@@ -18,7 +18,7 @@
*/
package com.treasuredata.client;
-import com.google.common.base.Optional;
+import java.util.Optional;
/**
* On 409 conflict error (e.g., database already exists)
@@ -42,6 +42,6 @@ public TDClientHttpConflictException(String errorMessage, String conflictsWith)
public Optional getConflictsWith()
{
- return Optional.fromNullable(conflictsWith);
+ return Optional.ofNullable(conflictsWith);
}
}
diff --git a/src/main/java/com/treasuredata/client/TDClientHttpException.java b/src/main/java/com/treasuredata/client/TDClientHttpException.java
index 718b1fa6..89254028 100644
--- a/src/main/java/com/treasuredata/client/TDClientHttpException.java
+++ b/src/main/java/com/treasuredata/client/TDClientHttpException.java
@@ -18,9 +18,8 @@
*/
package com.treasuredata.client;
-import com.google.common.base.Optional;
-
import java.util.Date;
+import java.util.Optional;
/**
* Exception class for reporting http server status code
@@ -47,7 +46,7 @@ public int getStatusCode()
public Optional getRetryAfter()
{
if (retryAfter == -1) {
- return Optional.absent();
+ return Optional.empty();
}
else {
return Optional.of(new Date(retryAfter));
diff --git a/src/main/java/com/treasuredata/client/TDHttpClient.java b/src/main/java/com/treasuredata/client/TDHttpClient.java
index b87a41f8..63e5d02f 100644
--- a/src/main/java/com/treasuredata/client/TDHttpClient.java
+++ b/src/main/java/com/treasuredata/client/TDHttpClient.java
@@ -26,11 +26,11 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectReader;
import com.fasterxml.jackson.datatype.guava.GuavaModule;
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.fasterxml.jackson.datatype.jsonorg.JsonOrgModule;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Function;
import com.google.common.base.Joiner;
-import com.google.common.base.Optional;
import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.Multimap;
import com.treasuredata.client.impl.ProxyAuthenticator;
@@ -57,6 +57,7 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Optional;
import java.util.concurrent.TimeUnit;
import java.util.regex.Pattern;
@@ -85,6 +86,7 @@ public class TDHttpClient
static ObjectMapper defaultObjectMapper = new ObjectMapper()
.registerModule(new JsonOrgModule()) // for mapping query json strings into JSONObject
.registerModule(new GuavaModule()) // for mapping to Guava Optional class
+ .registerModule(new Jdk8Module()) // for handling java.util.Optional correctly
.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, false)
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
@@ -203,14 +205,14 @@ protected String getClientName()
public Request prepareRequest(TDApiRequest apiRequest, Optional apiKeyCache)
{
String queryStr = "";
- String portStr = config.port.transform(new Function()
+ String portStr = config.port.map(new Function()
{
@Override
public String apply(Integer input)
{
return ":" + input.toString();
}
- }).or("");
+ }).orElse("");
String requestUri = apiRequest.getPath().startsWith("http")
? apiRequest.getPath()
: String.format("%s://%s%s%s", config.useSSL ? "https" : "http", config.endpoint, portStr, apiRequest.getPath());
@@ -248,7 +250,7 @@ public String apply(Integer input)
}
// Set API Key after setting the other headers
- Optional apiKey = apiKeyCache.or(config.apiKey);
+ Optional apiKey = apiKeyCache.isPresent() ? apiKeyCache : config.apiKey;
if (apiKey.isPresent()) {
String auth;
if (isNakedTD1Key(apiKey.get())) {
@@ -334,7 +336,7 @@ protected static class RequestContext
public RequestContext(TDClientConfig config, TDApiRequest apiRequest, Optional apiKeyCache)
{
- this(new ExponentialBackOff(config.retryInitialIntervalMillis, config.retryMaxIntervalMillis, config.retryMultiplier), apiRequest, apiKeyCache, Optional.absent());
+ this(new ExponentialBackOff(config.retryInitialIntervalMillis, config.retryMaxIntervalMillis, config.retryMultiplier), apiRequest, apiKeyCache, Optional.empty());
}
public RequestContext(ExponentialBackOff backoff, TDApiRequest apiRequest, Optional apiKeyCache, Optional rootCause)
diff --git a/src/main/java/com/treasuredata/client/TDRequestErrorHandler.java b/src/main/java/com/treasuredata/client/TDRequestErrorHandler.java
index 946941d3..b7542d24 100644
--- a/src/main/java/com/treasuredata/client/TDRequestErrorHandler.java
+++ b/src/main/java/com/treasuredata/client/TDRequestErrorHandler.java
@@ -1,7 +1,6 @@
package com.treasuredata.client;
import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
import com.treasuredata.client.model.TDApiErrorMessage;
import okhttp3.Response;
import org.slf4j.Logger;
@@ -25,6 +24,7 @@
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
+import java.util.Optional;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
@@ -246,7 +246,7 @@ private static String parseConflictsWith(TDApiErrorMessage errorResponse)
@VisibleForTesting
public static Optional extractErrorResponse(Response response)
{
- Optional content = Optional.absent();
+ Optional content = Optional.empty();
try {
try {
content = Optional.of(response.body().string());
@@ -261,12 +261,12 @@ public static Optional extractErrorResponse(Response response
}
else {
// Error message from Proxy server etc.
- return Optional.of(new TDApiErrorMessage("error", content.or("[empty]"), "error"));
+ return Optional.of(new TDApiErrorMessage("error", content.orElse("[empty]"), "error"));
}
}
catch (IOException e) {
- logger.warn("Failed to parse the error response {}: {}\n{}", response.request().url(), content.or("[empty]"), e.getMessage());
+ logger.warn("Failed to parse the error response {}: {}\n{}", response.request().url(), content.orElse("[empty]"), e.getMessage());
}
- return Optional.absent();
+ return Optional.empty();
}
}
diff --git a/src/main/java/com/treasuredata/client/impl/ProxyAuthenticator.java b/src/main/java/com/treasuredata/client/impl/ProxyAuthenticator.java
index 048434f2..03f34eec 100644
--- a/src/main/java/com/treasuredata/client/impl/ProxyAuthenticator.java
+++ b/src/main/java/com/treasuredata/client/impl/ProxyAuthenticator.java
@@ -18,7 +18,6 @@
*/
package com.treasuredata.client.impl;
-import com.google.common.base.Optional;
import com.treasuredata.client.ProxyConfig;
import com.treasuredata.client.TDClientException;
import com.treasuredata.client.TDClientHttpException;
@@ -31,6 +30,7 @@
import org.slf4j.LoggerFactory;
import java.io.IOException;
+import java.util.Optional;
import static com.google.common.net.HttpHeaders.PROXY_AUTHORIZATION;
@@ -42,7 +42,7 @@ public class ProxyAuthenticator
{
private final Logger logger = LoggerFactory.getLogger(ProxyAuthenticator.class);
private final ProxyConfig proxyConfig;
- private Optional proxyAuthCache = Optional.absent();
+ private Optional proxyAuthCache = Optional.empty();
public ProxyAuthenticator(ProxyConfig proxyConfig)
{
@@ -62,7 +62,7 @@ public Request authenticate(Route route, Response response)
if (!proxyAuthCache.isPresent()) {
logger.debug("Proxy authorization requested for " + route.address());
proxyAuthCache = Optional.of(
- Credentials.basic(proxyConfig.getUser().or(""), proxyConfig.getPassword().or(""))
+ Credentials.basic(proxyConfig.getUser().orElse(""), proxyConfig.getPassword().orElse(""))
);
}
return response.request().newBuilder()
diff --git a/src/main/java/com/treasuredata/client/model/ObjectMappers.java b/src/main/java/com/treasuredata/client/model/ObjectMappers.java
index 2e45ec42..d550aa8b 100644
--- a/src/main/java/com/treasuredata/client/model/ObjectMappers.java
+++ b/src/main/java/com/treasuredata/client/model/ObjectMappers.java
@@ -4,6 +4,7 @@
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.guava.GuavaModule;
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.fasterxml.jackson.datatype.jsonorg.JsonOrgModule;
import com.google.common.annotations.VisibleForTesting;
@@ -36,6 +37,7 @@ private static ObjectMapper createCompactMapper()
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JsonOrgModule());
mapper.registerModule(new GuavaModule().configureAbsentsAsNulls(false));
+ mapper.registerModule(new Jdk8Module());
mapper.setSerializationInclusion(JsonInclude.Include.NON_ABSENT);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
return mapper;
diff --git a/src/main/java/com/treasuredata/client/model/TDBulkLoadSessionStartRequest.java b/src/main/java/com/treasuredata/client/model/TDBulkLoadSessionStartRequest.java
index 5d184dbe..c00edfa9 100644
--- a/src/main/java/com/treasuredata/client/model/TDBulkLoadSessionStartRequest.java
+++ b/src/main/java/com/treasuredata/client/model/TDBulkLoadSessionStartRequest.java
@@ -2,7 +2,8 @@
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
-import com.google.common.base.Optional;
+
+import java.util.Optional;
public class TDBulkLoadSessionStartRequest
{
@@ -21,20 +22,20 @@ public class TDBulkLoadSessionStartRequest
TDBulkLoadSessionStartRequest(TDBulkLoadSessionStartRequestBuilder builder)
{
- this.scheduledTime = builder.getScheduledTime().orNull();
- this.domainKey = builder.getDomainKey().orNull();
+ this.scheduledTime = builder.getScheduledTime().orElse(null);
+ this.domainKey = builder.getDomainKey().orElse(null);
}
@JsonProperty("scheduled_time")
public Optional getScheduledTime()
{
- return Optional.fromNullable(scheduledTime);
+ return Optional.ofNullable(scheduledTime);
}
@JsonProperty("domain_key")
public Optional getDomainKey()
{
- return Optional.fromNullable(domainKey);
+ return Optional.ofNullable(domainKey);
}
@Override
diff --git a/src/main/java/com/treasuredata/client/model/TDBulkLoadSessionStartRequestBuilder.java b/src/main/java/com/treasuredata/client/model/TDBulkLoadSessionStartRequestBuilder.java
index b8fcc612..616c2291 100644
--- a/src/main/java/com/treasuredata/client/model/TDBulkLoadSessionStartRequestBuilder.java
+++ b/src/main/java/com/treasuredata/client/model/TDBulkLoadSessionStartRequestBuilder.java
@@ -1,6 +1,6 @@
package com.treasuredata.client.model;
-import com.google.common.base.Optional;
+import java.util.Optional;
public class TDBulkLoadSessionStartRequestBuilder
{
@@ -13,7 +13,7 @@ public class TDBulkLoadSessionStartRequestBuilder
public Optional getScheduledTime()
{
- return Optional.fromNullable(scheduledTime);
+ return Optional.ofNullable(scheduledTime);
}
public TDBulkLoadSessionStartRequestBuilder setScheduledTime(String scheduledTime)
@@ -29,13 +29,13 @@ public TDBulkLoadSessionStartRequestBuilder setScheduledTime(long scheduledTime)
public TDBulkLoadSessionStartRequestBuilder setScheduledTime(Optional scheduledTime)
{
- this.scheduledTime = scheduledTime.orNull();
+ this.scheduledTime = scheduledTime.orElse(null);
return this;
}
public Optional getDomainKey()
{
- return Optional.fromNullable(domainKey);
+ return Optional.ofNullable(domainKey);
}
public TDBulkLoadSessionStartRequestBuilder setDomainKey(String domainKey)
@@ -46,7 +46,7 @@ public TDBulkLoadSessionStartRequestBuilder setDomainKey(String domainKey)
public TDBulkLoadSessionStartRequestBuilder setDomainKey(Optional domainKey)
{
- return setDomainKey(domainKey.orNull());
+ return setDomainKey(domainKey.orElse(null));
}
public TDBulkLoadSessionStartRequest build()
diff --git a/src/main/java/com/treasuredata/client/model/TDColumnType.java b/src/main/java/com/treasuredata/client/model/TDColumnType.java
index 5d18f902..fc3ce6c4 100644
--- a/src/main/java/com/treasuredata/client/model/TDColumnType.java
+++ b/src/main/java/com/treasuredata/client/model/TDColumnType.java
@@ -20,21 +20,21 @@
import com.fasterxml.jackson.annotation.JsonValue;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import com.google.common.base.Optional;
import com.google.common.collect.ImmutableList;
import com.treasuredata.client.model.impl.TDColumnTypeDeserializer;
import java.io.Serializable;
import java.util.List;
+import java.util.Optional;
@JsonDeserialize(using = TDColumnTypeDeserializer.class)
public class TDColumnType implements Serializable
{
- public static final TDColumnType INT = new TDColumnType(TDTypeName.INT, Optional.>absent());
- public static final TDColumnType LONG = new TDColumnType(TDTypeName.LONG, Optional.>absent());
- public static final TDColumnType FLOAT = new TDColumnType(TDTypeName.FLOAT, Optional.>absent());
- public static final TDColumnType DOUBLE = new TDColumnType(TDTypeName.DOUBLE, Optional.>absent());
- public static final TDColumnType STRING = new TDColumnType(TDTypeName.STRING, Optional.>absent());
+ public static final TDColumnType INT = new TDColumnType(TDTypeName.INT, Optional.>empty());
+ public static final TDColumnType LONG = new TDColumnType(TDTypeName.LONG, Optional.>empty());
+ public static final TDColumnType FLOAT = new TDColumnType(TDTypeName.FLOAT, Optional.>empty());
+ public static final TDColumnType DOUBLE = new TDColumnType(TDTypeName.DOUBLE, Optional.>empty());
+ public static final TDColumnType STRING = new TDColumnType(TDTypeName.STRING, Optional.>empty());
public static final List primitiveTypes = ImmutableList.of(INT, LONG, FLOAT, DOUBLE, STRING);
@@ -49,12 +49,12 @@ public static TDColumnType newMapType(TDColumnType keyType, TDColumnType valueTy
}
private final TDTypeName typeName;
- private final Optional> elementTypes;
+ private final List elementTypes;
private TDColumnType(TDTypeName typeName, Optional> elementTypes)
{
this.typeName = typeName;
- this.elementTypes = elementTypes;
+ this.elementTypes = elementTypes.isPresent() ? elementTypes.get() : null;
}
public TDTypeName getTypeName()
@@ -64,7 +64,7 @@ public TDTypeName getTypeName()
public boolean isPrimitive()
{
- return !elementTypes.isPresent();
+ return elementTypes == null;
}
public boolean isArrayType()
@@ -82,7 +82,7 @@ public TDColumnType getArrayElementType()
if (!isArrayType()) {
throw new UnsupportedOperationException("getArrayElementType is not supported for " + this);
}
- return elementTypes.get().get(0);
+ return elementTypes.get(0);
}
public TDColumnType getMapKeyType()
@@ -90,7 +90,7 @@ public TDColumnType getMapKeyType()
if (!isMapType()) {
throw new UnsupportedOperationException("getmapKeyType is not supported for " + this);
}
- return elementTypes.get().get(0);
+ return elementTypes.get(0);
}
public TDColumnType getMapValueType()
@@ -98,7 +98,7 @@ public TDColumnType getMapValueType()
if (!isMapType()) {
throw new UnsupportedOperationException("getMapValueType is not supported for " + this);
}
- return elementTypes.get().get(1);
+ return elementTypes.get(1);
}
@JsonValue
diff --git a/src/main/java/com/treasuredata/client/model/TDDatabase.java b/src/main/java/com/treasuredata/client/model/TDDatabase.java
index 7f4268e2..07ddad30 100644
--- a/src/main/java/com/treasuredata/client/model/TDDatabase.java
+++ b/src/main/java/com/treasuredata/client/model/TDDatabase.java
@@ -21,7 +21,8 @@
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Objects;
-import com.google.common.base.Optional;
+
+import java.util.Optional;
@JsonCollectionRootName(value = "databases")
public class TDDatabase
diff --git a/src/main/java/com/treasuredata/client/model/TDExportJobRequest.java b/src/main/java/com/treasuredata/client/model/TDExportJobRequest.java
index 55c05d47..8e6e3b86 100644
--- a/src/main/java/com/treasuredata/client/model/TDExportJobRequest.java
+++ b/src/main/java/com/treasuredata/client/model/TDExportJobRequest.java
@@ -18,11 +18,11 @@
*/
package com.treasuredata.client.model;
-import com.google.common.base.Optional;
import org.immutables.builder.Builder;
import org.immutables.value.Value;
import java.util.Date;
+import java.util.Optional;
/**
*
@@ -68,7 +68,7 @@ public TDExportJobRequest(
this.bucketName = bucketName;
this.filePrefix = filePrefix;
this.poolName = poolName;
- this.domainKey = Optional.absent();
+ this.domainKey = Optional.empty();
}
private TDExportJobRequest(String database, String table, Date from, Date to, TDExportFileFormatType fileFormat, String accessKeyId, String secretAccessKey, String bucketName, String filePrefix, Optional poolName, Optional domainKey)
diff --git a/src/main/java/com/treasuredata/client/model/TDExportResultJobRequest.java b/src/main/java/com/treasuredata/client/model/TDExportResultJobRequest.java
index 56e508fe..9510a203 100644
--- a/src/main/java/com/treasuredata/client/model/TDExportResultJobRequest.java
+++ b/src/main/java/com/treasuredata/client/model/TDExportResultJobRequest.java
@@ -1,9 +1,10 @@
package com.treasuredata.client.model;
-import com.google.common.base.Optional;
import org.immutables.builder.Builder;
import org.immutables.value.Value;
+import java.util.Optional;
+
@Value.Style(typeBuilder = "TDExportResultJobRequestBuilder")
public class TDExportResultJobRequest
{
@@ -47,9 +48,9 @@ static TDExportResultJobRequest of(String jobId,
Optional resultConnectionSettings)
{
return new TDExportResultJobRequest(jobId,
- resultOutput.or(""),
- resultConnectionId.or(""),
- resultConnectionSettings.or(""));
+ resultOutput.orElse(""),
+ resultConnectionId.orElse(""),
+ resultConnectionSettings.orElse(""));
}
public static TDExportResultJobRequestBuilder builder()
diff --git a/src/main/java/com/treasuredata/client/model/TDJob.java b/src/main/java/com/treasuredata/client/model/TDJob.java
index 35c58ba6..2e52a834 100644
--- a/src/main/java/com/treasuredata/client/model/TDJob.java
+++ b/src/main/java/com/treasuredata/client/model/TDJob.java
@@ -22,7 +22,8 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonValue;
import com.google.common.base.Function;
-import com.google.common.base.Optional;
+
+import java.util.Optional;
/**
*
@@ -153,12 +154,12 @@ public Debug(@JsonProperty("cmdout") Optional cmdout, @JsonProperty("std
public String getCmdout()
{
- return cmdout.or("");
+ return cmdout.orElse("");
}
public String getStderr()
{
- return stderr.or("");
+ return stderr.orElse("");
}
@Override
@@ -346,14 +347,14 @@ public Optional getEngineVersion()
*/
public String getCmdOut()
{
- return debug.transform(new Function()
+ return debug.map(new Function()
{
@Override
public String apply(Debug input)
{
return input.getCmdout();
}
- }).or("");
+ }).orElse("");
}
/**
@@ -363,14 +364,14 @@ public String apply(Debug input)
*/
public String getStdErr()
{
- return debug.transform(new Function()
+ return debug.map(new Function()
{
@Override
public String apply(Debug input)
{
return input.getStderr();
}
- }).or("");
+ }).orElse("");
}
@Override
diff --git a/src/main/java/com/treasuredata/client/model/TDJobList.java b/src/main/java/com/treasuredata/client/model/TDJobList.java
index 492894d1..c0b320ba 100644
--- a/src/main/java/com/treasuredata/client/model/TDJobList.java
+++ b/src/main/java/com/treasuredata/client/model/TDJobList.java
@@ -20,9 +20,9 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Joiner;
-import com.google.common.base.Optional;
import java.util.List;
+import java.util.Optional;
/**
*
diff --git a/src/main/java/com/treasuredata/client/model/TDJobRequest.java b/src/main/java/com/treasuredata/client/model/TDJobRequest.java
index e93e8099..cbcf66eb 100644
--- a/src/main/java/com/treasuredata/client/model/TDJobRequest.java
+++ b/src/main/java/com/treasuredata/client/model/TDJobRequest.java
@@ -19,7 +19,8 @@
package com.treasuredata.client.model;
import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.base.Optional;
+
+import java.util.Optional;
/**
*
@@ -53,11 +54,11 @@ public TDJobRequest(String database, TDJob.Type type, String query, TDJob.Priori
this.poolName = poolName;
this.table = table;
this.config = config;
- this.scheduledTime = Optional.absent();
- this.domainKey = Optional.absent();
- this.resultConnectionId = Optional.absent();
- this.resultConnectionSettings = Optional.absent();
- this.engineVersion = Optional.absent();
+ this.scheduledTime = Optional.empty();
+ this.domainKey = Optional.empty();
+ this.resultConnectionId = Optional.empty();
+ this.resultConnectionSettings = Optional.empty();
+ this.engineVersion = Optional.empty();
}
private TDJobRequest(TDJobRequestBuilder builder)
diff --git a/src/main/java/com/treasuredata/client/model/TDJobRequestBuilder.java b/src/main/java/com/treasuredata/client/model/TDJobRequestBuilder.java
index 84a0f74b..004cdd7d 100644
--- a/src/main/java/com/treasuredata/client/model/TDJobRequestBuilder.java
+++ b/src/main/java/com/treasuredata/client/model/TDJobRequestBuilder.java
@@ -19,7 +19,8 @@
package com.treasuredata.client.model;
import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.base.Optional;
+
+import java.util.Optional;
public class TDJobRequestBuilder
{
@@ -28,15 +29,15 @@ public class TDJobRequestBuilder
private String query;
private TDJob.Priority priority = TDJob.Priority.NORMAL;
private String result;
- private Optional retryLimit = Optional.absent();
+ private Optional retryLimit = Optional.empty();
private String poolName;
- private Optional table = Optional.absent();
- private Optional config = Optional.absent();
- private Optional scheduledTime = Optional.absent();
- private Optional domainKey = Optional.absent();
- private Optional resultConnectionId = Optional.absent();
- private Optional resultConnectionSettings = Optional.absent();
- private Optional engineVersion = Optional.absent();
+ private Optional table = Optional.empty();
+ private Optional config = Optional.empty();
+ private Optional scheduledTime = Optional.empty();
+ private Optional domainKey = Optional.empty();
+ private Optional resultConnectionId = Optional.empty();
+ private Optional resultConnectionSettings = Optional.empty();
+ private Optional engineVersion = Optional.empty();
public TDJobRequestBuilder setResultOutput(String result)
{
@@ -46,7 +47,7 @@ public TDJobRequestBuilder setResultOutput(String result)
public Optional getResultOutput()
{
- return Optional.fromNullable(result);
+ return Optional.ofNullable(result);
}
public TDJobRequestBuilder setDatabase(String database)
@@ -124,7 +125,7 @@ public TDJobRequestBuilder setPoolName(String poolName)
public Optional getPoolName()
{
- return Optional.fromNullable(poolName);
+ return Optional.ofNullable(poolName);
}
public TDJobRequestBuilder setTable(String table)
@@ -151,7 +152,7 @@ public Optional getConfig()
public TDJobRequestBuilder setScheduledTime(Long scheduledTime)
{
- return setScheduledTime(Optional.fromNullable(scheduledTime));
+ return setScheduledTime(Optional.ofNullable(scheduledTime));
}
public TDJobRequestBuilder setScheduledTime(Optional scheduledTime)
@@ -178,7 +179,7 @@ public TDJobRequestBuilder setDomainKey(Optional domainKey)
public TDJobRequestBuilder setDomainKey(String domainKey)
{
- return setDomainKey(Optional.fromNullable(domainKey));
+ return setDomainKey(Optional.ofNullable(domainKey));
}
public Optional getResultConnectionId()
@@ -210,18 +211,18 @@ public TDJobRequestBuilder setResultConnectionSettings(Optional resultCo
public TDJobRequestBuilder setResultConnectionSettings(String resultConnectionSettings)
{
- return setResultConnectionSettings(Optional.fromNullable(resultConnectionSettings));
+ return setResultConnectionSettings(Optional.ofNullable(resultConnectionSettings));
}
public TDJobRequestBuilder setEngineVersion(String engineVersion)
{
- this.engineVersion = Optional.fromNullable(TDJob.EngineVersion.fromString(engineVersion));
+ this.engineVersion = Optional.ofNullable(TDJob.EngineVersion.fromString(engineVersion));
return this;
}
public TDJobRequestBuilder setEngineVersion(TDJob.EngineVersion engineVersion)
{
- this.engineVersion = Optional.fromNullable(engineVersion);
+ this.engineVersion = Optional.ofNullable(engineVersion);
return this;
}
diff --git a/src/main/java/com/treasuredata/client/model/TDSavedQueryBuilder.java b/src/main/java/com/treasuredata/client/model/TDSavedQueryBuilder.java
index fae9eb2f..e86f9214 100644
--- a/src/main/java/com/treasuredata/client/model/TDSavedQueryBuilder.java
+++ b/src/main/java/com/treasuredata/client/model/TDSavedQueryBuilder.java
@@ -18,22 +18,23 @@
*/
package com.treasuredata.client.model;
-import com.google.common.base.Optional;
import com.treasuredata.client.TDClientException;
+import java.util.Optional;
+
public class TDSavedQueryBuilder
{
- private Optional name = Optional.absent();
- private Optional cron = Optional.absent();
- private Optional type = Optional.absent();
- private Optional query = Optional.absent();
- private Optional timezone = Optional.absent();
- private Optional delay = Optional.absent();
- private Optional database = Optional.absent();
- private Optional priority = Optional.absent();
- private Optional retryLimit = Optional.absent();
- private Optional result = Optional.absent();
- private Optional engineVersion = Optional.absent();
+ private Optional name = Optional.empty();
+ private Optional cron = Optional.empty();
+ private Optional type = Optional.empty();
+ private Optional query = Optional.empty();
+ private Optional timezone = Optional.empty();
+ private Optional delay = Optional.empty();
+ private Optional database = Optional.empty();
+ private Optional priority = Optional.empty();
+ private Optional retryLimit = Optional.empty();
+ private Optional result = Optional.empty();
+ private Optional engineVersion = Optional.empty();
public TDSavedQueryBuilder setName(String name)
{
@@ -97,7 +98,7 @@ public TDSavedQueryBuilder setResult(String result)
public TDSavedQueryBuilder setEngineVersion(TDJob.EngineVersion engineVersion)
{
- this.engineVersion = Optional.fromNullable(engineVersion);
+ this.engineVersion = Optional.ofNullable(engineVersion);
return this;
}
@@ -118,16 +119,16 @@ public TDSaveQueryRequest build()
return new TDSaveQueryRequest(
name.get(),
- cron.or(""),
+ cron.orElse(""),
type.get(),
query.get(),
timezone.get(),
- delay.or(0L),
+ delay.orElse(0L),
database.get(),
- priority.or(TDJob.Priority.NORMAL.toInt()),
- retryLimit.or(0),
- result.or(""),
- engineVersion.orNull()
+ priority.orElse(TDJob.Priority.NORMAL.toInt()),
+ retryLimit.orElse(0),
+ result.orElse(""),
+ engineVersion.orElse(null)
);
}
diff --git a/src/main/java/com/treasuredata/client/model/TDSavedQueryHistory.java b/src/main/java/com/treasuredata/client/model/TDSavedQueryHistory.java
index 445abec4..24e48fa3 100644
--- a/src/main/java/com/treasuredata/client/model/TDSavedQueryHistory.java
+++ b/src/main/java/com/treasuredata/client/model/TDSavedQueryHistory.java
@@ -19,9 +19,9 @@
package com.treasuredata.client.model;
import com.fasterxml.jackson.annotation.JsonProperty;
-import com.google.common.base.Optional;
import java.util.List;
+import java.util.Optional;
public class TDSavedQueryHistory
{
diff --git a/src/main/java/com/treasuredata/client/model/TDSavedQueryStartRequest.java b/src/main/java/com/treasuredata/client/model/TDSavedQueryStartRequest.java
index ff0ede1e..92806406 100644
--- a/src/main/java/com/treasuredata/client/model/TDSavedQueryStartRequest.java
+++ b/src/main/java/com/treasuredata/client/model/TDSavedQueryStartRequest.java
@@ -2,10 +2,10 @@
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.google.common.base.Optional;
import org.immutables.value.Value;
import java.util.Date;
+import java.util.Optional;
@Value.Immutable
@Value.Style(visibility = Value.Style.ImplementationVisibility.PACKAGE)
diff --git a/src/main/java/com/treasuredata/client/model/TDSavedQueryStartRequestV4.java b/src/main/java/com/treasuredata/client/model/TDSavedQueryStartRequestV4.java
index c3264fca..be22577a 100644
--- a/src/main/java/com/treasuredata/client/model/TDSavedQueryStartRequestV4.java
+++ b/src/main/java/com/treasuredata/client/model/TDSavedQueryStartRequestV4.java
@@ -3,11 +3,11 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.google.common.base.Optional;
import org.immutables.value.Value;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
+import java.util.Optional;
import java.util.TimeZone;
@Value.Immutable
diff --git a/src/main/java/com/treasuredata/client/model/TDSavedQueryUpdateRequest.java b/src/main/java/com/treasuredata/client/model/TDSavedQueryUpdateRequest.java
index 1c66e10f..d0264bf1 100644
--- a/src/main/java/com/treasuredata/client/model/TDSavedQueryUpdateRequest.java
+++ b/src/main/java/com/treasuredata/client/model/TDSavedQueryUpdateRequest.java
@@ -24,8 +24,10 @@
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.guava.GuavaModule;
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
+
+import java.util.Optional;
/**
* Update request for saved queries. Use {@link TDSavedQuery#newUpdateRequestBuilder()} to build this object.
@@ -78,6 +80,7 @@ static ObjectMapper getObjectMapper()
ObjectMapper mapper = new ObjectMapper();
// Configure object mapper to exclude Optional.absent values in the generated json string
mapper.registerModule(new GuavaModule().configureAbsentsAsNulls(false));
+ mapper.registerModule(new Jdk8Module()); // Required to make java.util.Optional serialize correctly
mapper.setSerializationInclusion(JsonInclude.Include.NON_ABSENT);
return mapper;
}
@@ -103,16 +106,16 @@ public String toJson()
public TDSaveQueryRequest merge(TDSavedQuery base)
{
return new TDSaveQueryRequest(
- name.or(base.getName()),
- cron.or(base.getCron()),
- type.or(base.getType()),
- query.or(base.getQuery()),
- timezone.or(base.getTimezone()),
- delay.or(base.getDelay()),
- database.or(base.getDatabase()),
- priority.or(base.getPriority()),
- retryLimit.or(base.getRetryLimit()),
- result.or(base.getResult()),
+ name.orElse(base.getName()),
+ cron.orElse(base.getCron()),
+ type.orElse(base.getType()),
+ query.orElse(base.getQuery()),
+ timezone.orElse(base.getTimezone()),
+ delay.orElse(base.getDelay()),
+ database.orElse(base.getDatabase()),
+ priority.orElse(base.getPriority()),
+ retryLimit.orElse(base.getRetryLimit()),
+ result.orElse(base.getResult()),
engineVersion.isPresent() ? engineVersion.get() : base.getEngineVersion());
}
diff --git a/src/main/java/com/treasuredata/client/model/TDSavedQueryUpdateRequestBuilder.java b/src/main/java/com/treasuredata/client/model/TDSavedQueryUpdateRequestBuilder.java
index ea3af591..0ec20c43 100644
--- a/src/main/java/com/treasuredata/client/model/TDSavedQueryUpdateRequestBuilder.java
+++ b/src/main/java/com/treasuredata/client/model/TDSavedQueryUpdateRequestBuilder.java
@@ -18,24 +18,24 @@
*/
package com.treasuredata.client.model;
-import com.google.common.base.Optional;
+import java.util.Optional;
/**
*
*/
public class TDSavedQueryUpdateRequestBuilder
{
- private Optional name = Optional.absent();
- private Optional cron = Optional.absent();
- private Optional type = Optional.absent();
- private Optional query = Optional.absent();
- private Optional timezone = Optional.absent();
- private Optional delay = Optional.absent();
- private Optional database = Optional.absent();
- private Optional priority = Optional.absent();
- private Optional retryLimit = Optional.absent();
- private Optional result = Optional.absent();
- private Optional engineVersion = Optional.absent();
+ private Optional name = Optional.empty();
+ private Optional cron = Optional.empty();
+ private Optional type = Optional.empty();
+ private Optional query = Optional.empty();
+ private Optional timezone = Optional.empty();
+ private Optional delay = Optional.empty();
+ private Optional database = Optional.empty();
+ private Optional priority = Optional.empty();
+ private Optional retryLimit = Optional.empty();
+ private Optional result = Optional.empty();
+ private Optional engineVersion = Optional.empty();
TDSavedQueryUpdateRequestBuilder()
{
diff --git a/src/main/java/com/treasuredata/client/model/TDUser.java b/src/main/java/com/treasuredata/client/model/TDUser.java
index e3b9d0ec..1cf92eb5 100644
--- a/src/main/java/com/treasuredata/client/model/TDUser.java
+++ b/src/main/java/com/treasuredata/client/model/TDUser.java
@@ -3,9 +3,11 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.google.common.base.Optional;
+
import org.immutables.value.Value;
+import java.util.Optional;
+
@Value.Immutable
@Value.Style(visibility = Value.Style.ImplementationVisibility.PACKAGE)
@JsonSerialize(as = ImmutableTDUser.class)
diff --git a/src/test/java/com/treasuredata/client/TDRequestErrorHandlerTest.java b/src/test/java/com/treasuredata/client/TDRequestErrorHandlerTest.java
index b25a7ba8..8df767a4 100644
--- a/src/test/java/com/treasuredata/client/TDRequestErrorHandlerTest.java
+++ b/src/test/java/com/treasuredata/client/TDRequestErrorHandlerTest.java
@@ -1,6 +1,5 @@
package com.treasuredata.client;
-import com.google.common.base.Optional;
import com.treasuredata.client.model.TDApiErrorMessage;
import okhttp3.Headers;
import okhttp3.MediaType;
@@ -18,6 +17,7 @@
import org.slf4j.LoggerFactory;
import java.util.Date;
+import java.util.Optional;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertFalse;
diff --git a/src/test/java/com/treasuredata/client/TestTDClient.java b/src/test/java/com/treasuredata/client/TestTDClient.java
index 73e8d2d3..21a6d12e 100644
--- a/src/test/java/com/treasuredata/client/TestTDClient.java
+++ b/src/test/java/com/treasuredata/client/TestTDClient.java
@@ -23,7 +23,6 @@
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.base.Function;
import com.google.common.base.Joiner;
-import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import com.google.common.base.Strings;
import com.google.common.base.Throwables;
@@ -104,6 +103,7 @@
import java.util.GregorianCalendar;
import java.util.HashSet;
import java.util.List;
+import java.util.Optional;
import java.util.Properties;
import java.util.Set;
import java.util.TimeZone;
@@ -801,7 +801,7 @@ public void submitExportJob()
"secret access key",
"bucket",
"prefix/",
- Optional.absent());
+ Optional.empty());
client.createDatabaseIfNotExists(SAMPLE_DB);
client.createTableIfNotExists(SAMPLE_DB, "sample_output");
String jobId = client.submitExportJob(jobRequest);
@@ -893,7 +893,7 @@ private Optional findTable(String databaseName, String tableName)
return Optional.of(table);
}
}
- return Optional.absent();
+ return Optional.empty();
}
@Test
@@ -1461,7 +1461,7 @@ private Optional findSavedQuery(String name)
return Optional.of(q);
}
}
- return Optional.absent();
+ return Optional.empty();
}
private void validateSavedQuery(TDSaveQueryRequest expected, TDSavedQuery target)
diff --git a/src/test/java/com/treasuredata/client/TestTDClientConfig.java b/src/test/java/com/treasuredata/client/TestTDClientConfig.java
index 69d5e2c3..c3cdb655 100644
--- a/src/test/java/com/treasuredata/client/TestTDClientConfig.java
+++ b/src/test/java/com/treasuredata/client/TestTDClientConfig.java
@@ -18,7 +18,6 @@
*/
package com.treasuredata.client;
-import com.google.common.base.Optional;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.ImmutableSet;
@@ -32,6 +31,7 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
+import java.util.Optional;
import java.util.Properties;
import java.util.Set;
@@ -252,10 +252,10 @@ public void apikeyWither()
assertThat(config.withApiKey("foo").apiKey, is(Optional.of("foo")));
assertThat(config.withApiKey(Optional.of("foo")).apiKey, is(Optional.of("foo")));
- assertThat(config.withApiKey(Optional.absent()).apiKey, is(Optional.absent()));
+ assertThat(config.withApiKey(Optional.empty()).apiKey, is(Optional.empty()));
assertThat(config.withApiKey("foo").withApiKey("bar").apiKey, is(Optional.of("bar")));
- assertThat(config.withApiKey("foo").withApiKey(Optional.absent()).apiKey, is(Optional.absent()));
- assertThat(config.withApiKey(Optional.absent()).withApiKey("bar").apiKey, is(Optional.of("bar")));
+ assertThat(config.withApiKey("foo").withApiKey(Optional.empty()).apiKey, is(Optional.empty()));
+ assertThat(config.withApiKey(Optional.empty()).withApiKey("bar").apiKey, is(Optional.of("bar")));
}
private Matcher> equalTo(final Multimap multimap)
diff --git a/src/test/java/com/treasuredata/client/TestTDHttpClient.java b/src/test/java/com/treasuredata/client/TestTDHttpClient.java
index da5a8f1c..2a254d1d 100644
--- a/src/test/java/com/treasuredata/client/TestTDHttpClient.java
+++ b/src/test/java/com/treasuredata/client/TestTDHttpClient.java
@@ -18,7 +18,6 @@
*/
package com.treasuredata.client;
-import com.google.common.base.Optional;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Protocol;
@@ -40,6 +39,7 @@
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
+import java.util.Optional;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
@@ -77,7 +77,7 @@ public void tearDown()
public void addHttpRequestHeader()
{
TDApiRequest req = TDApiRequest.Builder.GET("/v3/system/server_status").addHeader("TEST_HEADER", "hello td-client-java").build();
- String resp = client.submitRequest(req, Optional.absent(), stringContentHandler);
+ String resp = client.submitRequest(req, Optional.empty(), stringContentHandler);
}
@Test
@@ -85,7 +85,7 @@ public void deleteMethodTest()
{
try {
TDApiRequest req = TDApiRequest.Builder.DELETE("/v3/dummy_endpoint").build();
- String resp = client.submitRequest(req, Optional.absent(), stringContentHandler);
+ String resp = client.submitRequest(req, Optional.empty(), stringContentHandler);
fail();
}
catch (TDClientHttpException e) {
@@ -111,7 +111,7 @@ public void retryOn429()
final byte[] body = "foobar".getBytes("UTF-8");
final long retryAfterSeconds = 5;
- byte[] result = client.submitRequest(req, Optional.absent(), new TDHttpRequestHandler()
+ byte[] result = client.submitRequest(req, Optional.empty(), new TDHttpRequestHandler()
{
@Override
public Response send(OkHttpClient httpClient, Request request)
@@ -169,7 +169,7 @@ public void retryOn429WithoutRetryAfter()
.build()
.httpClient;
- int requests = failWith429(Optional.absent(), Optional.>absent());
+ int requests = failWith429(Optional.empty(), Optional.>empty());
assertThat(requests, is(4));
}
@@ -184,7 +184,7 @@ public void retryOn429WithInvalidRetryAfter()
.build()
.httpClient;
- int requests = failWith429(Optional.of("foobar"), Optional.>absent());
+ int requests = failWith429(Optional.of("foobar"), Optional.>empty());
assertThat(requests, is(4));
}
@@ -267,7 +267,7 @@ public void readBodyAsBytes()
final byte[] body = new byte[3 * 1024 * 1024];
Arrays.fill(body, (byte) 100);
- byte[] res = client.submitRequest(req, Optional.absent(), new TestDefaultHandler(body));
+ byte[] res = client.submitRequest(req, Optional.empty(), new TestDefaultHandler(body));
assertThat(res, is(body));
}
@@ -311,7 +311,7 @@ private int failWith429(final Optional retryAfterValue, final Optionalabsent(), new TDHttpRequestHandler()
+ client.submitRequest(req, Optional.empty(), new TDHttpRequestHandler()
{
@Override
public Response send(OkHttpClient httpClient, Request request)
@@ -347,7 +347,7 @@ public byte[] onSuccess(Response response)
}
TDClientHttpTooManyRequestsException tooManyRequestsException = (TDClientHttpTooManyRequestsException) e;
if (retryAfterMatcher.isPresent()) {
- assertThat(tooManyRequestsException.getRetryAfter().orNull(), retryAfterMatcher.get());
+ assertThat(tooManyRequestsException.getRetryAfter().orElse(null), retryAfterMatcher.get());
}
}
diff --git a/src/test/java/com/treasuredata/client/model/TDBulkLoadSessionStartRequestTest.java b/src/test/java/com/treasuredata/client/model/TDBulkLoadSessionStartRequestTest.java
index cbcd1599..b4db827f 100644
--- a/src/test/java/com/treasuredata/client/model/TDBulkLoadSessionStartRequestTest.java
+++ b/src/test/java/com/treasuredata/client/model/TDBulkLoadSessionStartRequestTest.java
@@ -1,6 +1,7 @@
package com.treasuredata.client.model;
-import com.google.common.base.Optional;
+import java.util.Optional;
+
import org.junit.Test;
import static com.treasuredata.client.model.ObjectMappers.compactMapper;
@@ -14,7 +15,7 @@ public class TDBulkLoadSessionStartRequestTest
public void defaultValues()
throws Exception
{
- assertThat(TDBulkLoadSessionStartRequest.builder().build().getScheduledTime(), is(Optional.absent()));
+ assertThat(TDBulkLoadSessionStartRequest.builder().build().getScheduledTime(), is(Optional.empty()));
}
@Test
diff --git a/src/test/java/com/treasuredata/client/model/TestTDColumn.java b/src/test/java/com/treasuredata/client/model/TestTDColumn.java
index f8016782..8abd6ba7 100644
--- a/src/test/java/com/treasuredata/client/model/TestTDColumn.java
+++ b/src/test/java/com/treasuredata/client/model/TestTDColumn.java
@@ -22,12 +22,16 @@
import com.google.common.collect.ImmutableSet;
import org.junit.Test;
+import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
+import java.io.Serializable;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.HashSet;
+import java.util.Objects;
import java.util.Set;
import static com.treasuredata.client.model.TDColumnType.FLOAT;
@@ -220,26 +224,87 @@ public void parseUnknownType()
TDColumnType.parseColumnType("xint");
}
- private static void checkSerialization(Object o)
+ private static byte[] pickle(T obj)
throws IOException
{
- ByteArrayOutputStream b = new ByteArrayOutputStream();
- ObjectOutputStream os = new ObjectOutputStream(b);
- os.writeObject(o);
- os.close();
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(baos);
+ oos.writeObject(obj);
+ oos.close();
+ return baos.toByteArray();
+ }
+
+ private static T unpickle(byte[] b, Class cl)
+ throws IOException, ClassNotFoundException
+ {
+ ByteArrayInputStream bais = new ByteArrayInputStream(b);
+ ObjectInputStream ois = new ObjectInputStream(bais);
+ Object o = ois.readObject();
+ return cl.cast(o);
}
@Test
public void serializableTest()
throws Exception
{
- checkSerialization(new TDColumn("int", TDColumnType.INT));
- checkSerialization(new TDColumn("str", TDColumnType.STRING));
- checkSerialization(new TDColumn("long", TDColumnType.LONG));
- checkSerialization(new TDColumn("double", TDColumnType.DOUBLE));
- checkSerialization(new TDColumn("float", TDColumnType.FLOAT));
- checkSerialization(newArrayType(TDColumnType.STRING));
- checkSerialization(newMapType(TDColumnType.INT, TDColumnType.STRING));
+ //
+ // Check primitive TDColumnType types
+ //
+
+ {
+ TDColumn in = new TDColumn("int", TDColumnType.INT);
+ byte[] p = pickle(in);
+ TDColumn out = unpickle(p, TDColumn.class);
+
+ assertTrue(Objects.equals(in, out));
+ }
+ {
+ TDColumn in = new TDColumn("int", TDColumnType.STRING);
+ byte[] p = pickle(in);
+ TDColumn out = unpickle(p, TDColumn.class);
+
+ assertTrue(Objects.equals(in, out));
+ }
+ {
+ TDColumn in = new TDColumn("int", TDColumnType.LONG);
+ byte[] p = pickle(in);
+ TDColumn out = unpickle(p, TDColumn.class);
+
+ assertTrue(Objects.equals(in, out));
+ }
+ {
+ TDColumn in = new TDColumn("int", TDColumnType.DOUBLE);
+ byte[] p = pickle(in);
+ TDColumn out = unpickle(p, TDColumn.class);
+
+ assertTrue(Objects.equals(in, out));
+ }
+ {
+ TDColumn in = new TDColumn("int", TDColumnType.FLOAT);
+ byte[] p = pickle(in);
+ TDColumn out = unpickle(p, TDColumn.class);
+
+ assertTrue(Objects.equals(in, out));
+ }
+
+ //
+ // Check the other TDColumnType types
+ //
+
+ {
+ TDColumn in = new TDColumn("array", newArrayType(TDColumnType.STRING));
+ byte[] p = pickle(in);
+ TDColumn out = unpickle(p, TDColumn.class);
+
+ assertTrue(Objects.equals(in, out));
+ }
+ {
+ TDColumn in = new TDColumn("map", newMapType(TDColumnType.INT, TDColumnType.STRING));
+ byte[] p = pickle(in);
+ TDColumn out = unpickle(p, TDColumn.class);
+
+ assertTrue(Objects.equals(in, out));
+ }
}
private static void checkJsonSerDe(TDColumn column)