View Javadoc
1   /*
2    * SPDX-FileCopyrightText: Copyright (c) 2011-2025 Yegor Bugayenko
3    * SPDX-License-Identifier: MIT
4    */
5   package com.qulice.maven;
6   
7   import com.qulice.spi.Environment;
8   import java.io.File;
9   import java.nio.charset.Charset;
10  import java.util.Collection;
11  import java.util.Properties;
12  import org.apache.maven.project.MavenProject;
13  import org.codehaus.plexus.context.Context;
14  
15  /**
16   * Environment, passed from MOJO to validators.
17   *
18   * @since 0.3
19   */
20  @SuppressWarnings("PMD.TooManyMethods")
21  interface MavenEnvironment extends Environment {
22  
23      /**
24       * Get project.
25       * @return The project
26       */
27      MavenProject project();
28  
29      /**
30       * Get properties.
31       * @return The properties
32       */
33      Properties properties();
34  
35      /**
36       * Get context.
37       * @return The context
38       */
39      Context context();
40  
41      /**
42       * Get plugin configuration properties.
43       * @return The props
44       */
45      Properties config();
46  
47      /**
48       * Get MOJO executor.
49       * @return The executor
50       */
51      MojoExecutor executor();
52  
53      /**
54       * Get xpath queries for pom.xml validation.
55       * @return The asserts
56       */
57      Collection<String> asserts();
58  
59      /**
60       * Wrapper of maven environment.
61       *
62       * @since 0.1
63       */
64      final class Wrap implements MavenEnvironment {
65          /**
66           * Parent environment.
67           */
68          private final Environment env;
69  
70          /**
71           * Parent maven environment.
72           */
73          private final MavenEnvironment menv;
74  
75          /**
76           * Public ctor.
77           * @param penv Parent env
78           * @param pmenv Parent maven env
79           */
80          Wrap(final Environment penv,
81              final MavenEnvironment pmenv) {
82              this.env = penv;
83              this.menv = pmenv;
84          }
85  
86          @Override
87          public File basedir() {
88              return this.env.basedir();
89          }
90  
91          @Override
92          public File tempdir() {
93              return this.env.tempdir();
94          }
95  
96          @Override
97          public File outdir() {
98              return this.env.outdir();
99          }
100 
101         @Override
102         public String param(final String name, final String value) {
103             return this.env.param(name, value);
104         }
105 
106         @Override
107         public ClassLoader classloader() {
108             return this.env.classloader();
109         }
110 
111         @Override
112         public Collection<String> classpath() {
113             return this.env.classpath();
114         }
115 
116         @Override
117         public MavenProject project() {
118             return this.menv.project();
119         }
120 
121         @Override
122         public Properties properties() {
123             return this.menv.properties();
124         }
125 
126         @Override
127         public Context context() {
128             return this.menv.context();
129         }
130 
131         @Override
132         public Properties config() {
133             return this.menv.config();
134         }
135 
136         @Override
137         public MojoExecutor executor() {
138             return this.menv.executor();
139         }
140 
141         @Override
142         public Collection<String> asserts() {
143             return this.menv.asserts();
144         }
145 
146         @Override
147         public Collection<File> files(final String pattern) {
148             return this.env.files(pattern);
149         }
150 
151         @Override
152         public boolean exclude(final String check, final String name) {
153             return this.env.exclude(check, name);
154         }
155 
156         @Override
157         public Collection<String> excludes(final String checker) {
158             return this.env.excludes(checker);
159         }
160 
161         @Override
162         public Charset encoding() {
163             return this.env.encoding();
164         }
165     }
166 }