Skip to content

Commit

Permalink
Merge branch 'master' into MNG-6957
Browse files Browse the repository at this point in the history
  • Loading branch information
rfscholte committed Dec 4, 2020
2 parents 337d180 + 95ee890 commit 459ba0a
Show file tree
Hide file tree
Showing 7 changed files with 65 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ public class ArtifactRepositoryPolicy

public static final String CHECKSUM_POLICY_IGNORE = "ignore";

public static final String DEFAULT_CHECKSUM_POLICY = CHECKSUM_POLICY_FAIL;

private boolean enabled;

private String updatePolicy;
Expand Down Expand Up @@ -71,7 +73,7 @@ public ArtifactRepositoryPolicy( boolean enabled, String updatePolicy, String ch

if ( checksumPolicy == null )
{
checksumPolicy = CHECKSUM_POLICY_WARN;
checksumPolicy = DEFAULT_CHECKSUM_POLICY;
}
this.checksumPolicy = checksumPolicy;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.List;

Expand Down Expand Up @@ -298,6 +299,17 @@ protected void createArtifact( Artifact artifact, ArtifactRepository repository
{
writer.write( artifact.getId() );
}

MessageDigest md = MessageDigest.getInstance( "MD5" );
md.update( artifact.getId().getBytes() );
byte[] digest = md.digest();

String md5path = repository.pathOf( artifact ) + ".md5";
File md5artifactFile = new File( repository.getBasedir(), md5path );
try ( Writer writer = new OutputStreamWriter( new FileOutputStream( md5artifactFile ), StandardCharsets.ISO_8859_1) )
{
writer.append( printHexBinary( digest ) );
}
}

protected Artifact createArtifact( String artifactId, String version )
Expand Down Expand Up @@ -371,4 +383,17 @@ protected RepositorySystemSession initRepoSession()
return session;
}

private static final char[] hexCode = "0123456789ABCDEF".toCharArray();

private static final String printHexBinary( byte[] data )
{
StringBuilder r = new StringBuilder( data.length * 2 );
for ( byte b : data )
{
r.append( hexCode[( b >> 4 ) & 0xF] );
r.append( hexCode[( b & 0xF )] );
}
return r.toString();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,10 @@ public void testUnnecessaryRepositoryLookup()

StringWagon wagon = (StringWagon) wagonManager.getWagon( "string" );
wagon.addExpectedContent( repos.get( 0 ).getLayout().pathOf( artifact ), "expected" );
wagon.addExpectedContent( repos.get( 0 ).getLayout().pathOf( artifact ) + ".md5", "cd26d9e10ce691cc69aa2b90dcebbdac" );
wagon.addExpectedContent( repos.get( 1 ).getLayout().pathOf( artifact ), "expected" );
wagon.addExpectedContent( repos.get( 1 ).getLayout().pathOf( artifact ) + ".md5", "cd26d9e10ce691cc69aa2b90dcebbdac" );


class TransferListener
extends AbstractTransferListener
Expand Down Expand Up @@ -170,6 +173,7 @@ public void testGetRemoteJar()

StringWagon wagon = (StringWagon) wagonManager.getWagon( "string" );
wagon.addExpectedContent( repo.getLayout().pathOf( artifact ), "expected" );
wagon.addExpectedContent( repo.getLayout().pathOf( artifact ) + ".md5", "cd26d9e10ce691cc69aa2b90dcebbdac" );

wagonManager.getArtifact( artifact, repo, null, false );

Expand Down Expand Up @@ -271,6 +275,7 @@ public void testWagonTransferListenerRemovedAfterGetArtifactAndPutArtifact()
ArtifactRepository repo = createStringRepo();
StringWagon wagon = (StringWagon) wagonManager.getWagon( "string" );
wagon.addExpectedContent( repo.getLayout().pathOf( artifact ), "expected" );
wagon.addExpectedContent( repo.getLayout().pathOf( artifact ) + ".md5", "cd26d9e10ce691cc69aa2b90dcebbdac" );

/* getArtifact */
assertFalse( "Transfer listener is registered before test",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -419,8 +419,8 @@ public static ArtifactRepositoryPolicy buildArtifactRepositoryPolicy( org.apache
}

return new ArtifactRepositoryPolicy( enabled, updatePolicy, checksumPolicy );
}
}

public ArtifactRepository createArtifactRepository( String id, String url, String layoutId,
ArtifactRepositoryPolicy snapshots,
ArtifactRepositoryPolicy releases )
Expand All @@ -442,7 +442,7 @@ private void checkLayout( String repositoryId, String layoutId, ArtifactReposito
repositoryId ) );
}
}

public static ArtifactRepository createArtifactRepository( String id, String url,
ArtifactRepositoryLayout repositoryLayout,
ArtifactRepositoryPolicy snapshots,
Expand Down Expand Up @@ -568,20 +568,20 @@ else if ( Artifact.SCOPE_COMPILE.equals( scope ) && Artifact.SCOPE_COMPILE.equal
return new DefaultArtifact( groupId, artifactId, versionRange, desiredScope, type, classifier, handler,
optional );
}

//
// Code taken from LegacyRepositorySystem
//

public ArtifactRepository createDefaultRemoteRepository( MavenExecutionRequest request )
throws Exception
{
return createRepository( RepositorySystem.DEFAULT_REMOTE_REPO_URL, RepositorySystem.DEFAULT_REMOTE_REPO_ID,
true, ArtifactRepositoryPolicy.UPDATE_POLICY_DAILY, false,
ArtifactRepositoryPolicy.UPDATE_POLICY_DAILY,
ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN );
ArtifactRepositoryPolicy.DEFAULT_CHECKSUM_POLICY );
}

public ArtifactRepository createRepository( String url, String repositoryId, boolean releases,
String releaseUpdates, boolean snapshots, String snapshotUpdates,
String checksumPolicy ) throws Exception
Expand All @@ -594,7 +594,7 @@ public ArtifactRepository createRepository( String url, String repositoryId, boo

return createArtifactRepository( repositoryId, url, "default", snapshotsPolicy, releasesPolicy );
}

public Set<String> getRepoIds( List<ArtifactRepository> repositories )
{
Set<String> repoIds = new HashSet<>();
Expand Down Expand Up @@ -707,8 +707,8 @@ public ArtifactRepository createLocalRepository( MavenExecutionRequest request,
ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS, true,
ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS,
ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE );
}
}

private static final String WILDCARD = "*";

private static final String EXTERNAL_WILDCARD = "external:*";
Expand Down Expand Up @@ -873,5 +873,5 @@ else if ( WILDCARD.equals( layout ) )
}

return result;
}
}
}
7 changes: 3 additions & 4 deletions maven-model/src/main/mdo/maven.mdo
Original file line number Diff line number Diff line change
Expand Up @@ -1995,12 +1995,11 @@
<description>
<![CDATA[
What to do when verification of an artifact checksum fails. Valid values are
<code>ignore</code>
,
<code>ignore</code>,
<code>fail</code>
or
(default for Maven 4 and above) or
<code>warn</code>
(the default).
(default for Maven 2 and 3)
]]>
</description>
<type>String</type>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
* under the License.
*/

import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
import org.apache.maven.model.Repository;
import org.eclipse.aether.artifact.Artifact;
import org.eclipse.aether.artifact.DefaultArtifact;
Expand Down Expand Up @@ -59,7 +60,7 @@ public static RemoteRepository toRemoteRepository( Repository repository )
public static RepositoryPolicy toRepositoryPolicy( org.apache.maven.model.RepositoryPolicy policy )
{
boolean enabled = true;
String checksums = RepositoryPolicy.CHECKSUM_POLICY_WARN;
String checksums = toRepositoryChecksumPolicy( ArtifactRepositoryPolicy.DEFAULT_CHECKSUM_POLICY );
String updates = RepositoryPolicy.UPDATE_POLICY_DAILY;

if ( policy != null )
Expand All @@ -78,4 +79,19 @@ public static RepositoryPolicy toRepositoryPolicy( org.apache.maven.model.Reposi
return new RepositoryPolicy( enabled, updates, checksums );
}

public static String toRepositoryChecksumPolicy( final String artifactRepositoryPolicy )
{
switch ( artifactRepositoryPolicy )
{
case ArtifactRepositoryPolicy.CHECKSUM_POLICY_FAIL:
return RepositoryPolicy.CHECKSUM_POLICY_FAIL;
case ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE:
return RepositoryPolicy.CHECKSUM_POLICY_IGNORE;
case ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN:
return RepositoryPolicy.CHECKSUM_POLICY_WARN;
default:
throw new IllegalArgumentException( "unknown repository checksum policy: " + artifactRepositoryPolicy );
}
}

}
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ under the License.
<plexusUtilsVersion>3.3.0</plexusUtilsVersion>
<guiceVersion>4.2.3</guiceVersion>
<sisuInjectVersion>0.3.4</sisuInjectVersion>
<wagonVersion>3.4.0</wagonVersion>
<wagonVersion>3.4.2</wagonVersion>
<jsoupVersion>1.12.1</jsoupVersion>
<securityDispatcherVersion>1.4</securityDispatcherVersion>
<cipherVersion>1.8</cipherVersion>
Expand Down

0 comments on commit 459ba0a

Please sign in to comment.