brett 2003/12/10 15:08:45 Modified: src/java/org/apache/maven Tag: MAVEN-1_0-BRANCH MavenUtils.java src/java/org/apache/maven/jelly/tags/maven Tag: MAVEN-1_0-BRANCH PluginVarTag.java src/java/org/apache/maven/plugin Tag: MAVEN-1_0-BRANCH PluginManager.java src/java/org/apache/maven/project Tag: MAVEN-1_0-BRANCH Project.java Added: src/java/org/apache/maven/plugin Tag: MAVEN-1_0-BRANCH UnknownPluginException.java Log: Fix bug with werkz, better handling of plugins not being found, fix bug when no project.xml present Revision Changes Path No revision No revision 1.107.4.3 +7 -1 maven/src/java/org/apache/maven/MavenUtils.java Index: MavenUtils.java =================================================================== RCS file: /home/cvs/maven/src/java/org/apache/maven/MavenUtils.java,v retrieving revision 1.107.4.2 retrieving revision 1.107.4.3 diff -u -r1.107.4.2 -r1.107.4.3 --- MavenUtils.java 2 Dec 2003 04:09:25 -0000 1.107.4.2 +++ MavenUtils.java 10 Dec 2003 23:08:44 -0000 1.107.4.3 @@ -225,6 +225,12 @@ parent = (Project) getProjectBeanReader().parse( parentPom ); parent.setFile( parentPom ); parentPoms.put( parentPom.getCanonicalPath(), parent ); +// TODO [RC2] - check -vvv- + MavenJellyContext pContext = MavenUtils.createContext( projectDescriptor.getParentFile(), + parentContext ); +parent.setContext(pContext); +context.setParent(pContext); +// TODO [RC2] - check -^^^- } Properties properties = loadProjectBuildProperties( parentPom.getParentFile() ); No revision No revision 1.1.4.1 +17 -7 maven/src/java/org/apache/maven/jelly/tags/maven/PluginVarTag.java Index: PluginVarTag.java =================================================================== RCS file: /home/cvs/maven/src/java/org/apache/maven/jelly/tags/maven/PluginVarTag.java,v retrieving revision 1.1 retrieving revision 1.1.4.1 diff -u -r1.1 -r1.1.4.1 --- PluginVarTag.java 28 Oct 2003 18:08:46 -0000 1.1 +++ PluginVarTag.java 10 Dec 2003 23:08:44 -0000 1.1.4.1 @@ -62,6 +62,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.maven.jelly.MavenJellyContext; import org.apache.maven.jelly.tags.BaseTagSupport; +import org.apache.maven.plugin.UnknownPluginException; import org.apache.maven.project.Project; /** @@ -90,16 +91,25 @@ checkAttribute(plugin, "plugin"); checkAttribute(property, "property"); Project project = getMavenContext().getProject(); - MavenJellyContext context = project.getPluginContext(plugin); - if (context != null) + try { - Object value = context.getVariable(property); - getContext().setVariable(var, value); + MavenJellyContext context = project.getPluginContext(plugin); + if (context != null) + { + Object value = context.getVariable(property); + getContext().setVariable(var, value); + } + else + { + log.error( "context for plugin '" + plugin + "' in project '" + + project + "' is null" ); + } } - else + catch ( UnknownPluginException e ) { - log.debug("context for plugin '" + plugin + "' in project '" + project - + "' is null"); +// TODO [RC2] - restore + // throw new JellyTagException( "Couldn't find the given plugin", e ); +log.error("error", e ); } } No revision No revision 1.70.4.6 +25 -13 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.70.4.5 retrieving revision 1.70.4.6 diff -u -r1.70.4.5 -r1.70.4.6 --- PluginManager.java 9 Dec 2003 23:41:16 -0000 1.70.4.5 +++ PluginManager.java 10 Dec 2003 23:08:44 -0000 1.70.4.6 @@ -543,8 +543,6 @@ // add the global session to the pluginContext so that it can be used by tags baseContext.setVariable( GLOBAL_SESSION_KEY, session ); - WerkzProject werkzProject = buildWerkzProject( baseContext ); - GoalToJellyScriptHousingMapper transientMapper = new GoalToJellyScriptHousingMapper(); // Execution of the Jelly scripts: @@ -563,6 +561,8 @@ // may wish to override so we guarantee precedence of the goals by running the jelly scripts // in the above mentioned order. + List projectHousings = new ArrayList(); + // driver.jelly InputStream driver = getClass().getResourceAsStream( "/driver.jelly" ); JellyScriptHousing driverHousing = createJellyScriptHousing( project, null, driver ); @@ -573,7 +573,8 @@ transientMapper.parse( driver, driverHousing ); driver.close(); // TODO [RC2] remove - otherwise it gets run twice - runJellyScriptHousing( driverHousing, baseContext ); + //runJellyScriptHousing( driverHousing, baseContext ); + projectHousings.add( driverHousing ); Project p = project; @@ -586,7 +587,8 @@ // TODO [RC2] stop reading all scripts 2 times transientMapper.parse( new FileInputStream( mavenXml ), jellyScriptHousing ); // TODO [RC2] remove - otherwise it gets run twice - runJellyScriptHousing( jellyScriptHousing, baseContext ); + //runJellyScriptHousing( jellyScriptHousing, baseContext ); + projectHousings.add( jellyScriptHousing ); p = p.getParent(); } @@ -609,12 +611,12 @@ { String goalName = (String) i.next(); - WerkzProject attainWerkzProject = buildWerkzProject( baseContext ); - for ( Iterator j = werkzProject.getGoals().iterator(); j.hasNext(); ) { - Goal goal = ( Goal ) j.next(); - attainWerkzProject.addGoal( goal ); + WerkzProject werkzProject = buildWerkzProject( baseContext ); + for ( Iterator j = projectHousings.iterator(); j.hasNext(); ) + { + JellyScriptHousing housing = ( JellyScriptHousing ) j.next(); + runJellyScriptHousing( housing, baseContext ); } - // Now at this point we should be able to use the name of a goal to lookup all // the plugins (that are stored in the plugin housings) that need to be executed // in order to satisfy all the required preconditions for successful goal attainment. @@ -625,6 +627,11 @@ { JellyScriptHousing housing = ( JellyScriptHousing ) j.next(); + if ( projectHousings.contains( housing ) ) + { + continue; + } + // FIXME: this is a bit nasty File pluginDirectory = housing.getProject().getFile().getParentFile(); // TODO [RC2] - integrate into original pluginContext @@ -648,10 +655,10 @@ runJellyScriptHousing( housing, pluginContext ); } - Goal goal = attainWerkzProject.getGoal( goalName ); + Goal goal = werkzProject.getGoal( goalName ); if ( goal == null ) { - // TODO [RC2] - how can we even get this far? resolve isn't working properly + // TODO [RC2] - shouldn't even get this far, but resolve is being faked throw new NoSuchGoalException( goalName ); } goal.attain( session ); @@ -820,8 +827,13 @@ } } - public Project getPluginProject( String id ) { + public Project getPluginProject( String id ) throws UnknownPluginException + { JellyPlugin plugin = (JellyPlugin) plugins.get( id ); + if ( plugin == null ) + { + throw new UnknownPluginException( id ); + } return plugin.getProject(); } No revision Index: PluginManager.java =================================================================== RCS file: /home/cvs/maven/src/java/org/apache/maven/plugin/PluginManager.java,v retrieving revision 1.70.4.5 retrieving revision 1.70.4.6 diff -u -r1.70.4.5 -r1.70.4.6 --- PluginManager.java 9 Dec 2003 23:41:16 -0000 1.70.4.5 +++ PluginManager.java 10 Dec 2003 23:08:44 -0000 1.70.4.6 @@ -543,8 +543,6 @@ // add the global session to the pluginContext so that it can be used by tags baseContext.setVariable( GLOBAL_SESSION_KEY, session ); - WerkzProject werkzProject = buildWerkzProject( baseContext ); - GoalToJellyScriptHousingMapper transientMapper = new GoalToJellyScriptHousingMapper(); // Execution of the Jelly scripts: @@ -563,6 +561,8 @@ // may wish to override so we guarantee precedence of the goals by running the jelly scripts // in the above mentioned order. + List projectHousings = new ArrayList(); + // driver.jelly InputStream driver = getClass().getResourceAsStream( "/driver.jelly" ); JellyScriptHousing driverHousing = createJellyScriptHousing( project, null, driver ); @@ -573,7 +573,8 @@ transientMapper.parse( driver, driverHousing ); driver.close(); // TODO [RC2] remove - otherwise it gets run twice - runJellyScriptHousing( driverHousing, baseContext ); + //runJellyScriptHousing( driverHousing, baseContext ); + projectHousings.add( driverHousing ); Project p = project; @@ -586,7 +587,8 @@ // TODO [RC2] stop reading all scripts 2 times transientMapper.parse( new FileInputStream( mavenXml ), jellyScriptHousing ); // TODO [RC2] remove - otherwise it gets run twice - runJellyScriptHousing( jellyScriptHousing, baseContext ); + //runJellyScriptHousing( jellyScriptHousing, baseContext ); + projectHousings.add( jellyScriptHousing ); p = p.getParent(); } @@ -609,12 +611,12 @@ { String goalName = (String) i.next(); - WerkzProject attainWerkzProject = buildWerkzProject( baseContext ); - for ( Iterator j = werkzProject.getGoals().iterator(); j.hasNext(); ) { - Goal goal = ( Goal ) j.next(); - attainWerkzProject.addGoal( goal ); + WerkzProject werkzProject = buildWerkzProject( baseContext ); + for ( Iterator j = projectHousings.iterator(); j.hasNext(); ) + { + JellyScriptHousing housing = ( JellyScriptHousing ) j.next(); + runJellyScriptHousing( housing, baseContext ); } - // Now at this point we should be able to use the name of a goal to lookup all // the plugins (that are stored in the plugin housings) that need to be executed // in order to satisfy all the required preconditions for successful goal attainment. @@ -625,6 +627,11 @@ { JellyScriptHousing housing = ( JellyScriptHousing ) j.next(); + if ( projectHousings.contains( housing ) ) + { + continue; + } + // FIXME: this is a bit nasty File pluginDirectory = housing.getProject().getFile().getParentFile(); // TODO [RC2] - integrate into original pluginContext @@ -648,10 +655,10 @@ runJellyScriptHousing( housing, pluginContext ); } - Goal goal = attainWerkzProject.getGoal( goalName ); + Goal goal = werkzProject.getGoal( goalName ); if ( goal == null ) { - // TODO [RC2] - how can we even get this far? resolve isn't working properly + // TODO [RC2] - shouldn't even get this far, but resolve is being faked throw new NoSuchGoalException( goalName ); } goal.attain( session ); @@ -820,8 +827,13 @@ } } - public Project getPluginProject( String id ) { + public Project getPluginProject( String id ) throws UnknownPluginException + { JellyPlugin plugin = (JellyPlugin) plugins.get( id ); + if ( plugin == null ) + { + throw new UnknownPluginException( id ); + } return plugin.getProject(); } No revision Index: PluginManager.java =================================================================== RCS file: /home/cvs/maven/src/java/org/apache/maven/plugin/PluginManager.java,v retrieving revision 1.70.4.5 retrieving revision 1.70.4.6 diff -u -r1.70.4.5 -r1.70.4.6 --- PluginManager.java 9 Dec 2003 23:41:16 -0000 1.70.4.5 +++ PluginManager.java 10 Dec 2003 23:08:44 -0000 1.70.4.6 @@ -543,8 +543,6 @@ // add the global session to the pluginContext so that it can be used by tags baseContext.setVariable( GLOBAL_SESSION_KEY, session ); - WerkzProject werkzProject = buildWerkzProject( baseContext ); - GoalToJellyScriptHousingMapper transientMapper = new GoalToJellyScriptHousingMapper(); // Execution of the Jelly scripts: @@ -563,6 +561,8 @@ // may wish to override so we guarantee precedence of the goals by running the jelly scripts // in the above mentioned order. + List projectHousings = new ArrayList(); + // driver.jelly InputStream driver = getClass().getResourceAsStream( "/driver.jelly" ); JellyScriptHousing driverHousing = createJellyScriptHousing( project, null, driver ); @@ -573,7 +573,8 @@ transientMapper.parse( driver, driverHousing ); driver.close(); // TODO [RC2] remove - otherwise it gets run twice - runJellyScriptHousing( driverHousing, baseContext ); + //runJellyScriptHousing( driverHousing, baseContext ); + projectHousings.add( driverHousing ); Project p = project; @@ -586,7 +587,8 @@ // TODO [RC2] stop reading all scripts 2 times transientMapper.parse( new FileInputStream( mavenXml ), jellyScriptHousing ); // TODO [RC2] remove - otherwise it gets run twice - runJellyScriptHousing( jellyScriptHousing, baseContext ); + //runJellyScriptHousing( jellyScriptHousing, baseContext ); + projectHousings.add( jellyScriptHousing ); p = p.getParent(); } @@ -609,12 +611,12 @@ { String goalName = (String) i.next(); - WerkzProject attainWerkzProject = buildWerkzProject( baseContext ); - for ( Iterator j = werkzProject.getGoals().iterator(); j.hasNext(); ) { - Goal goal = ( Goal ) j.next(); - attainWerkzProject.addGoal( goal ); + WerkzProject werkzProject = buildWerkzProject( baseContext ); + for ( Iterator j = projectHousings.iterator(); j.hasNext(); ) + { + JellyScriptHousing housing = ( JellyScriptHousing ) j.next(); + runJellyScriptHousing( housing, baseContext ); } - // Now at this point we should be able to use the name of a goal to lookup all // the plugins (that are stored in the plugin housings) that need to be executed // in order to satisfy all the required preconditions for successful goal attainment. @@ -625,6 +627,11 @@ { JellyScriptHousing housing = ( JellyScriptHousing ) j.next(); + if ( projectHousings.contains( housing ) ) + { + continue; + } + // FIXME: this is a bit nasty File pluginDirectory = housing.getProject().getFile().getParentFile(); // TODO [RC2] - integrate into original pluginContext @@ -648,10 +655,10 @@ runJellyScriptHousing( housing, pluginContext ); } - Goal goal = attainWerkzProject.getGoal( goalName ); + Goal goal = werkzProject.getGoal( goalName ); if ( goal == null ) { - // TODO [RC2] - how can we even get this far? resolve isn't working properly + // TODO [RC2] - shouldn't even get this far, but resolve is being faked throw new NoSuchGoalException( goalName ); } goal.attain( session ); @@ -820,8 +827,13 @@ } } - public Project getPluginProject( String id ) { + public Project getPluginProject( String id ) throws UnknownPluginException + { JellyPlugin plugin = (JellyPlugin) plugins.get( id ); + if ( plugin == null ) + { + throw new UnknownPluginException( id ); + } return plugin.getProject(); } 1.1.2.1 +90 -0 maven/src/java/org/apache/maven/plugin/Attic/UnknownPluginException.java No revision No revision 1.91.4.3 +5 -3 maven/src/java/org/apache/maven/project/Project.java Index: Project.java =================================================================== RCS file: /home/cvs/maven/src/java/org/apache/maven/project/Project.java,v retrieving revision 1.91.4.2 retrieving revision 1.91.4.3 diff -u -r1.91.4.2 -r1.91.4.3 --- Project.java 9 Dec 2003 23:34:50 -0000 1.91.4.2 +++ Project.java 10 Dec 2003 23:08:45 -0000 1.91.4.3 @@ -66,6 +66,7 @@ import org.apache.maven.MavenUtils; import org.apache.maven.jelly.MavenJellyContext; import org.apache.maven.plugin.PluginManager; +import org.apache.maven.plugin.UnknownPluginException; import org.apache.maven.repository.Artifact; import org.apache.maven.util.StringTool; import org.apache.maven.verifier.ChecksumVerificationException; @@ -360,8 +361,9 @@ * @todo [1.0] - when we are caching plugins, this should load on demand * @return The plugin context create for the named plugin when it was loaded for * this project. + * @throws UnknownPluginException if the plugin could not be found */ - public MavenJellyContext getPluginContext( String pluginId ) + public MavenJellyContext getPluginContext( String pluginId ) throws UnknownPluginException { PluginManager pluginManager = getContext().getMavenSession().getPluginManager(); Project plugin = pluginManager.getPluginProject( pluginId ); @@ -1364,7 +1366,7 @@ ChecksumVerificationException { // Only attempt to verify the dependencies if a project.xml file exists. - if ( getFile() != null ) + if ( getFile() != null && getFile().exists() ) { getDependencyVerifier().verify(); }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]