Browse Source

Dependency cleanup, migrated from commons-httpclient to org.apache.httpcomponents:httpclient

Sebastian Stenzel 8 years ago
parent
commit
c9eb9b1938

+ 2 - 2
main/ant-kit/pom.xml

@@ -44,7 +44,7 @@
 			<!-- copy resources to target/: -->
 			<plugin>
 				<artifactId>maven-resources-plugin</artifactId>
-				<version>2.7</version>
+				<version>3.0.2</version>
 				<executions>
 					<execution>
 						<id>copy-resources</id>
@@ -79,8 +79,8 @@
 
 			<!-- create antkit.tar.gz: -->
 			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-assembly-plugin</artifactId>
+				<version>3.0.0</version>
 				<executions>
 					<execution>
 						<id>make-assembly</id>

+ 1 - 0
main/commons-test/pom.xml

@@ -12,6 +12,7 @@
 		<artifactId>main</artifactId>
 		<version>1.3.0-SNAPSHOT</version>
 	</parent>
+	<packaging>pom</packaging>
 	<artifactId>commons-test</artifactId>
 	<name>Cryptomator common test dependencies</name>
 	<description>Shared utilities for tests</description>

+ 0 - 73
main/commons-test/src/main/java/org/cryptomator/common/test/TempFilesRemovedOnShutdown.java

@@ -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<Path> 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<Path>() {
-			@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;
-			}
-		});
-	}
-
-}

+ 0 - 27
main/commons-test/src/main/java/org/cryptomator/common/test/matcher/ContainsMatcher.java

@@ -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 <T> Matcher<Iterable<? super T>> containsInAnyOrder(Matcher<? extends T>... matchers) {
-		return Matchers.containsInAnyOrder((Matcher[]) matchers);
-	}
-
-	@SuppressWarnings({ "unchecked" })
-	@SafeVarargs
-	public static <T> Matcher<Iterable<? super T>> contains(Matcher<? extends T>... matchers) {
-		return Matchers.contains((Matcher[]) matchers);
-	}
-
-}

+ 0 - 48
main/commons-test/src/main/java/org/cryptomator/common/test/matcher/ExceptionMatcher.java

