This is an automated email from the ASF dual-hosted git repository. rfscholte pushed a commit to branch MRESOLVER-46 in repository https://gitbox.apache.org/repos/asf/maven-resolver.git
The following commit(s) were added to refs/heads/MRESOLVER-46 by this push: new 33f4a64 [MRESOLVER-46] Apply review comments 33f4a64 is described below commit 33f4a64b6393a042f34e900b029fb05dcd280681 Author: rfscholte <rfscho...@apache.org> AuthorDate: Fri Sep 28 13:14:53 2018 +0200 [MRESOLVER-46] Apply review comments --- .../aether/transform/FileTransformerManager.java | 17 ++++++++++++----- .../connector/basic/BasicRepositoryConnector.java | 20 +++++++++++++++++--- .../aether/internal/impl/DefaultInstaller.java | 8 +++++--- .../aether/internal/impl/DefaultDeployerTest.java | 13 +++++++------ .../aether/internal/impl/DefaultInstallerTest.java | 15 +++++++++------ .../internal/impl/StubFileTransformerManager.java | 2 +- .../eclipse/aether/spi/connector/ArtifactUpload.java | 6 +++++- 7 files changed, 56 insertions(+), 25 deletions(-) diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/transform/FileTransformerManager.java b/maven-resolver-api/src/main/java/org/eclipse/aether/transform/FileTransformerManager.java index 753a739..9eaec01 100644 --- a/maven-resolver-api/src/main/java/org/eclipse/aether/transform/FileTransformerManager.java +++ b/maven-resolver-api/src/main/java/org/eclipse/aether/transform/FileTransformerManager.java @@ -32,11 +32,18 @@ import org.eclipse.aether.artifact.Artifact; public interface FileTransformerManager { /** - * All transformers for this specific artifact. Be aware that if you want to create additional files, but also want to the original - * to be deployed, you must add an explicit transformer for that file too (one that doesn't transform the artifact and data). - * - * @param artifact - * @return + * <p> + * All transformers for this specific artifact. Be aware that if you want to create additional files, but also want + * to the original to be deployed, you must add an explicit transformer for that file too (one that doesn't + * transform the artifact and data). + * </p> + * + * <p><strong>IMPORTANT</strong> When using a fileTransformer, the content of the file is stored in memory to ensure + * that file content and checksums stay in sync! + * </p> + * + * @param artifact the artifact + * @return a collection of FileTransformers to apply on the artifact, never {@code null} */ Collection<FileTransformer> getTransformersForArtifact( Artifact artifact ); } diff --git a/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java b/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java index 968581f..d15f80c 100644 --- a/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java +++ b/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java @@ -24,6 +24,7 @@ import static java.util.Objects.requireNonNull; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; +import java.io.InputStream; import java.net.URI; import java.util.Collection; import java.util.Collections; @@ -508,6 +509,16 @@ final class BasicRepositoryConnector this( path, file, null, checksums, listener ); } + /** + * <strong>IMPORTANT</strong> When using a fileTransformer, the content of the file is stored in memory to + * ensure that file content and checksums stay in sync! + * + * @param path + * @param file + * @param fileTransformer + * @param checksums + * @param listener + */ PutTaskRunner( URI path, File file, FileTransformer fileTransformer, List<RepositoryLayout.Checksum> checksums, TransferTransportListener<?> listener ) { @@ -525,10 +536,13 @@ final class BasicRepositoryConnector // transform data once to byte array, ensure constant data for checksum ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; - for ( int read; ( read = - fileTransformer.transformData( file ).read( buffer, 0, buffer.length ) ) != -1; ) + + try ( InputStream transformData = fileTransformer.transformData( file ) ) { - baos.write( buffer, 0, read ); + for ( int read; ( read = transformData.read( buffer, 0, buffer.length ) ) != -1; ) + { + baos.write( buffer, 0, read ); + } } byte[] bytes = baos.toByteArray(); diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultInstaller.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultInstaller.java index 2bd34fb..e4c998a 100644 --- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultInstaller.java +++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultInstaller.java @@ -289,9 +289,11 @@ public class DefaultInstaller } else if ( fileTransformer != null ) { - InputStream is = fileTransformer.transformData( srcFile ); - fileProcessor.write( dstFile, is ); - dstFile.setLastModified( srcFile.lastModified() ); + try ( InputStream is = fileTransformer.transformData( srcFile ) ) + { + fileProcessor.write( dstFile, is ); + dstFile.setLastModified( srcFile.lastModified() ); + } } else { diff --git a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultDeployerTest.java b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultDeployerTest.java index be47aad..fa7dc42 100644 --- a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultDeployerTest.java +++ b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultDeployerTest.java @@ -19,13 +19,16 @@ package org.eclipse.aether.internal.impl; * under the License. */ -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.fail; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -40,7 +43,6 @@ import org.eclipse.aether.artifact.Artifact; import org.eclipse.aether.artifact.DefaultArtifact; import org.eclipse.aether.deployment.DeployRequest; import org.eclipse.aether.deployment.DeploymentException; -import org.eclipse.aether.internal.impl.DefaultDeployer; import org.eclipse.aether.internal.test.util.TestFileProcessor; import org.eclipse.aether.internal.test.util.TestFileUtils; import org.eclipse.aether.internal.test.util.TestUtils; @@ -395,9 +397,8 @@ public class DefaultDeployerTest { @Override public InputStream transformData( File file ) - throws IOException { - return new ByteArrayInputStream( "transformed data".getBytes( Charset.forName( "UTF-8" ) ) ); + return new ByteArrayInputStream( "transformed data".getBytes( StandardCharsets.UTF_8 ) ); } @Override @@ -408,7 +409,7 @@ public class DefaultDeployerTest }; StubFileTransformerManager fileTransformerManager = new StubFileTransformerManager(); - fileTransformerManager.addFileTransformer( transformer, "jar" ); + fileTransformerManager.addFileTransformer( "jar", transformer ); session.setFileTransformerManager( fileTransformerManager ); request = new DeployRequest(); diff --git a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultInstallerTest.java b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultInstallerTest.java index df87e1a..68a3547 100644 --- a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultInstallerTest.java +++ b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultInstallerTest.java @@ -19,7 +19,12 @@ package org.eclipse.aether.internal.impl; * under the License. */ -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import java.io.BufferedReader; import java.io.ByteArrayInputStream; @@ -27,7 +32,7 @@ import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; -import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.List; import org.eclipse.aether.DefaultRepositorySystemSession; @@ -38,8 +43,6 @@ import org.eclipse.aether.artifact.DefaultArtifact; import org.eclipse.aether.installation.InstallRequest; import org.eclipse.aether.installation.InstallResult; import org.eclipse.aether.installation.InstallationException; -import org.eclipse.aether.internal.impl.DefaultFileProcessor; -import org.eclipse.aether.internal.impl.DefaultInstaller; import org.eclipse.aether.internal.test.util.TestFileProcessor; import org.eclipse.aether.internal.test.util.TestFileUtils; import org.eclipse.aether.internal.test.util.TestLocalRepositoryManager; @@ -428,7 +431,7 @@ public class DefaultInstallerTest public InputStream transformData( File file ) throws IOException { - return new ByteArrayInputStream( "transformed data".getBytes( Charset.forName( "UTF-8" ) ) ); + return new ByteArrayInputStream( "transformed data".getBytes( StandardCharsets.UTF_8 ) ); } @Override @@ -439,7 +442,7 @@ public class DefaultInstallerTest }; StubFileTransformerManager fileTransformerManager = new StubFileTransformerManager(); - fileTransformerManager.addFileTransformer( transformer, "jar" ); + fileTransformerManager.addFileTransformer( "jar", transformer ); session.setFileTransformerManager( fileTransformerManager ); request = new InstallRequest(); diff --git a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/StubFileTransformerManager.java b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/StubFileTransformerManager.java index cafb52e..a079a2a 100644 --- a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/StubFileTransformerManager.java +++ b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/StubFileTransformerManager.java @@ -38,7 +38,7 @@ public class StubFileTransformerManager implements FileTransformerManager return fileTransformers.get( artifact.getExtension() ); } - public void addFileTransformer( FileTransformer fileTransformer, String extension ) + public void addFileTransformer( String extension, FileTransformer fileTransformer ) { if ( !fileTransformers.containsKey( extension ) ) { diff --git a/maven-resolver-spi/src/main/java/org/eclipse/aether/spi/connector/ArtifactUpload.java b/maven-resolver-spi/src/main/java/org/eclipse/aether/spi/connector/ArtifactUpload.java index baea84a..90323b1 100644 --- a/maven-resolver-spi/src/main/java/org/eclipse/aether/spi/connector/ArtifactUpload.java +++ b/maven-resolver-spi/src/main/java/org/eclipse/aether/spi/connector/ArtifactUpload.java @@ -57,7 +57,11 @@ public final class ArtifactUpload } /** - * Creates a new upload with the specified properties. + * <p>Creates a new upload with the specified properties.</p> + * + * <p><strong>IMPORTANT</strong> When using a fileTransformer, the + * content of the file is stored in memory to ensure that file content and checksums stay in sync! + * </p> * * @param artifact The artifact to upload, may be {@code null}. * @param file The local file to upload the artifact from, may be {@code null}.