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