]> source.dussan.org Git - archiva.git/blob
377a3ccb2438aaefebfe2fa80d517674c1ccf85f
[archiva.git] /
1 package org.apache.archiva.repository.validation;
2 /*
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied.  See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  */
19
20 import org.apache.archiva.repository.CheckedResult;
21 import org.apache.archiva.repository.Repository;
22
23 import java.util.ArrayList;
24 import java.util.Collections;
25 import java.util.HashMap;
26 import java.util.List;
27 import java.util.Map;
28 import java.util.function.Function;
29
30 /**
31  * A validation response gives information about the validation status for certain attributes.
32  *
33  *
34  * @author Martin Stockhammer <martin_s@apache.org>
35  */
36 public class ValidationResponse<R extends Repository> implements CheckedResult<R, Map<String, List<ValidationError>>>
37 {
38     final boolean valid;
39     final R repository;
40     final Map<String, List<ValidationError>> validationErrors = new HashMap<>( );
41
42
43     public ValidationResponse( R repo, Map<String, List<ValidationError>> errors)
44     {
45         if( errors==null || errors.size()==0 ) {
46             this.valid = true;
47         } else {
48             this.valid = false;
49             validationErrors.putAll( errors );
50         }
51         this.repository = repo;
52     }
53
54     public static <S extends Repository> ValidationResponse<S> getValid( S repository )
55     {
56         return new ValidationResponse<>( repository, null );
57     }
58
59     @Override
60     public R getRepository( )
61     {
62         return repository;
63     }
64
65     /**
66      * Returns true, if the validation was successful and there are not validation errors.
67      * @return <code>true</code>, if the validation was successful, otherwise <code>false</code>
68      */
69     @Override
70     public boolean isValid( )
71     {
72         return valid;
73     }
74
75     @Override
76     public Map<String, List<ValidationError>> getResult( )
77     {
78         return validationErrors;
79     }
80
81
82     /**
83      * Add the given validation error to the list for the given attribute.
84      *
85      * @param attribute the name of the attribute
86      * @param error the error that is added to the list
87      */
88     public void addValidationError(String attribute, ValidationError error) {
89         if (!validationErrors.containsKey( attribute )) {
90             validationErrors.put( attribute, new ArrayList<>( ) );
91         }
92         validationErrors.get( attribute ).add( error );
93     }
94
95     /**
96      * Returns a list of validation errors that are stored for the given attribute. If there are no
97      * errors stored for this attribute, a empty list is returned.
98      *
99      * @param attribute the name of the attribute
100      * @return the list of validation errors
101      */
102     public List<ValidationError> getValidationErrors(String attribute) {
103         if (validationErrors.containsKey( attribute )) {
104             return validationErrors.get( attribute );
105         } else {
106             return Collections.emptyList( );
107         }
108     }
109
110 }