I thought I'd run this by you guys first, this patch tries to minimize
the use of "project.xml" as an argument to the many Ant tasks in the
Maven build files.  

Specifically, any Maven task that uses/extends BaseProjectTask or
ProjectExecutor require the following attribute to be present:
    
    projectDescriptor="project.xml"

This makes the assumption that the POM is coming from a file located in
the filesystem.  What if it comes from a database?  This patch creates
adds MavenUtils.getProject() which returns an instance of the POM.  The
two classes mentioned above, have been modified to obtain a reference to
the POM using this new method instead. 

Just trying to provide a single interface to obtain a reference to the
POM.  Let me know what you think.

Thanks,
Pete

Index: build-bootstrap.xml
===================================================================
RCS file: /home/cvs/jakarta-turbine-maven/build-bootstrap.xml,v
retrieving revision 1.78
diff -u -r1.78 build-bootstrap.xml
--- build-bootstrap.xml 25 Apr 2002 15:51:27 -0000      1.78
+++ build-bootstrap.xml 27 Apr 2002 19:08:54 -0000
@@ -114,7 +114,6 @@
       outputDirectory="${basedir}"
       templatePath="src/templates/build"
       outputFile="bootstrap.report"
-      projectDescriptor="project.xml"
       listFile="jars.list"
     />
     
Index: src/java/org/apache/maven/BaseProjectTask.java
===================================================================
RCS file: 
/home/cvs/jakarta-turbine-maven/src/java/org/apache/maven/BaseProjectTask.java,v
retrieving revision 1.7
diff -u -r1.7 BaseProjectTask.java
--- src/java/org/apache/maven/BaseProjectTask.java      22 Apr 2002 02:43:32 -0000     
 1.7
+++ src/java/org/apache/maven/BaseProjectTask.java      27 Apr 2002 19:08:54 -0000
@@ -60,10 +60,9 @@
 
 import org.apache.tools.ant.BuildException;
 
+import org.apache.maven.MavenUtils;
 import org.apache.maven.project.Project;
 
-import org.apache.commons.xo.Mapper;
-
 import org.apache.velocity.context.Context;
 import org.apache.velocity.VelocityContext;
 import org.apache.velocity.texen.ant.TexenTask;
