1 package org.eclipse.aether.internal.impl;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import javax.inject.Inject;
23 import javax.inject.Named;
24
25 import org.eclipse.aether.RepositorySystemSession;
26 import org.eclipse.aether.repository.RemoteRepository;
27 import org.eclipse.aether.repository.RepositoryPolicy;
28 import org.eclipse.aether.spi.connector.checksum.ChecksumPolicy;
29 import org.eclipse.aether.spi.connector.checksum.ChecksumPolicyProvider;
30 import org.eclipse.aether.spi.locator.Service;
31 import org.eclipse.aether.spi.locator.ServiceLocator;
32 import org.eclipse.aether.transfer.TransferResource;
33
34
35
36 @Named
37 public final class DefaultChecksumPolicyProvider
38 implements ChecksumPolicyProvider
39 {
40
41 private static final int ORDINAL_IGNORE = 0;
42
43 private static final int ORDINAL_WARN = 1;
44
45 private static final int ORDINAL_FAIL = 2;
46
47 public DefaultChecksumPolicyProvider()
48 {
49
50 }
51
52 public ChecksumPolicy newChecksumPolicy( RepositorySystemSession session, RemoteRepository repository,
53 TransferResource resource, String policy )
54 {
55 if ( RepositoryPolicy.CHECKSUM_POLICY_IGNORE.equals( policy ) )
56 {
57 return null;
58 }
59 if ( RepositoryPolicy.CHECKSUM_POLICY_FAIL.equals( policy ) )
60 {
61 return new FailChecksumPolicy( resource );
62 }
63 return new WarnChecksumPolicy( resource );
64 }
65
66 public String getEffectiveChecksumPolicy( RepositorySystemSession session, String policy1, String policy2 )
67 {
68 if ( policy1 != null && policy1.equals( policy2 ) )
69 {
70 return policy1;
71 }
72 int ordinal1 = ordinalOfPolicy( policy1 );
73 int ordinal2 = ordinalOfPolicy( policy2 );
74 if ( ordinal2 < ordinal1 )
75 {
76 return ( ordinal2 != ORDINAL_WARN ) ? policy2 : RepositoryPolicy.CHECKSUM_POLICY_WARN;
77 }
78 else
79 {
80 return ( ordinal1 != ORDINAL_WARN ) ? policy1 : RepositoryPolicy.CHECKSUM_POLICY_WARN;
81 }
82 }
83
84 private static int ordinalOfPolicy( String policy )
85 {
86 if ( RepositoryPolicy.CHECKSUM_POLICY_FAIL.equals( policy ) )
87 {
88 return ORDINAL_FAIL;
89 }
90 else if ( RepositoryPolicy.CHECKSUM_POLICY_IGNORE.equals( policy ) )
91 {
92 return ORDINAL_IGNORE;
93 }
94 else
95 {
96 return ORDINAL_WARN;
97 }
98 }
99
100 }