You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by el...@apache.org on 2020/06/15 13:27:09 UTC
[maven-resolver] branch warn created (now 4ea39e5)
This is an automated email from the ASF dual-hosted git repository.
elharo pushed a change to branch warn
in repository https://gitbox.apache.org/repos/asf/maven-resolver.git.
at 4ea39e5 fix some warnings around unclosed resources
This branch includes the following new commits:
new 4ea39e5 fix some warnings around unclosed resources
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[maven-resolver] 01/01: fix some warnings around unclosed resources
Posted by el...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
elharo pushed a commit to branch warn
in repository https://gitbox.apache.org/repos/asf/maven-resolver.git
commit 4ea39e5f501dafeedf0b1cfb27b0f8e8dce4e9e7
Author: Elliotte Rusty Harold <el...@ibiblio.org>
AuthorDate: Mon Jun 15 09:26:54 2020 -0400
fix some warnings around unclosed resources
---
.../aether/connector/basic/PartialFile.java | 31 ++--------------
.../connector/transport/AbstractTransporter.java | 43 +++++-----------------
.../aether/transport/file/FileTransporter.java | 1 +
.../org/eclipse/aether/util/ChecksumUtils.java | 32 ++++++++--------
.../util/filter/ExclusionDependencyFilterTest.java | 1 -
.../util/repository/JreProxySelectorTest.java | 8 ++--
6 files changed, 36 insertions(+), 80 deletions(-)
diff --git a/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/PartialFile.java b/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/PartialFile.java
index c7a74f7..9fe7494 100644
--- a/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/PartialFile.java
+++ b/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/PartialFile.java
@@ -71,8 +71,7 @@ final class PartialFile
}
private static FileLock lock( File lockFile, File partFile, int requestTimeout, RemoteAccessChecker checker,
- AtomicBoolean concurrent )
- throws Exception
+ AtomicBoolean concurrent ) throws Exception
{
boolean interrupted = false;
try
@@ -141,19 +140,15 @@ final class PartialFile
if ( lock == null )
{
raf.close();
- raf = null;
}
}
catch ( OverlappingFileLockException e )
{
close( raf );
- raf = null;
- lock = null;
}
catch ( RuntimeException | IOException e )
{
close( raf );
- raf = null;
if ( !lockFile.delete() )
{
lockFile.deleteOnExit();
@@ -200,33 +195,15 @@ final class PartialFile
public void close() throws IOException
{
- Channel channel = null;
- try
+ try ( Channel channel = lock.channel() )
{
- channel = lock.channel();
lock.release();
- channel.close();
- channel = null;
}
finally
{
- try
- {
- if ( channel != null )
- {
- channel.close();
- }
- }
- catch ( final IOException e )
- {
- // Suppressed due to an exception already thrown in the try block.
- }
- finally
+ if ( !lockFile.delete() )
{
- if ( !lockFile.delete() )
- {
- lockFile.deleteOnExit();
- }
+ lockFile.deleteOnExit();
}
}
}
diff --git a/maven-resolver-spi/src/main/java/org/eclipse/aether/spi/connector/transport/AbstractTransporter.java b/maven-resolver-spi/src/main/java/org/eclipse/aether/spi/connector/transport/AbstractTransporter.java
index 21a0da3..0c14b91 100644
--- a/maven-resolver-spi/src/main/java/org/eclipse/aether/spi/connector/transport/AbstractTransporter.java
+++ b/maven-resolver-spi/src/main/java/org/eclipse/aether/spi/connector/transport/AbstractTransporter.java
@@ -81,62 +81,39 @@ public abstract class AbstractTransporter
* Subclasses might want to invoke this utility method from within their {@link #implGet(GetTask)} to avoid
* boilerplate I/O code.
*
- * @param task The download to perform, must not be {@code null}.
- * @param is The input stream to download the data from, must not be {@code null}.
+ * @param task the download to perform, must not be {@code null}.
+ * @param is the input stream to download the data from, must not be {@code null}.
* @param close {@code true} if the supplied input stream should be automatically closed, {@code false} to leave the
* stream open.
- * @param length The size in bytes of the downloaded resource or {@code -1} if unknown, not to be confused with the
+ * @param length the size in bytes of the downloaded resource or {@code -1} if unknown, not to be confused with the
* length of the supplied input stream which might be smaller if the download is resumed.
* @param resume {@code true} if the download resumes from {@link GetTask#getResumeOffset()}, {@code false} if the
* download starts at the first byte of the resource.
- * @throws IOException If the transfer encountered an I/O error.
- * @throws TransferCancelledException If the transfer was cancelled.
+ * @throws IOException if the transfer encountered an I/O error
+ * @throws TransferCancelledException if the transfer was cancelled
*/
protected void utilGet( GetTask task, InputStream is, boolean close, long length, boolean resume )
throws IOException, TransferCancelledException
{
- OutputStream os = null;
- try
+
+ try ( OutputStream os = task.newOutputStream( resume ) )
{
- os = task.newOutputStream( resume );
task.getListener().transportStarted( resume ? task.getResumeOffset() : 0L, length );
copy( os, is, task.getListener() );
- os.close();
- os = null;
-
- if ( close )
- {
- is.close();
- is = null;
- }
}
finally
- {
+ {
try
{
- if ( os != null )
+ if ( close && is != null )
{
- os.close();
+ is.close();
}
}
catch ( final IOException e )
{
// Suppressed due to an exception already thrown in the try block.
}
- finally
- {
- try
- {
- if ( close && is != null )
- {
- is.close();
- }
- }
- catch ( final IOException e )
- {
- // Suppressed due to an exception already thrown in the try block.
- }
- }
}
}
diff --git a/maven-resolver-transport-file/src/main/java/org/eclipse/aether/transport/file/FileTransporter.java b/maven-resolver-transport-file/src/main/java/org/eclipse/aether/transport/file/FileTransporter.java
index 7da42f2..ed651a1 100644
--- a/maven-resolver-transport-file/src/main/java/org/eclipse/aether/transport/file/FileTransporter.java
+++ b/maven-resolver-transport-file/src/main/java/org/eclipse/aether/transport/file/FileTransporter.java
@@ -22,6 +22,7 @@ package org.eclipse.aether.transport.file;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
+import java.io.IOException;
import org.eclipse.aether.repository.RemoteRepository;
import org.eclipse.aether.spi.connector.transport.AbstractTransporter;
diff --git a/maven-resolver-util/src/main/java/org/eclipse/aether/util/ChecksumUtils.java b/maven-resolver-util/src/main/java/org/eclipse/aether/util/ChecksumUtils.java
index 0ac354f..a6ec325 100644
--- a/maven-resolver-util/src/main/java/org/eclipse/aether/util/ChecksumUtils.java
+++ b/maven-resolver-util/src/main/java/org/eclipse/aether/util/ChecksumUtils.java
@@ -95,17 +95,20 @@ public final class ChecksumUtils
/**
* Calculates checksums for the specified file.
*
- * @param dataFile The file for which to calculate checksums, must not be {@code null}.
- * @param algos The names of checksum algorithms (cf. {@link MessageDigest#getInstance(String)} to use, must not be
+ * @param dataFile the file for which to calculate checksums, must not be {@code null}.
+ * @param algos the names of checksum algorithms (cf. {@link MessageDigest#getInstance(String)} to use, must not be
* {@code null}.
- * @return The calculated checksums, indexed by algorithm name, or the exception that occurred while trying to
+ * @return the calculated checksums, indexed by algorithm name, or the exception that occurred while trying to
* calculate it, never {@code null}.
- * @throws IOException If the data file could not be read.
+ * @throws IOException if the data file could not be read
*/
public static Map<String, Object> calc( File dataFile, Collection<String> algos )
throws IOException
{
- return calc( new FileInputStream( dataFile ), algos );
+ try ( FileInputStream in = new FileInputStream( dataFile ) )
+ {
+ return calc( in, algos );
+ }
}
@@ -134,19 +137,16 @@ public final class ChecksumUtils
}
}
- try ( InputStream in = data )
+ for ( byte[] buffer = new byte[ 32 * 1024 ];; )
{
- for ( byte[] buffer = new byte[ 32 * 1024 ];; )
+ int read = data.read( buffer );
+ if ( read < 0 )
{
- int read = in.read( buffer );
- if ( read < 0 )
- {
- break;
- }
- for ( MessageDigest digest : digests.values() )
- {
- digest.update( buffer, 0, read );
- }
+ break;
+ }
+ for ( MessageDigest digest : digests.values() )
+ {
+ digest.update( buffer, 0, read );
}
}
diff --git a/maven-resolver-util/src/test/java/org/eclipse/aether/util/filter/ExclusionDependencyFilterTest.java b/maven-resolver-util/src/test/java/org/eclipse/aether/util/filter/ExclusionDependencyFilterTest.java
index 1da95bb..37fca10 100644
--- a/maven-resolver-util/src/test/java/org/eclipse/aether/util/filter/ExclusionDependencyFilterTest.java
+++ b/maven-resolver-util/src/test/java/org/eclipse/aether/util/filter/ExclusionDependencyFilterTest.java
@@ -22,7 +22,6 @@ package org.eclipse.aether.util.filter;
import static org.junit.Assert.*;
import java.util.Arrays;
-import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
diff --git a/maven-resolver-util/src/test/java/org/eclipse/aether/util/repository/JreProxySelectorTest.java b/maven-resolver-util/src/test/java/org/eclipse/aether/util/repository/JreProxySelectorTest.java
index 5e8d274..5752fc9 100644
--- a/maven-resolver-util/src/test/java/org/eclipse/aether/util/repository/JreProxySelectorTest.java
+++ b/maven-resolver-util/src/test/java/org/eclipse/aether/util/repository/JreProxySelectorTest.java
@@ -171,9 +171,11 @@ public class JreProxySelectorTest
RemoteRepository repo2 = new RemoteRepository.Builder( repo ).setProxy( proxy ).build();
Authentication auth = proxy.getAuthentication();
assertNotNull( auth );
- AuthenticationContext authCtx = AuthenticationContext.forProxy( new DefaultRepositorySystemSession(), repo2 );
- assertEquals( "proxyuser", authCtx.get( AuthenticationContext.USERNAME ) );
- assertEquals( "proxypass", authCtx.get( AuthenticationContext.PASSWORD ) );
+ try ( AuthenticationContext authCtx = AuthenticationContext.forProxy( new DefaultRepositorySystemSession(), repo2 ) )
+ {
+ assertEquals( "proxyuser", authCtx.get( AuthenticationContext.USERNAME ) );
+ assertEquals( "proxypass", authCtx.get( AuthenticationContext.PASSWORD ) );
+ }
}
}