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