dion        2003/08/13 22:53:09

  Modified:    src/test/java/org/apache/maven/plugin Tag: MAVEN_RC1_STABLE
                        PluginManagerTest.java
               src/java/org/apache/maven/plugin Tag: MAVEN_RC1_STABLE
                        PluginManager.java
  Added:       src/test/java/org/apache/maven/plugin Tag: MAVEN_RC1_STABLE
                        forehead.conf maven-java-plugin-1.3.jar
  Log:
  Add the ability for PluginManager to install plugins on the fly
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.2.2.3   +67 -11    
maven/src/test/java/org/apache/maven/plugin/Attic/PluginManagerTest.java
  
  Index: PluginManagerTest.java
  ===================================================================
  RCS file: 
/home/cvs/maven/src/test/java/org/apache/maven/plugin/Attic/PluginManagerTest.java,v
  retrieving revision 1.2.2.2
  retrieving revision 1.2.2.3
  diff -u -r1.2.2.2 -r1.2.2.3
  --- PluginManagerTest.java    13 Aug 2003 08:53:27 -0000      1.2.2.2
  +++ PluginManagerTest.java    14 Aug 2003 05:53:09 -0000      1.2.2.3
  @@ -54,6 +54,8 @@
    * <http://www.apache.org/>.
    */
   import java.io.File;
  +import java.io.FileInputStream;
  +import java.io.IOException;
   
   import org.apache.commons.io.FileUtils;
   import org.apache.maven.MavenConstants;
  @@ -62,6 +64,8 @@
   import org.apache.maven.jelly.MavenJellyContext;
   import org.apache.maven.project.Project;
   
  +import com.werken.forehead.Forehead;
  +
   import junit.framework.TestCase;
   
   /**
  @@ -72,17 +76,26 @@
   {
   
       /** instance being tested */
  -    private PluginManager pluginManager = null;
  +    private PluginManager pluginManager;
   
       /** project to test with */
  -    private Project project = null;
  +    private Project project;
       
       /** directory for fake data */
       private static String FAKE_BASE = "/target/PluginManagerTest/";
       
       /** source base */
  -    private static String SOURCE_BASE = "/src/test/java/org/apache/maven/plugin";
  +    private static String SOURCE_BASE = "/src/test/java/org/apache/maven/plugin/";
  +    
  +    /** base directory */
  +    private String basedir;
       
  +    /** plugin to install */    
  +    private File pluginToInstall;
  +
  +    /** fake maven.home */
  +    String fakeHome;
  +
       /**
        * Constructor for PluginManagerTest.
        * @param name
  @@ -95,8 +108,10 @@
       public void setUp() throws Exception
       {
           super.setUp();
  -        String basedir = System.getProperty("basedir");
  +        basedir = System.getProperty("basedir");
           assertNotNull(basedir);
  +        fakeHome = basedir + SOURCE_BASE + "maven.home";
  +        deleteFakeBase();
           MavenJellyContext context = MavenUtils.createContext( new File( 
System.getProperty("user.dir") ) );
           assertNotNull(context);
           // 1) need to fake out maven home, so that the unpacked plugin dir in the 
test
  @@ -123,20 +138,61 @@
           pluginManager = mavenSession.getPluginManager();
           // 2) need to fake out the maven.repo.remote so that it downloads from the 
test
           //    directory
  +        pluginToInstall = new File(basedir + SOURCE_BASE + 
"maven-java-plugin-1.3.jar");
  +        // fake forehead up
  +        Forehead.getInstance().config(new FileInputStream(basedir + SOURCE_BASE + 
"forehead.conf"));
       }
       
  +    /**
  +     * Delete the fake directory
  +     */
       public void tearDown() throws Exception
       {
  -        // clean up directories
  -        String basedir = System.getProperty("basedir");
  -        String fake = basedir + FAKE_BASE;
  -        // delete it
  -        FileUtils.deleteDirectory(fake); 
  +        // pluginManager's caching causes this to fail sometimes, so it's being
  +        // done at setUp and tearDown
  +        deleteFakeBase();
       }
  -    public void testXXX()
  +
  +    private void deleteFakeBase()
  +    {
  +        try
  +        {
  +            // clean up directories
  +            String fake = basedir + FAKE_BASE;
  +            // delete it
  +            FileUtils.deleteDirectory(fake);
  +            String installedPlugin = fakeHome + 
"/plugins/maven-java-plugin-1.3.jar";
  +            new File(installedPlugin).delete();
  +        }
  +        catch (IOException e)
  +        {
  +            // ignore 
  +        }
  +    }
  +    
  +    /**
  +     * Make sure the plugin manager has loaded the plugins from the directory 
specified
  +     */
  +    public void testLoading() throws Exception
       {
           assertNotNull(pluginManager);
  +        pluginManager.initialize();
  +        assertTrue("clean plugin is not loaded properly", 
pluginManager.getGoalNames().contains("clean"));
  +        assertTrue("clean plugin is not loaded properly", 
pluginManager.getGoalNames().contains("clean:clean"));
       }
   
  -
  +    /**
  +     * Make sure the plugin manager can install a plugin
  +     */
  +    public void testInstall() throws Exception
  +    {
  +        assertNotNull(pluginManager);
  +        pluginManager.initialize();
  +        File pluginToInstall = new File(basedir + SOURCE_BASE + 
"maven-java-plugin-1.3.jar");
  +        pluginManager.installPlugin(project, pluginToInstall);
  +        
  +        assertTrue("java plugin is not loaded properly", 
  +            pluginManager.getGoalNames().contains("java:compile"));
  +    }
  +    
   }
  
  
  
  No                   revision
  
  Index: PluginManagerTest.java
  ===================================================================
  RCS file: 
