You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2020/10/26 18:59:23 UTC
[maven] 01/03: Extract interface,
only DefaultModelBuilder should be aware of implementation of
TransformerContextBuilder
This is an automated email from the ASF dual-hosted git repository.
rfscholte pushed a commit to branch MNG-6957
in repository https://gitbox.apache.org/repos/asf/maven.git
commit 63e67197e8d3d92a04714320b3099f2943d8ff1e
Author: rfscholte <rf...@apache.org>
AuthorDate: Sat Oct 24 12:34:52 2020 +0200
Extract interface, only DefaultModelBuilder should be aware of implementation of TransformerContextBuilder
---
.../maven/project/DefaultProjectBuilder.java | 4 +-
.../maven/model/building/DefaultModelBuilder.java | 32 +++++++--------
.../building/DefaultModelBuildingRequest.java | 1 -
.../model/building/FilterModelBuildingRequest.java | 1 -
.../apache/maven/model/building/ModelBuilder.java | 1 -
.../maven/model/building/ModelBuildingRequest.java | 1 -
.../model/building/TransformerContextBuilder.java | 46 ++++++++++++++++++++++
7 files changed, 63 insertions(+), 23 deletions(-)
diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
index 0613367..63c8b94 100644
--- a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
@@ -56,7 +56,7 @@ import org.apache.maven.model.Plugin;
import org.apache.maven.model.Profile;
import org.apache.maven.model.ReportPlugin;
import org.apache.maven.model.building.ArtifactModelSource;
-import org.apache.maven.model.building.DefaultModelBuilder.TransformerContextBuilder;
+import org.apache.maven.model.building.TransformerContextBuilder;
import org.apache.maven.model.building.DefaultModelBuildingRequest;
import org.apache.maven.model.building.DefaultModelProblem;
import org.apache.maven.model.building.FileModelSource;
@@ -383,7 +383,7 @@ public class DefaultProjectBuilder
InternalConfig config =
new InternalConfig( request, modelPool, useGlobalModelCache() ? getModelCache() : new ReactorModelCache(),
- modelBuilder.newTransformerContextBuilder().setUserProperties( request.getUserProperties() ) );
+ modelBuilder.newTransformerContextBuilder() );
Map<File, MavenProject> projectIndex = new HashMap<>( 256 );
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
index f5e7aec..6d4708f 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
@@ -72,7 +72,6 @@ import org.apache.maven.model.inheritance.InheritanceAssembler;
import org.apache.maven.model.interpolation.ModelInterpolator;
import org.apache.maven.model.io.ModelParseException;
import org.apache.maven.model.io.ModelReader;
-import org.apache.maven.model.locator.ModelLocator;
import org.apache.maven.model.management.DependencyManagementInjector;
import org.apache.maven.model.management.PluginManagementInjector;
import org.apache.maven.model.merge.ModelMerger;
@@ -120,9 +119,6 @@ public class DefaultModelBuilder
private ModelPathTranslator modelPathTranslator;
@Inject
- private ModelLocator modelLocator;
-
- @Inject
private ModelUrlNormalizer modelUrlNormalizer;
@Inject
@@ -264,9 +260,9 @@ public class DefaultModelBuilder
}
@Override
- public TransformerContextBuilder newTransformerContextBuilder()
+ public DefaultTransformerContextBuilder newTransformerContextBuilder()
{
- return new TransformerContextBuilder();
+ return new DefaultTransformerContextBuilder();
}
@Override
@@ -1809,27 +1805,29 @@ public class DefaultModelBuilder
* @author Robert Scholte
* @since 3.7.0
*/
- public class TransformerContextBuilder
+ private class DefaultTransformerContextBuilder implements TransformerContextBuilder
{
private final DefaultTransformerContext context = new DefaultTransformerContext();
- private Properties userProperties;
-
- public TransformerContextBuilder setUserProperties( Properties userProperties )
- {
- this.userProperties = userProperties;
- return this;
- }
-
- TransformerContext initialize( ModelBuildingRequest request, DefaultModelProblemCollector problems )
+ /**
+ * If an interface could be extracted, DefaultModelProblemCollector should be ModelProblemCollectorExt
+ *
+ * @param request
+ * @param problems
+ * @return
+ */
+ @Override
+ public TransformerContext initialize( ModelBuildingRequest request, ModelProblemCollector collector )
{
+ // We must assume the TransformerContext was created using this.newTransformerContextBuilder()
+ DefaultModelProblemCollector problems = (DefaultModelProblemCollector) collector;
return new TransformerContext()
{
@Override
public String getUserProperty( String key )
{
return context.userProperties.computeIfAbsent( key,
- k -> userProperties.getProperty( key ) );
+ k -> request.getUserProperties().getProperty( key ) );
}
@Override
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java
index c42b552..d4bf0aa 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java
@@ -27,7 +27,6 @@ import java.util.Properties;
import org.apache.maven.model.Model;
import org.apache.maven.model.Profile;
-import org.apache.maven.model.building.DefaultModelBuilder.TransformerContextBuilder;
import org.apache.maven.model.resolution.ModelResolver;
import org.apache.maven.model.resolution.WorkspaceModelResolver;
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java
index dfabf46..f1b8f64 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java
@@ -26,7 +26,6 @@ import java.util.Properties;
import org.apache.maven.model.Model;
import org.apache.maven.model.Profile;
-import org.apache.maven.model.building.DefaultModelBuilder.TransformerContextBuilder;
import org.apache.maven.model.resolution.ModelResolver;
import org.apache.maven.model.resolution.WorkspaceModelResolver;
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuilder.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuilder.java
index aa63df7..85455f6 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuilder.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuilder.java
@@ -22,7 +22,6 @@ package org.apache.maven.model.building;
import java.io.File;
import org.apache.maven.model.Model;
-import org.apache.maven.model.building.DefaultModelBuilder.TransformerContextBuilder;
/**
* Builds the effective model from a POM.
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java
index cf8501f..6cfda8a 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java
@@ -26,7 +26,6 @@ import java.util.Properties;
import org.apache.maven.model.Model;
import org.apache.maven.model.Profile;
-import org.apache.maven.model.building.DefaultModelBuilder.TransformerContextBuilder;
import org.apache.maven.model.resolution.ModelResolver;
import org.apache.maven.model.resolution.WorkspaceModelResolver;
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/TransformerContextBuilder.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/TransformerContextBuilder.java
new file mode 100644
index 0000000..932c581
--- /dev/null
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/TransformerContextBuilder.java
@@ -0,0 +1,46 @@
+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.
+ */
+
+/**
+ * The transformerContextBuilder is responsible for initializing the TransformerContext.
+ * In case rawModels are missing, it could do new buildingRequests on the ModelBuilder.
+ *
+ * @author Robert Scholte
+ * @since 3.7.0
+ */
+public interface TransformerContextBuilder
+{
+ /**
+ * This method is used to initialize the TransformerContext
+ *
+ * @param request the modelBuildingRequest
+ * @param problems the problemCollector
+ * @return the mutable transformerContext
+ */
+ TransformerContext initialize( ModelBuildingRequest request, ModelProblemCollector problems );
+
+ /**
+ * The immutable transformerContext, can be used after the buildplan is finished.
+ *
+ * @return the immutable transformerContext
+ */
+ TransformerContext build();
+}