From c9eb9b1938b341010d605b3d2c99b587489b158e Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Wed, 1 Mar 2017 18:59:37 +0100 Subject: [PATCH] Dependency cleanup, migrated from commons-httpclient to org.apache.httpcomponents:httpclient --- main/ant-kit/pom.xml | 4 +- main/commons-test/pom.xml | 1 + .../test/TempFilesRemovedOnShutdown.java | 73 ------------------- .../common/test/matcher/ContainsMatcher.java | 27 ------- .../common/test/matcher/ExceptionMatcher.java | 48 ------------ .../common/test/matcher/OptionalMatcher.java | 61 ---------------- .../common/test/matcher/PropertyMatcher.java | 55 -------------- .../common/test/mockito/Answers.java | 61 ---------------- main/keychain/pom.xml | 5 -- main/pom.xml | 15 ++-- main/uber-jar/pom.xml | 1 + main/ui/pom.xml | 6 +- .../ui/controllers/WelcomeController.java | 52 +++++++------ 13 files changed, 45 insertions(+), 364 deletions(-) delete mode 100644 main/commons-test/src/main/java/org/cryptomator/common/test/TempFilesRemovedOnShutdown.java delete mode 100644 main/commons-test/src/main/java/org/cryptomator/common/test/matcher/ContainsMatcher.java delete mode 100644 main/commons-test/src/main/java/org/cryptomator/common/test/matcher/ExceptionMatcher.java delete mode 100644 main/commons-test/src/main/java/org/cryptomator/common/test/matcher/OptionalMatcher.java delete mode 100644 main/commons-test/src/main/java/org/cryptomator/common/test/matcher/PropertyMatcher.java delete mode 100644 main/commons-test/src/main/java/org/cryptomator/common/test/mockito/Answers.java diff --git a/main/ant-kit/pom.xml b/main/ant-kit/pom.xml index ddbc98205..015c80989 100644 --- a/main/ant-kit/pom.xml +++ b/main/ant-kit/pom.xml @@ -44,7 +44,7 @@ maven-resources-plugin - 2.7 + 3.0.2 copy-resources @@ -79,8 +79,8 @@ - org.apache.maven.plugins maven-assembly-plugin + 3.0.0 make-assembly diff --git a/main/commons-test/pom.xml b/main/commons-test/pom.xml index 9f0055118..21cbc510f 100644 --- a/main/commons-test/pom.xml +++ b/main/commons-test/pom.xml @@ -12,6 +12,7 @@ main 1.3.0-SNAPSHOT + pom commons-test Cryptomator common test dependencies Shared utilities for tests diff --git a/main/commons-test/src/main/java/org/cryptomator/common/test/TempFilesRemovedOnShutdown.java b/main/commons-test/src/main/java/org/cryptomator/common/test/TempFilesRemovedOnShutdown.java deleted file mode 100644 index 3b567bdbf..000000000 --- a/main/commons-test/src/main/java/org/cryptomator/common/test/TempFilesRemovedOnShutdown.java +++ /dev/null @@ -1,73 +0,0 @@ -package org.cryptomator.common.test; - -import static java.nio.file.Files.walkFileTree; -import static java.util.Collections.synchronizedSet; - -import java.io.IOException; -import java.nio.file.FileVisitResult; -import java.nio.file.FileVisitor; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.attribute.BasicFileAttributes; -import java.util.HashSet; -import java.util.Set; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class TempFilesRemovedOnShutdown { - - private static final Logger LOG = LoggerFactory.getLogger(TempFilesRemovedOnShutdown.class); - - private static final Set PATHS_TO_REMOVE_ON_SHUTDOWN = synchronizedSet(new HashSet<>()); - private static final Thread ON_SHUTDOWN_DELETER = new Thread(TempFilesRemovedOnShutdown::removeAll); - - static { - Runtime.getRuntime().addShutdownHook(ON_SHUTDOWN_DELETER); - } - - public static Path createTempDirectory(String prefix) throws IOException { - Path path = Files.createTempDirectory(prefix); - PATHS_TO_REMOVE_ON_SHUTDOWN.add(path); - return path; - } - - private static void removeAll() { - PATHS_TO_REMOVE_ON_SHUTDOWN.forEach(TempFilesRemovedOnShutdown::remove); - } - - private static void remove(Path path) { - try { - tryRemove(path); - } catch (Throwable e) { - LOG.debug("Failed to remove " + path, e); - } - } - - private static void tryRemove(Path path) throws IOException { - walkFileTree(path, new FileVisitor() { - @Override - public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { - return FileVisitResult.CONTINUE; - } - - @Override - public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { - Files.delete(file); - return FileVisitResult.CONTINUE; - } - - @Override - public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException { - return FileVisitResult.CONTINUE; - } - - @Override - public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException { - Files.delete(dir); - return FileVisitResult.CONTINUE; - } - }); - } - -} diff --git a/main/commons-test/src/main/java/org/cryptomator/common/test/matcher/ContainsMatcher.java b/main/commons-test/src/main/java/org/cryptomator/common/test/matcher/ContainsMatcher.java deleted file mode 100644 index 48d54130a..000000000 --- a/main/commons-test/src/main/java/org/cryptomator/common/test/matcher/ContainsMatcher.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.cryptomator.common.test.matcher; - -import org.hamcrest.Matcher; -import org.hamcrest.Matchers; - -/** - * Wraps hamcrest contains and containsInAnyOrder matcher factory methods to - * avoid problems due to incorrect / inconsistent handling of generics by - * several java compilers. - * - * @author Markus Kreusch - */ -public class ContainsMatcher { - - @SuppressWarnings({ "unchecked" }) - @SafeVarargs - public static Matcher> containsInAnyOrder(Matcher... matchers) { - return Matchers.containsInAnyOrder((Matcher[]) matchers); - } - - @SuppressWarnings({ "unchecked" }) - @SafeVarargs - public static Matcher> contains(Matcher... matchers) { - return Matchers.contains((Matcher[]) matchers); - } - -} diff --git a/main/commons-test/src/main/java/org/cryptomator/common/test/matcher/ExceptionMatcher.java b/main/commons-test/src/main/java/org/cryptomator/common/test/matcher/ExceptionMatcher.java deleted file mode 100644 index ad5f1cffb..000000000 --- a/main/commons-test/src/main/java/org/cryptomator/common/test/matcher/ExceptionMatcher.java +++ /dev/null @@ -1,48 +0,0 @@ -package org.cryptomator.common.test.matcher; - -import java.util.Optional; - -import org.hamcrest.Description; -import org.hamcrest.Matcher; -import org.hamcrest.TypeSafeDiagnosingMatcher; - -public class ExceptionMatcher extends TypeSafeDiagnosingMatcher { - - public static ExceptionMatcher ofType(Class exceptionType) { - return new ExceptionMatcher<>(exceptionType); - } - - private final Class exceptionType; - private final Optional> subMatcher; - - private ExceptionMatcher(Class exceptionType) { - super(exceptionType); - this.exceptionType = exceptionType; - this.subMatcher = Optional.empty(); - } - - private ExceptionMatcher(Class exceptionType, Matcher subMatcher) { - super(exceptionType); - this.exceptionType = exceptionType; - this.subMatcher = Optional.of(subMatcher); - } - - @Override - public void describeTo(Description description) { - subMatcher.ifPresent(description::appendDescriptionOf); - } - - @Override - protected boolean matchesSafely(T item, Description mismatchDescription) { - if (subMatcher.map(matcher -> !matcher.matches(item)).orElse(false)) { - subMatcher.get().describeMismatch(item, mismatchDescription); - return false; - } - return true; - } - - public Matcher withCauseThat(Matcher matcher) { - return new ExceptionMatcher(exceptionType, new PropertyMatcher<>(exceptionType, Throwable::getCause, "cause", matcher)); - } - -} diff --git a/main/commons-test/src/main/java/org/cryptomator/common/test/matcher/OptionalMatcher.java b/main/commons-test/src/main/java/org/cryptomator/common/test/matcher/OptionalMatcher.java deleted file mode 100644 index 8d1b96077..000000000 --- a/main/commons-test/src/main/java/org/cryptomator/common/test/matcher/OptionalMatcher.java +++ /dev/null @@ -1,61 +0,0 @@ -package org.cryptomator.common.test.matcher; - -import java.util.Optional; - -import org.hamcrest.Description; -import org.hamcrest.Matcher; -import org.hamcrest.TypeSafeDiagnosingMatcher; - -public class OptionalMatcher { - - public static Matcher> presentOptionalWithValueThat(Matcher valueMatcher) { - return new TypeSafeDiagnosingMatcher>(Optional.class) { - @Override - public void describeTo(Description description) { - description // - .appendText("a present Optional with a value that ") // - .appendDescriptionOf(valueMatcher); - } - - @Override - protected boolean matchesSafely(Optional item, Description mismatchDescription) { - if (item.isPresent()) { - if (valueMatcher.matches(item.get())) { - return true; - } else { - mismatchDescription.appendText("a present Optional with value that "); - valueMatcher.describeMismatch(item, mismatchDescription); - return false; - } - } else { - mismatchDescription.appendText("an empty Optional"); - return false; - } - - } - - }; - } - - public static Matcher> emptyOptional() { - return new TypeSafeDiagnosingMatcher>(Optional.class) { - @Override - public void describeTo(Description description) { - description.appendText("an empty Optional"); - } - - @Override - protected boolean matchesSafely(Optional item, Description mismatchDescription) { - if (item.isPresent()) { - mismatchDescription.appendText("a present Optional of ").appendValue(item.get()); - return false; - } else { - return true; - } - - } - - }; - } - -} diff --git a/main/commons-test/src/main/java/org/cryptomator/common/test/matcher/PropertyMatcher.java b/main/commons-test/src/main/java/org/cryptomator/common/test/matcher/PropertyMatcher.java deleted file mode 100644 index 85108c984..000000000 --- a/main/commons-test/src/main/java/org/cryptomator/common/test/matcher/PropertyMatcher.java +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015 Markus Kreusch - * This file is licensed under the terms of the MIT license. - * See the LICENSE.txt file for more info. - ******************************************************************************/ -package org.cryptomator.common.test.matcher; - -import java.util.function.Function; - -import org.hamcrest.Description; -import org.hamcrest.Matcher; -import org.hamcrest.TypeSafeDiagnosingMatcher; - -public class PropertyMatcher extends TypeSafeDiagnosingMatcher { - - private final Class expectedType; - private final Function getter; - private final String name; - private final Matcher subMatcher; - - public PropertyMatcher(Class type, Function getter, String name, Matcher subMatcher) { - super(type); - this.expectedType = type; - this.getter = getter; - this.name = name; - this.subMatcher = subMatcher; - } - - @Override - public void describeTo(Description description) { - description.appendText("a ") // - .appendText(expectedType.getSimpleName()) // - .appendText(" with a ") // - .appendText(name) // - .appendText(" that ") // - .appendDescriptionOf(subMatcher); - } - - @Override - protected boolean matchesSafely(T item, Description mismatchDescription) { - P propertyValue = getter.apply(item); - if (subMatcher.matches(propertyValue)) { - return true; - } else { - mismatchDescription.appendText("a ") // - .appendText(expectedType.getSimpleName()) // - .appendText(" with a ") // - .appendText(name) // - .appendText(" that "); - subMatcher.describeMismatch(propertyValue, mismatchDescription); - return false; - } - } - -} diff --git a/main/commons-test/src/main/java/org/cryptomator/common/test/mockito/Answers.java b/main/commons-test/src/main/java/org/cryptomator/common/test/mockito/Answers.java deleted file mode 100644 index 57a60a40d..000000000 --- a/main/commons-test/src/main/java/org/cryptomator/common/test/mockito/Answers.java +++ /dev/null @@ -1,61 +0,0 @@ -package org.cryptomator.common.test.mockito; - -import static java.util.Arrays.asList; - -import java.util.function.Consumer; - -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; - -public class Answers { - - public static Answer collectParameters(Answer answer, Consumer... parameterConsumers) { - return new Answer() { - @SuppressWarnings({"rawtypes", "unchecked"}) - @Override - public T answer(InvocationOnMock invocation) throws Throwable { - for (int i = 0; i < invocation.getArguments().length; i++) { - if (parameterConsumers.length > i) { - ((Consumer) parameterConsumers[i]).accept(invocation.getArguments()[i]); - } - } - return answer.answer(invocation); - } - }; - - } - - @SafeVarargs - public static Answer consecutiveAnswers(Answer... answers) { - if (answers == null || answers.length == 0) { - throw new IllegalArgumentException("Required at least one answer"); - } - if (asList(answers).contains(null)) { - throw new IllegalArgumentException("No answers must be null"); - } - return new Answer() { - private int nextIndex = 0; - - @Override - public T answer(InvocationOnMock invocation) throws Throwable { - try { - return answers[nextIndex].answer(invocation); - } finally { - nextIndex = (nextIndex + 1) % answers.length; - } - } - - }; - } - - public static Answer value(T value) { - return new Answer() { - @Override - public T answer(InvocationOnMock invocation) throws Throwable { - return value; - } - - }; - } - -} diff --git a/main/keychain/pom.xml b/main/keychain/pom.xml index 69a209683..3976e2297 100644 --- a/main/keychain/pom.xml +++ b/main/keychain/pom.xml @@ -21,11 +21,6 @@ commons-codec commons-codec - - org.bouncycastle - bcprov-jdk15on - 1.54 - org.cryptomator jni diff --git a/main/pom.xml b/main/pom.xml index 1056ecc4e..0e689ebbd 100644 --- a/main/pom.xml +++ b/main/pom.xml @@ -32,7 +32,7 @@ 0.4.0-SNAPSHOT 1.0.0 2.1 - 1.7.22 + 1.7.24 4.12 4.12.1 1.3 @@ -40,9 +40,9 @@ 4.0 3.5 1.10 - 3.1 - 2.7.9 - 2.8 + 4.5.3 + 2.7.12 + 2.9 1.0.3 21.0 2.8.0 @@ -152,10 +152,9 @@ ${commons-codec.version} - - commons-httpclient - commons-httpclient - ${commons-httpclient.version} + org.apache.httpcomponents + httpclient + ${httpclient.version} diff --git a/main/uber-jar/pom.xml b/main/uber-jar/pom.xml index 016486d8b..35b3e2273 100644 --- a/main/uber-jar/pom.xml +++ b/main/uber-jar/pom.xml @@ -29,6 +29,7 @@ maven-assembly-plugin + 3.0.0 make-assembly diff --git a/main/ui/pom.xml b/main/ui/pom.xml index ef8134c78..09245175c 100644 --- a/main/ui/pom.xml +++ b/main/ui/pom.xml @@ -77,8 +77,8 @@ commons-collections4 - commons-httpclient - commons-httpclient + org.apache.httpcomponents + httpclient @@ -102,7 +102,7 @@ com.nulab-inc zxcvbn - 1.1.1 + 1.2.2 diff --git a/main/ui/src/main/java/org/cryptomator/ui/controllers/WelcomeController.java b/main/ui/src/main/java/org/cryptomator/ui/controllers/WelcomeController.java index a3c825830..40fd97fd6 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/controllers/WelcomeController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/controllers/WelcomeController.java @@ -20,13 +20,13 @@ import javax.inject.Inject; import javax.inject.Named; import javax.inject.Singleton; -import org.apache.commons.httpclient.HttpClient; -import org.apache.commons.httpclient.HttpMethod; -import org.apache.commons.httpclient.HttpStatus; -import org.apache.commons.httpclient.cookie.CookiePolicy; -import org.apache.commons.httpclient.methods.GetMethod; -import org.apache.commons.httpclient.params.HttpClientParams; import org.apache.commons.lang3.SystemUtils; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.impl.client.HttpClients; import org.cryptomator.ui.settings.Localization; import org.cryptomator.ui.settings.Settings; import org.cryptomator.ui.util.ApplicationVersion; @@ -104,20 +104,30 @@ public class WelcomeController extends LocalizedFXMLViewController { checkForUpdatesStatus.setText(localization.getString("welcome.checkForUpdates.label.currentlyChecking")); checkForUpdatesIndicator.setVisible(true); asyncTaskService.asyncTaskOf(() -> { - final HttpClient client = new HttpClient(); - final HttpMethod method = new GetMethod("https://cryptomator.org/downloads/latestVersion.json"); - client.getParams().setParameter(HttpClientParams.USER_AGENT, "Cryptomator VersionChecker/" + ApplicationVersion.orElse("SNAPSHOT")); - client.getParams().setCookiePolicy(CookiePolicy.IGNORE_COOKIES); - client.getParams().setConnectionManagerTimeout(5000); - client.executeMethod(method); - final InputStream responseBodyStream = method.getResponseBodyAsStream(); - if (method.getStatusCode() == HttpStatus.SC_OK && responseBodyStream != null) { - Gson gson = new GsonBuilder().setLenient().create(); - Reader utf8Reader = new InputStreamReader(responseBodyStream, StandardCharsets.UTF_8); - Map map = gson.fromJson(utf8Reader, new TypeToken>() { - }.getType()); - if (map != null) { - this.compareVersions(map); + RequestConfig requestConfig = RequestConfig.custom() // + .setConnectTimeout(5000) // + .setConnectionRequestTimeout(5000) // + .setSocketTimeout(5000) // + .build(); + HttpClientBuilder httpClientBuilder = HttpClients.custom() // + .disableCookieManagement() // + .setDefaultRequestConfig(requestConfig) // + .setUserAgent("Cryptomator VersionChecker/" + ApplicationVersion.orElse("SNAPSHOT")); + LOG.debug("Checking for updates..."); + try (CloseableHttpClient client = httpClientBuilder.build()) { + HttpGet request = new HttpGet("https://cryptomator.org/downloads/latestVersion.json"); + try (CloseableHttpResponse response = client.execute(request)) { + if (response.getStatusLine().getStatusCode() == 200 && response.getEntity() != null) { + try (InputStream in = response.getEntity().getContent()) { + Gson gson = new GsonBuilder().setLenient().create(); + Reader utf8Reader = new InputStreamReader(in, StandardCharsets.UTF_8); + Map map = gson.fromJson(utf8Reader, new TypeToken>() { + }.getType()); + if (map != null) { + this.compareVersions(map); + } + } + } } } }).andFinally(() -> { @@ -139,7 +149,7 @@ public class WelcomeController extends LocalizedFXMLViewController { return; } final String currentVersion = ApplicationVersion.orElse(null); - LOG.debug("Current version: {}, lastest version: {}", currentVersion, latestVersion); + LOG.info("Current version: {}, lastest version: {}", currentVersion, latestVersion); if (currentVersion != null && semVerComparator.compare(currentVersion, latestVersion) < 0) { final String msg = String.format(localization.getString("welcome.newVersionMessage"), latestVersion, currentVersion); Platform.runLater(() -> {