This is an automated email from the ASF dual-hosted git repository.

martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git


The following commit(s) were added to refs/heads/master by this push:
     new f0ce834  Renaming method and adding additional test
f0ce834 is described below

commit f0ce8343fd4988b7d971c80cd1202cf8711f94f7
Author: Martin Stockhammer <[email protected]>
AuthorDate: Mon Mar 23 19:21:50 2020 +0100

    Renaming method and adding additional test
---
 .../repository/ManagedRepositoryContent.java       |  2 +-
 .../mock/ManagedRepositoryContentMock.java         |  2 +-
 .../scanner/mock/ManagedRepositoryContentMock.java |  2 +-
 .../mock/ManagedRepositoryContentMock.java         |  2 +-
 .../content/ManagedDefaultRepositoryContent.java   | 26 ++++----
 .../ManagedDefaultRepositoryContentTest.java       | 69 +++++++++++++++++++++-
 6 files changed, 86 insertions(+), 17 deletions(-)

diff --git 
a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java
 
b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java
index 318a6a6..20d0a67 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java
@@ -267,7 +267,7 @@ public interface ManagedRepositoryContent extends 
RepositoryContent
      * @param destination the coordinates of the destination
      * @throws IllegalArgumentException if the destination is not valid
      */
-    void copyArtifact( Path sourceFile, ContentItem destination ) throws 
IllegalArgumentException;
+    void addArtifact( Path sourceFile, Artifact destination ) throws 
IllegalArgumentException, ContentAccessException;
 
 
     /**
diff --git 
a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
 
b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
index 21230c8..bcb330f 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
@@ -181,7 +181,7 @@ public class ManagedRepositoryContentMock implements 
ManagedRepositoryContent
     }
 
     @Override
-    public void copyArtifact( Path sourceFile, ContentItem destination ) 
throws IllegalArgumentException
+    public void addArtifact( Path sourceFile, Artifact destination ) throws 
IllegalArgumentException
     {
 
     }
diff --git 
a/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/mock/ManagedRepositoryContentMock.java
 
b/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/mock/ManagedRepositoryContentMock.java
index b79e47e..34a3e80 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/mock/ManagedRepositoryContentMock.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/mock/ManagedRepositoryContentMock.java
@@ -182,7 +182,7 @@ public class ManagedRepositoryContentMock implements 
ManagedRepositoryContent
     }
 
     @Override
-    public void copyArtifact( Path sourceFile, ContentItem destination ) 
throws IllegalArgumentException
+    public void addArtifact( Path sourceFile, Artifact destination ) throws 
IllegalArgumentException
     {
 
     }
diff --git 
a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
 
b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
index 17069d5..81d240e 100644
--- 
a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
+++ 
b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
@@ -186,7 +186,7 @@ public class ManagedRepositoryContentMock implements 
ManagedRepositoryContent
     }
 
     @Override
-    public void copyArtifact( Path sourceFile, ContentItem destination ) 
throws IllegalArgumentException
+    public void addArtifact( Path sourceFile, Artifact destination ) throws 
IllegalArgumentException
     {
 
     }
diff --git 
a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
 
b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
index 4da98e1..b79753c 100644
--- 
a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
+++ 
b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
@@ -864,21 +864,27 @@ public class ManagedDefaultRepositoryContent
         return getItem( selector ).getAsset( ).exists( );
     }
 
-    /*
-        TBD
+    /**
+     * Moves the file to the artifact destination
      */
     @Override
