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.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  interface MavenEnvironment extends Environment {
21  
22      /**
23       * Get project.
24       *
25       * @return The project
26       */
27      MavenProject project();
28  
29      /**
30       * Get properties.
31       *
32       * @return The properties
33       */
34      Properties properties();
35  
36      /**
37       * Get context.
38       *
39       * @return The context
40       */
41      Context context();
42  
43      /**
44       * Get plugin configuration properties.
45       *
46       * @return The props
47       */
48      Properties config();
49  
50      /**
51       * Get MOJO executor.
52       *
53       * @return The executor
54       */
55      MojoExecutor executor();
56  
57      /**
58       * Get xpath queries for pom.xml validation.
59       *
60       * @return The asserts
61       */
62      Collection<String> asserts();
63  
64      /**
65       * Wrapper of maven environment.
66       *
67       * @since 0.1
68       */
69      final class Wrap implements MavenEnvironment {
70  
71          /**
72           * Parent environment.
73           */
74          private final Environment env;
75  
76          /**
77           * Parent maven environment.
78           */
79          private final MavenEnvironment menv;
80  
81          /**
82           * Public ctor.
83           *
84           * @param penv Parent env
85           * @param pmenv Parent maven env
86           */
87          Wrap(final Environment penv, final MavenEnvironment pmenv) {
88              this.env = penv;
89              this.menv = pmenv;
90          }
91  
92          @Override
93          public File basedir() {
94              return this.env.basedir();
95          }
96  
97          @Override
98          public File tempdir() {
99              return this.env.tempdir();
100         }
101 
102         @Override
103         public File outdir() {
104             return this.env.outdir();
105         }
106 
107         @Override
108         public Collection<File> testdirs() {
109             return this.env.testdirs();
110         }
111 
112         @Override
113         public String param(final String name, final String value) {
114             return this.env.param(name, value);
115         }
116 
117         @Override
118         public ClassLoader classloader() {
119             return this.env.classloader();
120         }
121 
122         @Override
123         public Collection<String> classpath() {
124             return this.env.classpath();
125         }
126 
127         @Override
128         public MavenProject project() {
129             return this.menv.project();
130         }
131 
132         @Override
133         public Properties properties() {
134             return this.menv.properties();
135         }
136 
137         @Override
138         public Context context() {
139             return this.menv.context();
140         }
141 
142         @Override
143         public Properties config() {
144             return this.menv.config();
145         }
146 
147         @Override
148         public MojoExecutor executor() {
149             return this.menv.executor();
150         }
151 
152         @Override
153         public Collection<String> asserts() {
154             return this.menv.asserts();
155         }
156 
157         @Override
158         public Collection<File> files(final String pattern) {
159             return this.env.files(pattern);
160         }
161 
162         @Override
163         public boolean exclude(final String check, final String name) {
164             return this.env.exclude(check, name);
165         }
166 
167         @Override
168         public Collection<String> excludes(final String checker) {
169             return this.env.excludes(checker);
170         }
171 
172         @Override
173         public Charset encoding() {
174             return this.env.encoding();
175         }
176     }
177 }