You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by gn...@apache.org on 2022/03/09 12:30:00 UTC

[maven] branch master updated: [master][MNG-7350] Introduce a factory for ModelCache (#629)

This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/master by this push:
     new b3d5c12  [master][MNG-7350] Introduce a factory for ModelCache (#629)
b3d5c12 is described below

commit b3d5c12c7ac4301aef5a1b768e8b65c7cb54b0bb
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Mar 9 13:29:51 2022 +0100

    [master][MNG-7350] Introduce a factory for ModelCache (#629)
    
    * [MNG-7350] Introduce a factory for ModelCache
    * [MNG-7350] Introduce a factory for ModelCache
    Fix missing javadoc and binding
---
 .../apache/maven/project/TestProjectBuilder.java   |  5 +--
 .../maven/project/DefaultProjectBuilder.java       |  9 +++--
 .../internal/DefaultArtifactDescriptorReader.java  |  8 +++--
 .../internal/DefaultModelCacheFactory.java         | 41 ++++++++++++++++++++++
 .../repository/internal/MavenResolverModule.java   |  3 +-
 .../repository/internal/ModelCacheFactory.java     | 33 +++++++++++++++++
 6 files changed, 90 insertions(+), 9 deletions(-)

diff --git a/maven-compat/src/test/java/org/apache/maven/project/TestProjectBuilder.java b/maven-compat/src/test/java/org/apache/maven/project/TestProjectBuilder.java
index d56d9de..a92cd57 100644
--- a/maven-compat/src/test/java/org/apache/maven/project/TestProjectBuilder.java
+++ b/maven-compat/src/test/java/org/apache/maven/project/TestProjectBuilder.java
@@ -22,6 +22,7 @@ import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.bridge.MavenRepositorySystem;
 import org.apache.maven.model.building.ModelBuilder;
 import org.apache.maven.model.building.ModelProcessor;
+import org.apache.maven.repository.internal.ModelCacheFactory;
 import org.eclipse.aether.RepositorySystem;
 import org.eclipse.aether.impl.RemoteRepositoryManager;
 
@@ -39,10 +40,10 @@ public class TestProjectBuilder
             ModelBuilder modelBuilder, ModelProcessor modelProcessor,
             ProjectBuildingHelper projectBuildingHelper, MavenRepositorySystem repositorySystem,
             RepositorySystem repoSystem, RemoteRepositoryManager repositoryManager,
-            ProjectDependenciesResolver dependencyResolver )
+            ProjectDependenciesResolver dependencyResolver, ModelCacheFactory modelCacheFactory )
     {
         super( modelBuilder, modelProcessor, projectBuildingHelper, repositorySystem, repoSystem,
-                repositoryManager, dependencyResolver );
+                repositoryManager, dependencyResolver, modelCacheFactory );
     }
 
     @Override
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 629b53a..f364d4c 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
@@ -71,7 +71,7 @@ import org.apache.maven.model.building.StringModelSource;
 import org.apache.maven.model.building.TransformerContext;
 import org.apache.maven.model.resolution.ModelResolver;
 import org.apache.maven.repository.internal.ArtifactDescriptorUtils;
-import org.apache.maven.repository.internal.DefaultModelCache;
+import org.apache.maven.repository.internal.ModelCacheFactory;
 import org.codehaus.plexus.util.Os;
 import org.codehaus.plexus.util.StringUtils;
 import org.eclipse.aether.RepositorySystem;
@@ -102,6 +102,7 @@ public class DefaultProjectBuilder
     private final org.eclipse.aether.RepositorySystem repoSystem;
     private final RemoteRepositoryManager repositoryManager;
     private final ProjectDependenciesResolver dependencyResolver;
+    private final ModelCacheFactory modelCacheFactory;
 
     @Inject
     public DefaultProjectBuilder(
@@ -111,7 +112,8 @@ public class DefaultProjectBuilder
             MavenRepositorySystem repositorySystem,
             RepositorySystem repoSystem,
             RemoteRepositoryManager repositoryManager,
-            ProjectDependenciesResolver dependencyResolver )
+            ProjectDependenciesResolver dependencyResolver,
+            ModelCacheFactory modelCacheFactory )
     {
         this.modelBuilder = modelBuilder;
         this.modelProcessor = modelProcessor;
@@ -120,6 +122,7 @@ public class DefaultProjectBuilder
         this.repoSystem = repoSystem;
         this.repositoryManager = repositoryManager;
         this.dependencyResolver = dependencyResolver;
+        this.modelCacheFactory = modelCacheFactory;
     }
 // ----------------------------------------------------------------------
     // MavenProjectBuilder Implementation
@@ -286,7 +289,7 @@ public class DefaultProjectBuilder
         // this is a hint that we want to build 1 file, so don't cache. See MNG-7063
         if ( config.modelPool != null )
         {
-            request.setModelCache( DefaultModelCache.newInstance( config.session ) );
+            request.setModelCache( modelCacheFactory.createCache( config.session ) );
         }
         request.setTransformerContextBuilder( config.transformerContextBuilder );
 
diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java
index 3c9e6fa..3811365 100644
--- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java
+++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java
@@ -83,6 +83,7 @@ public class DefaultArtifactDescriptorReader implements ArtifactDescriptorReader
     private final ArtifactResolver artifactResolver;
     private final RepositoryEventDispatcher repositoryEventDispatcher;
     private final ModelBuilder modelBuilder;
+    private final ModelCacheFactory modelCacheFactory;
 
     @Inject
     public DefaultArtifactDescriptorReader(
@@ -91,7 +92,8 @@ public class DefaultArtifactDescriptorReader implements ArtifactDescriptorReader
             VersionRangeResolver versionRangeResolver,
             ArtifactResolver artifactResolver,
             ModelBuilder modelBuilder,
-            RepositoryEventDispatcher repositoryEventDispatcher )
+            RepositoryEventDispatcher repositoryEventDispatcher,
+            ModelCacheFactory modelCacheFactory )
     {
         this.remoteRepositoryManager = Objects.requireNonNull( remoteRepositoryManager,
                 "remoteRepositoryManager cannot be null" );
@@ -102,6 +104,8 @@ public class DefaultArtifactDescriptorReader implements ArtifactDescriptorReader
         this.modelBuilder = Objects.requireNonNull( modelBuilder, "modelBuilder cannot be null" );
         this.repositoryEventDispatcher = Objects.requireNonNull( repositoryEventDispatcher,
                 "repositoryEventDispatcher cannot be null" );
+        this.modelCacheFactory = Objects.requireNonNull( modelCacheFactory,
+                "modelCacheFactory cannot be null" );
     }
 
     public ArtifactDescriptorResult readArtifactDescriptor( RepositorySystemSession session,
@@ -218,7 +222,7 @@ public class DefaultArtifactDescriptorReader implements ArtifactDescriptorReader
                 modelRequest.setTwoPhaseBuilding( false );
                 modelRequest.setSystemProperties( toProperties( session.getSystemProperties() ) );
                 modelRequest.setUserProperties( toProperties( session.getUserProperties() ) );
-                modelRequest.setModelCache( DefaultModelCache.newInstance( session ) );
+                modelRequest.setModelCache( modelCacheFactory.createCache( session ) );
                 modelRequest.setModelResolver( new DefaultModelResolver( session, trace.newChild( modelRequest ),
                                                                          request.getRequestContext(), artifactResolver,
                                                                          versionRangeResolver, remoteRepositoryManager,
diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCacheFactory.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCacheFactory.java
new file mode 100644
index 0000000..785a4e0
--- /dev/null
+++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCacheFactory.java
@@ -0,0 +1,41 @@
+package org.apache.maven.repository.internal;
+
+/*
+ * 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 javax.inject.Named;
+import javax.inject.Singleton;
+
+import org.apache.maven.model.building.ModelCache;
+import org.eclipse.aether.RepositorySystemSession;
+
+/**
+ * Default implementation of {@link ModelCacheFactory}.
+ */
+@Singleton
+@Named
+public class DefaultModelCacheFactory implements ModelCacheFactory
+{
+    @Override
+    public ModelCache createCache( RepositorySystemSession session )
+    {
+        return DefaultModelCache.newInstance( session );
+    }
+
+}
diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenResolverModule.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenResolverModule.java
index 9491b12..60dbf16 100644
--- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenResolverModule.java
+++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenResolverModule.java
@@ -53,11 +53,10 @@ public final class MavenResolverModule
         bind( VersionRangeResolver.class ).to( DefaultVersionRangeResolver.class ).in( Singleton.class );
         bind( MetadataGeneratorFactory.class ).annotatedWith( Names.named( "snapshot" ) )
             .to( SnapshotMetadataGeneratorFactory.class ).in( Singleton.class );
-
         bind( MetadataGeneratorFactory.class ).annotatedWith( Names.named( "versions" ) )
             .to( VersionsMetadataGeneratorFactory.class ).in( Singleton.class );
-
         bind( ModelBuilder.class ).toInstance( new DefaultModelBuilderFactory().newInstance() );
+        bind( ModelCacheFactory.class ).to( DefaultModelCacheFactory.class ).in( Singleton.class );
     }
 
     @Provides
diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/ModelCacheFactory.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/ModelCacheFactory.java
new file mode 100644
index 0000000..0e42990
--- /dev/null
+++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/ModelCacheFactory.java
@@ -0,0 +1,33 @@
+package org.apache.maven.repository.internal;
+
+/*
+ * 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.building.ModelCache;
+import org.eclipse.aether.RepositorySystemSession;
+
+/**
+ * Factory for {@link ModelCache} objects.
+ */
+public interface ModelCacheFactory
+{
+
+    ModelCache createCache( RepositorySystemSession session );
+
+}