Simpler backward compatibility.
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileSystemConfigBuilder.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileSystemConfigBuilder.java
index 9b9ea7c..ad7dcb4 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileSystemConfigBuilder.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileSystemConfigBuilder.java
@@ -20,6 +20,8 @@
import java.util.Objects;
import java.util.function.Function;
+import org.apache.commons.vfs2.util.DurationUtils;
+
/**
* Abstract class which has the right to fill FileSystemOptions.
*/
@@ -279,6 +281,35 @@
}
/**
+ * Gets a named option as a Duration bound to the integer range.
+ *
+ * @param fileSystemOptions file system options to query, may be null.
+ * @param name the option name
+ * @return the option in {@code opts} or system properties, otherwise null
+ * @see #getLong(FileSystemOptions, String, Long)
+ *
+ * @since 2.8.0
+ */
+ protected Integer getDurationInteger(final FileSystemOptions fileSystemOptions, final String name) {
+ return getDurationInteger(fileSystemOptions, name, null);
+ }
+
+ /**
+ * Gets a named option as a Duration bound to the integer range.
+ *
+ * @param fileSystemOptions file system options to query, may be null.
+ * @param name the option name
+ * @param defaultValue value to return if option is not present
+ * @return the option in {@code opts} or system properties, otherwise {@code defaultValue}
+ *
+ * @since 2.8.0
+ */
+ protected Integer getDurationInteger(final FileSystemOptions fileSystemOptions, final String name,
+ final Duration defaultValue) {
+ return DurationUtils.toMillisInt(getParam(fileSystemOptions, name, defaultValue, Duration::parse));
+ }
+
+ /**
*Gets a named option as a Double.
*
* @param <E> enumeration type
@@ -489,7 +520,7 @@
* @since 2.8.0
*/
private <T> T getParam(final FileSystemOptions fileSystemOptions, final String name, final T defaultValue,
- Function<String, T> function) {
+ final Function<String, T> function) {
T value = getParam(fileSystemOptions, name);
if (value == null) {
final String str = getProperty(name);
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/ftp/FtpClientFactory.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/ftp/FtpClientFactory.java
index 341a076..6d75340 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/ftp/FtpClientFactory.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/ftp/FtpClientFactory.java
@@ -32,6 +32,7 @@
import org.apache.commons.net.ftp.parser.FTPFileEntryParserFactory;
import org.apache.commons.vfs2.FileSystemException;
import org.apache.commons.vfs2.FileSystemOptions;
+import org.apache.commons.vfs2.util.DurationUtils;
import org.apache.commons.vfs2.util.UserAuthenticatorUtils;
/**
@@ -142,7 +143,7 @@
try {
final Duration connectTimeout = builder.getConnectTimeoutDuration(fileSystemOptions);
if (connectTimeout != null) {
- client.setDefaultTimeout(toIntMillisTimeout(connectTimeout));
+ client.setDefaultTimeout(DurationUtils.toMillisInt(connectTimeout));
}
final String controlEncoding = builder.getControlEncoding(fileSystemOptions);
@@ -186,12 +187,12 @@
// Set dataTimeout value
final Duration dataTimeout = builder.getDataTimeoutDuration(fileSystemOptions);
if (dataTimeout != null) {
- client.setDataTimeout(toIntMillisTimeout(dataTimeout));
+ client.setDataTimeout(DurationUtils.toMillisInt(dataTimeout));
}
final Duration socketTimeout = builder.getSoTimeoutDuration(fileSystemOptions);
if (socketTimeout != null) {
- client.setSoTimeout(toIntMillisTimeout(socketTimeout));
+ client.setSoTimeout(DurationUtils.toMillisInt(socketTimeout));
}
final Duration controlKeepAliveTimeout = builder.getControlKeepAliveTimeout(fileSystemOptions);
@@ -234,10 +235,6 @@
}
protected abstract void setupOpenConnection(C client, FileSystemOptions fileSystemOptions) throws IOException;
-
- private int toIntMillisTimeout(final Duration duration) {
- return (int) Math.min(duration.toMillis(), Integer.MAX_VALUE);
- }
}
/** Connection Factory, used to configure the FTPClient. */
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder.java
index 05862ac..295b0df 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder.java
@@ -113,7 +113,7 @@
*/
@Deprecated
public Integer getConnectTimeout(final FileSystemOptions options) {
- return (int) getConnectTimeoutDuration(options).toMillis();
+ return getDurationInteger(options, CONNECT_TIMEOUT);
}
/**
@@ -141,7 +141,7 @@
* @return The controlKeepAliveReplyTimeout value.
* @since 2.8.0
*/
- public Duration getControlKeepAliveReplyTimeout(FileSystemOptions options) {
+ public Duration getControlKeepAliveReplyTimeout(final FileSystemOptions options) {
return getDuration(options, CONTROL_KEEP_ALIVE_REPLY_TIMEOUT);
}
@@ -150,7 +150,7 @@
* @return The controlKeepAliveTimeout value.
* @since 2.8.0
*/
- public Duration getControlKeepAliveTimeout(FileSystemOptions options) {
+ public Duration getControlKeepAliveTimeout(final FileSystemOptions options) {
return getDuration(options, CONTROL_KEEP_ALIVE_TIMEOUT);
}
@@ -162,7 +162,7 @@
*/
@Deprecated
public Integer getDataTimeout(final FileSystemOptions options) {
- return (int) getDataTimeoutDuration(options).toMillis();
+ return getDurationInteger(options, DATA_TIMEOUT);
}
/**
@@ -310,7 +310,7 @@
*/
@Deprecated
public Integer getSoTimeout(final FileSystemOptions options) {
- return (int) getSoTimeoutDuration(options).toMillis();
+ return getDurationInteger(options, SO_TIMEOUT);
}
/**
@@ -407,7 +407,7 @@
* @param duration timeout duration.
* @since 2.8.0
*/
- public void setControlKeepAliveReplyTimeout(FileSystemOptions options, final Duration duration) {
+ public void setControlKeepAliveReplyTimeout(final FileSystemOptions options, final Duration duration) {
setParam(options, CONTROL_KEEP_ALIVE_REPLY_TIMEOUT, duration);
}
@@ -421,7 +421,7 @@
* @param duration The timeout duration.
* @since 2.8.0
*/
- public void setControlKeepAliveTimeout(FileSystemOptions options, final Duration duration) {
+ public void setControlKeepAliveTimeout(final FileSystemOptions options, final Duration duration) {
setParam(options, CONTROL_KEEP_ALIVE_TIMEOUT, duration);
}
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/DurationUtils.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/DurationUtils.java
new file mode 100644
index 0000000..eba9c02
--- /dev/null
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/DurationUtils.java
@@ -0,0 +1,31 @@
+/*
+ * 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.commons.vfs2.util;
+
+import java.time.Duration;
+
+/** Temporary until Commons Lang 3.12.0. */
+public class DurationUtils {
+
+ /** Temporary until Commons Lang 3.12.0. */
+ public static int toMillisInt(final Duration duration) {
+ final long millis = duration.toMillis();
+ return millis > 0 ? (int) Math.min(millis, Integer.MAX_VALUE) : (int) Math.max(millis, Integer.MIN_VALUE);
+ }
+
+}