/home/cvs/maven/src/test/java/org/apache/maven/plugin/Attic/PluginManagerTest.java,v
  retrieving revision 1.2.2.2
  retrieving revision 1.2.2.3
  diff -u -r1.2.2.2 -r1.2.2.3
  --- PluginManagerTest.java    13 Aug 2003 08:53:27 -0000      1.2.2.2
  +++ PluginManagerTest.java    14 Aug 2003 05:53:09 -0000      1.2.2.3
  @@ -54,6 +54,8 @@
    * <http://www.apache.org/>.
    */
   import java.io.File;
  +import java.io.FileInputStream;
  +import java.io.IOException;
   
   import org.apache.commons.io.FileUtils;
   import org.apache.maven.MavenConstants;
  @@ -62,6 +64,8 @@
   import org.apache.maven.jelly.MavenJellyContext;
   import org.apache.maven.project.Project;
   
  +import com.werken.forehead.Forehead;
  +
   import junit.framework.TestCase;
   
   /**
  @@ -72,17 +76,26 @@
   {
   
       /** instance being tested */
  -    private PluginManager pluginManager = null;
  +    private PluginManager pluginManager;
   
       /** project to test with */
  -    private Project project = null;
  +    private Project project;
       
       /** directory for fake data */
       private static String FAKE_BASE = "/target/PluginManagerTest/";
       
       /** source base */
  -    private static String SOURCE_BASE = "/src/test/java/org/apache/maven/plugin";
  +    private static String SOURCE_BASE = "/src/test/java/org/apache/maven/plugin/";
  +    
  +    /** base directory */
  +    private String basedir;
       
  +    /** plugin to install */    
  +    private File pluginToInstall;
  +
  +    /** fake maven.home */
  +    String fakeHome;
  +
       /**
        * Constructor for PluginManagerTest.
        * @param name
  @@ -95,8 +108,10 @@
       public void setUp() throws Exception
       {
           super.setUp();
  -        String basedir = System.getProperty("basedir");
  +        basedir = System.getProperty("basedir");
           assertNotNull(basedir);
  +        fakeHome = basedir + SOURCE_BASE + "maven.home";
  +        deleteFakeBase();
           MavenJellyContext context = MavenUtils.createContext( new File( 
System.getProperty("user.dir") ) );
           assertNotNull(context);
           // 1) need to fake out maven home, so that the unpacked plugin dir in the 
test
  @@ -123,20 +138,61 @@
           pluginManager = mavenSession.getPluginManager();
           // 2) need to fake out the maven.repo.remote so that it downloads from the 
test
           //    directory
  +        pluginToInstall = new File(basedir + SOURCE_BASE + 
"maven-java-plugin-1.3.jar");
  +        // fake forehead up
  +        Forehead.getInstance().config(new FileInputStream(basedir + SOURCE_BASE + 
"forehead.conf"));
       }
       
  +    /**
  +     * Delete the fake directory
  +     */
       public void tearDown() throws Exception
       {
  -        // clean up directories
  -        String basedir = System.getProperty("basedir");
  -        String fake = basedir + FAKE_BASE;
  -        // delete it
  -        FileUtils.deleteDirectory(fake); 
  +        // pluginManager's caching causes this to fail sometimes, so it's being
  +        // done at setUp and tearDown
  +        deleteFakeBase();
       }
  -    public void testXXX()
  +
  +    private void deleteFakeBase()
  +    {
  +        try
  +        {
  +            // clean up directories
  +            String fake = basedir + FAKE_BASE;
  +            // delete it
  +            FileUtils.deleteDirectory(fake);
  +            String installedPlugin = fakeHome + 
"/plugins/maven-java-plugin-1.3.jar";
  +            new File(installedPlugin).delete();
  +        }
  +        catch (IOException e)
  +        {
  +            // ignore 
  +        }
  +    }
  +    
  +    /**
  +     * Make sure the plugin manager has loaded the plugins from the directory 
specified
  +     */
  +    public void testLoading() throws Exception
       {
           assertNotNull(pluginManager);
  +        pluginManager.initialize();
  +        assertTrue("clean plugin is not loaded properly", 
pluginManager.getGoalNames().contains("clean"));
  +        assertTrue("clean plugin is not loaded properly", 
pluginManager.getGoalNames().contains("clean:clean"));
       }
   
  -
  +    /**
  +     * Make sure the plugin manager can install a plugin
  +     */
  +    public void testInstall() throws Exception
  +    {
  +        assertNotNull(pluginManager);
  +        pluginManager.initialize();
  +        File pluginToInstall = new File(basedir + SOURCE_BASE + 
"maven-java-plugin-1.3.jar");
  +        pluginManager.installPlugin(project, pluginToInstall);
  +        
  +        assertTrue("java plugin is not loaded properly", 
  +            pluginManager.getGoalNames().contains("java:compile"));
  +    }
  +    
   }
  
  
  
  No                   revision
  
  Index: PluginManagerTest.java
  ===================================================================
  RCS file: 
