View Javadoc
1   /*
2    * SPDX-FileCopyrightText: Copyright (c) 2011-2026 Yegor Bugayenko
3    * SPDX-License-Identifier: MIT
4    */
5   package com.qulice.maven;
6   
7   import com.qulice.spi.ResourceValidator;
8   import com.qulice.spi.Validator;
9   import java.util.Collection;
10  import java.util.HashSet;
11  import java.util.Set;
12  
13  /**
14   * Mocker of ValidatorsProvider.
15   * @since 0.4
16   */
17  final class ValidatorsProviderMocker {
18  
19      /**
20       * List of external validators.
21       */
22      private final Set<Validator> external = new HashSet<>();
23  
24      /**
25       * List of external resource validators.
26       */
27      private final transient Set<ResourceValidator> rexternal = new HashSet<>();
28  
29      /**
30       * List of internal validators.
31       */
32      private final Set<MavenValidator> internal = new HashSet<>();
33  
34      /**
35       * With this external validator.
36       * @param validator The validator
37       * @return This object
38       */
39      ValidatorsProviderMocker withExternal(final Validator validator) {
40          this.external.add(validator);
41          return this;
42      }
43  
44      /**
45       * With this external resource validator.
46       * @param validator The validator
47       * @return This object
48       */
49      ValidatorsProviderMocker withExternalResource(final ResourceValidator validator) {
50          this.rexternal.add(validator);
51          return this;
52      }
53  
54      /**
55       * With this external validator.
56       * @param validator The validator
57       * @return This object
58       */
59      ValidatorsProviderMocker withInternal(final MavenValidator validator) {
60          this.internal.add(validator);
61          return this;
62      }
63  
64      /**
65       * Mock it.
66       * @return The provider
67       */
68      ValidatorsProvider mock() {
69          return new ValidatorsProviderMocker.FakeValidatorsProvider(
70              this.internal,
71              this.external,
72              this.rexternal
73          );
74      }
75  
76      /**
77       * FakeValidatorsProvides.
78       * A mock to ValidatorsProvides.
79       * @since 0.24.1
80       */
81      private static class FakeValidatorsProvider implements ValidatorsProvider {
82  
83          /**
84           * Max validators.
85           */
86          private final Set<MavenValidator> intern;
87  
88          /**
89           * External validators.
90           */
91          private final Set<Validator> extern;
92  
93          /**
94           * Resources validators.
95           */
96          private final Set<ResourceValidator> rextern;
97  
98          FakeValidatorsProvider(
99              final Set<MavenValidator> inter,
100             final Set<Validator> exter,
101             final Set<ResourceValidator> rexter
102         ) {
103             this.intern = inter;
104             this.extern = exter;
105             this.rextern = rexter;
106         }
107 
108         @Override
109         public Set<MavenValidator> internal() {
110             return this.intern;
111         }
112 
113         @Override
114         public Set<Validator> external() {
115             return this.extern;
116         }
117 
118         @Override
119         public Collection<ResourceValidator> externalResource() {
120             return this.rextern;
121         }
122     }
123 }