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 <[email protected]>
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}.