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.slf4j.Logger;
24 import org.slf4j.LoggerFactory;
25 import org.springframework.stereotype.Service;
26
27 import java.io.File;
28 import java.util.ArrayList;
29 import java.util.List;
30 import java.util.Map;
31 import java.util.Properties;
32
33
34
35
36 @Service( "downloadErrorPolicy#propagate-errors" )
37 public class PropagateErrorsDownloadPolicy
38 implements DownloadErrorPolicy
39 {
40 private Logger log = LoggerFactory.getLogger( PropagateErrorsDownloadPolicy.class );
41
42
43
44
45 public static final String STOP = "stop";
46
47
48
49
50 public static final String QUEUE = "queue error";
51
52
53
54
55 public static final String IGNORE = "ignore";
56
57 private List<String> options = new ArrayList<>( 3 );
58
59 public PropagateErrorsDownloadPolicy()
60 {
61 options.add( STOP );
62 options.add( QUEUE );
63 options.add( IGNORE );
64 }
65
66 @Override
67 public boolean applyPolicy( String policySetting, Properties request, File localFile, Exception exception,
68 Map<String, Exception> previousExceptions )
69 throws PolicyConfigurationException
70 {
71 if ( !options.contains( policySetting ) )
72 {
73
74 throw new PolicyConfigurationException( "Unknown error policy setting [" + policySetting +
75 "], valid settings are [" + StringUtils.join(
76 options.iterator(), "," ) + "]" );
77 }
78
79 if ( IGNORE.equals( policySetting ) )
80 {
81
82 log.debug( "Error policy set to IGNORE." );
83 return false;
84 }
85
86 String repositoryId = request.getProperty( "remoteRepositoryId" );
87 if ( STOP.equals( policySetting ) )
88 {
89 return true;
90 }
91
92 if ( QUEUE.equals( policySetting ) )
93 {
94 previousExceptions.put( repositoryId, exception );
95 return true;
96 }
97
98 throw new PolicyConfigurationException(
99 "Unable to process checksum policy of [" + policySetting + "], please file a bug report." );
100 }
101
102 @Override
103 public String getDefaultOption()
104 {
105 return QUEUE;
106 }
107
108 @Override
109 public String getId()
110 {
111 return "propagate-errors";
112 }
113
114 @Override
115 public String getName()
116 {
117 return "On remote error";
118 }
119
120 @Override
121 public List<String> getOptions()
122 {
123 return options;
124 }
125 }