[MNG-7505] Remove ReportingConverter (#906)

This commit is contained in:
Guillaume Nodet 2022-12-11 18:57:15 +01:00 committed by GitHub
parent 55431cd267
commit adf89ef63f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 1 additions and 351 deletions

View File

@ -1371,7 +1371,7 @@ public class PomConstructionTest {
@Test
public void testPluginManagementDuplicate() throws Exception {
PomTestWrapper pom = this.buildPom("plugin-management-duplicate/sub");
assertEquals(8, ((List<?>) pom.getValue("build/pluginManagement/plugins")).size());
assertEquals(7, ((List<?>) pom.getValue("build/pluginManagement/plugins")).size());
}
@Test

View File

@ -77,7 +77,6 @@ import org.apache.maven.model.path.ProfileActivationFilePathInterpolator;
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.DefaultProfileActivationContext;
import org.apache.maven.model.profile.ProfileActivationContext;
import org.apache.maven.model.profile.ProfileInjector;
@ -118,7 +117,6 @@ public class DefaultModelBuilder implements ModelBuilder {
private final LifecycleBindingsInjector lifecycleBindingsInjector;
private final PluginConfigurationExpander pluginConfigurationExpander;
private final ReportConfigurationExpander reportConfigurationExpander;
private final ReportingConverter reportingConverter;
private final ProfileActivationFilePathInterpolator profileActivationFilePathInterpolator;
private final ModelVersionProcessor versionProcessor;
@ -141,7 +139,6 @@ public class DefaultModelBuilder implements ModelBuilder {
@Nullable LifecycleBindingsInjector lifecycleBindingsInjector,
PluginConfigurationExpander pluginConfigurationExpander,
ReportConfigurationExpander reportConfigurationExpander,
ReportingConverter reportingConverter,
ProfileActivationFilePathInterpolator profileActivationFilePathInterpolator,
ModelVersionProcessor versionProcessor) {
this.modelProcessor = modelProcessor;
@ -160,7 +157,6 @@ public class DefaultModelBuilder implements ModelBuilder {
this.lifecycleBindingsInjector = lifecycleBindingsInjector;
this.pluginConfigurationExpander = pluginConfigurationExpander;
this.reportConfigurationExpander = reportConfigurationExpander;
this.reportingConverter = reportingConverter;
this.profileActivationFilePathInterpolator = profileActivationFilePathInterpolator;
this.versionProcessor = versionProcessor;
}
@ -188,7 +184,6 @@ public class DefaultModelBuilder implements ModelBuilder {
lifecycleBindingsInjector,
pluginConfigurationExpander,
reportConfigurationExpander,
reportingConverter,
profileActivationFilePathInterpolator,
versionProcessor);
}
@ -216,7 +211,6 @@ public class DefaultModelBuilder implements ModelBuilder {
lifecycleBindingsInjector,
pluginConfigurationExpander,
reportConfigurationExpander,
reportingConverter,
profileActivationFilePathInterpolator,
versionProcessor);
}
@ -244,7 +238,6 @@ public class DefaultModelBuilder implements ModelBuilder {
lifecycleBindingsInjector,
pluginConfigurationExpander,
reportConfigurationExpander,
reportingConverter,
profileActivationFilePathInterpolator,
versionProcessor);
}
@ -272,7 +265,6 @@ public class DefaultModelBuilder implements ModelBuilder {
lifecycleBindingsInjector,
pluginConfigurationExpander,
reportConfigurationExpander,
reportingConverter,
profileActivationFilePathInterpolator,
versionProcessor);
}
@ -300,7 +292,6 @@ public class DefaultModelBuilder implements ModelBuilder {
lifecycleBindingsInjector,
pluginConfigurationExpander,
reportConfigurationExpander,
reportingConverter,
profileActivationFilePathInterpolator,
versionProcessor);
}
@ -328,7 +319,6 @@ public class DefaultModelBuilder implements ModelBuilder {
lifecycleBindingsInjector,
pluginConfigurationExpander,
reportConfigurationExpander,
reportingConverter,
profileActivationFilePathInterpolator,
versionProcessor);
}
@ -356,7 +346,6 @@ public class DefaultModelBuilder implements ModelBuilder {
lifecycleBindingsInjector,
pluginConfigurationExpander,
reportConfigurationExpander,
reportingConverter,
profileActivationFilePathInterpolator,
versionProcessor);
}
@ -384,7 +373,6 @@ public class DefaultModelBuilder implements ModelBuilder {
lifecycleBindingsInjector,
pluginConfigurationExpander,
reportConfigurationExpander,
reportingConverter,
profileActivationFilePathInterpolator,
versionProcessor);
}
@ -412,7 +400,6 @@ public class DefaultModelBuilder implements ModelBuilder {
lifecycleBindingsInjector,
pluginConfigurationExpander,
reportConfigurationExpander,
reportingConverter,
profileActivationFilePathInterpolator,
versionProcessor);
}
@ -440,7 +427,6 @@ public class DefaultModelBuilder implements ModelBuilder {
lifecycleBindingsInjector,
pluginConfigurationExpander,
reportConfigurationExpander,
reportingConverter,
profileActivationFilePathInterpolator,
versionProcessor);
}
@ -468,7 +454,6 @@ public class DefaultModelBuilder implements ModelBuilder {
lifecycleBindingsInjector,
pluginConfigurationExpander,
reportConfigurationExpander,
reportingConverter,
profileActivationFilePathInterpolator,
versionProcessor);
}
@ -497,7 +482,6 @@ public class DefaultModelBuilder implements ModelBuilder {
lifecycleBindingsInjector,
pluginConfigurationExpander,
reportConfigurationExpander,
reportingConverter,
profileActivationFilePathInterpolator,
versionProcessor);
}
@ -526,7 +510,6 @@ public class DefaultModelBuilder implements ModelBuilder {
lifecycleBindingsInjector,
pluginConfigurationExpander,
reportConfigurationExpander,
reportingConverter,
profileActivationFilePathInterpolator,
versionProcessor);
}
@ -554,7 +537,6 @@ public class DefaultModelBuilder implements ModelBuilder {
lifecycleBindingsInjector,
pluginConfigurationExpander,
reportConfigurationExpander,
reportingConverter,
profileActivationFilePathInterpolator,
versionProcessor);
}
@ -582,7 +564,6 @@ public class DefaultModelBuilder implements ModelBuilder {
lifecycleBindingsInjector,
pluginConfigurationExpander,
reportConfigurationExpander,
reportingConverter,
profileActivationFilePathInterpolator,
versionProcessor);
}
@ -610,35 +591,6 @@ public class DefaultModelBuilder implements ModelBuilder {
lifecycleBindingsInjector,
pluginConfigurationExpander,
reportConfigurationExpander,
reportingConverter,
profileActivationFilePathInterpolator,
versionProcessor);
}
/**
* @deprecated since Maven 4
* @see DefaultModelBuilderFactory#setReportingConverter(ReportingConverter)
*/
@Deprecated
public DefaultModelBuilder setReportingConverter(ReportingConverter reportingConverter) {
return new DefaultModelBuilder(
modelProcessor,
modelValidator,
modelNormalizer,
modelInterpolator,
modelPathTranslator,
modelUrlNormalizer,
superPomProvider,
inheritanceAssembler,
profileSelector,
profileInjector,
pluginManagementInjector,
dependencyManagementInjector,
dependencyManagementImporter,
lifecycleBindingsInjector,
pluginConfigurationExpander,
reportConfigurationExpander,
reportingConverter,
profileActivationFilePathInterpolator,
versionProcessor);
}
@ -667,7 +619,6 @@ public class DefaultModelBuilder implements ModelBuilder {
lifecycleBindingsInjector,
pluginConfigurationExpander,
reportConfigurationExpander,
reportingConverter,
profileActivationFilePathInterpolator,
versionProcessor);
}
@ -963,9 +914,6 @@ public class DefaultModelBuilder implements ModelBuilder {
// reports configuration
reportConfigurationExpander.expandPluginConfiguration(resultModel, request, problems);
// reports conversion to decoupled site plugin
reportingConverter.convertReporting(resultModel, request, problems);
// plugins configuration
pluginConfigurationExpander.expandPluginConfiguration(resultModel, request, problems);
}

