1 package org.apache.archiva.policies;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.commons.lang.StringUtils;
23 import org.springframework.stereotype.Service;
24
25 import java.io.File;
26 import java.util.ArrayList;
27 import java.util.List;
28 import java.util.Map;
29 import java.util.Properties;
30
31
32
33
34 @Service( "downloadErrorPolicy#propagate-errors-on-update" )
35 public class PropagateErrorsOnUpdateDownloadPolicy
36 implements DownloadErrorPolicy
37 {
38
39
40
41 public static final String ALWAYS = "always";
42
43
44
45
46 public static final String NOT_PRESENT = "artifact not already present";
47
48 private List<String> options = new ArrayList<>( 2 );
49
50 public PropagateErrorsOnUpdateDownloadPolicy()
51 {
52 options.add( ALWAYS );
53 options.add( NOT_PRESENT );
54 }
55
56 @Override
57 public boolean applyPolicy( String policySetting, Properties request, File localFile, Exception exception,
58 Map<String, Exception> previousExceptions )
59 throws PolicyConfigurationException
60 {
61 if ( !options.contains( policySetting ) )
62 {
63
64 throw new PolicyConfigurationException(
65 "Unknown error policy setting [" + policySetting + "], valid settings are [" + StringUtils.join(
66 options.iterator(), "," ) + "]" );
67 }
68
69 if ( ALWAYS.equals( policySetting ) )
70 {
71
72 return true;
73 }
74
75 if ( NOT_PRESENT.equals( policySetting ) )
76 {
77
78 return !localFile.exists();
79 }
80
81 throw new PolicyConfigurationException(
82 "Unable to process checksum policy of [" + policySetting + "], please file a bug report." );
83 }
84
85 @Override
86 public String getDefaultOption()
87 {
88 return NOT_PRESENT;
89 }
90
91 @Override
92 public String getId()
93 {
94 return "propagate-errors-on-update";
95 }
96
97 @Override
98 public String getName()
99 {
100 return "Return error when";
101 }
102
103 @Override
104 public List<String> getOptions()
105 {
106 return options;
107 }
108 }