diff options
Diffstat (limited to 'framework/src/maven/apache-maven-3.3.3/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilderFactory.java')
-rw-r--r-- | framework/src/maven/apache-maven-3.3.3/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilderFactory.java | 243 |
1 files changed, 243 insertions, 0 deletions
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilderFactory.java b/framework/src/maven/apache-maven-3.3.3/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilderFactory.java new file mode 100644 index 00000000..36a0f46a --- /dev/null +++ b/framework/src/maven/apache-maven-3.3.3/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilderFactory.java @@ -0,0 +1,243 @@ +package org.apache.maven.model.building; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.apache.maven.model.Model; +import org.apache.maven.model.composition.DefaultDependencyManagementImporter; +import org.apache.maven.model.composition.DependencyManagementImporter; +import org.apache.maven.model.inheritance.DefaultInheritanceAssembler; +import org.apache.maven.model.inheritance.InheritanceAssembler; +import org.apache.maven.model.interpolation.ModelInterpolator; +import org.apache.maven.model.interpolation.StringSearchModelInterpolator; +import org.apache.maven.model.io.DefaultModelReader; +import org.apache.maven.model.io.ModelReader; +import org.apache.maven.model.locator.DefaultModelLocator; +import org.apache.maven.model.locator.ModelLocator; +import org.apache.maven.model.management.DefaultDependencyManagementInjector; +import org.apache.maven.model.management.DefaultPluginManagementInjector; +import org.apache.maven.model.management.DependencyManagementInjector; +import org.apache.maven.model.management.PluginManagementInjector; +import org.apache.maven.model.normalization.DefaultModelNormalizer; +import org.apache.maven.model.normalization.ModelNormalizer; +import org.apache.maven.model.path.DefaultModelPathTranslator; +import org.apache.maven.model.path.DefaultModelUrlNormalizer; +import org.apache.maven.model.path.DefaultPathTranslator; +import org.apache.maven.model.path.DefaultUrlNormalizer; +import org.apache.maven.model.path.ModelPathTranslator; +import org.apache.maven.model.path.ModelUrlNormalizer; +import org.apache.maven.model.path.PathTranslator; +import org.apache.maven.model.path.UrlNormalizer; +import org.apache.maven.model.plugin.DefaultPluginConfigurationExpander; +import org.apache.maven.model.plugin.DefaultReportConfigurationExpander; +import org.apache.maven.model.plugin.DefaultReportingConverter; +import org.apache.maven.model.plugin.LifecycleBindingsInjector; +import org.apache.maven.model.plugin.PluginConfigurationExpander; +import org.apache.maven.model.plugin.ReportConfigurationExpander; +import org.apache.maven.model.plugin.ReportingConverter; +import org.apache.maven.model.profile.DefaultProfileInjector; +import org.apache.maven.model.profile.DefaultProfileSelector; +import org.apache.maven.model.profile.ProfileInjector; +import org.apache.maven.model.profile.ProfileSelector; +import org.apache.maven.model.profile.activation.FileProfileActivator; +import org.apache.maven.model.profile.activation.JdkVersionProfileActivator; +import org.apache.maven.model.profile.activation.OperatingSystemProfileActivator; +import org.apache.maven.model.profile.activation.ProfileActivator; +import org.apache.maven.model.profile.activation.PropertyProfileActivator; +import org.apache.maven.model.superpom.DefaultSuperPomProvider; +import org.apache.maven.model.superpom.SuperPomProvider; +import org.apache.maven.model.validation.DefaultModelValidator; +import org.apache.maven.model.validation.ModelValidator; + +/** + * A factory to create model builder instances when no dependency injection is available. <em>Note:</em> This class is + * only meant as a utility for developers that want to employ the model builder outside of the Maven build system, Maven + * plugins should always acquire model builder instances via dependency injection. Developers might want to subclass + * this factory to provide custom implementations for some of the components used by the model builder. + * + * @author Benjamin Bentmann + */ +public class DefaultModelBuilderFactory +{ + + protected ModelProcessor newModelProcessor() + { + DefaultModelProcessor processor = new DefaultModelProcessor(); + processor.setModelLocator( newModelLocator() ); + processor.setModelReader( newModelReader() ); + return processor; + } + + protected ModelLocator newModelLocator() + { + return new DefaultModelLocator(); + } + + protected ModelReader newModelReader() + { + return new DefaultModelReader(); + } + + protected ProfileSelector newProfileSelector() + { + DefaultProfileSelector profileSelector = new DefaultProfileSelector(); + + for ( ProfileActivator activator : newProfileActivators() ) + { + profileSelector.addProfileActivator( activator ); + } + + return profileSelector; + } + + protected ProfileActivator[] newProfileActivators() + { + return new ProfileActivator[] { new JdkVersionProfileActivator(), new OperatingSystemProfileActivator(), + new PropertyProfileActivator(), new FileProfileActivator().setPathTranslator( newPathTranslator() ) }; + } + + protected UrlNormalizer newUrlNormalizer() + { + return new DefaultUrlNormalizer(); + } + + protected PathTranslator newPathTranslator() + { + return new DefaultPathTranslator(); + } + + protected ModelInterpolator newModelInterpolator() + { + UrlNormalizer normalizer = newUrlNormalizer(); + PathTranslator pathTranslator = newPathTranslator(); + return new StringSearchModelInterpolator().setPathTranslator( pathTranslator ).setUrlNormalizer( normalizer ); + } + + protected ModelValidator newModelValidator() + { + return new DefaultModelValidator(); + } + + protected ModelNormalizer newModelNormalizer() + { + return new DefaultModelNormalizer(); + } + + protected ModelPathTranslator newModelPathTranslator() + { + return new DefaultModelPathTranslator().setPathTranslator( newPathTranslator() ); + } + + protected ModelUrlNormalizer newModelUrlNormalizer() + { + return new DefaultModelUrlNormalizer().setUrlNormalizer( newUrlNormalizer() ); + } + + protected InheritanceAssembler newInheritanceAssembler() + { + return new DefaultInheritanceAssembler(); + } + + protected ProfileInjector newProfileInjector() + { + return new DefaultProfileInjector(); + } + + protected SuperPomProvider newSuperPomProvider() + { + return new DefaultSuperPomProvider().setModelProcessor( newModelProcessor() ); + } + + protected DependencyManagementImporter newDependencyManagementImporter() + { + return new DefaultDependencyManagementImporter(); + } + + protected DependencyManagementInjector newDependencyManagementInjector() + { + return new DefaultDependencyManagementInjector(); + } + + protected LifecycleBindingsInjector newLifecycleBindingsInjector() + { + return new StubLifecycleBindingsInjector(); + } + + protected PluginManagementInjector newPluginManagementInjector() + { + return new DefaultPluginManagementInjector(); + } + + protected PluginConfigurationExpander newPluginConfigurationExpander() + { + return new DefaultPluginConfigurationExpander(); + } + + protected ReportConfigurationExpander newReportConfigurationExpander() + { + return new DefaultReportConfigurationExpander(); + } + + protected ReportingConverter newReportingConverter() + { + return new DefaultReportingConverter(); + } + + /** + * Creates a new model builder instance. + * + * @return The new model builder instance, never {@code null}. + */ + public DefaultModelBuilder newInstance() + { + DefaultModelBuilder modelBuilder = new DefaultModelBuilder(); + + modelBuilder.setModelProcessor( newModelProcessor() ); + modelBuilder.setModelValidator( newModelValidator() ); + modelBuilder.setModelNormalizer( newModelNormalizer() ); + modelBuilder.setModelPathTranslator( newModelPathTranslator() ); + modelBuilder.setModelUrlNormalizer( newModelUrlNormalizer() ); + modelBuilder.setModelInterpolator( newModelInterpolator() ); + modelBuilder.setInheritanceAssembler( newInheritanceAssembler() ); + modelBuilder.setProfileInjector( newProfileInjector() ); + modelBuilder.setProfileSelector( newProfileSelector() ); + modelBuilder.setSuperPomProvider( newSuperPomProvider() ); + modelBuilder.setDependencyManagementImporter( newDependencyManagementImporter() ); + modelBuilder.setDependencyManagementInjector( newDependencyManagementInjector() ); + modelBuilder.setLifecycleBindingsInjector( newLifecycleBindingsInjector() ); + modelBuilder.setPluginManagementInjector( newPluginManagementInjector() ); + modelBuilder.setPluginConfigurationExpander( newPluginConfigurationExpander() ); + modelBuilder.setReportConfigurationExpander( newReportConfigurationExpander() ); + modelBuilder.setReportingConverter( newReportingConverter() ); + + return modelBuilder; + } + + private static class StubLifecycleBindingsInjector + implements LifecycleBindingsInjector + { + + @Override + public void injectLifecycleBindings( Model model, ModelBuildingRequest request, ModelProblemCollector problems ) + { + } + + } + +} |