-    public void copyArtifact( Path sourceFile, ContentItem destination ) 
throws IllegalArgumentException
+    public void addArtifact( Path sourceFile, Artifact destination ) throws 
IllegalArgumentException, ContentAccessException
     {
-
+        try
+        {
+            StorageAsset asset = destination.getAsset( );
+            if (!asset.exists()) {
+                asset.create();
+            }
+            asset.replaceDataFromFile( sourceFile );
+        }
+        catch ( IOException e )
+        {
+            log.error( "Could not push data to asset source={} destination={}. 
{}", sourceFile, destination.getAsset().getFilePath(), e.getMessage( ) );
+            throw new ContentAccessException( e.getMessage( ), e );
+        }
     }
 
-    /**
-     * TBD
-     * @param path the path string that points to the item
-     * @return
-     * @throws LayoutException
-     */
     @Override
     public ContentItem toItem( String path ) throws LayoutException
     {
diff --git 
a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContentTest.java
 
b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContentTest.java
index 2d7098d..e8fab79 100644
--- 
a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContentTest.java
+++ 
b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContentTest.java
@@ -19,7 +19,6 @@ package org.apache.archiva.repository.maven.content;
  */
 
 import org.apache.archiva.common.filelock.FileLockManager;
-import org.apache.archiva.common.utils.PathUtil;
 import org.apache.archiva.common.utils.VersionComparator;
 import org.apache.archiva.configuration.ArchivaConfiguration;
 import org.apache.archiva.configuration.FileType;
@@ -50,16 +49,18 @@ import org.junit.Test;
 
 import javax.inject.Inject;
 import javax.inject.Named;
-import javax.naming.Name;
 import java.io.IOException;
+import java.io.OutputStream;
+import java.io.Reader;
 import java.net.URISyntaxException;
+import java.nio.charset.Charset;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.nio.file.attribute.FileTime;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
@@ -1569,4 +1570,66 @@ public class ManagedDefaultRepositoryContentTest
 
     }
 
+
+    @Test
+    public void testCopyArtifact() throws IOException, URISyntaxException
+    {
+        ManagedRepository repo = createManagedRepoWithContent( 
"delete-repository" );
+        ManagedRepositoryContent myRepoContent = repo.getContent( );
+        Path repoRoot = repo.getAsset( "" ).getFilePath( );
+
+        Path tmpFile = Files.createTempFile( "archiva-mvn-repotest", "jar" );
+        try( OutputStream outputStream = Files.newOutputStream( tmpFile ))
+        {
+            for ( int i = 0; i < 255; i++ )
+            {
+                outputStream.write( "test.test.test\n".getBytes( 
Charset.forName( "UTF-8" ) ) );
+            }
+        }
+
+        Path file = repoRoot.resolve( 
"org/apache/maven/samplejar/2.0/samplejar-2.0.jar" );
+        FileTime lmt = Files.getLastModifiedTime( file );
+        ArchivaItemSelector selector = ArchivaItemSelector.builder( )
+            .withNamespace( "org.apache.maven" )
+            .withProjectId( "samplejar" )
+            .withVersion( "2.0" )
+            .withArtifactId( "samplejar" )
+            .withArtifactVersion( "2.0" )
+            .withExtension( "jar" )
+            .build( );
+        Artifact artifact = myRepoContent.getArtifact( selector );
+        myRepoContent.addArtifact( tmpFile, artifact );
+        FileTime lmtAfter = Files.getLastModifiedTime( file );
+        assertNotEquals( lmtAfter, lmt );
+        Reader ln = Files.newBufferedReader( file, Charset.forName( "UTF-8" ) 
);
+        char[] content = new char[50];
+        ln.read( content );
+        assertTrue( new String( content ).startsWith( "test.test.test" ) );
+
+        tmpFile = Files.createTempFile( "archiva-mvn-repotest", "jar" );
+        try( OutputStream outputStream = Files.newOutputStream( tmpFile ))
+        {
+            for ( int i = 0; i < 255; i++ )
+            {
+                outputStream.write( "test.test.test\n".getBytes( 
Charset.forName( "UTF-8" ) ) );
+            }
+        }
+        file = repoRoot.resolve( 
"org/apache/maven/samplejar/2.0/samplejar-2.0.test" );
+        assertFalse( Files.exists( file ) );
+        assertTrue( Files.exists( tmpFile ) );
+        selector = ArchivaItemSelector.builder( )
+            .withNamespace( "org.apache.maven" )
+            .withProjectId( "samplejar" )
+            .withVersion( "2.0" )
+            .withArtifactId( "samplejar" )
+            .withArtifactVersion( "2.0" )
+            .withExtension( "test" )
+            .build( );
+        artifact = myRepoContent.getArtifact( selector );
+        myRepoContent.addArtifact( tmpFile, artifact );
+        ln = Files.newBufferedReader( file, Charset.forName( "UTF-8" ) );
+        ln.read( content );
+        assertTrue( new String( content ).startsWith( "test.test.test" ) );
+    }
+
 }

Reply via email to