brett       2004/11/06 13:57:32

  Modified:    .        project.xml
               src/java/main/org/apache/maven/jelly/tags/maven
                        DependencyResolver.java
                        DependencyResolverInterface.java
                        GraphDependencyResolver.java ReactorTag.java
                        WerkzDependencyResolver.java
               xdocs    changes.xml
  Added:       src/java/main/org/apache/maven/jelly/tags/maven
                        DependencyResolverException.java
  Log:
  merge MAVEN-1_0_1-BRANCH up to MAVEN_JELLY_TAGS_1_0_1
  
  Revision  Changes    Path
  1.7       +5 -0      maven-jelly-tags/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/maven-jelly-tags/project.xml,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- project.xml       21 Sep 2004 13:45:45 -0000      1.6
  +++ project.xml       6 Nov 2004 21:57:32 -0000       1.7
  @@ -235,5 +235,10 @@
         <name>1.0</name>
         <tag>MAVEN_JELLY_TAGS-1_0</tag>
       </version>
  +    <version>
  +      <id>1.0.1</id>
  +      <name>1.0.1</name>
  +      <tag>MAVEN_JELLY_TAGS_1_0_1</tag>
  +    </version>
     </versions>
   </project>
  
  
  
  1.8       +20 -18    
maven-jelly-tags/src/java/main/org/apache/maven/jelly/tags/maven/DependencyResolver.java
  
  Index: DependencyResolver.java
  ===================================================================
  RCS file: 
/home/cvs/maven-jelly-tags/src/java/main/org/apache/maven/jelly/tags/maven/DependencyResolver.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- DependencyResolver.java   23 Mar 2004 02:18:19 -0000      1.7
  +++ DependencyResolver.java   6 Nov 2004 21:57:32 -0000       1.8
  @@ -35,35 +35,37 @@
        * Creates the dependency resolver. The implementation is chosen by the
        * System property "maven.core.dependencyresolver".  By default it is
        * the WerkzDependencyResolver. Ultimately I see this proxy being removed.
  +     *
        * @see java.lang.Object#Object()
        */
       public DependencyResolver()
       {
           String prop = "maven.core.dependencyresolver";
  -        String type = System.getProperty(prop);
  +        String type = System.getProperty( prop );
           try
           {
   
  -            if (type == null)
  +            if ( type == null )
               {
                   impl = new WerkzDependencyResolver();
               }
               else
               {
  -                impl = (DependencyResolverInterface) 
Class.forName(type).newInstance();
  +                impl = (DependencyResolverInterface) Class.forName( type 
).newInstance();
               }
           }
  -        catch (Exception e)
  +        catch ( Exception e )
           {
  -            throw new RuntimeException("Unable to create " + type);
  +            throw new RuntimeException( "Unable to create " + type );
           }
       }
   
       /**
        * Creates the dependency resolver with a specific implementation
  +     *
        * @param impl
        */
  -    public DependencyResolver(DependencyResolverInterface impl)
  +    public DependencyResolver( DependencyResolverInterface impl )
       {
           this.impl = impl;
       }
  @@ -79,42 +81,42 @@
       /**
        * @see 
org.apache.maven.jelly.tags.maven.DependencyResolverInterface#setProjects(java.util.List)
        */
  -    public void setProjects(List projects)
  +    public void setProjects( List projects )
       {
  -        impl.setProjects(projects);
  +        impl.setProjects( projects );
       }
   
       /**
        * @see 
org.apache.maven.jelly.tags.maven.DependencyResolverInterface#getSortedDependencies(org.apache.maven.project.Project)
        */
  -    public List getSortedDependencies(Project project) throws Exception
  +    public List getSortedDependencies( Project project ) throws 
DependencyResolverException
       {
  -        return impl.getSortedDependencies(project);
  +        return impl.getSortedDependencies( project );
       }
   
       /**
        * @see 
org.apache.maven.jelly.tags.maven.DependencyResolverInterface#getSortedDependencies(org.apache.maven.project.Project,
 boolean)
        */
  -    public List getSortedDependencies(Project project, boolean sourceBuild) throws 
Exception
  +    public List getSortedDependencies( Project project, boolean sourceBuild ) 
throws DependencyResolverException
       {
  -        return impl.getSortedDependencies(project, sourceBuild);
  +        return impl.getSortedDependencies( project, sourceBuild );
       }
   
       /**
        * @see 
org.apache.maven.jelly.tags.maven.DependencyResolverInterface#getSortedDependencies(boolean)
        */
  -    public List getSortedDependencies(boolean sourceBuild) throws Exception
  +    public List getSortedDependencies( boolean sourceBuild ) throws 
