diff --git a/services/git-bridge/pom.xml b/services/git-bridge/pom.xml
index 07db011f45..74eaefe50d 100644
--- a/services/git-bridge/pom.xml
+++ b/services/git-bridge/pom.xml
@@ -12,18 +12,20 @@
+
maven-compiler-plugin
- 3.2
+ 3.7.0
1.8
1.8
+
maven-assembly-plugin
- 2.5.2
+ 3.1.0
package
@@ -46,123 +48,141 @@
+
junit
junit
4.12
test
+
org.jmock
jmock-junit4
- 2.8.2
+ 2.8.4
test
+
org.eclipse.jetty
jetty-servlet
- 9.3.9.v20160517
+ 9.4.8.v20171121
+
org.eclipse.jetty
jetty-server
- 9.3.9.v20160517
+ 9.4.8.v20171121
+
com.google.code.gson
gson
- 2.6.2
+ 2.8.2
+
- com.ning
+ org.asynchttpclient
async-http-client
- 1.9.38
+ 2.3.0
+
org.eclipse.jgit
org.eclipse.jgit
- 4.4.1.201607150455-r
+ 4.10.0.201712302008-r
+
org.eclipse.jgit
org.eclipse.jgit.http.server
- 4.4.1.201607150455-r
+ 4.10.0.201712302008-r
+
org.xerial
sqlite-jdbc
- 3.8.11.2
+ 3.21.0.1
+
joda-time
joda-time
- 2.9.4
+ 2.9.9
+
com.google.oauth-client
google-oauth-client
- 1.22.0
+ 1.23.0
+
com.google.http-client
google-http-client
- 1.22.0
+ 1.23.0
+
com.google.http-client
google-http-client-gson
- 1.22.0
+ 1.23.0
+
- commons-lang
- commons-lang
- 2.6
+ org.apache.commons
+ commons-lang3
+ 3.7
+
ch.qos.logback
logback-classic
- 1.1.7
+ 1.2.3
+
com.google.guava
guava
- 19.0
+ 24.0-jre
+
org.mock-server
mockserver-netty
- 3.10.4
+ 5.3.0
test
org.mockito
mockito-core
- 1.10.19
+ 2.13.0
+ test
com.amazonaws
aws-java-sdk
- 1.11.28
+ 1.11.274
org.apache.httpcomponents
httpclient
- 4.5.2
+ 4.5.5
commons-io
commons-io
- 2.5
+ 2.6
org.apache.commons
commons-compress
- 1.12
+ 1.15
diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/resource/UrlResourceCache.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/resource/UrlResourceCache.java
index 9a2c72a548..e3c7911b6e 100644
--- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/resource/UrlResourceCache.java
+++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/resource/UrlResourceCache.java
@@ -1,6 +1,6 @@
package uk.ac.ic.wlgitbridge.bridge.resource;
-import com.ning.http.client.AsyncHttpClient;
+import static org.asynchttpclient.Dsl.*;
import uk.ac.ic.wlgitbridge.bridge.db.DBStore;
import uk.ac.ic.wlgitbridge.data.filestore.RawFile;
import uk.ac.ic.wlgitbridge.data.filestore.RepositoryFile;
@@ -31,7 +31,7 @@ public class UrlResourceCache implements ResourceCache {
}
public UrlResourceCache(DBStore dbStore) {
- this(dbStore, new NingHttpClient(new AsyncHttpClient()));
+ this(dbStore, new NingHttpClient(asyncHttpClient()));
}
@Override
@@ -82,8 +82,7 @@ public class UrlResourceCache implements ResourceCache {
Log.info("GET -> " + url);
try {
contents = http.get(url, hs -> {
- List contentLengths
- = hs.getHeaders().get("Content-Length");
+ List contentLengths = hs.getAll("Content-Length");
if (!maxFileSize.isPresent()) {
return true;
}
diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/swap/store/S3SwapStore.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/swap/store/S3SwapStore.java
index ed1e379a7b..44d823aa8c 100644
--- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/swap/store/S3SwapStore.java
+++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/swap/store/S3SwapStore.java
@@ -1,8 +1,9 @@
package uk.ac.ic.wlgitbridge.bridge.swap.store;
+import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3;
-import com.amazonaws.services.s3.AmazonS3Client;
+import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;
import java.io.InputStream;
@@ -29,7 +30,7 @@ public class S3SwapStore implements SwapStore {
String secret,
String bucketName
) {
- s3 = new AmazonS3Client(new BasicAWSCredentials(accessKey, secret));
+ s3 = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, secret))).build();
this.bucketName = bucketName;
}
diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/io/http/ning/NingHttpClient.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/io/http/ning/NingHttpClient.java
index b9f3d215ff..41c4bc73f3 100644
--- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/io/http/ning/NingHttpClient.java
+++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/io/http/ning/NingHttpClient.java
@@ -1,6 +1,7 @@
package uk.ac.ic.wlgitbridge.io.http.ning;
-import com.ning.http.client.*;
+import io.netty.handler.codec.http.HttpHeaders;
+import org.asynchttpclient.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import uk.ac.ic.wlgitbridge.util.FunctionT;
@@ -23,7 +24,7 @@ public class NingHttpClient implements NingHttpClientFacade {
@Override
public byte[] get(
String url,
- FunctionT handler
+ FunctionT handler
) throws ExecutionException {
try {
return http
@@ -33,19 +34,19 @@ public class NingHttpClient implements NingHttpClientFacade {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
@Override
- public STATE onHeadersReceived(
- HttpResponseHeaders headers
+ public State onHeadersReceived(
+ HttpHeaders headers
) throws E {
return handler.apply(headers)
- ? STATE.CONTINUE : STATE.ABORT;
+ ? State.CONTINUE : State.ABORT;
}
@Override
- public STATE onBodyPartReceived(
+ public State onBodyPartReceived(
HttpResponseBodyPart content
) throws IOException {
bytes.write(content.getBodyPartBytes());
- return STATE.CONTINUE;
+ return State.CONTINUE;
}
@Override
diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/io/http/ning/NingHttpClientFacade.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/io/http/ning/NingHttpClientFacade.java
index f0bf4c3770..2d1e0b3744 100644
--- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/io/http/ning/NingHttpClientFacade.java
+++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/io/http/ning/NingHttpClientFacade.java
@@ -1,6 +1,6 @@
package uk.ac.ic.wlgitbridge.io.http.ning;
-import com.ning.http.client.HttpResponseHeaders;
+import io.netty.handler.codec.http.HttpHeaders;
import uk.ac.ic.wlgitbridge.util.FunctionT;
import java.util.concurrent.ExecutionException;
@@ -16,7 +16,7 @@ public interface NingHttpClientFacade {
*/
byte[] get(
String url,
- FunctionT handler
+ FunctionT handler
) throws ExecutionException;
}
diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/io/http/ning/NingHttpHeaders.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/io/http/ning/NingHttpHeaders.java
deleted file mode 100644
index 69093f37c4..0000000000
--- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/io/http/ning/NingHttpHeaders.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package uk.ac.ic.wlgitbridge.io.http.ning;
-
-import com.ning.http.client.FluentCaseInsensitiveStringsMap;
-import com.ning.http.client.HttpResponseHeaders;
-
-import java.util.*;
-
-public class NingHttpHeaders extends HttpResponseHeaders {
-
- private final FluentCaseInsensitiveStringsMap map;
-
- private NingHttpHeaders(FluentCaseInsensitiveStringsMap map) {
- this.map = map;
- }
-
- public static NingHttpHeadersBuilder builder() {
- return new NingHttpHeadersBuilder();
- }
-
- @Override
- public FluentCaseInsensitiveStringsMap getHeaders() {
- return map;
- }
-
- public static class NingHttpHeadersBuilder {
-
- private final Map> map;
-
- private NingHttpHeadersBuilder() {
- map = new HashMap<>();
- }
-
- public NingHttpHeadersBuilder addHeader(String key, String... values) {
- map.computeIfAbsent(key, __ -> new ArrayList<>())
- .addAll(Arrays.asList(values));
- return this;
- }
-
- public NingHttpHeaders build() {
- return new NingHttpHeaders(
- new FluentCaseInsensitiveStringsMap(map));
- }
-
- }
-
-}
diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/Request.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/Request.java
index 9316eb667b..34fabb794e 100644
--- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/Request.java
+++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/Request.java
@@ -3,7 +3,8 @@ package uk.ac.ic.wlgitbridge.snapshot.base;
import com.google.api.client.http.*;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
-import com.ning.http.client.AsyncHttpClient;
+import org.asynchttpclient.AsyncHttpClient;
+import static org.asynchttpclient.Dsl.*;
import uk.ac.ic.wlgitbridge.snapshot.exception.FailedConnectionException;
import uk.ac.ic.wlgitbridge.util.Instance;
import uk.ac.ic.wlgitbridge.util.Log;
@@ -17,7 +18,7 @@ import java.util.concurrent.*;
*/
public abstract class Request {
- public static final AsyncHttpClient httpClient = new AsyncHttpClient();
+ public static final AsyncHttpClient httpClient = asyncHttpClient();
private static final Executor executor = Executors.newCachedThreadPool();
diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/servermock/server/PostbackThread.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/servermock/server/PostbackThread.java
index a20bfd6ecf..c3559552ed 100644
--- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/servermock/server/PostbackThread.java
+++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/servermock/server/PostbackThread.java
@@ -2,7 +2,7 @@ package uk.ac.ic.wlgitbridge.snapshot.servermock.server;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
-import com.ning.http.client.AsyncHttpClient;
+import static org.asynchttpclient.Dsl.*;
import uk.ac.ic.wlgitbridge.util.Log;
import java.io.IOException;
@@ -30,17 +30,9 @@ public class PostbackThread extends Thread {
@Override
public void run() {
try {
- new AsyncHttpClient().preparePost(
+ asyncHttpClient().preparePost(
url
).setBody(postback).execute().get().getResponseBody();
- } catch (IOException e) {
- Log.warn(
- "IOException on postback, url: " +
- url +
- ", postback: " +
- postback,
- e
- );
} catch (InterruptedException e) {
Log.warn(
"Interrupted on postback, url: " +
diff --git a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/WLGitBridgeIntegrationTest.java b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/WLGitBridgeIntegrationTest.java
index cd103fca5b..dba7989362 100644
--- a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/WLGitBridgeIntegrationTest.java
+++ b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/WLGitBridgeIntegrationTest.java
@@ -1,9 +1,9 @@
package uk.ac.ic.wlgitbridge.application;
-import com.ning.http.client.AsyncHttpClient;
-import com.ning.http.client.Response;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
+import static org.asynchttpclient.Dsl.*;
+import org.asynchttpclient.*;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.junit.Before;
import org.junit.Rule;
@@ -613,22 +613,22 @@ public class WLGitBridgeIntegrationTest {
// With no key, we should get a 404.
String url = "http://127.0.0.1:" + gitBridgePort + "/api/testproj/push.tex";
- Response response = new AsyncHttpClient().prepareGet(url).execute().get();
+ Response response = asyncHttpClient().prepareGet(url).execute().get();
assertEquals(404, response.getStatusCode());
// With an invalid project and no key, we should get a 404.
url = "http://127.0.0.1:" + gitBridgePort + "/api/notavalidproject/push.tex";
- response = new AsyncHttpClient().prepareGet(url).execute().get();
+ response = asyncHttpClient().prepareGet(url).execute().get();
assertEquals(404, response.getStatusCode());
// With a bad key for a valid project, we should get a 404.
url = "http://127.0.0.1:" + gitBridgePort + "/api/testproj/push.tex?key=notavalidkey";
- response = new AsyncHttpClient().prepareGet(url).execute().get();
+ response = asyncHttpClient().prepareGet(url).execute().get();
assertEquals(404, response.getStatusCode());
// With a bad key for an invalid project, we should get a 404.
url = "http://127.0.0.1:" + gitBridgePort + "/api/notavalidproject/push.tex?key=notavalidkey";
- response = new AsyncHttpClient().prepareGet(url).execute().get();
+ response = asyncHttpClient().prepareGet(url).execute().get();
assertEquals(404, response.getStatusCode());
wlgb.stop();
@@ -719,14 +719,14 @@ public class WLGitBridgeIntegrationTest {
// With an invalid project and no key, we should get a 404,
// which is rendered by our custom error handler.
String url = "http://127.0.0.1:" + gitBridgePort + "/api/notavalidproject/main.tex";
- Response response = new AsyncHttpClient().prepareGet(url).execute().get();
+ Response response = asyncHttpClient().prepareGet(url).execute().get();
assertEquals(404, response.getStatusCode());
assertEquals("{\"message\":\"HTTP error 404\"}", response.getResponseBody());
// With an unsupported URL outside the api, we should get a 500,
// which is rendered by our custom error handler.
url = "http://127.0.0.1:" + gitBridgePort + "/foo";
- response = new AsyncHttpClient().prepareGet(url).execute().get();
+ response = asyncHttpClient().prepareGet(url).execute().get();
assertEquals(500, response.getStatusCode());
assertEquals("{\"message\":\"HTTP error 500\"}", response.getResponseBody());
diff --git a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/resource/UrlResourceCacheTest.java b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/resource/UrlResourceCacheTest.java
index c58165c3ea..e6a93d8a30 100644
--- a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/resource/UrlResourceCacheTest.java
+++ b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/resource/UrlResourceCacheTest.java
@@ -1,12 +1,12 @@
package uk.ac.ic.wlgitbridge.bridge.resource;
-import com.ning.http.client.HttpResponseHeaders;
+import io.netty.handler.codec.http.HttpHeaders;
+import io.netty.handler.codec.http.DefaultHttpHeaders;
import org.junit.Test;
import uk.ac.ic.wlgitbridge.bridge.db.noop.NoopDbStore;
import uk.ac.ic.wlgitbridge.bridge.util.CastUtil;
import uk.ac.ic.wlgitbridge.git.exception.SizeLimitExceededException;
import uk.ac.ic.wlgitbridge.io.http.ning.NingHttpClientFacade;
-import uk.ac.ic.wlgitbridge.io.http.ning.NingHttpHeaders;
import uk.ac.ic.wlgitbridge.util.FunctionT;
import java.io.IOException;
@@ -31,11 +31,8 @@ public class UrlResourceCacheTest {
private final UrlResourceCache cache
= new UrlResourceCache(new NoopDbStore(), http);
- private static HttpResponseHeaders withContentLength(long cl) {
- return NingHttpHeaders
- .builder()
- .addHeader("Content-Length", String.valueOf(cl))
- .build();
+ private static HttpHeaders withContentLength(long cl) {
+ return new DefaultHttpHeaders().add("Content-Length", String.valueOf(cl));
}
private void respondWithContentLength(long cl, long actual)
@@ -44,7 +41,7 @@ public class UrlResourceCacheTest {
Object[] args = invoc.getArguments();
//noinspection unchecked
((FunctionT<
- HttpResponseHeaders, Boolean, SizeLimitExceededException
+ HttpHeaders, Boolean, SizeLimitExceededException
>) args[1]).apply(withContentLength(cl));
return new byte[CastUtil.assumeInt(actual)];
});