/home/cvs/maven/src/test/java/org/apache/maven/plugin/Attic/PluginManagerTest.java,v
  retrieving revision 1.2.2.2
  retrieving revision 1.2.2.3
  diff -u -r1.2.2.2 -r1.2.2.3
  --- PluginManagerTest.java    13 Aug 2003 08:53:27 -0000      1.2.2.2
  +++ PluginManagerTest.java    14 Aug 2003 05:53:09 -0000      1.2.2.3
  @@ -54,6 +54,8 @@
    * <http://www.apache.org/>.
    */
   import java.io.File;
  +import java.io.FileInputStream;
  +import java.io.IOException;
   
   import org.apache.commons.io.FileUtils;
   import org.apache.maven.MavenConstants;
  @@ -62,6 +64,8 @@
   import org.apache.maven.jelly.MavenJellyContext;
   import org.apache.maven.project.Project;
   
  +import com.werken.forehead.Forehead;
  +
   import junit.framework.TestCase;
   
   /**
  @@ -72,17 +76,26 @@
   {
   
       /** instance being tested */
  -    private PluginManager pluginManager = null;
  +    private PluginManager pluginManager;
   
       /** project to test with */
  -    private Project project = null;
  +    private Project project;
       
       /** directory for fake data */
       private static String FAKE_BASE = "/target/PluginManagerTest/";
       
       /** source base */
  -    private static String SOURCE_BASE = "/src/test/java/org/apache/maven/plugin";
  +    private static String SOURCE_BASE = "/src/test/java/org/apache/maven/plugin/";
  +    
  +    /** base directory */
  +    private String basedir;
       
  +    /** plugin to install */    
  +    private File pluginToInstall;
  +
  +    /** fake maven.home */
  +    String fakeHome;
  +
       /**
        * Constructor for PluginManagerTest.
        * @param name
  @@ -95,8 +108,10 @@
       public void setUp() throws Exception
       {
           super.setUp();
  -        String basedir = System.getProperty("basedir");
  +        basedir = System.getProperty("basedir");
           assertNotNull(basedir);
  +        fakeHome = basedir + SOURCE_BASE + "maven.home";
  +        deleteFakeBase();
           MavenJellyContext context = MavenUtils.createContext( new File( 
System.getProperty("user.dir") ) );
           assertNotNull(context);
           // 1) need to fake out maven home, so that the unpacked plugin dir in the 
test
  @@ -123,20 +138,61 @@
           pluginManager = mavenSession.getPluginManager();
           // 2) need to fake out the maven.repo.remote so that it downloads from the 
test
           //    directory
  +        pluginToInstall = new File(basedir + SOURCE_BASE + 
"maven-java-plugin-1.3.jar");
  +        // fake forehead up
  +        Forehead.getInstance().config(new FileInputStream(basedir + SOURCE_BASE + 
"forehead.conf"));
       }
       
  +    /**
  +     * Delete the fake directory
  +     */
       public void tearDown() throws Exception
       {
  -        // clean up directories
  -        String basedir = System.getProperty("basedir");
  -        String fake = basedir + FAKE_BASE;
  -        // delete it
  -        FileUtils.deleteDirectory(fake); 
  +        // pluginManager's caching causes this to fail sometimes, so it's being
  +        // done at setUp and tearDown
  +        deleteFakeBase();
       }
  -    public void testXXX()
  +
  +    private void deleteFakeBase()
  +    {
  +        try
  +        {
  +            // clean up directories
  +            String fake = basedir + FAKE_BASE;
  +            // delete it
  +            FileUtils.deleteDirectory(fake);
  +            String installedPlugin = fakeHome + 
"/plugins/maven-java-plugin-1.3.jar";
  +            new File(installedPlugin).delete();
  +        }
  +        catch (IOException e)
  +        {
  +            // ignore 
  +        }
  +    }
  +    
  +    /**
  +     * Make sure the plugin manager has loaded the plugins from the directory 
specified
  +     */
  +    public void testLoading() throws Exception
       {
           assertNotNull(pluginManager);
  +        pluginManager.initialize();
  +        assertTrue("clean plugin is not loaded properly", 
pluginManager.getGoalNames().contains("clean"));
  +        assertTrue("clean plugin is not loaded properly", 
pluginManager.getGoalNames().contains("clean:clean"));
       }
   
  -
  +    /**
  +     * Make sure the plugin manager can install a plugin
  +     */
  +    public void testInstall() throws Exception
  +    {
  +        assertNotNull(pluginManager);
  +        pluginManager.initialize();
  +        File pluginToInstall = new File(basedir + SOURCE_BASE + 
"maven-java-plugin-1.3.jar");
  +        pluginManager.installPlugin(project, pluginToInstall);
  +        
  +        assertTrue("java plugin is not loaded properly", 
  +            pluginManager.getGoalNames().contains("java:compile"));
  +    }
  +    
   }
  
  
  
  1.1.2.1   +10 -0     maven/src/test/java/org/apache/maven/plugin/Attic/forehead.conf
  
  
  
  
  1.1.2.1   +21 -0     