DependencyResolverException
       {
  -        return impl.getSortedDependencies(sourceBuild);
  +        return impl.getSortedDependencies( sourceBuild );
       }
   
  -    public static Project getProject(List projects, String id)
  +    public static Project getProject( List projects, String id )
       {
           Iterator iter = projects.iterator();
  -        while (iter.hasNext())
  +        while ( iter.hasNext() )
           {
               Project project = (Project) iter.next();
  -            if (project.getId().equals(id))
  +            if ( project.getId().equals( id ) )
               {
                   return project;
               }
  
  
  
  1.6       +9 -9      
maven-jelly-tags/src/java/main/org/apache/maven/jelly/tags/maven/DependencyResolverInterface.java
  
  Index: DependencyResolverInterface.java
  ===================================================================
  RCS file: 
/home/cvs/maven-jelly-tags/src/java/main/org/apache/maven/jelly/tags/maven/DependencyResolverInterface.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- DependencyResolverInterface.java  23 Mar 2004 02:18:19 -0000      1.5
  +++ DependencyResolverInterface.java  6 Nov 2004 21:57:32 -0000       1.6
  @@ -37,33 +37,33 @@
        *
        * @param projects List of projects.
        */
  -    void setProjects(List projects);
  +    void setProjects( List projects );
   
       /**
        * Get the list of projects in dependency sorted order.
        *
        * @param project The project to use as the head of the graph.
        * @return The list of projects.
  -     * @throws Exception If an error occurs while processing the graph.
  +     * @throws DependencyResolverException If an error occurs while processing the 
graph.
        */
  -    List getSortedDependencies(Project project) throws Exception;
  +    List getSortedDependencies( Project project ) throws 
DependencyResolverException;
   
       /**
        * Get the list of projects in dependency sorted order.
        *
  -     * @param project The project to use as the head of the graph.
  +     * @param project     The project to use as the head of the graph.
        * @param sourceBuild Indicate we are performing a source build.
        * @return The list of projects.
  -     * @throws Exception If an error occurs while processing the graph.
  +     * @throws DependencyResolverException If an error occurs while processing the 
graph.
        */
  -    List getSortedDependencies(Project project, boolean sourceBuild) throws 
Exception;
  +    List getSortedDependencies( Project project, boolean sourceBuild ) throws 
DependencyResolverException;
   
       /**
        * Get the list of projects in dependency sorted order.
        *
        * @param sourceBuild Flag to indicate we are performing a source build.
        * @return The list of projects.
  -     * @throws Exception If an error occurs while processing the graph.
  +     * @throws DependencyResolverException If an error occurs while processing the 
graph.
        */
  -    List getSortedDependencies(boolean sourceBuild) throws Exception;
  +    List getSortedDependencies( boolean sourceBuild ) throws 
DependencyResolverException;
   }
  
  
  
  1.5       +36 -30    
maven-jelly-tags/src/java/main/org/apache/maven/jelly/tags/maven/GraphDependencyResolver.java
  
  Index: GraphDependencyResolver.java
  ===================================================================
  RCS file: 
/home/cvs/maven-jelly-tags/src/java/main/org/apache/maven/jelly/tags/maven/GraphDependencyResolver.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- GraphDependencyResolver.java      23 Mar 2004 02:18:19 -0000      1.4
  +++ GraphDependencyResolver.java      6 Nov 2004 21:57:32 -0000       1.5
  @@ -25,23 +25,29 @@
   import java.util.HashMap;
   import java.util.Iterator;
   import java.util.List;
  +
   /**
  - *  Takes a list of maven projects and determines the overall
  - *  dependency ordering among the project.
  + * Takes a list of maven projects and determines the overall
  + * dependency ordering among the project.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
  - *
    * @version $Id$
    */
   public class GraphDependencyResolver implements DependencyResolverInterface
   {
  -    /** The dependency graph. */
  +    /**
  +     * The dependency graph.
  +     */
       private DependencyGraph dependencyGraph;
   
  -    /** List of maven projects to analyse. */
  +    /**
  +     * List of maven projects to analyse.
  +     */
       private List projects;
   
  -    /** Flag to indicate whether the graph has been built. */
  +    /**
  +     * Flag to indicate whether the graph has been built.
  +     */
       private boolean graphBuilt;
   
       /**
  @@ -66,7 +72,7 @@
       /**
        * @see 
org.apache.maven.jelly.tags.maven.DependencyResolverInterface#setProjects(List)
        */
  -    public void setProjects(List projects)
  +    public void setProjects( List projects )
       {
           this.projects = projects;
       }
  @@ -74,42 +80,42 @@
       /**
        * @see 
org.apache.maven.jelly.tags.maven.DependencyResolverInterface#getSortedDependencies(Project)
        */
  -    public List getSortedDependencies(Project project) throws Exception
  +    public List getSortedDependencies( Project project )
       {
  -        return getSortedDependencies(project, false);
  +        return getSortedDependencies( project, false );
       }
   
       /**
        * @see 
org.apache.maven.jelly.tags.maven.DependencyResolverInterface#getSortedDependencies(Project,
 boolean)
        */
  -    public List getSortedDependencies(Project project, boolean sourceBuild) throws 
Exception
  +    public List getSortedDependencies( Project project, boolean sourceBuild )
       {
           buildGraph();
  -        List sortedDependencies = dependencyGraph.getSortedDependencies(project);
  +        List sortedDependencies = dependencyGraph.getSortedDependencies( project );
   
  -        if (sourceBuild)
  +        if ( sourceBuild )
           {
               return sortedDependencies;
           }
   
  -        return getBinaryDependencies(sortedDependencies);
  +        return getBinaryDependencies( sortedDependencies );
       }
   
       /**
        * @see 
org.apache.maven.jelly.tags.maven.DependencyResolverInterface#getSortedDependencies(boolean)
        */
  -    public List getSortedDependencies(boolean sourceBuild) throws Exception
  +    public List getSortedDependencies( boolean sourceBuild )
       {
           buildGraph();
   
           List sortedDependencies = dependencyGraph.getSortedDependencies();
   
  -        if (sourceBuild)
  +        if ( sourceBuild )
           {
               return sortedDependencies;
           }
   
  -        return getBinaryDependencies(sortedDependencies);
  +        return getBinaryDependencies( sortedDependencies );
       }
   
       /**
  @@ -118,24 +124,24 @@
        * @param sortedDependencies List of projects that have been dependency sorted.
        * @return The list of projects.
        */
  -    private List getBinaryDependencies(List sortedDependencies)
  +    private List getBinaryDependencies( List sortedDependencies )
       {
           HashMap idMap = new HashMap();
  -        for (Iterator i = projects.iterator(); i.hasNext();)
  +        for ( Iterator i = projects.iterator(); i.hasNext(); )
           {
               Project p = (Project) i.next();
  -            idMap.put(p.getId(), p);
  +            idMap.put( p.getId(), p );
           }
   
           List binaryDeps = new ArrayList();
  -        for (Iterator i = sortedDependencies.iterator(); i.hasNext();)
  +        for ( Iterator i = sortedDependencies.iterator(); i.hasNext(); )
           {
               Project p = (Project) i.next();
   
  -            Project dep = (Project) idMap.get(p.getId());
  -            if (dep != null)
  +            Project dep = (Project) idMap.get( p.getId() );
  +            if ( dep != null )
               {
  -                binaryDeps.add(dep);
  +                binaryDeps.add( dep );
               }
           }
   
  @@ -147,25 +153,25 @@
        */
       private void buildGraph()
       {
  -        if (graphBuilt)
  +        if ( graphBuilt )
           {
               return;
           }
   
  -        for (Iterator i = projects.iterator(); i.hasNext();)
  +        for ( Iterator i = projects.iterator(); i.hasNext(); )
           {
               Project p = (Project) i.next();
   
               ArrayList dependencies = new ArrayList();
  -            for (Iterator j = p.getDependencies().iterator(); j.hasNext();)
  +            for ( Iterator j = p.getDependencies().iterator(); j.hasNext(); )
               {
                   Dependency d = (Dependency) j.next();
                   Project dependentProject = new Project();
  -                dependentProject.setId(d.getId());
  -                dependencies.add(dependentProject);
  +                dependentProject.setId( d.getId() );
  +                dependencies.add( dependentProject );
               }
   
  -            dependencyGraph.addDependencies(p, dependencies);
  +            dependencyGraph.addDependencies( p, dependencies );
           }
           graphBuilt = true;
       }
  
  
  
  1.42      +96 -62    
maven-jelly-tags/src/java/main/org/apache/maven/jelly/tags/maven/ReactorTag.java
  
  Index: ReactorTag.java
  ===================================================================
  RCS file: 
/home/cvs/maven-jelly-tags/src/java/main/org/apache/maven/jelly/tags/maven/ReactorTag.java,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- ReactorTag.java   18 Sep 2004 01:02:14 -0000      1.41
  +++ ReactorTag.java   6 Nov 2004 21:57:32 -0000       1.42
  @@ -23,6 +23,7 @@
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
   import org.apache.maven.MavenConstants;
  +import org.apache.maven.MavenException;
   import org.apache.maven.MavenUtils;
   import org.apache.maven.project.Project;
   
  @@ -35,7 +36,7 @@
   /**
    * Reactor tag that processes a set of project descriptors taking into
    * consideration the inter-project dependencies.
  - *
  + * <p/>
    * Used for building a set of projects in the correct order to satisfy any
    * dependencies among the projects being processed.
    *
  @@ -51,30 +52,45 @@
   {
       private static final Log log = LogFactory.getLog( ReactorTag.class );
   
  -    /** The glob used to select projects within the base directory. */
  +    /**
  +     * The glob used to select projects within the base directory.
  +     */
       private String glob;
   
  -    /** Projects to include. */
  +    /**
  +     * Projects to include.
  +     */
       private String includes;
   
  -    /** Projects to exclude. */
  +    /**
  +     * Projects to exclude.
  +     */
       private String excludes;
   
  -    /** Banner to display when each project is processed. */
  +    /**
  +     * Banner to display when each project is processed.
  +     */
       private String banner;
   
  -    /** project base directory */
  +    /**
  +     * project base directory
  +     */
       private File basedir;
  -    
  -    /** The name of the context variable to store the project collection in. */
  +
  +    /**
  +     * The name of the context variable to store the project collection in.
  +     */
       private String collectionVar = "reactorProjects";
  -    
  -    /** Whether to actually execute the default or specified goals, or 
  +
  +    /**
  +     * Whether to actually execute the default or specified goals, or
        * simply collect the projects in order.
        */
       private boolean collectOnly = false;
   
  -    /** Whether to sort the projects by dependencies. */
  +    /**
  +     * Whether to sort the projects by dependencies.
  +     */
       private boolean sort = true;
   
       /**
  @@ -83,10 +99,14 @@
        */
       private boolean postProcessing = false;
   
  -    /** Storage for projects that failed in the build. */
  +    /**
  +     * Storage for projects that failed in the build.
  +     */
       private Collection failedProjects = new ArrayList();
   
  -    /** List of Project objects to use instead of glob or includes. */
  +    /**
  +     * List of Project objects to use instead of glob or includes.
  +     */
       private List projectList = null;
   
       // ----------------------------------------------------------------------
  @@ -95,6 +115,7 @@
   
       /**
        * Set the project list.
  +     *
        * @param projectList the project list
        */
       public void setProjectList( List projectList )
  @@ -104,6 +125,7 @@
   
       /**
        * Get the project list.
  +     *
        * @return the project list
        */
       public List getProjectList()
  @@ -114,6 +136,7 @@
       /**
        * Setter for the basedir property
        * XXX if the method it overrides is deprecated, is this also deprecated?
  +     *
        * @param basedir the base directory for execution of the project
        */
       public void setBasedir( File basedir )
  @@ -130,33 +153,35 @@
       {
           return this.basedir;
       }
  -  
  +
       public void setSort( boolean sort )
       {
           this.sort = sort;
       }
  -    
  -    /** Set the collectOnly attribute. This controls whether reactor
  -     * will actually execute any goals on the projects, or simply 
  +
  +    /**
  +     * Set the collectOnly attribute. This controls whether reactor
  +     * will actually execute any goals on the projects, or simply
        * collect the sorted set of projects included in this reactor
        * invocation.
  -     * 
  -     * @param collectOnly if true, don't execute project goals; simply 
  -     *  gather the sorted project collection and store. Otherwise, 
  -     *  operate as before (execute either specified goals or default goal
  -     *  for each project).
  +     *
  +     * @param collectOnly if true, don't execute project goals; simply
  +     *                    gather the sorted project collection and store. Otherwise,
  +     *                    operate as before (execute either specified goals or 
default goal
  +     *                    for each project).
        */
       public void setCollectOnly( boolean collectOnly )
       {
           this.collectOnly = collectOnly;
       }
  -    
  -    /** Set the collectionVar attribute. This controls the context 
  +
  +    /**
  +     * Set the collectionVar attribute. This controls the context
        * variable which will contain the sorted set of projects included
        * in this reactor invocation.
  -     * 
  +     *
        * @param collectionVar The context variable for the project collection
  -     *  discovered here.
  +     *                      discovered here.
        */
       public void setCollectionVar( String collectionVar )
       {
  @@ -273,7 +298,7 @@
       }
   
       /**
  -     *  Execute the body of the reactor tag.
  +     * Execute the body of the reactor tag.
        *
        * @param output The output sink.
        * @throws JellyTagException If an error occurs while processing the tag.
  @@ -302,7 +327,7 @@
   
           log.info( "Our processing order:" );
   
  -        for ( Iterator i = sortedProjects.iterator(); i.hasNext();)
  +        for ( Iterator i = sortedProjects.iterator(); i.hasNext(); )
           {
               Project p = (Project) i.next();
               log.info( p.getName() );
  @@ -311,47 +336,50 @@
           ArrayList reactorProjects = new ArrayList();
   
           Runtime r = Runtime.getRuntime();
  -        for ( Iterator i = sortedProjects.iterator(); i.hasNext();)
  +        for ( Iterator i = sortedProjects.iterator(); i.hasNext(); )
           {
               // The basedir needs to be set for the project
               // We just need the descriptor.
   
               Project project = (Project) i.next();
  -            beforeProject(project);
  -            try
  +            beforeProject( project );
  +
  +            final long mb = 1024 * 1024;
  +            log.info( "+----------------------------------------" );
  +            log.info( "| " + getBanner() + " " + project.getName() );
  +            log.info( "| Memory: " + ( ( r.totalMemory() - r.freeMemory() ) / mb ) 
+ "M/" + ( r.totalMemory() / mb ) + "M" );
  +            log.info( "+----------------------------------------" );
  +
  +            // We only try to attain goals if they have been set. The reactor
  +            // might be in use to collect project information for the purpose
  +            // of, say, generating a sites from a set of components.
  +            List goalList = null;
  +            if ( getGoals() != null )
               {
  -                final long mb = 1024 * 1024;
  -                log.info( "+----------------------------------------" );
  -                log.info( "| " + getBanner() + " " + project.getName() );
  -                log.info( "| Memory: " + ((r.totalMemory() - r.freeMemory()) / mb) 
+ "M/" + (r.totalMemory() / mb) + "M");
  -                log.info( "+----------------------------------------" );
  -
  -                // We only try to attain goals if they have been set. The reactor
  -                // might be in use to collect project information for the purpose
  -                // of, say, generating a sites from a set of components.
  -                List goalList = null;
  -                if ( getGoals() != null )
  -                {
  -                    goalList = MavenUtils.getGoalListFromCsv( getGoals() );
  -                }
  +                goalList = MavenUtils.getGoalListFromCsv( getGoals() );
  +            }
   
  -                beforeLaunchGoals( project );
  -                
  -                if( !collectOnly )
  +            beforeLaunchGoals( project );
  +
  +            try
  +            {
  +                if ( !collectOnly )
                   {
                       getMavenContext().getMavenSession().attainGoals( project, 
goalList );
                   }
  -                
  -                afterLaunchGoals( project );
               }
               catch ( Exception e )
               {
                   onException( project, e );
  +                // TODO: there is a risk that continuing may leave the project in 
an inconsistent state.
  +                //  -- attainGoals needs to split fatal from non-fatal exceptions 
and we only ignore non-fatal
                   if ( !isIgnoreFailures() )
                   {
                       throw new JellyTagException( "Reactor subproject failure 
occurred", e );
                   }
               }
  +
  +            afterLaunchGoals( project );
               afterProject( project );
   
               if ( getPostProcessing() || collectOnly )
  @@ -361,7 +389,7 @@
           }
   
           getContext().setVariable( collectionVar, reactorProjects );
  -        Collection c = ( Collection ) getContext().getVariable( 
MavenConstants.FAILED_PROJECTS );
  +        Collection c = (Collection) getContext().getVariable( 
MavenConstants.FAILED_PROJECTS );
           if ( c == null )
           {
               c = new ArrayList( failedProjects );
  @@ -376,10 +404,10 @@
       /**
        * Get a list of projects to process, sorted by dependency processing order.
        * Maintained as a separate method so that the original projects and dependency 
resolver memory is freed.
  +     *
        * @return the project list
  -     * @throws Exception FIXME this is bad
        */
  -    private List getSortedProjects() throws Exception
  +    private List getSortedProjects() throws MavenException
       {
           if ( projectList != null )
           {
  @@ -398,7 +426,7 @@
           }
   
           List projects = MavenUtils.getProjects( getBasedir(), projectIncludes, 
getExcludes(),
  -            getMavenContext().getMavenSession().getRootContext() );
  +                                                
getMavenContext().getMavenSession().getRootContext() );
   
           if ( sort )
           {
  @@ -415,43 +443,48 @@
   
       /**
        * This method is running before launching a project.
  +     *
        * @param project the currentProject
        */
  -    public void beforeProject(Project project)
  +    public void beforeProject( Project project )
       {
       }
   
       /**
        * This method is running before launching project goals.
  +     *
        * @param project the currentProject
        */
  -    public void beforeLaunchGoals(Project project)
  +    public void beforeLaunchGoals( Project project )
       {
       }
   
       /**
        * This method is running after launching project goals.
  +     *
        * @param project the currentProject
        */
  -    public void afterLaunchGoals(Project project)
  +    public void afterLaunchGoals( Project project )
       {
       }
   
       /**
        * This method is running after launching a project.
  +     *
        * @param project the currentProject
        */
  -    public void afterProject(Project project)
  +    public void afterProject( Project project )
       {
       }
   
       /**
        * This method is running when an exception occurs whatever
        * the ignoreFailures value.
  +     *
        * @param project the currentProject
  -     * @param e the exception
  +     * @param e       the exception
        */
  -    public void onException(Project project, Exception e)
  +    public void onException( Project project, Exception e )
       {
           getContext().setVariable( MavenConstants.BUILD_FAILURE, "true" );
           failedProjects.add( project );
  @@ -460,9 +493,10 @@
       /**
        * This method is running when an exception occurs in
        * dependency resolution.
  +     *
        * @param e the exception
        */
  -    public void onDependencyResolutionException(Exception e)
  +    public void onDependencyResolutionException( Exception e )
       {
       }
   }
  
  
  
  1.11      +90 -53    
maven-jelly-tags/src/java/main/org/apache/maven/jelly/tags/maven/WerkzDependencyResolver.java
  
  Index: WerkzDependencyResolver.java
  ===================================================================
  RCS file: 
/home/cvs/maven-jelly-tags/src/java/main/org/apache/maven/jelly/tags/maven/WerkzDependencyResolver.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- WerkzDependencyResolver.java      26 Jun 2004 15:00:42 -0000      1.10
  +++ WerkzDependencyResolver.java      6 Nov 2004 21:57:32 -0000       1.11
  @@ -18,10 +18,12 @@
    */
   
   import com.werken.werkz.Action;
  +import com.werken.werkz.CyclicGoalChainException;
   import com.werken.werkz.Goal;
  +import com.werken.werkz.NoActionDefinitionException;
   import com.werken.werkz.Session;
  +import com.werken.werkz.UnattainableGoalException;
   import com.werken.werkz.WerkzProject;
  -
   import org.apache.maven.project.Dependency;
   import org.apache.maven.project.Project;
   
  @@ -31,6 +33,7 @@
   
   /**
    * THIS CLASS IS NOT THREADSAFE.
  + *
    * @author <a href="mailto:[EMAIL PROTECTED]">Ben Walding</a>
    * @version $Id$
    */
  @@ -54,7 +57,7 @@
       /**
        * @see 
org.apache.maven.jelly.tags.maven.DependencyResolverInterface#setProjects(java.util.List)
        */
  -    public void setProjects(List projects)
  +    public void setProjects( List projects )
       {
           this.projects = projects;
       }
  @@ -62,16 +65,17 @@
       /**
        * Retrieves the existing goal for a project (based on Id).
        * If no goal exists, an exception is thrown.
  +     *
        * @param project the project to retrieve a goal from
        * @return ProjectGoal
        */
  -    protected ProjectGoal getExistingGoal(Project project)
  +    protected ProjectGoal getExistingGoal( Project project )
       {
  -        ProjectGoal goal = (ProjectGoal) wproject.getGoal(project.getId());
  +        ProjectGoal goal = (ProjectGoal) wproject.getGoal( project.getId() );
   
  -        if (goal == null)
  +        if ( goal == null )
           {
  -            throw new NullPointerException("No goal exists : " + project.getId());
  +            throw new NullPointerException( "No goal exists : " + project.getId() );
           }
           else
           {
  @@ -82,29 +86,29 @@
       /**
        * Retrieves the existing goal for a project (based on Id).
        * If no goal exists, one is created for this given project.
  +     *
        * @param project
        * @param sourceBuild
        * @return ProjectGoal
        */
  -    protected ProjectGoal getOrCreateGoal(Project project, boolean sourceBuild)
  +    protected ProjectGoal getOrCreateGoal( Project project, boolean sourceBuild )
       {
  -        ProjectGoal goal = (ProjectGoal) wproject.getGoal(project.getId());
  -        if (goal == null)
  +        ProjectGoal goal = (ProjectGoal) wproject.getGoal( project.getId() );
  +        if ( goal == null )
           {
  -            goal = new ProjectGoal(project, sourceBuild);
  -            goal.setAction(new ListAddAction(goal, sortedGoals));
  -            wproject.addGoal(goal);
  +            goal = new ProjectGoal( project, sourceBuild );
  +            goal.setAction( new ListAddAction( goal, sortedGoals ) );
  +            wproject.addGoal( goal );
           }
           return goal;
       }
   
       /**
        * Builds the projects / dependencies into an internal acyclic directed graph
  -     * @throws Exception
        */
  -    public void buildGraph() throws Exception
  +    public void buildGraph() throws CyclicGoalChainException
       {
  -        if (doItAll != null)
  +        if ( doItAll != null )
           {
               return;
           }
  @@ -113,38 +117,38 @@
           {
               wproject = new WerkzProject();
   
  -            doItAll = new Goal("DO_IT_ALL");
  -            doItAll.setAction(new DummyAction());
  +            doItAll = new Goal( "DO_IT_ALL" );
  +            doItAll.setAction( new DummyAction() );
   
               //Initialise all the true goals of the system
               Iterator iter = projects.iterator();
  -            while (iter.hasNext())
  +            while ( iter.hasNext() )
               {
                   Project project = (Project) iter.next();
  -                Goal projectGoal = getOrCreateGoal(project, true);
  -                doItAll.addPrecursor(projectGoal);
  +                Goal projectGoal = getOrCreateGoal( project, true );
  +                doItAll.addPrecursor( projectGoal );
               }
   
               //Now add the dependencies
               iter = projects.iterator();
  -            while (iter.hasNext())
  +            while ( iter.hasNext() )
               {
                   Project project = (Project) iter.next();
  -                Goal projectGoal = getExistingGoal(project);
  +                Goal projectGoal = getExistingGoal( project );
   
                   Iterator depIter = project.getDependencies().iterator();
  -                while (depIter.hasNext())
  +                while ( depIter.hasNext() )
                   {
                       Dependency dep = (Dependency) depIter.next();
                       Project depProject = new Project();
  -                    depProject.setId(dep.getId());
  +                    depProject.setId( dep.getId() );
   
  -                    Goal depGoal = getOrCreateGoal(depProject, false);
  -                    projectGoal.addPrecursor(depGoal);
  +                    Goal depGoal = getOrCreateGoal( depProject, false );
  +                    projectGoal.addPrecursor( depGoal );
                   }
               }
           }
  -        catch (Exception e)
  +        catch ( CyclicGoalChainException e )
           {
               doItAll = null;
               wproject = new WerkzProject();
  @@ -156,31 +160,32 @@
       /**
        * @see 
org.apache.maven.jelly.tags.maven.DependencyResolverInterface#getSortedDependencies(org.apache.maven.project.Project)
        */
  -    public List getSortedDependencies(Project project) throws Exception
  +    public List getSortedDependencies( Project project ) throws 
DependencyResolverException
       {
  -        return getSortedDependencies(project, false);
  +        return getSortedDependencies( project, false );
       }
   
       /**
        * Filters the given list of goals, and returns the associated projects
  -     *
  +     * <p/>
        * If param:sourceBuild == true, include goal
        * If param:sourceBuild == false, include goal if goal:sourceBuild == true
  +     *
        * @param goals
        * @param sourceBuild
        * @return List
        */
  -    public List getProjects(List goals, boolean sourceBuild)
  +    public List getProjects( List goals, boolean sourceBuild )
       {
           List result = new ArrayList();
           Iterator iter = goals.iterator();
  -        while (iter.hasNext())
  +        while ( iter.hasNext() )
           {
               ProjectGoal goal = (ProjectGoal) iter.next();
   
  -            if ((sourceBuild) || (!sourceBuild && goal.getSourceBuild()))
  +            if ( ( sourceBuild ) || ( !sourceBuild && goal.getSourceBuild() ) )
               {
  -                result.add((goal).getProject());
  +                result.add( ( goal ).getProject() );
               }
   
           }
  @@ -190,27 +195,57 @@
       /**
        * @see 
org.apache.maven.jelly.tags.maven.DependencyResolverInterface#getSortedDependencies(org.apache.maven.project.Project,
 boolean)
        */
  -    public List getSortedDependencies(Project project, boolean sourceBuild) throws 
Exception
  +    public List getSortedDependencies( Project project, boolean sourceBuild ) 
throws DependencyResolverException
       {
  -        buildGraph();
  -        sortedGoals.clear();
  -        Session session = new Session();
  -        ProjectGoal g = getExistingGoal(project);
  -        g.attain(session);
  +        try
  +        {
  +            buildGraph();
  +            sortedGoals.clear();
  +            Session session = new Session();
  +            ProjectGoal g = getExistingGoal( project );
  +            g.attain( session );
  +        }
  +        catch ( CyclicGoalChainException e )
  +        {
  +            throw new DependencyResolverException( "A cycle was detected", e );
  +        }
  +        catch ( UnattainableGoalException e )
  +        {
  +            throw new DependencyResolverException( "An invalid goal was called", e 
);
  +        }
  +        catch ( NoActionDefinitionException e )
  +        {
  +            throw new DependencyResolverException( "An invalid goal was called", e 
);
  +        }
   
  -        return getProjects(sortedGoals, sourceBuild);
  +        return getProjects( sortedGoals, sourceBuild );
       }
   
       /**
        * @see 
org.apache.maven.jelly.tags.maven.DependencyResolverInterface#getSortedDependencies(boolean)
        */
  -    public List getSortedDependencies(boolean sourceBuild) throws Exception
  +    public List getSortedDependencies( boolean sourceBuild ) throws 
DependencyResolverException
       {
  -        buildGraph();
  -        sortedGoals.clear();
  -        Session session = new Session();
  -        doItAll.attain(session);
  -        return getProjects(sortedGoals, sourceBuild);
  +        try
  +        {
  +            buildGraph();
  +            sortedGoals.clear();
  +            Session session = new Session();
  +            doItAll.attain( session );
  +            return getProjects( sortedGoals, sourceBuild );
  +        }
  +        catch ( CyclicGoalChainException e )
  +        {
  +            throw new DependencyResolverException( "A cycle was detected", e );
  +        }
  +        catch ( UnattainableGoalException e )
  +        {
  +            throw new DependencyResolverException( "An invalid goal was called", e 
);
  +        }
  +        catch ( NoActionDefinitionException e )
  +        {
  +            throw new DependencyResolverException( "An invalid goal was called", e 
);
  +        }
       }
   
   }
  @@ -222,7 +257,8 @@
   {
       private List list;
       private Goal goal;
  -    public ListAddAction(Goal goal, List list)
  +
  +    public ListAddAction( Goal goal, List list )
       {
           this.list = list;
           this.goal = goal;
  @@ -235,12 +271,12 @@
   
       public void performAction( Session session ) throws Exception
       {
  -        list.add(goal);
  +        list.add( goal );
       }
   
       public void performAction() throws Exception
       {
  -        list.add(goal);
  +        list.add( goal );
       }
   }
   
  @@ -271,9 +307,10 @@
   {
       private final Project project;
       private final boolean sourceBuild;
  -    public ProjectGoal(Project project, boolean sourceBuild)
  +
  +    public ProjectGoal( Project project, boolean sourceBuild )
       {
  -        super(project.getId());
  +        super( project.getId() );
           this.project = project;
           this.sourceBuild = sourceBuild;
       }
  
  
  
  1.2       +21 -0     
maven-jelly-tags/src/java/main/org/apache/maven/jelly/tags/maven/DependencyResolverException.java
  
  
  
  
  1.4       +10 -6     maven-jelly-tags/xdocs/changes.xml
  
  Index: changes.xml
  ===================================================================
  RCS file: /home/cvs/maven-jelly-tags/xdocs/changes.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- changes.xml       28 May 2004 00:59:01 -0000      1.3
  +++ changes.xml       6 Nov 2004 21:57:32 -0000       1.4
  @@ -24,17 +24,21 @@
       <author email="[EMAIL PROTECTED]">Vincent Massol</author>
     </properties>
     <body>
  -    <release version="1.0.1-SNAPSHOT" date="in CVS">
  -      <action dev="brett" type="update">Improve error reporting in 
<code>AddPathTag</code>.</action>
  +    <release version="1.1-SNAPSHOT" date="in CVS">
  +      <action dev="brett" type="update">Start using maven-model for project 
references</action>
  +    </release>
  +    <release version="1.0.1" date="2004-11-07">
  +      <action dev="brett" type="update">Improve error reporting in
  +        <code>AddPathTag</code>.
  +      </action>
       </release>
  -
       <release version="1.0" date="2004-05-11">
         <action dev="vmassol" type="add">Added new
  -        <code>SetTag</code> tag to set plugin properties
  +        <code>SetTag</code>tag to set plugin properties
         </action>
         <action dev="vmassol" type="add">Added new
  -        <code>GetTag</code> tag that replaces the now deprecated
  -        <code>PluginVar</code> tag
  +        <code>GetTag</code>tag that replaces the now deprecated
  +        <code>PluginVar</code>tag
         </action>
         <action dev="brett" type="fix" issue="MAVEN-1219">Install and uninstall 
plugin tags for managing plugins on the fly.</action>
         <action dev="brett" type="add">Jelly tag library separated from Maven 
core.</action>
  
  
  

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

Reply via email to