Skip to content

Commit d9a78ce

Browse files
garydgregoryok2c
authored andcommitted
Javadoc and reduce boilerplate
- Use final - package-private methods can throw more precise exception - Add missing Javadoc comments - Use lambdas - Better StringBuilder allocation - Make private final class a static class - Make private instance variable final in test - Single lambda parameter does not need parentheses - Package-private class constructor can be package-private
1 parent 25f080f commit d9a78ce

27 files changed

+380
-188
lines changed

httpclient5-cache/src/main/java/org/apache/hc/client5/http/impl/cache/HttpByteArrayCacheEntrySerializer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ public byte[] serialize(final HttpCacheStorageEntry storageEntry) throws Resourc
181181
final RequestLine requestLine = new RequestLine(cacheEntry.getRequestMethod(), cacheEntry.getRequestURI(), HttpVersion.HTTP_1_1);
182182
lineFormatter.formatRequestLine(line, requestLine);
183183
outputBuffer.writeLine(line, out);
184-
for (Iterator<Header> it = cacheEntry.requestHeaderIterator(); it.hasNext(); ) {
184+
for (final Iterator<Header> it = cacheEntry.requestHeaderIterator(); it.hasNext(); ) {
185185
line.clear();
186186
lineFormatter.formatHeader(line, it.next());
187187
outputBuffer.writeLine(line, out);
@@ -193,7 +193,7 @@ public byte[] serialize(final HttpCacheStorageEntry storageEntry) throws Resourc
193193
final StatusLine statusLine = new StatusLine(HttpVersion.HTTP_1_1, cacheEntry.getStatus(), "");
194194
lineFormatter.formatStatusLine(line, statusLine);
195195
outputBuffer.writeLine(line, out);
196-
for (Iterator<Header> it = cacheEntry.headerIterator(); it.hasNext(); ) {
196+
for (final Iterator<Header> it = cacheEntry.headerIterator(); it.hasNext(); ) {
197197
line.clear();
198198
lineFormatter.formatHeader(line, it.next());
199199
outputBuffer.writeLine(line, out);

httpclient5-cache/src/main/java/org/apache/hc/client5/http/impl/cache/ViaCacheGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ String generateViaHeader(final VersionInfo vi, final ProtocolVersion pv) {
5353
}
5454

5555
String lookup(final ProtocolVersion pv) {
56-
return internalCache.computeIfAbsent(pv, (v) -> {
56+
return internalCache.computeIfAbsent(pv, v -> {
5757
final VersionInfo vi = VersionInfo.loadVersionInfo("org.apache.hc.client5", getClass().getClassLoader());
5858
return generateViaHeader(vi, v);
5959
});

httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1Async.java

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -157,13 +157,7 @@ void testRequestCancellation() throws Exception {
157157
.setPath("/random/1000")
158158
.build(), null);
159159

160-
executorService.schedule(new Runnable() {
161-
162-
@Override
163-
public void run() {
164-
future.cancel(true);
165-
}
166-
}, i % 5, TimeUnit.MILLISECONDS);
160+
executorService.schedule(() -> future.cancel(true), i % 5, TimeUnit.MILLISECONDS);
167161

168162
try {
169163
future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
@@ -181,13 +175,7 @@ public void run() {
181175
.setPath("/random/1000")
182176
.build(), null);
183177

184-
executorService.schedule(new Runnable() {
185-
186-
@Override
187-
public void run() {
188-
future.cancel(true);
189-
}
190-
}, rnd.nextInt(200), TimeUnit.MILLISECONDS);
178+
executorService.schedule(() -> future.cancel(true), rnd.nextInt(200), TimeUnit.MILLISECONDS);
191179

192180
try {
193181
future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());

httpclient5-testing/src/test/java/org/apache/hc/client5/testing/fluent/TestFluent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ class TestFluent {
5656
public static final Timeout TIMEOUT = Timeout.ofMinutes(1);
5757

5858
@RegisterExtension
59-
private TestClientResources testResources = new TestClientResources(URIScheme.HTTP, ClientProtocolLevel.STANDARD, TIMEOUT);
59+
private final TestClientResources testResources = new TestClientResources(URIScheme.HTTP, ClientProtocolLevel.STANDARD, TIMEOUT);
6060

6161
@BeforeEach
6262
void setUp() {

httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/AbstractIntegrationTestBase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ abstract class AbstractIntegrationTestBase {
4646
public static final Timeout TIMEOUT = Timeout.ofMinutes(1);
4747

4848
@RegisterExtension
49-
private TestClientResources testResources;
49+
private final TestClientResources testResources;
5050

5151
protected AbstractIntegrationTestBase(final URIScheme scheme, final ClientProtocolLevel clientProtocolLevel) {
5252
this.testResources = new TestClientResources(scheme, clientProtocolLevel, TIMEOUT);

httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestContentCodings.java

Lines changed: 66 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929

3030
import java.io.ByteArrayInputStream;
3131
import java.io.ByteArrayOutputStream;
32-
import java.io.IOException;
3332
import java.io.OutputStream;
3433
import java.nio.charset.StandardCharsets;
3534
import java.util.ArrayList;
@@ -47,8 +46,6 @@
4746
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
4847
import org.apache.hc.client5.testing.extension.sync.ClientProtocolLevel;
4948
import org.apache.hc.client5.testing.extension.sync.TestClient;
50-
import org.apache.hc.core5.http.ClassicHttpRequest;
51-
import org.apache.hc.core5.http.ClassicHttpResponse;
5249
import org.apache.hc.core5.http.HeaderElement;
5350
import org.apache.hc.core5.http.HttpHost;
5451
import org.apache.hc.core5.http.HttpStatus;
@@ -58,7 +55,6 @@
5855
import org.apache.hc.core5.http.io.entity.InputStreamEntity;
5956
import org.apache.hc.core5.http.io.entity.StringEntity;
6057
import org.apache.hc.core5.http.message.MessageSupport;
61-
import org.apache.hc.core5.http.protocol.HttpContext;
6258
import org.junit.jupiter.api.Assertions;
6359
import org.junit.jupiter.api.Test;
6460

@@ -83,19 +79,7 @@ protected TestContentCodings(final URIScheme scheme) {
8379
@Test
8480
void testResponseWithNoContent() throws Exception {
8581
configureServer(bootstrap -> bootstrap
86-
.register("*", new HttpRequestHandler() {
87-
88-
/**
89-
* {@inheritDoc}
90-
*/
91-
@Override
92-
public void handle(
93-
final ClassicHttpRequest request,
94-
final ClassicHttpResponse response,
95-
final HttpContext context) {
96-
response.setCode(HttpStatus.SC_NO_CONTENT);
97-
}
98-
}));
82+
.register("*", (request, response, context) -> response.setCode(HttpStatus.SC_NO_CONTENT)));
9983

10084
final HttpHost target = startServer();
10185

@@ -326,43 +310,33 @@ void deflateResponsesWorkWithBasicResponseHandler() throws Exception {
326310
*/
327311
private HttpRequestHandler createDeflateEncodingRequestHandler(
328312
final String entityText, final boolean rfc1951) {
329-
return new HttpRequestHandler() {
330-
331-
/**
332-
* {@inheritDoc}
333-
*/
334-
@Override
335-
public void handle(
336-
final ClassicHttpRequest request,
337-
final ClassicHttpResponse response,
338-
final HttpContext context) {
339-
response.setEntity(new StringEntity(entityText));
340-
response.addHeader("Content-Type", "text/plain");
341-
final Iterator<HeaderElement> it = MessageSupport.iterate(request, "Accept-Encoding");
342-
while (it.hasNext()) {
343-
final HeaderElement element = it.next();
344-
if ("deflate".equalsIgnoreCase(element.getName())) {
345-
response.addHeader("Content-Encoding", "deflate");
346-
347-
/* Gack. DeflaterInputStream is Java 6. */
348-
// response.setEntity(new InputStreamEntity(new DeflaterInputStream(new
349-
// ByteArrayInputStream(
350-
// entityText.getBytes("utf-8"))), -1));
351-
final byte[] uncompressed = entityText.getBytes(StandardCharsets.UTF_8);
352-
final Deflater compressor = new Deflater(Deflater.DEFAULT_COMPRESSION, rfc1951);
353-
compressor.setInput(uncompressed);
354-
compressor.finish();
355-
final byte[] output = new byte[100];
356-
final int compressedLength = compressor.deflate(output);
357-
final byte[] compressed = new byte[compressedLength];
358-
System.arraycopy(output, 0, compressed, 0, compressedLength);
359-
response.setEntity(new InputStreamEntity(
360-
new ByteArrayInputStream(compressed), compressedLength, null));
361-
return;
362-
}
363-
}
313+
return (request, response, context) -> {
314+
response.setEntity(new StringEntity(entityText));
315+
response.addHeader("Content-Type", "text/plain");
316+
final Iterator<HeaderElement> it = MessageSupport.iterate(request, "Accept-Encoding");
317+
while (it.hasNext()) {
318+
final HeaderElement element = it.next();
319+
if ("deflate".equalsIgnoreCase(element.getName())) {
320+
response.addHeader("Content-Encoding", "deflate");
321+
322+
/* Gack. DeflaterInputStream is Java 6. */
323+
// response.setEntity(new InputStreamEntity(new DeflaterInputStream(new
324+
// ByteArrayInputStream(
325+
// entityText.getBytes("utf-8"))), -1));
326+
final byte[] uncompressed = entityText.getBytes(StandardCharsets.UTF_8);
327+
final Deflater compressor = new Deflater(Deflater.DEFAULT_COMPRESSION, rfc1951);
328+
compressor.setInput(uncompressed);
329+
compressor.finish();
330+
final byte[] output = new byte[100];
331+
final int compressedLength = compressor.deflate(output);
332+
final byte[] compressed = new byte[compressedLength];
333+
System.arraycopy(output, 0, compressed, 0, compressedLength);
334+
response.setEntity(new InputStreamEntity(
335+
new ByteArrayInputStream(compressed), compressedLength, null));
336+
return;
337+
}
364338
}
365-
};
339+
};
366340
}
367341

368342
/**
@@ -374,57 +348,47 @@ public void handle(
374348
* @return a non-null {@link HttpRequestHandler}
375349
*/
376350
private HttpRequestHandler createGzipEncodingRequestHandler(final String entityText) {
377-
return new HttpRequestHandler() {
378-
379-
/**
380-
* {@inheritDoc}
351+
return (request, response, context) -> {
352+
response.setEntity(new StringEntity(entityText));
353+
response.addHeader("Content-Type", "text/plain");
354+
response.addHeader("Content-Type", "text/plain");
355+
final Iterator<HeaderElement> it = MessageSupport.iterate(request, "Accept-Encoding");
356+
while (it.hasNext()) {
357+
final HeaderElement element = it.next();
358+
if ("gzip".equalsIgnoreCase(element.getName())) {
359+
response.addHeader("Content-Encoding", "gzip");
360+
361+
/*
362+
* We have to do a bit more work with gzip versus deflate, since
363+
* Gzip doesn't appear to have an equivalent to DeflaterInputStream in
364+
* the JDK.
365+
*
366+
* UPDATE: DeflaterInputStream is Java 6 anyway, so we have to do a bit
367+
* of work there too!
381368
*/
382-
@Override
383-
public void handle(
384-
final ClassicHttpRequest request,
385-
final ClassicHttpResponse response,
386-
final HttpContext context) throws IOException {
387-
response.setEntity(new StringEntity(entityText));
388-
response.addHeader("Content-Type", "text/plain");
389-
response.addHeader("Content-Type", "text/plain");
390-
final Iterator<HeaderElement> it = MessageSupport.iterate(request, "Accept-Encoding");
391-
while (it.hasNext()) {
392-
final HeaderElement element = it.next();
393-
if ("gzip".equalsIgnoreCase(element.getName())) {
394-
response.addHeader("Content-Encoding", "gzip");
395-
396-
/*
397-
* We have to do a bit more work with gzip versus deflate, since
398-
* Gzip doesn't appear to have an equivalent to DeflaterInputStream in
399-
* the JDK.
400-
*
401-
* UPDATE: DeflaterInputStream is Java 6 anyway, so we have to do a bit
402-
* of work there too!
403-
*/
404-
final ByteArrayOutputStream bytes = new ByteArrayOutputStream();
405-
final OutputStream out = new GZIPOutputStream(bytes);
406-
407-
final ByteArrayInputStream uncompressed = new ByteArrayInputStream(
408-
entityText.getBytes(StandardCharsets.UTF_8));
409-
410-
final byte[] buf = new byte[60];
411-
412-
int n;
413-
while ((n = uncompressed.read(buf)) != -1) {
414-
out.write(buf, 0, n);
415-
}
416-
417-
out.close();
418-
419-
final byte[] arr = bytes.toByteArray();
420-
response.setEntity(new InputStreamEntity(new ByteArrayInputStream(arr),
421-
arr.length, null));
422-
423-
return;
424-
}
425-
}
369+
final ByteArrayOutputStream bytes = new ByteArrayOutputStream();
370+
final OutputStream out = new GZIPOutputStream(bytes);
371+
372+
final ByteArrayInputStream uncompressed = new ByteArrayInputStream(
373+
entityText.getBytes(StandardCharsets.UTF_8));
374+
375+
final byte[] buf = new byte[60];
376+
377+
int n;
378+
while ((n = uncompressed.read(buf)) != -1) {
379+
out.write(buf, 0, n);
380+
}
381+
382+
out.close();
383+
384+
final byte[] arr = bytes.toByteArray();
385+
response.setEntity(new InputStreamEntity(new ByteArrayInputStream(arr),
386+
arr.length, null));
387+
388+
return;
389+
}
426390
}
427-
};
391+
};
428392
}
429393

430394
/**

httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestFutureRequestExecutionService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ void shouldExecuteMultipleCallsAndCallback() throws Exception {
164164
}
165165
}
166166

167-
private final class CountingCallback implements FutureCallback<Boolean> {
167+
private static final class CountingCallback implements FutureCallback<Boolean> {
168168

169169
private final CountDownLatch latch;
170170

@@ -190,7 +190,7 @@ public void cancelled() {
190190
}
191191

192192

193-
private final class OkidokiHandler implements HttpClientResponseHandler<Boolean> {
193+
private static final class OkidokiHandler implements HttpClientResponseHandler<Boolean> {
194194
@Override
195195
public Boolean handleResponse(
196196
final ClassicHttpResponse response) {

httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestRedirects.java

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@
5959
import org.apache.hc.client5.testing.extension.sync.ClientProtocolLevel;
6060
import org.apache.hc.client5.testing.extension.sync.TestClient;
6161
import org.apache.hc.client5.testing.redirect.Redirect;
62-
import org.apache.hc.core5.function.Decorator;
6362
import org.apache.hc.core5.http.ClassicHttpRequest;
6463
import org.apache.hc.core5.http.ClassicHttpResponse;
6564
import org.apache.hc.core5.http.ConnectionClosedException;
@@ -72,7 +71,6 @@
7271
import org.apache.hc.core5.http.ProtocolException;
7372
import org.apache.hc.core5.http.URIScheme;
7473
import org.apache.hc.core5.http.io.HttpRequestHandler;
75-
import org.apache.hc.core5.http.io.HttpServerRequestHandler;
7674
import org.apache.hc.core5.http.io.entity.EntityUtils;
7775
import org.apache.hc.core5.http.io.entity.StringEntity;
7876
import org.apache.hc.core5.http.message.BasicHeader;
@@ -607,26 +605,19 @@ void testDefaultHeadersRedirect() throws Exception {
607605
void testCompressionHeaderRedirect() throws Exception {
608606
final Queue<String> values = new ConcurrentLinkedQueue<>();
609607
configureServer(bootstrap -> bootstrap
610-
.setExchangeHandlerDecorator(new Decorator<HttpServerRequestHandler>() {
608+
.setExchangeHandlerDecorator(requestHandler -> new RedirectingDecorator(
609+
requestHandler,
610+
new OldPathRedirectResolver("/oldlocation", "/random", HttpStatus.SC_MOVED_TEMPORARILY)) {
611611

612612
@Override
613-
public HttpServerRequestHandler decorate(final HttpServerRequestHandler requestHandler) {
614-
return new RedirectingDecorator(
615-
requestHandler,
616-
new OldPathRedirectResolver("/oldlocation", "/random", HttpStatus.SC_MOVED_TEMPORARILY)) {
617-
618-
@Override
619-
public void handle(final ClassicHttpRequest request,
620-
final ResponseTrigger responseTrigger,
621-
final HttpContext context) throws HttpException, IOException {
622-
final Header header = request.getHeader(HttpHeaders.ACCEPT_ENCODING);
623-
if (header != null) {
624-
values.add(header.getValue());
625-
}
626-
super.handle(request, responseTrigger, context);
627-
}
628-
629-
};
613+
public void handle(final ClassicHttpRequest request,
614+
final ResponseTrigger responseTrigger,
615+
final HttpContext context) throws HttpException, IOException {
616+
final Header header = request.getHeader(HttpHeaders.ACCEPT_ENCODING);
617+
if (header != null) {
618+
values.add(header.getValue());
619+
}
620+
super.handle(request, responseTrigger, context);
630621
}
631622

632623
})

httpclient5/src/main/java/org/apache/hc/client5/http/async/methods/SimpleAsyncEntityConsumer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ final class SimpleAsyncEntityConsumer extends AbstractBinAsyncEntityConsumer<byt
3939

4040
private final ByteArrayBuffer buffer;
4141

42-
public SimpleAsyncEntityConsumer() {
42+
SimpleAsyncEntityConsumer() {
4343
super();
4444
this.buffer = new ByteArrayBuffer(1024);
4545
}

0 commit comments

Comments
 (0)