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