You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2009/05/11 06:10:09 UTC

svn commit: r773457 - in /maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin: DefaultPluginClassLoaderCache.java PluginClassLoaderCache.java

Author: jvanzyl
Date: Mon May 11 04:10:09 2009
New Revision: 773457

URL: http://svn.apache.org/viewvc?rev=773457&view=rev
Log:
o simple plugin classloader cache, i cannot anticipate what client code will need. Igor already proved that it's impossible to generalize for the IDE environment and it's just easier to let IDE folks do what they like.

Added:
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginClassLoaderCache.java   (with props)
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginClassLoaderCache.java   (with props)

Added: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginClassLoaderCache.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginClassLoaderCache.java?rev=773457&view=auto
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginClassLoaderCache.java (added)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginClassLoaderCache.java Mon May 11 04:10:09 2009
@@ -0,0 +1,25 @@
+package org.apache.maven.plugin;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.codehaus.plexus.classworlds.realm.ClassRealm;
+import org.codehaus.plexus.component.annotations.Component;
+
+@Component(role=PluginClassLoaderCache.class)
+public class DefaultPluginClassLoaderCache
+    implements PluginClassLoaderCache
+{
+    private Map<String,ClassRealm> pluginClassLoaders = new HashMap<String,ClassRealm>();
+    
+    public void cachePluginClassLoader( String key, ClassRealm pluginClassLoader )
+    {
+        pluginClassLoaders.put(  key, pluginClassLoader );
+    }
+
+    public ClassRealm getPluginClassLoader( String key )
+    {
+        return pluginClassLoaders.get( key );
+    }
+
+}

Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginClassLoaderCache.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginClassLoaderCache.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginClassLoaderCache.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginClassLoaderCache.java?rev=773457&view=auto
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginClassLoaderCache.java (added)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginClassLoaderCache.java Mon May 11 04:10:09 2009
@@ -0,0 +1,19 @@
+package org.apache.maven.plugin;
+
+import org.codehaus.plexus.classworlds.realm.ClassRealm;
+
+/**
+ * For the most part plugins do not specify their own dependencies so the {@link ClassLoader} used to
+ * execute a {@link Mojo} remains the same across projects. But we do need to account for the case where
+ * plugin dependencies are specified. Maven has a default implementation and integrators can create their
+ * own implementations to deal with different environments like an IDE.
+ * 
+ * @author Jason van Zyl
+ *
+ */
+public interface PluginClassLoaderCache
+{
+    void cachePluginClassLoader( String key, ClassRealm pluginClassLoader );
+    
+    ClassRealm getPluginClassLoader( String key );
+}

Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginClassLoaderCache.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginClassLoaderCache.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision