This is an automated email from the ASF dual-hosted git repository. michaelo pushed a commit to branch MRSOLVER-151 in repository https://gitbox.apache.org/repos/asf/maven-resolver.git
commit 74acea3b7d33d4db9bcd5371dd06ed256f27536a Author: Michael Osipov <micha...@apache.org> AuthorDate: Wed Dec 23 11:40:55 2020 +0100 [MRESOLVER-151] Enforce a checksum policy to be provided explicitly --- .../impl/DefaultChecksumPolicyProvider.java | 63 +++++++++++++++------- .../impl/DefaultChecksumPolicyProviderTest.java | 10 ++-- 2 files changed, 50 insertions(+), 23 deletions(-) diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProvider.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProvider.java index 9385e9a..9059802 100644 --- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProvider.java +++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProvider.java @@ -8,9 +8,9 @@ package org.eclipse.aether.internal.impl; * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -21,6 +21,8 @@ package org.eclipse.aether.internal.impl; import javax.inject.Named; +import java.util.Objects; + import org.eclipse.aether.RepositorySystemSession; import org.eclipse.aether.repository.RemoteRepository; import org.eclipse.aether.repository.RepositoryPolicy; @@ -49,20 +51,31 @@ public final class DefaultChecksumPolicyProvider public ChecksumPolicy newChecksumPolicy( RepositorySystemSession session, RemoteRepository repository, TransferResource resource, String policy ) { - if ( RepositoryPolicy.CHECKSUM_POLICY_IGNORE.equals( policy ) ) - { - return null; - } - if ( RepositoryPolicy.CHECKSUM_POLICY_FAIL.equals( policy ) ) + Objects.requireNonNull( session, "session cannot be null" ); + Objects.requireNonNull( repository, "repository cannot be null" ); + Objects.requireNonNull( resource, "resource cannot be null" ); + validatePolicy( "policy", policy ); + + switch ( policy ) { - return new FailChecksumPolicy( resource ); + case RepositoryPolicy.CHECKSUM_POLICY_IGNORE: + return null; + case RepositoryPolicy.CHECKSUM_POLICY_FAIL: + return new FailChecksumPolicy( resource ); + case RepositoryPolicy.CHECKSUM_POLICY_WARN: + return new WarnChecksumPolicy( resource ); + default: + throw new IllegalArgumentException( "Unsupported policy: " + policy ); } - return new WarnChecksumPolicy( resource ); } public String getEffectiveChecksumPolicy( RepositorySystemSession session, String policy1, String policy2 ) { - if ( policy1 != null && policy1.equals( policy2 ) ) + Objects.requireNonNull( session, "session cannot be null" ); + validatePolicy( "policy1", policy1 ); + validatePolicy( "policy2", policy2 ); + + if ( policy1.equals( policy2 ) ) { return policy1; } @@ -80,17 +93,31 @@ public final class DefaultChecksumPolicyProvider private static int ordinalOfPolicy( String policy ) { - if ( RepositoryPolicy.CHECKSUM_POLICY_FAIL.equals( policy ) ) - { - return ORDINAL_FAIL; - } - else if ( RepositoryPolicy.CHECKSUM_POLICY_IGNORE.equals( policy ) ) + switch ( policy ) { - return ORDINAL_IGNORE; + case RepositoryPolicy.CHECKSUM_POLICY_IGNORE: + return ORDINAL_IGNORE; + case RepositoryPolicy.CHECKSUM_POLICY_FAIL: + return ORDINAL_FAIL; + case RepositoryPolicy.CHECKSUM_POLICY_WARN: + return ORDINAL_WARN; + default: + throw new IllegalArgumentException( "Unsupported policy: " + policy ); } - else + } + + private static void validatePolicy( String paramName, String policy ) + { + Objects.requireNonNull( policy, paramName + "cannot be null" ); + + switch ( policy ) { - return ORDINAL_WARN; + case RepositoryPolicy.CHECKSUM_POLICY_IGNORE: + case RepositoryPolicy.CHECKSUM_POLICY_FAIL: + case RepositoryPolicy.CHECKSUM_POLICY_WARN: + break; + default: + throw new IllegalArgumentException( "Unsupported policy: " + policy ); } } diff --git a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProviderTest.java b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProviderTest.java index 4f508ec..9a483fd 100644 --- a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProviderTest.java +++ b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProviderTest.java @@ -8,9 +8,9 @@ package org.eclipse.aether.internal.impl; * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -88,7 +88,7 @@ public class DefaultChecksumPolicyProviderTest assertNull( policy ); } - @Test + @Test( expected = IllegalArgumentException.class ) public void testNewChecksumPolicy_Unknown() { ChecksumPolicy policy = provider.newChecksumPolicy( session, repository, resource, CHECKSUM_POLICY_UNKNOWN ); @@ -101,7 +101,7 @@ public class DefaultChecksumPolicyProviderTest { String[] policies = { RepositoryPolicy.CHECKSUM_POLICY_FAIL, RepositoryPolicy.CHECKSUM_POLICY_WARN, - RepositoryPolicy.CHECKSUM_POLICY_IGNORE, CHECKSUM_POLICY_UNKNOWN }; + RepositoryPolicy.CHECKSUM_POLICY_IGNORE }; for ( String policy : policies ) { assertEquals( policy, policy, provider.getEffectiveChecksumPolicy( session, policy, policy ) ); @@ -124,7 +124,7 @@ public class DefaultChecksumPolicyProviderTest } } - @Test + @Test( expected = IllegalArgumentException.class ) public void testGetEffectiveChecksumPolicy_UnknownPolicies() { String[][] testCases =