Skip to content

Commit

Permalink
[master][MNG-7350] Introduce a factory for ModelCache (#629)
Browse files Browse the repository at this point in the history
* [MNG-7350] Introduce a factory for ModelCache
* [MNG-7350] Introduce a factory for ModelCache
Fix missing javadoc and binding
  • Loading branch information
gnodet committed Mar 9, 2022
1 parent 8e5676c commit b3d5c12
Show file tree
Hide file tree
Showing 6 changed files with 90 additions and 9 deletions.
Expand Up @@ -22,6 +22,7 @@
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;

Expand All @@ -39,10 +40,10 @@ public 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
Expand Down
Expand Up @@ -71,7 +71,7 @@
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;
Expand Down Expand Up @@ -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(
Expand All @@ -111,7 +112,8 @@ public DefaultProjectBuilder(
MavenRepositorySystem repositorySystem,
RepositorySystem repoSystem,
RemoteRepositoryManager repositoryManager,
ProjectDependenciesResolver dependencyResolver )
ProjectDependenciesResolver dependencyResolver,
ModelCacheFactory modelCacheFactory )
{
this.modelBuilder = modelBuilder;
this.modelProcessor = modelProcessor;
Expand All @@ -120,6 +122,7 @@ public DefaultProjectBuilder(
this.repoSystem = repoSystem;
this.repositoryManager = repositoryManager;
this.dependencyResolver = dependencyResolver;
this.modelCacheFactory = modelCacheFactory;
}
// ----------------------------------------------------------------------
// MavenProjectBuilder Implementation
Expand Down Expand Up @@ -286,7 +289,7 @@ private ModelBuildingRequest getModelBuildingRequest( InternalConfig config )
// 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 );

Expand Down
Expand Up @@ -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(
Expand All @@ -91,7 +92,8 @@ public DefaultArtifactDescriptorReader(
VersionRangeResolver versionRangeResolver,
ArtifactResolver artifactResolver,
ModelBuilder modelBuilder,
RepositoryEventDispatcher repositoryEventDispatcher )
RepositoryEventDispatcher repositoryEventDispatcher,
ModelCacheFactory modelCacheFactory )
{
this.remoteRepositoryManager = Objects.requireNonNull( remoteRepositoryManager,
"remoteRepositoryManager cannot be null" );
Expand All @@ -102,6 +104,8 @@ public DefaultArtifactDescriptorReader(
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,
Expand Down Expand Up @@ -218,7 +222,7 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques
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,
Expand Down
@@ -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 );
}

}
Expand Up @@ -53,11 +53,10 @@ protected void configure()
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
Expand Down
@@ -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 );

}

0 comments on commit b3d5c12

Please sign in to comment.