diff --git a/services/git-bridge/pom.xml b/services/git-bridge/pom.xml
index 74eaefe50d..07db011f45 100644
--- a/services/git-bridge/pom.xml
+++ b/services/git-bridge/pom.xml
@@ -12,20 +12,18 @@
-
maven-compiler-plugin
- 3.7.0
+ 3.2
1.8
1.8
-
maven-assembly-plugin
- 3.1.0
+ 2.5.2
package
@@ -48,141 +46,123 @@
-
junit
junit
4.12
test
-
org.jmock
jmock-junit4
- 2.8.4
+ 2.8.2
test
-
org.eclipse.jetty
jetty-servlet
- 9.4.8.v20171121
+ 9.3.9.v20160517
-
org.eclipse.jetty
jetty-server
- 9.4.8.v20171121
+ 9.3.9.v20160517
-
com.google.code.gson
gson
- 2.8.2
+ 2.6.2
-
- org.asynchttpclient
+ com.ning
async-http-client
- 2.3.0
+ 1.9.38
-
org.eclipse.jgit
org.eclipse.jgit
- 4.10.0.201712302008-r
+ 4.4.1.201607150455-r
-
org.eclipse.jgit
org.eclipse.jgit.http.server
- 4.10.0.201712302008-r
+ 4.4.1.201607150455-r
-
org.xerial
sqlite-jdbc
- 3.21.0.1
+ 3.8.11.2
-
joda-time
joda-time
- 2.9.9
+ 2.9.4
-
com.google.oauth-client
google-oauth-client
- 1.23.0
+ 1.22.0
-
com.google.http-client
google-http-client
- 1.23.0
+ 1.22.0
-
com.google.http-client
google-http-client-gson
- 1.23.0
+ 1.22.0
-
- org.apache.commons
- commons-lang3
- 3.7
+ commons-lang
+ commons-lang
+ 2.6
-
ch.qos.logback
logback-classic
- 1.2.3
+ 1.1.7
-
com.google.guava
guava
- 24.0-jre
+ 19.0
-
org.mock-server
mockserver-netty
- 5.3.0
+ 3.10.4
test
org.mockito
mockito-core
- 2.13.0
- test
+ 1.10.19
com.amazonaws
aws-java-sdk
- 1.11.274
+ 1.11.28
org.apache.httpcomponents
httpclient
- 4.5.5
+ 4.5.2
commons-io
commons-io
- 2.6
+ 2.5
org.apache.commons
commons-compress
- 1.15
+ 1.12
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 e3c7911b6e..9a2c72a548 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 static org.asynchttpclient.Dsl.*;
+import com.ning.http.client.AsyncHttpClient;
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(asyncHttpClient()));
+ this(dbStore, new NingHttpClient(new AsyncHttpClient()));
}
@Override
@@ -82,7 +82,8 @@ public class UrlResourceCache implements ResourceCache {
Log.info("GET -> " + url);
try {
contents = http.get(url, hs -> {
- List contentLengths = hs.getAll("Content-Length");
+ List contentLengths
+ = hs.getHeaders().get("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 44d823aa8c..ed1e379a7b 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,9 +1,8 @@
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.AmazonS3ClientBuilder;
+import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.*;
import java.io.InputStream;
@@ -30,7 +29,7 @@ public class S3SwapStore implements SwapStore {
String secret,
String bucketName
) {
- s3 = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, secret))).build();
+ s3 = new AmazonS3Client(new BasicAWSCredentials(accessKey, secret));
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 41c4bc73f3..b9f3d215ff 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,7 +1,6 @@
package uk.ac.ic.wlgitbridge.io.http.ning;
-import io.netty.handler.codec.http.HttpHeaders;
-import org.asynchttpclient.*;
+import com.ning.http.client.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import uk.ac.ic.wlgitbridge.util.FunctionT;
@@ -24,7 +23,7 @@ public class NingHttpClient implements NingHttpClientFacade {
@Override
public byte[] get(
String url,
- FunctionT handler
+ FunctionT handler
) throws ExecutionException {
try {
return http
@@ -34,19 +33,19 @@ public class NingHttpClient implements NingHttpClientFacade {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
@Override
- public State onHeadersReceived(
- HttpHeaders headers
+ public STATE onHeadersReceived(
+ HttpResponseHeaders 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 2d1e0b3744..f0bf4c3770 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 io.netty.handler.codec.http.HttpHeaders;
+import com.ning.http.client.HttpResponseHeaders;
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
new file mode 100644
index 0000000000..69093f37c4
--- /dev/null
+++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/io/http/ning/NingHttpHeaders.java
@@ -0,0 +1,46 @@
+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 34fabb794e..9316eb667b 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,8 +3,7 @@ package uk.ac.ic.wlgitbridge.snapshot.base;
import com.google.api.client.http.*;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
-import org.asynchttpclient.AsyncHttpClient;
-import static org.asynchttpclient.Dsl.*;
+import com.ning.http.client.AsyncHttpClient;
import uk.ac.ic.wlgitbridge.snapshot.exception.FailedConnectionException;
import uk.ac.ic.wlgitbridge.util.Instance;
import uk.ac.ic.wlgitbridge.util.Log;
@@ -18,7 +17,7 @@ import java.util.concurrent.*;
*/
public abstract class Request {
- public static final AsyncHttpClient httpClient = asyncHttpClient();
+ public static final AsyncHttpClient httpClient = new 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 c3559552ed..a20bfd6ecf 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 static org.asynchttpclient.Dsl.*;
+import com.ning.http.client.AsyncHttpClient;
import uk.ac.ic.wlgitbridge.util.Log;
import java.io.IOException;
@@ -30,9 +30,17 @@ public class PostbackThread extends Thread {
@Override
public void run() {
try {
- asyncHttpClient().preparePost(
+ new 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 dba7989362..cd103fca5b 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 = asyncHttpClient().prepareGet(url).execute().get();
+ Response response = new 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 = asyncHttpClient().prepareGet(url).execute().get();
+ response = new 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 = asyncHttpClient().prepareGet(url).execute().get();
+ response = new 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 = asyncHttpClient().prepareGet(url).execute().get();
+ response = new 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 = asyncHttpClient().prepareGet(url).execute().get();
+ Response response = new 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 = asyncHttpClient().prepareGet(url).execute().get();
+ response = new 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 e6a93d8a30..c58165c3ea 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 io.netty.handler.codec.http.HttpHeaders;
-import io.netty.handler.codec.http.DefaultHttpHeaders;
+import com.ning.http.client.HttpResponseHeaders;
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,8 +31,11 @@ public class UrlResourceCacheTest {
private final UrlResourceCache cache
= new UrlResourceCache(new NoopDbStore(), http);
- private static HttpHeaders withContentLength(long cl) {
- return new DefaultHttpHeaders().add("Content-Length", String.valueOf(cl));
+ private static HttpResponseHeaders withContentLength(long cl) {
+ return NingHttpHeaders
+ .builder()
+ .addHeader("Content-Length", String.valueOf(cl))
+ .build();
}
private void respondWithContentLength(long cl, long actual)
@@ -41,7 +44,7 @@ public class UrlResourceCacheTest {
Object[] args = invoc.getArguments();
//noinspection unchecked
((FunctionT<
- HttpHeaders, Boolean, SizeLimitExceededException
+ HttpResponseHeaders, Boolean, SizeLimitExceededException
>) args[1]).apply(withContentLength(cl));
return new byte[CastUtil.assumeInt(actual)];
});