@@ -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<T extends Throwable> extends TypeSafeDiagnosingMatcher<T> {
-
-	public static <T extends Throwable> ExceptionMatcher<T> ofType(Class<T> exceptionType) {
-		return new ExceptionMatcher<>(exceptionType);
-	}
-
-	private final Class<T> exceptionType;
-	private final Optional<Matcher<T>> subMatcher;
-
-	private ExceptionMatcher(Class<T> exceptionType) {
-		super(exceptionType);
-		this.exceptionType = exceptionType;
-		this.subMatcher = Optional.empty();
-	}
-
-	private ExceptionMatcher(Class<T> exceptionType, Matcher<T> 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<T> withCauseThat(Matcher<? super Throwable> matcher) {
-		return new ExceptionMatcher<T>(exceptionType, new PropertyMatcher<>(exceptionType, Throwable::getCause, "cause", matcher));
-	}
-
-}

+ 0 - 61
main/commons-test/src/main/java/org/cryptomator/common/test/matcher/OptionalMatcher.java

@@ -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 <T> Matcher<Optional<T>> presentOptionalWithValueThat(Matcher<? super T> valueMatcher) {
-		return new TypeSafeDiagnosingMatcher<Optional<T>>(Optional.class) {
-			@Override
-			public void describeTo(Description description) {
-				description //
-						.appendText("a present Optional with a value that ") //
-						.appendDescriptionOf(valueMatcher);
-			}
-
-			@Override
-			protected boolean matchesSafely(Optional<T> 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 <T> Matcher<Optional<T>> emptyOptional() {
-		return new TypeSafeDiagnosingMatcher<Optional<T>>(Optional.class) {
-			@Override
-			public void describeTo(Description description) {
-				description.appendText("an empty Optional");
-			}
-
-			@Override
-			protected boolean matchesSafely(Optional<T> item, Description mismatchDescription) {
-				if (item.isPresent()) {
-					mismatchDescription.appendText("a present Optional of ").appendValue(item.get());
-					return false;
-				} else {
-					return true;
-				}
-
-			}
-
-		};
-	}
-
-}

+ 0 - 55
main/commons-test/src/main/java/org/cryptomator/common/test/matcher/PropertyMatcher.java

@@ -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<T, P> extends TypeSafeDiagnosingMatcher<T> {
-
-	private final Class<T> expectedType;
-	private final Function<? super T, P> getter;
-	private final String name;
-	private final Matcher<? super P> subMatcher;
-
-	public PropertyMatcher(Class<T> type, Function<? super T, P> getter, String name, Matcher<? super P> 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;
-		}
-	}
-
-}

+ 0 - 61
main/commons-test/src/main/java/org/cryptomator/common/test/mockito/Answers.java

@@ -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 <T> Answer<T> collectParameters(Answer<T> answer, Consumer<?>... parameterConsumers) {
-		return new Answer<T>() {
-			@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 <T> Answer<T> consecutiveAnswers(Answer<T>... 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<T>() {
-			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 <T> Answer<T> value(T value) {
-		return new Answer<T>() {
-			@Override
-			public T answer(InvocationOnMock invocation) throws Throwable {
-				return value;
-			}
-
-		};
-	}
-
-}

+ 0 - 5
main/keychain/pom.xml

@@ -21,11 +21,6 @@
 			<groupId>commons-codec</groupId>
 			<artifactId>commons-codec</artifactId>
 		</dependency>
-		<dependency>
-			<groupId>org.bouncycastle</groupId>
-			<artifactId>bcprov-jdk15on</artifactId>
-			<version>1.54</version>
-		</dependency>
 		<dependency>
 			<groupId>org.cryptomator</groupId>
 			<artifactId>jni</artifactId>

+ 7 - 8
main/pom.xml

@@ -32,7 +32,7 @@
 		<cryptomator.webdav.version>0.4.0-SNAPSHOT</cryptomator.webdav.version>
 		<cryptomator.jni.version>1.0.0</cryptomator.jni.version>
 		<log4j.version>2.1</log4j.version>
-		<slf4j.version>1.7.22</slf4j.version>
+		<slf4j.version>1.7.24</slf4j.version>
 		<junit.version>4.12</junit.version>
 		<junit.hierarchicalrunner.version>4.12.1</junit.hierarchicalrunner.version>
 		<hamcrest.version>1.3</hamcrest.version> <!-- keep in sync with version required by JUnit -->
@@ -40,9 +40,9 @@
 		<commons-collections.version>4.0</commons-collections.version>
 		<commons-lang3.version>3.5</commons-lang3.version>
 		<commons-codec.version>1.10</commons-codec.version>
-		<commons-httpclient.version>3.1</commons-httpclient.version>
-		<mockito.version>2.7.9</mockito.version>
-		<dagger.version>2.8</dagger.version>
+		<httpclient.version>4.5.3</httpclient.version>
+		<mockito.version>2.7.12</mockito.version>
+		<dagger.version>2.9</dagger.version>
 		<easybind.version>1.0.3</easybind.version>
 		<guava.version>21.0</guava.version>
 		<gson.version>2.8.0</gson.version>
@@ -152,10 +152,9 @@
 				<version>${commons-codec.version}</version>
 			</dependency>
 			<dependency>
-				<!-- org.apache.httpcomponents:httpclient is newer, but jackrabbit uses this version. We don't have a reason to upgrade -->
-				<groupId>commons-httpclient</groupId>
-				<artifactId>commons-httpclient</artifactId>
-				<version>${commons-httpclient.version}</version>
+				<groupId>org.apache.httpcomponents</groupId>
+				<artifactId>httpclient</artifactId>
+				<version>${httpclient.version}</version>
 			</dependency>
 
 			<!-- EasyBind -->

+ 1 - 0
main/uber-jar/pom.xml

@@ -29,6 +29,7 @@
 		<plugins>
 			<plugin>
 				<artifactId>maven-assembly-plugin</artifactId>
+				<version>3.0.0</version>
 				<executions>
 					<execution>
 						<id>make-assembly</id>

+ 3 - 3
main/ui/pom.xml

@@ -77,8 +77,8 @@
 			<artifactId>commons-collections4</artifactId>
 		</dependency>
 		<dependency>
-			<groupId>commons-httpclient</groupId>
-			<artifactId>commons-httpclient</artifactId>
+			<groupId>org.apache.httpcomponents</groupId>
+			<artifactId>httpclient</artifactId>
 		</dependency>
 
 		<!-- DI -->
@@ -102,7 +102,7 @@
 		<dependency>
 			<groupId>com.nulab-inc</groupId>
 			<artifactId>zxcvbn</artifactId>
-			<version>1.1.1</version>
+			<version>1.2.2</version>
 		</dependency>
 	</dependencies>
 </project>

+ 31 - 21
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<String, String> map = gson.fromJson(utf8Reader, new TypeToken<Map<String, String>>() {
-				}.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<String, String> map = gson.fromJson(utf8Reader, new TypeToken<Map<String, String>>() {
+							}.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(() -> {