1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.model.building;
20
21 import org.apache.maven.model.Model;
22 import org.apache.maven.model.composition.DefaultDependencyManagementImporter;
23 import org.apache.maven.model.composition.DependencyManagementImporter;
24 import org.apache.maven.model.inheritance.DefaultInheritanceAssembler;
25 import org.apache.maven.model.inheritance.InheritanceAssembler;
26 import org.apache.maven.model.interpolation.DefaultModelVersionProcessor;
27 import org.apache.maven.model.interpolation.ModelInterpolator;
28 import org.apache.maven.model.interpolation.ModelVersionProcessor;
29 import org.apache.maven.model.interpolation.StringVisitorModelInterpolator;
30 import org.apache.maven.model.io.DefaultModelReader;
31 import org.apache.maven.model.io.ModelReader;
32 import org.apache.maven.model.locator.DefaultModelLocator;
33 import org.apache.maven.model.locator.ModelLocator;
34 import org.apache.maven.model.management.DefaultDependencyManagementInjector;
35 import org.apache.maven.model.management.DefaultPluginManagementInjector;
36 import org.apache.maven.model.management.DependencyManagementInjector;
37 import org.apache.maven.model.management.PluginManagementInjector;
38 import org.apache.maven.model.normalization.DefaultModelNormalizer;
39 import org.apache.maven.model.normalization.ModelNormalizer;
40 import org.apache.maven.model.path.DefaultModelPathTranslator;
41 import org.apache.maven.model.path.DefaultModelUrlNormalizer;
42 import org.apache.maven.model.path.DefaultPathTranslator;
43 import org.apache.maven.model.path.DefaultUrlNormalizer;
44 import org.apache.maven.model.path.ModelPathTranslator;
45 import org.apache.maven.model.path.ModelUrlNormalizer;
46 import org.apache.maven.model.path.PathTranslator;
47 import org.apache.maven.model.path.ProfileActivationFilePathInterpolator;
48 import org.apache.maven.model.path.UrlNormalizer;
49 import org.apache.maven.model.plugin.DefaultPluginConfigurationExpander;
50 import org.apache.maven.model.plugin.DefaultReportConfigurationExpander;
51 import org.apache.maven.model.plugin.DefaultReportingConverter;
52 import org.apache.maven.model.plugin.LifecycleBindingsInjector;
53 import org.apache.maven.model.plugin.PluginConfigurationExpander;
54 import org.apache.maven.model.plugin.ReportConfigurationExpander;
55 import org.apache.maven.model.plugin.ReportingConverter;
56 import org.apache.maven.model.profile.DefaultProfileInjector;
57 import org.apache.maven.model.profile.DefaultProfileSelector;
58 import org.apache.maven.model.profile.ProfileInjector;
59 import org.apache.maven.model.profile.ProfileSelector;
60 import org.apache.maven.model.profile.activation.FileProfileActivator;
61 import org.apache.maven.model.profile.activation.JdkVersionProfileActivator;
62 import org.apache.maven.model.profile.activation.OperatingSystemProfileActivator;
63 import org.apache.maven.model.profile.activation.ProfileActivator;
64 import org.apache.maven.model.profile.activation.PropertyProfileActivator;
65 import org.apache.maven.model.root.DefaultRootLocator;
66 import org.apache.maven.model.root.RootLocator;
67 import org.apache.maven.model.superpom.DefaultSuperPomProvider;
68 import org.apache.maven.model.superpom.SuperPomProvider;
69 import org.apache.maven.model.validation.DefaultModelValidator;
70 import org.apache.maven.model.validation.ModelValidator;
71
72
73
74
75
76
77
78
79
80 public class DefaultModelBuilderFactory {
81
82 protected ModelProcessor newModelProcessor() {
83 DefaultModelProcessor processor = new DefaultModelProcessor();
84 processor.setModelLocator(newModelLocator());
85 processor.setModelReader(newModelReader());
86 return processor;
87 }
88
89 protected ModelLocator newModelLocator() {
90 return new DefaultModelLocator();
91 }
92
93 protected ModelReader newModelReader() {
94 return new DefaultModelReader();
95 }
96
97 protected ProfileSelector newProfileSelector() {
98 DefaultProfileSelector profileSelector = new DefaultProfileSelector();
99
100 for (ProfileActivator activator : newProfileActivators()) {
101 profileSelector.addProfileActivator(activator);
102 }
103
104 return profileSelector;
105 }
106
107 protected ProfileActivator[] newProfileActivators() {
108 return new ProfileActivator[] {
109 new JdkVersionProfileActivator(),
110 new OperatingSystemProfileActivator(),
111 new PropertyProfileActivator(),
112 new FileProfileActivator()
113 .setProfileActivationFilePathInterpolator(newProfileActivationFilePathInterpolator())
114 };
115 }
116
117 protected ProfileActivationFilePathInterpolator newProfileActivationFilePathInterpolator() {
118 return new ProfileActivationFilePathInterpolator()
119 .setPathTranslator(newPathTranslator())
120 .setRootLocator(newRootLocator());
121 }
122
123 protected UrlNormalizer newUrlNormalizer() {
124 return new DefaultUrlNormalizer();
125 }
126
127 protected PathTranslator newPathTranslator() {
128 return new DefaultPathTranslator();
129 }
130
131 private RootLocator newRootLocator() {
132 return new DefaultRootLocator();
133 }
134
135 protected ModelInterpolator newModelInterpolator() {
136 UrlNormalizer normalizer = newUrlNormalizer();
137 PathTranslator pathTranslator = newPathTranslator();
138 return new StringVisitorModelInterpolator()
139 .setPathTranslator(pathTranslator)
140 .setUrlNormalizer(normalizer)
141 .setVersionPropertiesProcessor(newModelVersionPropertiesProcessor())
142 .setRootLocator(newRootLocator());
143 }
144
145 protected ModelVersionProcessor newModelVersionPropertiesProcessor() {
146 return new DefaultModelVersionProcessor();
147 }
148
149 protected ModelValidator newModelValidator() {
150 return new DefaultModelValidator(newModelVersionPropertiesProcessor());
151 }
152
153 protected ModelNormalizer newModelNormalizer() {
154 return new DefaultModelNormalizer();
155 }
156
157 protected ModelPathTranslator newModelPathTranslator() {
158 return new DefaultModelPathTranslator().setPathTranslator(newPathTranslator());
159 }
160
161 protected ModelUrlNormalizer newModelUrlNormalizer() {
162 return new DefaultModelUrlNormalizer().setUrlNormalizer(newUrlNormalizer());
163 }
164
165 protected InheritanceAssembler newInheritanceAssembler() {
166 return new DefaultInheritanceAssembler();
167 }
168
169 protected ProfileInjector newProfileInjector() {
170 return new DefaultProfileInjector();
171 }
172
173 protected SuperPomProvider newSuperPomProvider() {
174 return new DefaultSuperPomProvider().setModelProcessor(newModelProcessor());
175 }
176
177 protected DependencyManagementImporter newDependencyManagementImporter() {
178 return new DefaultDependencyManagementImporter();
179 }
180
181 protected DependencyManagementInjector newDependencyManagementInjector() {
182 return new DefaultDependencyManagementInjector();
183 }
184
185 protected LifecycleBindingsInjector newLifecycleBindingsInjector() {
186 return new StubLifecycleBindingsInjector();
187 }
188
189 protected PluginManagementInjector newPluginManagementInjector() {
190 return new DefaultPluginManagementInjector();
191 }
192
193 protected PluginConfigurationExpander newPluginConfigurationExpander() {
194 return new DefaultPluginConfigurationExpander();
195 }
196
197 protected ReportConfigurationExpander newReportConfigurationExpander() {
198 return new DefaultReportConfigurationExpander();
199 }
200
201 protected ReportingConverter newReportingConverter() {
202 return new DefaultReportingConverter();
203 }
204
205
206
207
208
209
210 public DefaultModelBuilder newInstance() {
211 DefaultModelBuilder modelBuilder = new DefaultModelBuilder();
212
213 modelBuilder.setModelProcessor(newModelProcessor());
214 modelBuilder.setModelValidator(newModelValidator());
215 modelBuilder.setModelNormalizer(newModelNormalizer());
216 modelBuilder.setModelPathTranslator(newModelPathTranslator());
217 modelBuilder.setModelUrlNormalizer(newModelUrlNormalizer());
218 modelBuilder.setModelInterpolator(newModelInterpolator());
219 modelBuilder.setInheritanceAssembler(newInheritanceAssembler());
220 modelBuilder.setProfileInjector(newProfileInjector());
221 modelBuilder.setProfileSelector(newProfileSelector());
222 modelBuilder.setSuperPomProvider(newSuperPomProvider());
223 modelBuilder.setDependencyManagementImporter(newDependencyManagementImporter());
224 modelBuilder.setDependencyManagementInjector(newDependencyManagementInjector());
225 modelBuilder.setLifecycleBindingsInjector(newLifecycleBindingsInjector());
226 modelBuilder.setPluginManagementInjector(newPluginManagementInjector());
227 modelBuilder.setPluginConfigurationExpander(newPluginConfigurationExpander());
228 modelBuilder.setReportConfigurationExpander(newReportConfigurationExpander());
229 modelBuilder.setReportingConverter(newReportingConverter());
230 modelBuilder.setProfileActivationFilePathInterpolator(newProfileActivationFilePathInterpolator());
231
232 return modelBuilder;
233 }
234
235 private static class StubLifecycleBindingsInjector implements LifecycleBindingsInjector {
236
237 @Override
238 public void injectLifecycleBindings(
239 Model model, ModelBuildingRequest request, ModelProblemCollector problems) {}
240 }
241 }