maven/src/test/java/org/apache/maven/plugin/Attic/maven-java-plugin-1.3.jar
  
        <<Binary file>>
  
  
  No                   revision
  No                   revision
  1.45.2.4  +27 -3     maven/src/java/org/apache/maven/plugin/PluginManager.java
  
  Index: PluginManager.java
  ===================================================================
  RCS file: /home/cvs/maven/src/java/org/apache/maven/plugin/PluginManager.java,v
  retrieving revision 1.45.2.3
  retrieving revision 1.45.2.4
  diff -u -r1.45.2.3 -r1.45.2.4
  --- PluginManager.java        11 Aug 2003 06:16:11 -0000      1.45.2.3
  +++ PluginManager.java        14 Aug 2003 05:53:09 -0000      1.45.2.4
  @@ -668,7 +668,7 @@
        *
        *  @throws Exception If an error occurs while initializing the plugin.
        */
  -    void loadPlugin( String name, Project project )
  +    public void loadPlugin( String name, Project project )
           throws Exception
       {
           if ( isLoaded( project, name ) )
  @@ -779,7 +779,7 @@
        *
        *  @param name The plugin name.
        *
  -     *  @throws Exception If an error occurs while attempting toa analyze
  +     *  @throws Exception If an error occurs while attempting to analyze
        *          and cache plugin information.
        */
       void cachePlugin( String name )
  @@ -997,5 +997,29 @@
       File getUnpackedPluginsDir()
       {
           return unpackedPluginsDir;
  +    }
  +
  +    /**
  +     * Load and install a plugin
  +     * @param file
  +     */
  +    public void installPlugin(Project project, File file) throws Exception
  +    {
  +        // copy the file to the unpacked plugins dir
  +        FileUtils.copyFileToDirectory(file, getPluginsDir());
  +        String pluginName = file.getCanonicalFile().getName();
  +        pluginName = pluginName.substring(0, pluginName.indexOf(".jar"));
  +        String newFileName = getPluginsDir().getCanonicalPath() 
  +            + File.separator + file.getCanonicalFile().getName();
  +        // expand it
  +        Expand unzipper = new Expand();
  +        unzipper.setSrc( new File(newFileName));
  +        File unzipDir = new File( getUnpackedPluginsDir(), pluginName);
  +        unzipper.setDest( unzipDir );
  +        unzipper.execute();
  +        // load it
  +        loadPlugin(pluginName, project);
  +        cachePlugin(pluginName);
  +        // FIXME: Does it need caching too?
       }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to