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


Reply via email to