View File

@ -49,11 +49,9 @@ import org.apache.maven.model.path.ProfileActivationFilePathInterpolator;
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;
@ -96,7 +94,6 @@ public class DefaultModelBuilderFactory {
private LifecycleBindingsInjector lifecycleBindingsInjector;
private PluginConfigurationExpander pluginConfigurationExpander;
private ReportConfigurationExpander reportConfigurationExpander;
private ReportingConverter reportingConverter;
private ProfileActivationFilePathInterpolator profileActivationFilePathInterpolator;
private ModelVersionProcessor versionProcessor;
@ -185,11 +182,6 @@ public class DefaultModelBuilderFactory {
return this;
}
public DefaultModelBuilderFactory setReportingConverter(ReportingConverter reportingConverter) {
this.reportingConverter = reportingConverter;
return this;
}
public DefaultModelBuilderFactory setProfileActivationFilePathInterpolator(
ProfileActivationFilePathInterpolator profileActivationFilePathInterpolator) {
this.profileActivationFilePathInterpolator = profileActivationFilePathInterpolator;
@ -301,10 +293,6 @@ public class DefaultModelBuilderFactory {
return new DefaultReportConfigurationExpander();
}
protected ReportingConverter newReportingConverter() {
return new DefaultReportingConverter();
}
private ModelSourceTransformer newModelSourceTransformer() {
return new DefaultModelSourceTransformer();
}
@ -332,7 +320,6 @@ public class DefaultModelBuilderFactory {
lifecycleBindingsInjector != null ? lifecycleBindingsInjector : newLifecycleBindingsInjector(),
pluginConfigurationExpander != null ? pluginConfigurationExpander : newPluginConfigurationExpander(),
reportConfigurationExpander != null ? reportConfigurationExpander : newReportConfigurationExpander(),
reportingConverter != null ? reportingConverter : newReportingConverter(),
profileActivationFilePathInterpolator != null
? profileActivationFilePathInterpolator
: newProfileActivationFilePathInterpolator(),

View File

@ -1,244 +0,0 @@
/*
* 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.
*/
package org.apache.maven.model.plugin;
import javax.inject.Named;
import javax.inject.Singleton;
import org.apache.maven.model.Build;
import org.apache.maven.model.InputLocation;
import org.apache.maven.model.InputSource;
import org.apache.maven.model.Model;
import org.apache.maven.model.Plugin;
import org.apache.maven.model.PluginManagement;
import org.apache.maven.model.ReportPlugin;
import org.apache.maven.model.ReportSet;
import org.apache.maven.model.Reporting;
import org.apache.maven.model.building.ModelBuildingRequest;
import org.apache.maven.model.building.ModelProblem.Severity;
import org.apache.maven.model.building.ModelProblem.Version;
import org.apache.maven.model.building.ModelProblemCollector;
import org.apache.maven.model.building.ModelProblemCollectorRequest;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.Xpp3Dom;
/**
* Handles conversion of the <code>&lt;reporting&gt;</code> section into the configuration of Maven Site Plugin 3.x,
* i.e. <code>reportPlugins</code> and <code>outputDirectory</code> parameters.
*
* @author Benjamin Bentmann
*/
@Named
@Singleton
public class DefaultReportingConverter implements ReportingConverter {
private final InputLocation location;
{
String modelId = "org.apache.maven:maven-model-builder:"
+ this.getClass().getPackage().getImplementationVersion() + ":reporting-converter";
InputSource inputSource = new InputSource();
inputSource.setModelId(modelId);
location = new InputLocation(-1, -1, inputSource);
location.setLocation(0, location);
}
@Override
public void convertReporting(Model model, ModelBuildingRequest request, ModelProblemCollector problems) {
Reporting reporting = model.getReporting();
if (reporting == null) {
return;
}
Build build = model.getBuild();
if (build == null) {
build = new Build();
model.setBuild(build);
model.setLocation("build", location);
}
Plugin sitePlugin = findSitePlugin(build);
if (sitePlugin == null) {
sitePlugin = new Plugin();
sitePlugin.setArtifactId("maven-site-plugin");
sitePlugin.setLocation("artifactId", location);
PluginManagement pluginManagement = build.getPluginManagement();
if (pluginManagement == null) {
pluginManagement = new PluginManagement();
build.setPluginManagement(pluginManagement);
}
pluginManagement.addPlugin(sitePlugin);
}
Xpp3Dom configuration = (Xpp3Dom) sitePlugin.getConfiguration();
if (configuration == null) {
configuration = new Xpp3Dom("configuration", location);
sitePlugin.setConfiguration(configuration);
}
Xpp3Dom reportPlugins = configuration.getChild("reportPlugins");
if (reportPlugins != null) {
// new-style report configuration already present: warn since this new style has been deprecated
// in favor of classical reporting section MSITE-647 / MSITE-684
problems.add(new ModelProblemCollectorRequest(Severity.WARNING, Version.BASE)
.setMessage("Reporting configuration should be done in <reporting> section, "
+ "not in maven-site-plugin <configuration> as reportPlugins parameter.")
.setLocation(sitePlugin.getLocation("configuration")));
return;
}
if (configuration.getChild("outputDirectory") == null) {
addDom(
configuration,
"outputDirectory",
reporting.getOutputDirectory(),
reporting.getLocation("outputDirectory"));
}
reportPlugins = new Xpp3Dom("reportPlugins", location);
configuration.addChild(reportPlugins);
boolean hasMavenProjectInfoReportsPlugin = false;
/* waiting for MSITE-484 before deprecating <reporting> section
if ( !reporting.getPlugins().isEmpty()
&& request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1 )
{
problems.add( new ModelProblemCollectorRequest( Severity.WARNING, Version.V31 )
.setMessage( "The <reporting> section is deprecated, please move the reports to the <configuration>"
+ " section of the new Maven Site Plugin." )
.setLocation( reporting.getLocation( "" ) ) );
}*/
for (ReportPlugin plugin : reporting.getPlugins()) {
Xpp3Dom reportPlugin = convert(plugin);
reportPlugins.addChild(reportPlugin);
if (!reporting.isExcludeDefaults()
&& !hasMavenProjectInfoReportsPlugin
&& "org.apache.maven.plugins".equals(plugin.getGroupId())
&& "maven-project-info-reports-plugin".equals(plugin.getArtifactId())) {
hasMavenProjectInfoReportsPlugin = true;
}
}
if (!reporting.isExcludeDefaults() && !hasMavenProjectInfoReportsPlugin) {
Xpp3Dom dom = new Xpp3Dom("reportPlugin", location);
addDom(dom, "groupId", "org.apache.maven.plugins");
addDom(dom, "artifactId", "maven-project-info-reports-plugin");
reportPlugins.addChild(dom);
}
}
private Plugin findSitePlugin(Build build) {
for (Plugin plugin : build.getPlugins()) {
if (isSitePlugin(plugin)) {
return plugin;
}
}
PluginManagement pluginManagement = build.getPluginManagement();
if (pluginManagement != null) {
for (Plugin plugin : pluginManagement.getPlugins()) {
if (isSitePlugin(plugin)) {
return plugin;
}
}
}
return null;
}
private boolean isSitePlugin(Plugin plugin) {
return "maven-site-plugin".equals(plugin.getArtifactId())
&& "org.apache.maven.plugins".equals(plugin.getGroupId());
}
private Xpp3Dom convert(ReportPlugin plugin) {
Xpp3Dom dom = new Xpp3Dom("reportPlugin", plugin.getLocation(""));
addDom(dom, "groupId", plugin.getGroupId(), plugin.getLocation("groupId"));
addDom(dom, "artifactId", plugin.getArtifactId(), plugin.getLocation("artifactId"));
addDom(dom, "version", plugin.getVersion(), plugin.getLocation("version"));
Xpp3Dom configuration = (Xpp3Dom) plugin.getConfiguration();
if (configuration != null) {
configuration = new Xpp3Dom(configuration);
dom.addChild(configuration);
}
if (!plugin.getReportSets().isEmpty()) {
Xpp3Dom reportSets = new Xpp3Dom("reportSets", plugin.getLocation("reportSets"));
for (ReportSet reportSet : plugin.getReportSets()) {
Xpp3Dom rs = convert(reportSet);
reportSets.addChild(rs);
}
dom.addChild(reportSets);
}
return dom;
}
private Xpp3Dom convert(ReportSet reportSet) {
Xpp3Dom dom = new Xpp3Dom("reportSet", reportSet.getLocation(""));
InputLocation idLocation = reportSet.getLocation("id");
addDom(dom, "id", reportSet.getId(), idLocation == null ? location : idLocation);
Xpp3Dom configuration = (Xpp3Dom) reportSet.getConfiguration();
if (configuration != null) {
configuration = new Xpp3Dom(configuration);
dom.addChild(configuration);
}
if (!reportSet.getReports().isEmpty()) {
InputLocation location = reportSet.getLocation("reports");
Xpp3Dom reports = new Xpp3Dom("reports", location);
int n = 0;
for (String report : reportSet.getReports()) {
addDom(reports, "report", report, (location == null) ? null : location.getLocation(n++));
}
dom.addChild(reports);
}
return dom;
}
private void addDom(Xpp3Dom parent, String childName, String childValue) {
addDom(parent, childName, childValue, location);
}
private void addDom(Xpp3Dom parent, String childName, String childValue, InputLocation location) {
if (StringUtils.isNotEmpty(childValue)) {
parent.addChild(newDom(childName, childValue, location));
}
}
private Xpp3Dom newDom(String name, String value, InputLocation location) {
Xpp3Dom dom = new Xpp3Dom(name, location);
dom.setValue(value);
return dom;
}
}

View File

@ -1,41 +0,0 @@
/*
* 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.
*/
package org.apache.maven.model.plugin;
import org.apache.maven.model.Model;
import org.apache.maven.model.building.ModelBuildingRequest;
import org.apache.maven.model.building.ModelProblemCollector;
/**
* Handles conversion of the <code>&lt;reporting&gt;</code> section into the configuration of Maven Site Plugin 3.x,
* i.e. <code>reportPlugins</code> and <code>outputDirectory</code> parameters.
*
* @author Benjamin Bentmann
*/
public interface ReportingConverter {
/**
* Converts values from model's reporting section into the configuration for Maven Site Plugin 3.x.
*
* @param model The model whose reporting section should be converted, must not be <code>null</code>.
* @param request The model building request that holds further settings, must not be {@code null}.
* @param problems The container used to collect problems that were encountered, must not be {@code null}.
*/
void convertReporting(Model model, ModelBuildingRequest request, ModelProblemCollector problems);
}