]> source.dussan.org Git - archiva.git/blob
d2b471af3bce32d67e7651ed8c901dfd70ed7410
[archiva.git] /
1 package org.apache.maven.archiva.policies;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *   http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import org.apache.commons.lang.StringUtils;
23 import org.codehaus.plexus.logging.AbstractLogEnabled;
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  * PropagateErrorsPolicy - a policy applied on error to determine how to treat the error.
33  *
34  * @plexus.component role="org.apache.maven.archiva.policies.DownloadErrorPolicy"
35  *                   role-hint="propagate-errors-on-update"
36  */
37 public class PropagateErrorsOnUpdateDownloadPolicy
38     extends AbstractLogEnabled
39     implements DownloadErrorPolicy
40 {
41     /**
42      * Signifies any error should cause a failure whether the artifact is already present or not.
43      */
44     public static final String ALWAYS = "always";
45
46     /**
47      * Signifies any error should cause a failure only if the artifact is not already present.
48      */
49     public static final String NOT_PRESENT = "artifact not already present";
50
51     private List<String> options = new ArrayList<String>();
52
53     public PropagateErrorsOnUpdateDownloadPolicy()
54     {
55         options.add( ALWAYS );
56         options.add( NOT_PRESENT );
57     }
58
59     public boolean applyPolicy( String policySetting, Properties request, File localFile, Exception exception,
60                              Map<String,Exception> previousExceptions )
61         throws PolicyConfigurationException
62     {
63         if ( !options.contains( policySetting ) )
64         {
65             // Not a valid code.
66             throw new PolicyConfigurationException( "Unknown error policy setting [" + policySetting
67                 + "], valid settings are [" + StringUtils.join( options.iterator(), "," ) + "]" );
68         }
69
70         if ( ALWAYS.equals( policySetting ) )
71         {
72             // throw ther exception regardless
73             return true;
74         }
75
76         if ( NOT_PRESENT.equals( policySetting ) )
77         {
78             // cancel the exception if the file exists
79             return !localFile.exists();
80         }
81
82         throw new PolicyConfigurationException( "Unable to process checksum policy of [" + policySetting
83             + "], please file a bug report." );
84     }
85
86     public String getDefaultOption()
87     {
88         return NOT_PRESENT;
89     }
90
91     public String getId()
92     {
93         return "propagate-errors-on-update";
94     }
95
96     public String getName()
97     {
98         return "Return error when";
99     }
100
101     public List<String> getOptions()
102     {
103         return options;
104     }
105 }