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(Model model) {
84          return model != null && (
85                 is_4_1_0((ModelBase) model)
86              || has(model.isRoot()) // Model : root
87              || has(model.isPreserveModelVersion()) // Model : preserveModelVersion
88              || model.getProfiles().stream().anyMatch(this::is_4_1_0) // Model : profiles
89              || is_4_1_0(model.getBuild()) // Model : build
90          );
91      }
92      private boolean is_4_1_0(ModelBase modelBase) {
93          return modelBase != null && (
94                 !modelBase.getSubprojects().isEmpty() // ModelBase : subprojects
95          );
96      }
97      private boolean is_4_1_0(Activation activation) {
98          return activation != null && (
99                 has(activation.getPackaging()) // Activation : packaging
100             || has(activation.getCondition()) // Activation : condition
101         );
102     }
103     private boolean is_4_1_0(Profile profile) {
104         return profile != null && (
105                is_4_1_0((ModelBase) profile)
106             || is_4_1_0(profile.getActivation()) // Profile : activation
107         );
108     }
109     private boolean is_4_1_0(Extension extension) {
110         return extension != null && (
111                has(extension.getConfiguration()) // Extension : configuration
112         );
113     }
114     private boolean is_4_1_0(Build build) {
115         return build != null && (
116                build.getExtensions().stream().anyMatch(this::is_4_1_0) // Build : extensions
117         );
118     }
119 
120     private boolean has(String str) {
121         return str != null;
122     }
123 
124     private boolean has(Path path) {
125         return path != null;
126     }
127 
128     private boolean has(boolean bool) {
129         return bool;
130     }
131 
132     private boolean has(int val) {
133         return val != 0;
134     }
135 
136     private boolean has(List<?> list) {
137         return !list.isEmpty();
138     }
139 
140     private boolean has(XmlNode node) {
141         return node != null;
142     }
143 
144 }