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 );
+
+}