You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by if...@apache.org on 2015/03/25 20:46:48 UTC
maven git commit: MNG-5793 do not register same realm both with
plugin and extensions realm caches
Repository: maven
Updated Branches:
refs/heads/master 4f553420c -> 9f50eabea
MNG-5793 do not register same realm both with plugin and extensions realm caches
Signed-off-by: Igor Fedorenko <if...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/9f50eabe
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/9f50eabe
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/9f50eabe
Branch: refs/heads/master
Commit: 9f50eabea54343fca522f42a2a41ffdb086e3240
Parents: 4f55342
Author: Igor Fedorenko <if...@apache.org>
Authored: Wed Mar 25 15:39:27 2015 -0400
Committer: Igor Fedorenko <if...@apache.org>
Committed: Wed Mar 25 15:43:47 2015 -0400
----------------------------------------------------------------------
.../internal/DefaultMavenPluginManager.java | 113 ++++++++++---------
1 file changed, 58 insertions(+), 55 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven/blob/9f50eabe/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
index d300c45..d32e04c 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
@@ -333,35 +333,63 @@ public class DefaultMavenPluginManager
throws PluginResolutionException, PluginContainerException
{
Plugin plugin = pluginDescriptor.getPlugin();
-
MavenProject project = session.getCurrentProject();
- Map<String, ClassLoader> foreignImports = calcImports( project, parent, imports );
-
- PluginRealmCache.Key cacheKey =
- pluginRealmCache.createKey( plugin, parent, foreignImports, filter, project.getRemotePluginRepositories(),
- session.getRepositorySession() );
+ if ( plugin.isExtensions() )
+ {
+ ExtensionRealmCache.CacheRecord extensionRecord;
+ try
+ {
+ RepositorySystemSession repositorySession = session.getRepositorySession();
+ extensionRecord = setupExtensionsRealm( project, plugin, repositorySession );
+ }
+ catch ( PluginManagerException e )
+ {
+ // extensions realm is expected to be fully setup at this point
+ // any exception means a problem in maven code, not a user error
+ throw new IllegalStateException( e );
+ }
- PluginRealmCache.CacheRecord cacheRecord = pluginRealmCache.get( cacheKey );
+ ClassRealm pluginRealm = extensionRecord.realm;
+ List<Artifact> pluginArtifacts = extensionRecord.artifacts;
- if ( cacheRecord != null )
- {
- pluginDescriptor.setClassRealm( cacheRecord.realm );
- pluginDescriptor.setArtifacts( new ArrayList<Artifact>( cacheRecord.artifacts ) );
for ( ComponentDescriptor<?> componentDescriptor : pluginDescriptor.getComponents() )
{
- componentDescriptor.setRealm( cacheRecord.realm );
+ componentDescriptor.setRealm( pluginRealm );
}
+
+ pluginDescriptor.setClassRealm( pluginRealm );
+ pluginDescriptor.setArtifacts( pluginArtifacts );
}
else
{
- createPluginRealm( pluginDescriptor, session, parent, foreignImports, filter );
+ Map<String, ClassLoader> foreignImports = calcImports( project, parent, imports );
- cacheRecord =
- pluginRealmCache.put( cacheKey, pluginDescriptor.getClassRealm(), pluginDescriptor.getArtifacts() );
- }
+ PluginRealmCache.Key cacheKey =
+ pluginRealmCache.createKey( plugin, parent, foreignImports, filter,
+ project.getRemotePluginRepositories(), session.getRepositorySession() );
+
+ PluginRealmCache.CacheRecord cacheRecord = pluginRealmCache.get( cacheKey );
+
+ if ( cacheRecord != null )
+ {
+ pluginDescriptor.setClassRealm( cacheRecord.realm );
+ pluginDescriptor.setArtifacts( new ArrayList<Artifact>( cacheRecord.artifacts ) );
+ for ( ComponentDescriptor<?> componentDescriptor : pluginDescriptor.getComponents() )
+ {
+ componentDescriptor.setRealm( cacheRecord.realm );
+ }
+ }
+ else
+ {
+ createPluginRealm( pluginDescriptor, session, parent, foreignImports, filter );
- pluginRealmCache.register( project, cacheKey, cacheRecord );
+ cacheRecord =
+ pluginRealmCache.put( cacheKey, pluginDescriptor.getClassRealm(), pluginDescriptor.getArtifacts() );
+ }
+
+ pluginRealmCache.register( project, cacheKey, cacheRecord );
+ }
}
private void createPluginRealm( PluginDescriptor pluginDescriptor, MavenSession session, ClassLoader parent,
@@ -388,49 +416,24 @@ public class DefaultMavenPluginManager
final List<Artifact> pluginArtifacts;
RepositorySystemSession repositorySession = session.getRepositorySession();
- if ( plugin.isExtensions() )
- {
- ExtensionRealmCache.CacheRecord extensionRecord;
- try
- {
- extensionRecord = setupExtensionsRealm( project, plugin, repositorySession );
- }
- catch ( PluginManagerException e )
- {
- // extensions realm is expected to be fully setup at this point
- // any exception means a problem in maven code, not a user error
- throw new IllegalStateException( e );
- }
-
- pluginRealm = extensionRecord.realm;
- pluginArtifacts = extensionRecord.artifacts;
-
- for ( ComponentDescriptor<?> componentDescriptor : pluginDescriptor.getComponents() )
- {
- componentDescriptor.setRealm( pluginRealm );
- }
- }
- else
- {
- DependencyFilter dependencyFilter = project.getExtensionDependencyFilter();
- dependencyFilter = AndDependencyFilter.newInstance( dependencyFilter, filter );
+ DependencyFilter dependencyFilter = project.getExtensionDependencyFilter();
+ dependencyFilter = AndDependencyFilter.newInstance( dependencyFilter, filter );
- DependencyNode root =
- pluginDependenciesResolver.resolve( plugin, RepositoryUtils.toArtifact( pluginArtifact ),
- dependencyFilter, project.getRemotePluginRepositories(),
- repositorySession );
+ DependencyNode root =
+ pluginDependenciesResolver.resolve( plugin, RepositoryUtils.toArtifact( pluginArtifact ),
+ dependencyFilter, project.getRemotePluginRepositories(),
+ repositorySession );
- PreorderNodeListGenerator nlg = new PreorderNodeListGenerator();
- root.accept( nlg );
+ PreorderNodeListGenerator nlg = new PreorderNodeListGenerator();
+ root.accept( nlg );
- pluginArtifacts = toMavenArtifacts( root, nlg );
+ pluginArtifacts = toMavenArtifacts( root, nlg );
- pluginRealm =
- classRealmManager.createPluginRealm( plugin, parent, null, foreignImports,
- toAetherArtifacts( pluginArtifacts ) );
+ pluginRealm =
+ classRealmManager.createPluginRealm( plugin, parent, null, foreignImports,
+ toAetherArtifacts( pluginArtifacts ) );
- discoverPluginComponents( pluginRealm, plugin, pluginDescriptor );
- }
+ discoverPluginComponents( pluginRealm, plugin, pluginDescriptor );
pluginDescriptor.setClassRealm( pluginRealm );
pluginDescriptor.setArtifacts( pluginArtifacts );