View Javadoc
1   // =================== DO NOT EDIT THIS FILE ====================
2   //  Generated by Modello Velocity from model-version.vm
3   //  template, any modifications will be overwritten.
4   // ==============================================================
5   package org.apache.maven.model.v4;
6   
7   import java.io.ObjectStreamException;
8   import java.nio.file.Path;
9   import java.util.AbstractList;
10  import java.util.ArrayList;
11  import java.util.Collection;
12  import java.util.HashMap;
13  import java.util.Iterator;
14  import java.util.LinkedHashMap;
15  import java.util.List;
16  import java.util.Map;
17  import java.util.Objects;
18  import java.util.function.BinaryOperator;
19  import java.util.function.Function;
20  import java.util.stream.Collectors;
21  
22  import org.apache.maven.api.annotations.Generated;
23  import org.apache.maven.api.xml.XmlNode;
24  import org.apache.maven.api.model.Model;
25  import org.apache.maven.api.model.ModelBase;
26  import org.apache.maven.api.model.PluginContainer;
27  import org.apache.maven.api.model.PluginConfiguration;
28  import org.apache.maven.api.model.BuildBase;
29  import org.apache.maven.api.model.Build;
30  import org.apache.maven.api.model.CiManagement;
31  import org.apache.maven.api.model.Notifier;
32  import org.apache.maven.api.model.Contributor;
33  import org.apache.maven.api.model.Dependency;
34  import org.apache.maven.api.model.Developer;
35  import org.apache.maven.api.model.Exclusion;
36  import org.apache.maven.api.model.IssueManagement;
37  import org.apache.maven.api.model.DistributionManagement;
38  import org.apache.maven.api.model.License;
39  import org.apache.maven.api.model.MailingList;
40  import org.apache.maven.api.model.Organization;
41  import org.apache.maven.api.model.PatternSet;
42  import org.apache.maven.api.model.Parent;
43  import org.apache.maven.api.model.Scm;
44  import org.apache.maven.api.model.FileSet;
45  import org.apache.maven.api.model.Resource;
46  import org.apache.maven.api.model.RepositoryBase;
47  import org.apache.maven.api.model.Repository;
48  import org.apache.maven.api.model.DeploymentRepository;
49  import org.apache.maven.api.model.RepositoryPolicy;
50  import org.apache.maven.api.model.Site;
51  import org.apache.maven.api.model.ConfigurationContainer;
52  import org.apache.maven.api.model.Plugin;
53  import org.apache.maven.api.model.PluginExecution;
54  import org.apache.maven.api.model.DependencyManagement;
55  import org.apache.maven.api.model.PluginManagement;
56  import org.apache.maven.api.model.Reporting;
57  import org.apache.maven.api.model.Profile;
58  import org.apache.maven.api.model.Activation;
59  import org.apache.maven.api.model.ActivationProperty;
60  import org.apache.maven.api.model.ActivationOS;
61  import org.apache.maven.api.model.ActivationFile;
62  import org.apache.maven.api.model.ReportPlugin;
63  import org.apache.maven.api.model.ReportSet;
64  import org.apache.maven.api.model.Prerequisites;
65  import org.apache.maven.api.model.Relocation;
66  import org.apache.maven.api.model.Extension;
67  import org.apache.maven.api.model.InputLocation;
68  import org.apache.maven.api.model.InputSource;
69  
70  @Generated
71  public class MavenModelVersion {
72  
73      public String getModelVersion(Model model) {
74          Objects.requireNonNull(model, "model cannot be null");
75  
76          // 4.1.0
77          if (is_4_1_0(model)) {
78              return "4.1.0";
79          }
80          return "4.0.0";
81      }
82  
83      private boolean is_4_1_0(Plugin plugin) {
84          return plugin != null && (
85                 plugin.getExecutions().stream().anyMatch(this::is_4_1_0) // Plugin : executions
86          );
87      }
88      private boolean is_4_1_0(Model model) {
89          return model != null && (
90                 has(model.isRoot()) // Model : root
91              || has(model.isPreserveModelVersion()) // Model : preserveModelVersion
92              || is_4_1_0(model.getBuild()) // Model : build
93              || model.getProfiles().stream().anyMatch(this::is_4_1_0) // Model : profiles
94          );
95      }
96      private boolean is_4_1_0(PluginConfiguration pluginConfiguration) {
97          return pluginConfiguration != null && (
98                 is_4_1_0((PluginContainer) pluginConfiguration)
99              || is_4_1_0(pluginConfiguration.getPluginManagement()) // PluginConfiguration : pluginManagement
100         );
101     }
102     private boolean is_4_1_0(Profile profile) {
103         return profile != null && (
104                is_4_1_0(profile.getBuild()) // Profile : build
105         );
106     }
107     private boolean is_4_1_0(PluginExecution pluginExecution) {
108         return pluginExecution != null && (
109                has(pluginExecution.getPriority()) // PluginExecution : priority
110         );
111     }
112     private boolean is_4_1_0(Extension extension) {
113         return extension != null && (
114                has(extension.getConfiguration()) // Extension : configuration
115         );
116     }
117     private boolean is_4_1_0(PluginContainer pluginContainer) {
118         return pluginContainer != null && (
119                pluginContainer.getPlugins().stream().anyMatch(this::is_4_1_0) // PluginContainer : plugins
120         );
121     }
122     private boolean is_4_1_0(PluginManagement pluginManagement) {
123         return pluginManagement != null && (
124                is_4_1_0((PluginContainer) pluginManagement)
125         );
126     }
127     private boolean is_4_1_0(Build build) {
128         return build != null && (
129                is_4_1_0((BuildBase) build)
130             || build.getExtensions().stream().anyMatch(this::is_4_1_0) // Build : extensions
131         );
132     }
133     private boolean is_4_1_0(BuildBase buildBase) {
134         return buildBase != null && (
135                is_4_1_0((PluginConfiguration) buildBase)
136         );
137     }
138 
139     private boolean has(String str) {
140         return str != null;
141     }
142 
143     private boolean has(Path path) {
144         return path != null;
145     }
146 
147     private boolean has(boolean bool) {
148         return bool;
149     }
150 
151     private boolean has(int val) {
152         return val != 0;
153     }
154 
155     private boolean has(List<?> list) {
156         return !list.isEmpty();
157     }
158 
159     private boolean has(XmlNode node) {
160         return node != null;
161     }
162 
163 }