@@ -80,11 +79,6 @@
     extends TexenTask
 {
     /**
-     * Project descriptor.
-     */
-    protected File projectDescriptor;
-
-    /**
      * Velocity context use in rendering the build system.
      */
     protected Context context;
@@ -101,15 +95,6 @@
     protected File listFile;
 
     /**
-     * Set the project descriptor file. This file must exist.
-     * @param projectDescriptor the project descriptor file
-     */
-    public void setProjectDescriptor(File projectDescriptor)
-    {
-        this.projectDescriptor = projectDescriptor;
-    }
-
-    /**
      * Set the list file that holds jar file names. This file must exist
      * @param listFile the list file
      */
@@ -131,10 +116,8 @@
         
         try
         {
-            Mapper m = new Mapper();
-            mavenProject = (Project) m.map(projectDescriptor,
-                "org.apache.maven.project.Project");
-            
+            mavenProject = MavenUtils.getProject();
+
             context.put("buildElements", new ArrayList());
             context.put("delegators", new HashMap());
             context.put("project", mavenProject);
Index: src/java/org/apache/maven/MavenTool.java
===================================================================
RCS file: /home/cvs/jakarta-turbine-maven/src/java/org/apache/maven/MavenTool.java,v
retrieving revision 1.4
diff -u -r1.4 MavenTool.java
--- src/java/org/apache/maven/MavenTool.java    27 Apr 2002 15:45:20 -0000      1.4
+++ src/java/org/apache/maven/MavenTool.java    27 Apr 2002 19:08:54 -0000
@@ -77,8 +77,7 @@
     public MavenTool()
         throws Exception
     {
-        // FIXME: Need a path to the project descriptor.
-        project = MavenUtils.getProject("project.xml");
+        project = MavenUtils.getProject();
     }
 
     /**
Index: src/java/org/apache/maven/MavenUtils.java
===================================================================
RCS file: /home/cvs/jakarta-turbine-maven/src/java/org/apache/maven/MavenUtils.java,v
retrieving revision 1.12
diff -u -r1.12 MavenUtils.java
--- src/java/org/apache/maven/MavenUtils.java   20 Apr 2002 05:19:48 -0000      1.12
+++ src/java/org/apache/maven/MavenUtils.java   27 Apr 2002 19:08:55 -0000
@@ -79,10 +79,28 @@
 public class MavenUtils
 {
     /**
+     * Maven project descriptor filename.
+     */
+    private final static String PROJECT_FILE =
+        "project.xml";
+
+    /**
      * Maven project class name.
      */
     private final static String PROJECT_CLASS =
         "org.apache.maven.project.Project";
+
+    /** 
+     * Gets the Maven POM.
+     * 
+     * @return The Maven POM.
+     * @exception Exception If the POM cannot be loaded.
+     */
+    public static Project getProject()
+        throws Exception
+    {
+        return getProject(new File(PROJECT_FILE));
+    }
 
     /**
      * Create a Project object given a file descriptor.
Index: src/java/org/apache/maven/UpdatePomCheck.java
===================================================================
RCS file: 
/home/cvs/jakarta-turbine-maven/src/java/org/apache/maven/UpdatePomCheck.java,v
retrieving revision 1.1
diff -u -r1.1 UpdatePomCheck.java
--- src/java/org/apache/maven/UpdatePomCheck.java       6 Apr 2002 16:26:01 -0000      
 1.1
+++ src/java/org/apache/maven/UpdatePomCheck.java       27 Apr 2002 19:08:55 -0000
@@ -57,52 +57,21 @@
 import java.io.File;
 
 import org.apache.maven.project.Project;
-import org.apache.maven.executor.AbstractExecutor;
+import org.apache.maven.executor.ProjectExecutor;
 
 /**
  * XML project descriptor validator.
  */
 public class UpdatePomCheck
-    extends AbstractExecutor
+    extends ProjectExecutor
 {
     /**
-     * XML project descriptor to validate
-     */
-    private File projectDescriptor;
-
-    /**
-     * Set the project descriptor to validate.
-     */
-    public void setProjectDescriptor(File projectDescriptor)
-    {
-        this.projectDescriptor = projectDescriptor;
-    }
-
-    /**
-     * Get the project descriptor to validate.
-     */
-    public File getProjectDescriptor()
-    {
-        return projectDescriptor;
-    }
-
-    /**
      * Execute
      */
-    public void execute()
+    public void doExecute()
         throws Exception
     {
-        Project project = null;
-
-        try
-        {
-            project = MavenUtils.getProject(projectDescriptor);
-        }
-        catch (Exception e)
-        {
-            e.printStackTrace();
-        }
-
+        Project project = getMavenProject();
 
         // Check and see if the version of the POM being used matches
         // the version of the POM that this version of Maven expects.
Index: src/java/org/apache/maven/executor/ProjectExecutor.java
===================================================================
RCS file: 
/home/cvs/jakarta-turbine-maven/src/java/org/apache/maven/executor/ProjectExecutor.java,v
retrieving revision 1.3
diff -u -r1.3 ProjectExecutor.java
--- src/java/org/apache/maven/executor/ProjectExecutor.java     20 Apr 2002 00:17:58 
-0000      1.3
+++ src/java/org/apache/maven/executor/ProjectExecutor.java     27 Apr 2002 19:08:55 
+-0000
@@ -61,8 +61,6 @@
 import org.apache.maven.MavenUtils;
 import org.apache.maven.project.Project;
 
-import org.apache.commons.xo.Mapper;
-
 /**
  * An executor that uses the Template Method pattern to alleviate the
  * burden subclasses having to create the Maven project object and
@@ -76,38 +74,11 @@
     extends AbstractExecutor
 {
     /**
-     * The file that contains the project descriptor for a Maven
-     * project.
-     */
-    private File projectDescriptor;
-
-    /**
      * The project object model representing the project described by
      * the <code>projectDescriptor</code>.
      */
     private Project mavenProject;
 
-    /**
-     * Set the project descriptor file. This file must exist.
-     *
-     * @param projectDescriptor The file containing the project
-     * descriptor.
-     */
-    public void setProjectDescriptor(File projectDescriptor)
-    {
-        this.projectDescriptor = projectDescriptor;
-    }
-
-    /** 
-     * Get the project descriptor file.
-     * 
-     * @return The file containing the project descriptor.
-     */
-    protected File getProjectDescriptor()
-    {
-        return projectDescriptor;
-    }
-
     /** 
      * Set the Maven project.
      * 
@@ -134,12 +105,7 @@
     protected void loadMavenProject()
         throws Exception
     {
-        if (getProjectDescriptor() == null)
-        {
-            throw new Exception("The projectDescriptor property must be set.");
-        }            
-        
-        setMavenProject(MavenUtils.getProject(getProjectDescriptor()));
+        setMavenProject(MavenUtils.getProject());
     }
 
     /**
Index: src/templates/build/build-docs.xml
===================================================================
RCS file: /home/cvs/jakarta-turbine-maven/src/templates/build/build-docs.xml,v
retrieving revision 1.58
diff -u -r1.58 build-docs.xml
--- src/templates/build/build-docs.xml  27 Apr 2002 14:10:47 -0000      1.58
+++ src/templates/build/build-docs.xml  27 Apr 2002 19:08:57 -0000
@@ -101,7 +101,6 @@
     </taskdef>
 
     <task-parser
-      projectDescriptor="project.xml"
       base="${src.dir}"
       includes="**/*.java"
     />
@@ -123,7 +122,6 @@
     </taskdef>
 
     <change-log
-      projectDescriptor="project.xml"
       baseDir="."
       output="${gen.docs}/changelog.xml"
       days="${changelog.days}"
Index: src/templates/build/build-init.xml
===================================================================
RCS file: /home/cvs/jakarta-turbine-maven/src/templates/build/build-init.xml,v
retrieving revision 1.2
diff -u -r1.2 build-init.xml
--- src/templates/build/build-init.xml  22 Apr 2002 15:01:53 -0000      1.2
+++ src/templates/build/build-init.xml  27 Apr 2002 19:08:58 -0000
@@ -68,7 +68,7 @@
          o If there is a mismatch then update the POM
     -->
     
-    <project-properties projectDescriptor="project.xml"/>
+    <project-properties/>
     
   </target>
 
@@ -87,9 +87,7 @@
          sync with what Maven expects.
     -->
     
-    <update-pom-check
-      projectDescriptor="project.xml"
-    />      
+    <update-pom-check/>      
 
     <echo>
       pomUpdateRequired = ${pomUpdateRequired}
Index: src/templates/build/build-maven.xml
===================================================================
RCS file: /home/cvs/jakarta-turbine-maven/src/templates/build/build-maven.xml,v
retrieving revision 1.37
diff -u -r1.37 build-maven.xml
--- src/templates/build/build-maven.xml 27 Apr 2002 16:17:20 -0000      1.37
+++ src/templates/build/build-maven.xml 27 Apr 2002 19:08:58 -0000
@@ -639,7 +639,6 @@
       outputDirectory="${basedir}"
       templatePath="${maven.home}"
       outputFile="build-gump.xml"
-      projectDescriptor="project.xml"
     />
   
   </target>
Index: src/templates/build/build.init.target
===================================================================
RCS file: /home/cvs/jakarta-turbine-maven/src/templates/build/build.init.target,v
retrieving revision 1.23
diff -u -r1.23 build.init.target
--- src/templates/build/build.init.target       26 Apr 2002 10:38:33 -0000      1.23
+++ src/templates/build/build.init.target       27 Apr 2002 19:08:58 -0000
@@ -76,7 +76,6 @@
     depends="prepare.httpget">
     
     <verify-project
-      projectDescriptor="project.xml"
       mavenLocalRepo="${maven.repo.local}"
       mavenRemoteRepo="${maven.repo.remote}"
     />
@@ -88,7 +87,6 @@
     depends="prepare.httpget">
 
     <verify-project
-      projectDescriptor="project.xml"
       mavenLocalRepo="${maven.repo.local}"
       mavenRemoteRepo="${maven.repo.remote}"
       proxyHost="${proxy.host}"
@@ -136,7 +134,7 @@
          o If there is a mismatch then update the POM
     -->
     
-    <project-properties projectDescriptor="project.xml"/>
+    <project-properties/>
 
     <tstamp>
       <format property="current.year" pattern="yyyy" />
@@ -159,9 +157,7 @@
          sync with what Maven expects.
     -->
     
-    <update-pom-check
-      projectDescriptor="project.xml"
-    />      
+    <update-pom-check/>      
 
     <echo>
       pomUpdateRequired = ${pomUpdateRequired}
Index: src/test/org/apache/maven/project/ProjectMapperTest.java
===================================================================
RCS file: 
/home/cvs/jakarta-turbine-maven/src/test/org/apache/maven/project/ProjectMapperTest.java,v
retrieving revision 1.13
diff -u -r1.13 ProjectMapperTest.java
--- src/test/org/apache/maven/project/ProjectMapperTest.java    25 Apr 2002 15:51:28 
-0000      1.13
+++ src/test/org/apache/maven/project/ProjectMapperTest.java    27 Apr 2002 19:08:58 
+-0000
@@ -58,15 +58,11 @@
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
 import org.apache.commons.lang.Strings;
-import org.apache.commons.xo.Mapper;
+import org.apache.maven.MavenUtils;
 
 public class ProjectMapperTest
     extends TestCase
 {
-    private String TEST_DOCUMENT = null;
-    private static String TEST_CLASS =
-            "org.apache.maven.project.Project";
-
     public ProjectMapperTest(String testName)
     {
         super(testName);
@@ -80,18 +76,11 @@
     protected void setUp() throws Exception
     {
         super.setUp();
-        String baseDir = System.getProperty("basedir");
-        assertNotNull("The system property basedir was not defined.", baseDir);
-        String fs = System.getProperty("file.separator");
-        assertNotNull("The system property file.separator was not defined.", fs);
-        TEST_DOCUMENT = baseDir+fs+"project.xml";
     }
 
     public void testProjectMapping() throws Exception
     {
-        Mapper m = new Mapper();
-        m.setDebug(true);
-        Project p = (Project) m.map(TEST_DOCUMENT, TEST_CLASS);
+        Project p = MavenUtils.getProject();
 
         assertEquals("jakarta-turbine-maven",p.getName());
         assertEquals("maven", p.getId());

Reply via email to