Skip to content

Commit 5a7eee5

Browse files
authored
Merge pull request #16 from tomdesair/feature/target-jdks-testing
Update dependencies and automated testing for JDK11
2 parents a02f6bd + e55b105 commit 5a7eee5

33 files changed

+309
-258
lines changed

.travis.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
11
language: java
2+
sudo: false # faster builds
3+
4+
jdk:
5+
- oraclejdk11
6+
- oraclejdk9
7+
- openjdk8
8+
# https://docs.travis-ci.com/user/languages/java/#testing-against-multiple-jdks
9+
# - Oracle JDK 10 is not provided because it reached End of Life in October 2018.
10+
# - JDK 7 is not listed as the Sonar plugin requires Java 8. However, all JDKs compile with target version 7.
11+
212
addons:
313
sonarcloud:
414
organization: "tomdesair-github"
15+
516
script:
617
- mvn clean install -P checkstyle

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[![Build Status](https://travis-ci.org/tomdesair/tus-java-server.svg?branch=master)](https://travis-ci.org/tomdesair/tus-java-server) [![Test Coverage](https://coveralls.io/repos/github/tomdesair/tus-java-server/badge.svg)](https://coveralls.io/github/tomdesair/tus-java-server) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/d57e97c51d76419498fa69dd25e2bcee)](https://www.codacy.com/app/tom.desair/tus-java-server?utm_source=github.com&utm_medium=referral&utm_content=tomdesair/tus-java-server&utm_campaign=Badge_Grade) [![Bugs](https://sonarcloud.io/api/project_badges/measure?project=me.desair.tus%3Atus-java-server&metric=bugs)](https://sonarcloud.io/dashboard?id=me.desair.tus%3Atus-java-server) [![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=me.desair.tus%3Atus-java-server&metric=vulnerabilities)](https://sonarcloud.io/dashboard?id=me.desair.tus%3Atus-java-server) [![Duplicated Lines](https://sonarcloud.io/api/project_badges/measure?project=me.desair.tus%3Atus-java-server&metric=duplicated_lines_density)](https://sonarcloud.io/dashboard?id=me.desair.tus%3Atus-java-server)
22

33
# tus-java-server
4-
This library can be used to enable resumable (and potentially asynchronous) file uploads in any Java web application. This allows the users of your application to upload large files over slow and unreliable internet connections. The ability to pause or resume a file upload (after a connection loss or reset) is achieved by implementing the open file upload protocol tus (https://tus.io/). This library implements the server-side of the tus v1.0.0 protocol with [all optional extensions](#tus-protocol-extensions).
4+
This library can be used to enable resumable (and potentially asynchronous) file uploads in any Java web application. This allows the users of your application to upload large files over slow and unreliable internet connections. The ability to pause or resume a file upload (after a connection loss or reset) is achieved by implementing the open file upload protocol tus (https://tus.io/). This library implements the server-side of the tus v1.0.0 protocol with [all optional extensions](#tus-protocol-extensions). This library supports the following Java version: 7, 8, 9, 10 and 11.
55

66
## Quick Start and Examples
77
The tus-java-server library only depends on Java Servlet API 3.1 and some Apache Commons utility libraries. This means that (in theory) you can use this library on any modern Java Web Application server like Tomcat, JBoss, Jetty... By default all uploaded data and information is stored on the file system of the application server (and currently this is the only option, see [configuration section](#usage-and-configuration)).

pom.xml

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@
6969
</dependency>
7070
<dependency>
7171
<groupId>org.mockito</groupId>
72-
<artifactId>mockito-all</artifactId>
73-
<version>1.10.19</version>
72+
<artifactId>mockito-core</artifactId>
73+
<version>2.23.4</version>
7474
<scope>test</scope>
7575
</dependency>
7676
<dependency>
@@ -86,7 +86,7 @@
8686
<plugin>
8787
<groupId>org.jacoco</groupId>
8888
<artifactId>jacoco-maven-plugin</artifactId>
89-
<version>0.7.9</version>
89+
<version>0.8.2</version>
9090
<executions>
9191
<!--
9292
Prepares the property pointing to the JaCoCo runtime agent which
@@ -167,7 +167,14 @@
167167
<plugin>
168168
<groupId>org.apache.maven.plugins</groupId>
169169
<artifactId>maven-surefire-plugin</artifactId>
170-
<version>2.20.1</version>
170+
<version>2.22.1</version>
171+
<dependencies>
172+
<dependency>
173+
<groupId>org.ow2.asm</groupId>
174+
<artifactId>asm</artifactId>
175+
<version>6.2.1</version>
176+
</dependency>
177+
</dependencies>
171178
<configuration>
172179
<!-- Sets the VM argument line used when unit tests are run. -->
173180
<argLine>${surefireArgLine}</argLine>
@@ -182,7 +189,14 @@
182189
<plugin>
183190
<groupId>org.apache.maven.plugins</groupId>
184191
<artifactId>maven-failsafe-plugin</artifactId>
185-
<version>2.20.1</version>
192+
<version>2.22.1</version>
193+
<dependencies>
194+
<dependency>
195+
<groupId>org.ow2.asm</groupId>
196+
<artifactId>asm</artifactId>
197+
<version>6.2.1</version>
198+
</dependency>
199+
</dependencies>
186200
<configuration>
187201
<!-- Sets the VM argument line used when integration tests are run. -->
188202
<argLine>${failsafeArgLine}</argLine>
@@ -239,7 +253,7 @@
239253
<plugin>
240254
<groupId>org.sonarsource.scanner.maven</groupId>
241255
<artifactId>sonar-maven-plugin</artifactId>
242-
<version>3.4.1.1168</version>
256+
<version>3.5.0.1254</version>
243257
<executions>
244258
<execution>
245259
<id>sonar-code-analysis</id>
@@ -270,6 +284,13 @@
270284
<groupId>org.eluder.coveralls</groupId>
271285
<artifactId>coveralls-maven-plugin</artifactId>
272286
<version>4.3.0</version>
287+
<dependencies>
288+
<dependency>
289+
<groupId>org.glassfish.jaxb</groupId>
290+
<artifactId>jaxb-runtime</artifactId>
291+
<version>2.4.0-b180830.0438</version>
292+
</dependency>
293+
</dependencies>
273294
<executions>
274295
<execution>
275296
<id>report-test-coverage</id>

src/main/java/me/desair/tus/server/util/TusServletRequest.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,12 @@
1616
import javax.servlet.http.HttpServletRequest;
1717
import javax.servlet.http.HttpServletRequestWrapper;
1818

19-
import org.apache.commons.codec.binary.Base64;
20-
import org.apache.commons.io.input.CountingInputStream;
21-
import org.apache.commons.lang3.StringUtils;
22-
2319
import me.desair.tus.server.HttpHeader;
2420
import me.desair.tus.server.TusExtension;
2521
import me.desair.tus.server.checksum.ChecksumAlgorithm;
22+
import org.apache.commons.codec.binary.Base64;
23+
import org.apache.commons.io.input.CountingInputStream;
24+
import org.apache.commons.lang3.StringUtils;
2625

2726
public class TusServletRequest extends HttpServletRequestWrapper {
2827

src/test/java/me/desair/tus/server/AbstractTusExtensionIntegrationTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import static org.hamcrest.CoreMatchers.is;
44
import static org.hamcrest.MatcherAssert.assertThat;
55
import static org.hamcrest.Matchers.containsInAnyOrder;
6-
import static org.mockito.Matchers.any;
7-
import static org.mockito.Matchers.anyString;
6+
import static org.mockito.ArgumentMatchers.any;
7+
import static org.mockito.ArgumentMatchers.nullable;
88
import static org.mockito.Mockito.when;
99

1010
import java.io.IOException;
@@ -22,13 +22,13 @@
2222
import org.apache.commons.io.IOUtils;
2323
import org.junit.runner.RunWith;
2424
import org.mockito.Mock;
25-
import org.mockito.runners.MockitoJUnitRunner;
25+
import org.mockito.junit.MockitoJUnitRunner;
2626
import org.slf4j.Logger;
2727
import org.slf4j.LoggerFactory;
2828
import org.springframework.mock.web.MockHttpServletRequest;
2929
import org.springframework.mock.web.MockHttpServletResponse;
3030

31-
@RunWith(MockitoJUnitRunner.class)
31+
@RunWith(MockitoJUnitRunner.Silent.class)
3232
public abstract class AbstractTusExtensionIntegrationTest {
3333

3434
private static final Logger log = LoggerFactory.getLogger(AbstractTusExtensionIntegrationTest.class);
@@ -48,7 +48,7 @@ protected void prepareUploadInfo(Long offset, Long length) throws IOException, T
4848
uploadInfo = new UploadInfo();
4949
uploadInfo.setOffset(offset);
5050
uploadInfo.setLength(length);
51-
when(uploadStorageService.getUploadInfo(anyString(), anyString())).thenReturn(uploadInfo);
51+
when(uploadStorageService.getUploadInfo(nullable(String.class), nullable(String.class))).thenReturn(uploadInfo);
5252
when(uploadStorageService.append(any(UploadInfo.class), any(InputStream.class))).thenReturn(uploadInfo);
5353
}
5454

src/test/java/me/desair/tus/server/checksum/ChecksumPatchRequestHandlerTest.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
import static org.hamcrest.CoreMatchers.is;
44
import static org.hamcrest.MatcherAssert.assertThat;
5-
import static org.mockito.Matchers.any;
6-
import static org.mockito.Matchers.anyString;
5+
import static org.mockito.ArgumentMatchers.any;
6+
import static org.mockito.ArgumentMatchers.nullable;
77
import static org.mockito.Mockito.never;
88
import static org.mockito.Mockito.times;
99
import static org.mockito.Mockito.verify;
@@ -19,11 +19,11 @@
1919
import org.junit.Before;
2020
import org.junit.Test;
2121
import org.junit.runner.RunWith;
22-
import org.mockito.Matchers;
22+
import org.mockito.ArgumentMatchers;
2323
import org.mockito.Mock;
24-
import org.mockito.runners.MockitoJUnitRunner;
24+
import org.mockito.junit.MockitoJUnitRunner;
2525

26-
@RunWith(MockitoJUnitRunner.class)
26+
@RunWith(MockitoJUnitRunner.Silent.class)
2727
public class ChecksumPatchRequestHandlerTest {
2828

2929
private ChecksumPatchRequestHandler handler;
@@ -41,7 +41,7 @@ public void setUp() throws Exception {
4141
UploadInfo info = new UploadInfo();
4242
info.setOffset(2L);
4343
info.setLength(10L);
44-
when(uploadStorageService.getUploadInfo(anyString(), anyString())).thenReturn(info);
44+
when(uploadStorageService.getUploadInfo(nullable(String.class), nullable(String.class))).thenReturn(info);
4545
}
4646

4747
@Test
@@ -59,7 +59,8 @@ public void supports() throws Exception {
5959
@Test
6060
public void testValidHeaderAndChecksum() throws Exception {
6161
when(servletRequest.getHeader(HttpHeader.UPLOAD_CHECKSUM)).thenReturn("sha1 1234567890");
62-
when(servletRequest.getCalculatedChecksum(Matchers.any(ChecksumAlgorithm.class))).thenReturn("1234567890");
62+
when(servletRequest.getCalculatedChecksum(ArgumentMatchers.any(ChecksumAlgorithm.class)))
63+
.thenReturn("1234567890");
6364
when(servletRequest.hasCalculatedChecksum()).thenReturn(true);
6465

6566
handler.process(HttpMethod.PATCH, servletRequest, null, uploadStorageService, null);
@@ -70,7 +71,8 @@ public void testValidHeaderAndChecksum() throws Exception {
7071
@Test(expected = UploadChecksumMismatchException.class)
7172
public void testValidHeaderAndInvalidChecksum() throws Exception {
7273
when(servletRequest.getHeader(HttpHeader.UPLOAD_CHECKSUM)).thenReturn("sha1 1234567890");
73-
when(servletRequest.getCalculatedChecksum(Matchers.any(ChecksumAlgorithm.class))).thenReturn("0123456789");
74+
when(servletRequest.getCalculatedChecksum(ArgumentMatchers.any(ChecksumAlgorithm.class)))
75+
.thenReturn("0123456789");
7476
when(servletRequest.hasCalculatedChecksum()).thenReturn(true);
7577

7678
handler.process(HttpMethod.PATCH, servletRequest, null, uploadStorageService, null);

src/test/java/me/desair/tus/server/checksum/validation/ChecksumAlgorithmValidatorTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
import org.junit.Test;
1616
import org.junit.runner.RunWith;
1717
import org.mockito.Mock;
18-
import org.mockito.runners.MockitoJUnitRunner;
18+
import org.mockito.junit.MockitoJUnitRunner;
1919
import org.springframework.mock.web.MockHttpServletRequest;
2020

21-
@RunWith(MockitoJUnitRunner.class)
21+
@RunWith(MockitoJUnitRunner.Silent.class)
2222
public class ChecksumAlgorithmValidatorTest {
2323

2424
private ChecksumAlgorithmValidator validator;

src/test/java/me/desair/tus/server/concatenation/ConcatenationHeadRequestHandlerTest.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import static org.hamcrest.CoreMatchers.is;
44
import static org.hamcrest.CoreMatchers.nullValue;
55
import static org.hamcrest.MatcherAssert.assertThat;
6-
import static org.mockito.Matchers.anyString;
7-
import static org.mockito.Matchers.eq;
6+
import static org.mockito.ArgumentMatchers.eq;
7+
import static org.mockito.ArgumentMatchers.nullable;
88
import static org.mockito.Mockito.never;
99
import static org.mockito.Mockito.times;
1010
import static org.mockito.Mockito.verify;
@@ -24,11 +24,11 @@
2424
import org.junit.Test;
2525
import org.junit.runner.RunWith;
2626
import org.mockito.Mock;
27-
import org.mockito.runners.MockitoJUnitRunner;
27+
import org.mockito.junit.MockitoJUnitRunner;
2828
import org.springframework.mock.web.MockHttpServletRequest;
2929
import org.springframework.mock.web.MockHttpServletResponse;
3030

31-
@RunWith(MockitoJUnitRunner.class)
31+
@RunWith(MockitoJUnitRunner.Silent.class)
3232
public class ConcatenationHeadRequestHandlerTest {
3333

3434
private ConcatenationHeadRequestHandler handler;
@@ -70,7 +70,8 @@ public void testRegularUpload() throws Exception {
7070
info1.setUploadConcatHeaderValue("Impossible");
7171
info1.setUploadType(UploadType.REGULAR);
7272

73-
when(uploadStorageService.getUploadInfo(eq(info1.getId().toString()), anyString())).thenReturn(info1);
73+
when(uploadStorageService.getUploadInfo(eq(info1.getId().toString()),
74+
nullable(String.class))).thenReturn(info1);
7475
servletRequest.setRequestURI(info1.getId().toString());
7576

7677
handler.process(HttpMethod.HEAD, new TusServletRequest(servletRequest),
@@ -86,7 +87,8 @@ public void testPartialUpload() throws Exception {
8687
info1.setUploadConcatHeaderValue("partial");
8788
info1.setUploadType(UploadType.PARTIAL);
8889

89-
when(uploadStorageService.getUploadInfo(eq(info1.getId().toString()), anyString())).thenReturn(info1);
90+
when(uploadStorageService.getUploadInfo(eq(info1.getId().toString()),
91+
nullable(String.class))).thenReturn(info1);
9092
servletRequest.setRequestURI(info1.getId().toString());
9193

9294
handler.process(HttpMethod.HEAD, new TusServletRequest(servletRequest),
@@ -104,7 +106,8 @@ public void testConcatenatedUploadWithLength() throws Exception {
104106
info1.setOffset(10L);
105107
info1.setUploadType(UploadType.CONCATENATED);
106108

107-
when(uploadStorageService.getUploadInfo(eq(info1.getId().toString()), anyString())).thenReturn(info1);
109+
when(uploadStorageService.getUploadInfo(eq(info1.getId().toString()),
110+
nullable(String.class))).thenReturn(info1);
108111
servletRequest.setRequestURI(info1.getId().toString());
109112

110113
handler.process(HttpMethod.HEAD, new TusServletRequest(servletRequest),
@@ -126,7 +129,8 @@ public void testConcatenatedUploadWithoutLength() throws Exception {
126129
info1.setOffset(8L);
127130
info1.setUploadType(UploadType.CONCATENATED);
128131

129-
when(uploadStorageService.getUploadInfo(eq(info1.getId().toString()), anyString())).thenReturn(info1);
132+
when(uploadStorageService.getUploadInfo(eq(info1.getId().toString()),
133+
nullable(String.class))).thenReturn(info1);
130134
servletRequest.setRequestURI(info1.getId().toString());
131135

132136
handler.process(HttpMethod.HEAD, new TusServletRequest(servletRequest),

src/test/java/me/desair/tus/server/concatenation/ConcatenationPostRequestHandlerTest.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
import static org.hamcrest.CoreMatchers.is;
44
import static org.hamcrest.CoreMatchers.nullValue;
55
import static org.hamcrest.MatcherAssert.assertThat;
6-
import static org.mockito.Matchers.any;
7-
import static org.mockito.Matchers.anyString;
8-
import static org.mockito.Matchers.eq;
6+
import static org.mockito.ArgumentMatchers.any;
7+
import static org.mockito.ArgumentMatchers.eq;
8+
import static org.mockito.ArgumentMatchers.nullable;
99
import static org.mockito.Mockito.never;
1010
import static org.mockito.Mockito.times;
1111
import static org.mockito.Mockito.verify;
@@ -25,11 +25,11 @@
2525
import org.junit.Test;
2626
import org.junit.runner.RunWith;
2727
import org.mockito.Mock;
28-
import org.mockito.runners.MockitoJUnitRunner;
28+
import org.mockito.junit.MockitoJUnitRunner;
2929
import org.springframework.mock.web.MockHttpServletRequest;
3030
import org.springframework.mock.web.MockHttpServletResponse;
3131

32-
@RunWith(MockitoJUnitRunner.class)
32+
@RunWith(MockitoJUnitRunner.Silent.class)
3333
public class ConcatenationPostRequestHandlerTest {
3434

3535
private ConcatenationPostRequestHandler handler;
@@ -71,7 +71,8 @@ public void testRegularUpload() throws Exception {
7171
UploadInfo info1 = new UploadInfo();
7272
info1.setId(UUID.randomUUID());
7373

74-
when(uploadStorageService.getUploadInfo(eq(info1.getId().toString()), anyString())).thenReturn(info1);
74+
when(uploadStorageService.getUploadInfo(eq(info1.getId().toString()),
75+
nullable(String.class))).thenReturn(info1);
7576
response.setHeader(HttpHeader.LOCATION, info1.getId().toString());
7677

7778
handler.process(HttpMethod.POST, new TusServletRequest(servletRequest), response, uploadStorageService, null);
@@ -90,7 +91,8 @@ public void testPartialUpload() throws Exception {
9091
UploadInfo info1 = new UploadInfo();
9192
info1.setId(UUID.randomUUID());
9293

93-
when(uploadStorageService.getUploadInfo(eq(info1.getId().toString()), anyString())).thenReturn(info1);
94+
when(uploadStorageService.getUploadInfo(eq(info1.getId().toString()),
95+
nullable(String.class))).thenReturn(info1);
9496
response.setHeader(HttpHeader.LOCATION, info1.getId().toString());
9597
servletRequest.addHeader(HttpHeader.UPLOAD_CONCAT, "partial");
9698

@@ -110,7 +112,8 @@ public void testFinalUpload() throws Exception {
110112
UploadInfo info1 = new UploadInfo();
111113
info1.setId(UUID.randomUUID());
112114

113-
when(uploadStorageService.getUploadInfo(eq(info1.getId().toString()), anyString())).thenReturn(info1);
115+
when(uploadStorageService.getUploadInfo(eq(info1.getId().toString()),
116+
nullable(String.class))).thenReturn(info1);
114117
response.setHeader(HttpHeader.LOCATION, info1.getId().toString());
115118
servletRequest.addHeader(HttpHeader.UPLOAD_CONCAT, "final; 123 456");
116119

src/test/java/me/desair/tus/server/concatenation/validation/PartialUploadsExistValidatorTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
import org.junit.Test;
1616
import org.junit.runner.RunWith;
1717
import org.mockito.Mock;
18-
import org.mockito.runners.MockitoJUnitRunner;
18+
import org.mockito.junit.MockitoJUnitRunner;
1919
import org.springframework.mock.web.MockHttpServletRequest;
2020

21-
@RunWith(MockitoJUnitRunner.class)
21+
@RunWith(MockitoJUnitRunner.Silent.class)
2222
public class PartialUploadsExistValidatorTest {
2323

2424
private PartialUploadsExistValidator validator;

0 commit comments

Comments
 (0)