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         );
101     }
102     private boolean is_4_1_0(Profile profile) {
103         return profile != null && (
104                is_4_1_0((ModelBase) profile)
105             || is_4_1_0(profile.getActivation()) // Profile : activation
106         );
107     }
108     private boolean is_4_1_0(Extension extension) {
109         return extension != null && (
110                has(extension.getConfiguration()) // Extension : configuration
111         );
112     }
113     private boolean is_4_1_0(Build build) {
114         return build != null && (
115                build.getExtensions().stream().anyMatch(this::is_4_1_0) // Build : extensions
116         );
117     }
118 
119     private boolean has(String str) {
120         return str != null;
121     }
122 
123     private boolean has(Path path) {
124         return path != null;
125     }
126 
127     private boolean has(boolean bool) {
128         return bool;
129     }
130 
131     private boolean has(int val) {
132         return val != 0;
133     }
134 
135     private boolean has(List<?> list) {
136         return !list.isEmpty();
137     }
138 
139     private boolean has(XmlNode node) {
140         return node != null;
141     }
142 
143 }