提交 91f80263 编写于 作者: K kohsuke

Extension points can now contribute multiple actions.

git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@25771 71c3de6d-444a-0410-be80-ed276b4c234a
上级 230333df
...@@ -231,26 +231,14 @@ public class MatrixProject extends AbstractProject<MatrixProject,MatrixBuild> im ...@@ -231,26 +231,14 @@ public class MatrixProject extends AbstractProject<MatrixProject,MatrixBuild> im
synchronized(transientActions) { synchronized(transientActions) {
super.updateTransientActions(); super.updateTransientActions();
for (BuildStep step : builders) { for (BuildStep step : builders)
Action a = step.getProjectAction(this); transientActions.addAll(step.getProjectActions(this));
if(a!=null) for (BuildStep step : publishers)
transientActions.add(a); transientActions.addAll(step.getProjectActions(this));
} for (BuildWrapper step : buildWrappers)
for (BuildStep step : publishers) { transientActions.addAll(step.getProjectActions(this));
Action a = step.getProjectAction(this); for (Trigger trigger : triggers)
if(a!=null) transientActions.addAll(trigger.getProjectActions(this));
transientActions.add(a);
}
for (BuildWrapper step : buildWrappers) {
Action a = step.getProjectAction(this);
if(a!=null)
transientActions.add(a);
}
for (Trigger trigger : triggers) {
Action a = trigger.getProjectAction();
if(a!=null)
transientActions.add(a);
}
} }
} }
......
...@@ -487,9 +487,7 @@ public abstract class AbstractProject<P extends AbstractProject<P,R>,R extends A ...@@ -487,9 +487,7 @@ public abstract class AbstractProject<P extends AbstractProject<P,R>,R extends A
transientActions.clear(); transientActions.clear();
for (JobProperty<? super P> p : properties) { for (JobProperty<? super P> p : properties) {
Action a = p.getJobAction((P)this); transientActions.addAll(p.getJobActions((P)this));
if(a!=null)
transientActions.add(a);
} }
for (TransientProjectActionFactory tpaf : TransientProjectActionFactory.all()) for (TransientProjectActionFactory tpaf : TransientProjectActionFactory.all())
...@@ -830,7 +828,7 @@ public abstract class AbstractProject<P extends AbstractProject<P,R>,R extends A ...@@ -830,7 +828,7 @@ public abstract class AbstractProject<P extends AbstractProject<P,R>,R extends A
* <p> * <p>
* Note that this method returns a read-only view of {@link Action}s. * Note that this method returns a read-only view of {@link Action}s.
* {@link BuildStep}s and others who want to add a project action * {@link BuildStep}s and others who want to add a project action
* should do so by implementing {@link BuildStep#getProjectAction(AbstractProject)}. * should do so by implementing {@link BuildStep#getProjectActions(AbstractProject)}.
* *
* @see TransientProjectActionFactory * @see TransientProjectActionFactory
*/ */
......
...@@ -32,6 +32,8 @@ import hudson.tasks.Publisher; ...@@ -32,6 +32,8 @@ import hudson.tasks.Publisher;
import hudson.tasks.BuildStepMonitor; import hudson.tasks.BuildStepMonitor;
import java.io.IOException; import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
import org.kohsuke.stapler.export.ExportedBean; import org.kohsuke.stapler.export.ExportedBean;
...@@ -94,10 +96,18 @@ public abstract class JobProperty<J extends Job<?,?>> implements Describable<Job ...@@ -94,10 +96,18 @@ public abstract class JobProperty<J extends Job<?,?>> implements Describable<Job
} }
/** /**
* {@link Action} to be displayed in the job page. * @deprecated
* as of 1.341. Override {@link #getJobActions(Job)} instead.
*/
public Action getJobAction(J job) {
return null;
}
/**
* {@link Action}s to be displayed in the job page.
* *
* <p> * <p>
* Returning non-null from this method allows a job property to add an item * Returning actions from this method allows a job property to add them
* to the left navigation bar in the job page. * to the left navigation bar in the job page.
* *
* <p> * <p>
...@@ -108,13 +118,16 @@ public abstract class JobProperty<J extends Job<?,?>> implements Describable<Job ...@@ -108,13 +118,16 @@ public abstract class JobProperty<J extends Job<?,?>> implements Describable<Job
* Always the same as {@link #owner} but passed in anyway for backward compatibility (I guess.) * Always the same as {@link #owner} but passed in anyway for backward compatibility (I guess.)
* You really need not use this value at all. * You really need not use this value at all.
* @return * @return
* null if there's no such action. * can be empty but never null.
* @since 1.102 * @since 1.102
* @see ProminentProjectAction * @see ProminentProjectAction
* @see PermalinkProjectAction * @see PermalinkProjectAction
*/ */
public Action getJobAction(J job) { public Collection<? extends Action> getJobActions(J job) {
return null; // delegate to getJobAction (singular) for backward compatible behavior
Action a = getJobAction(job);
if (a==null) return Collections.emptyList();
return Collections.singletonList(a);
} }
// //
...@@ -146,4 +159,8 @@ public abstract class JobProperty<J extends Job<?,?>> implements Describable<Job ...@@ -146,4 +159,8 @@ public abstract class JobProperty<J extends Job<?,?>> implements Describable<Job
public final Action getProjectAction(AbstractProject<?,?> project) { public final Action getProjectAction(AbstractProject<?,?> project) {
return getJobAction((J)project); return getJobAction((J)project);
} }
public final Collection<? extends Action> getProjectActions(AbstractProject<?,?> project) {
return getJobActions((J)project);
}
} }
...@@ -26,6 +26,8 @@ package hudson.model; ...@@ -26,6 +26,8 @@ package hudson.model;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.AbstractList; import java.util.AbstractList;
...@@ -87,8 +89,8 @@ public class ParametersDefinitionProperty extends JobProperty<AbstractProject<?, ...@@ -87,8 +89,8 @@ public class ParametersDefinitionProperty extends JobProperty<AbstractProject<?,
} }
@Override @Override
public Action getJobAction(AbstractProject<?, ?> job) { public Collection<Action> getJobActions(AbstractProject<?, ?> job) {
return this; return Collections.<Action>singleton(this);
} }
public AbstractProject<?, ?> getProject() { public AbstractProject<?, ?> getProject() {
......
...@@ -28,7 +28,7 @@ import java.util.concurrent.CopyOnWriteArrayList; ...@@ -28,7 +28,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
/** /**
* Optional interface for {@link Action}s that are attached * Optional interface for {@link Action}s that are attached
* to {@link AbstractProject} (through {@link JobProperty#getJobAction(Job)}), * to {@link AbstractProject} (through {@link JobProperty#getJobActions(Job)}),
* which allows plugins to define additional permalinks in the project. * which allows plugins to define additional permalinks in the project.
* *
* <p> * <p>
......
...@@ -201,26 +201,14 @@ public abstract class Project<P extends Project<P,B>,B extends Build<P,B>> ...@@ -201,26 +201,14 @@ public abstract class Project<P extends Project<P,B>,B extends Build<P,B>>
synchronized(transientActions) { synchronized(transientActions) {
super.updateTransientActions(); super.updateTransientActions();
for (BuildStep step : getBuildersList()) { for (BuildStep step : getBuildersList())
Action a = step.getProjectAction(this); transientActions.addAll(step.getProjectActions(this));
if(a!=null) for (BuildStep step : getPublishersList())
transientActions.add(a); transientActions.addAll(step.getProjectActions(this));
} for (BuildWrapper step : getBuildWrappers().values())
for (BuildStep step : getPublishersList()) { transientActions.addAll(step.getProjectActions(this));
Action a = step.getProjectAction(this); for (Trigger trigger : getTriggers().values())
if(a!=null) transientActions.addAll(trigger.getProjectActions(this));
transientActions.add(a);
}
for (BuildWrapper step : getBuildWrappers().values()) {
Action a = step.getProjectAction(this);
if(a!=null)
transientActions.add(a);
}
for (Trigger trigger : getTriggers().values()) {
Action a = trigger.getProjectAction();
if(a!=null)
transientActions.add(a);
}
} }
} }
......
...@@ -35,10 +35,10 @@ import hudson.triggers.Trigger; ...@@ -35,10 +35,10 @@ import hudson.triggers.Trigger;
* are used to create a large, more visible icon in the top page to draw * are used to create a large, more visible icon in the top page to draw
* users' attention. * users' attention.
* *
* @see BuildStep#getProjectAction(AbstractProject) * @see BuildStep#getProjectActions(AbstractProject)
* @see BuildWrapper#getProjectAction(AbstractProject) * @see BuildWrapper#getProjectActions(AbstractProject)
* @see Trigger#getProjectAction() * @see Trigger#getProjectActions()
* @see JobProperty#getJobAction(Job) * @see JobProperty#getJobActions(Job)
* *
* @author Kohsuke Kawaguchi * @author Kohsuke Kawaguchi
*/ */
......
...@@ -39,6 +39,7 @@ import hudson.model.CheckPoint; ...@@ -39,6 +39,7 @@ import hudson.model.CheckPoint;
import hudson.model.Run; import hudson.model.Run;
import java.io.IOException; import java.io.IOException;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.AbstractList; import java.util.AbstractList;
import java.util.Iterator; import java.util.Iterator;
...@@ -101,7 +102,13 @@ public interface BuildStep { ...@@ -101,7 +102,13 @@ public interface BuildStep {
boolean perform(AbstractBuild<?,?> build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException; boolean perform(AbstractBuild<?,?> build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException;
/** /**
* Returns an action object if this {@link BuildStep} has an action * @deprecated as of 1.341.
* Use {@link #getProjectActions(AbstractProject)} instead.
*/
Action getProjectAction(AbstractProject<?,?> project);
/**
* Returns action objects if this {@link BuildStep} has actions
* to contribute to a {@link Project}. * to contribute to a {@link Project}.
* *
* <p> * <p>
...@@ -119,9 +126,9 @@ public interface BuildStep { ...@@ -119,9 +126,9 @@ public interface BuildStep {
* since {@link BuildStep} object doesn't usually have this "parent" pointer. * since {@link BuildStep} object doesn't usually have this "parent" pointer.
* *
* @return * @return
* null if there's no action to be contributed. * can be empty but never null.
*/ */
Action getProjectAction(AbstractProject<?,?> project); Collection<? extends Action> getProjectActions(AbstractProject<?,?> project);
/** /**
......
...@@ -34,6 +34,8 @@ import hudson.model.CheckPoint; ...@@ -34,6 +34,8 @@ import hudson.model.CheckPoint;
import hudson.Launcher; import hudson.Launcher;
import java.io.IOException; import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
/** /**
* Provides compatibility with {@link BuildStep} before 1.150 * Provides compatibility with {@link BuildStep} before 1.150
...@@ -67,6 +69,15 @@ public abstract class BuildStepCompatibilityLayer implements BuildStep { ...@@ -67,6 +69,15 @@ public abstract class BuildStepCompatibilityLayer implements BuildStep {
else else
return null; return null;
} }
public Collection<? extends Action> getProjectActions(AbstractProject<?, ?> project) {
// delegate to getJobAction (singular) for backward compatible behavior
Action a = getProjectAction(project);
if (a==null) return Collections.emptyList();
return Collections.singletonList(a);
}
// //
// old definitions < 1.150 // old definitions < 1.150
// //
......
...@@ -26,7 +26,6 @@ package hudson.tasks; ...@@ -26,7 +26,6 @@ package hudson.tasks;
import hudson.ExtensionPoint; import hudson.ExtensionPoint;
import hudson.Launcher; import hudson.Launcher;
import hudson.DescriptorExtensionList; import hudson.DescriptorExtensionList;
import hudson.FileSystemProvisionerDescriptor;
import hudson.LauncherDecorator; import hudson.LauncherDecorator;
import hudson.model.AbstractBuild; import hudson.model.AbstractBuild;
import hudson.model.Build; import hudson.model.Build;
...@@ -40,6 +39,8 @@ import hudson.model.Descriptor; ...@@ -40,6 +39,8 @@ import hudson.model.Descriptor;
import hudson.model.Run.RunnerAbortedException; import hudson.model.Run.RunnerAbortedException;
import java.io.IOException; import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
/** /**
* Pluggability point for performing pre/post actions for the build process. * Pluggability point for performing pre/post actions for the build process.
...@@ -187,11 +188,30 @@ public abstract class BuildWrapper implements ExtensionPoint, Describable<BuildW ...@@ -187,11 +188,30 @@ public abstract class BuildWrapper implements ExtensionPoint, Describable<BuildW
* @return * @return
* null if there's no such action. * null if there's no such action.
* @since 1.226 * @since 1.226
* @deprecated
* Use {@link #getProjectActions(AbstractProject)} instead.
*/ */
public Action getProjectAction(AbstractProject job) { public Action getProjectAction(AbstractProject job) {
return null; return null;
} }
/**
* {@link Action}s to be displayed in the job page.
*
* @param job
* This object owns the {@link BuildWrapper}. The returned action will be added to this object.
* @return
* can be empty but never null
* @since 1.341
*/
public Collection<? extends Action> getProjectActions(AbstractProject job) {
// delegate to getJobAction (singular) for backward compatible behavior
Action a = getProjectAction(job);
if (a==null) return Collections.emptyList();
return Collections.singletonList(a);
}
public Descriptor<BuildWrapper> getDescriptor() { public Descriptor<BuildWrapper> getDescriptor() {
return (Descriptor<BuildWrapper>) Hudson.getInstance().getDescriptorOrDie(getClass()); return (Descriptor<BuildWrapper>) Hudson.getInstance().getDescriptorOrDie(getClass());
......
...@@ -34,6 +34,8 @@ import hudson.model.Project; ...@@ -34,6 +34,8 @@ import hudson.model.Project;
import hudson.model.Descriptor; import hudson.model.Descriptor;
import hudson.model.Hudson; import hudson.model.Hudson;
import java.util.Collection;
/** /**
* {@link BuildStep}s that perform the actual build. * {@link BuildStep}s that perform the actual build.
* *
...@@ -56,13 +58,6 @@ public abstract class Builder extends BuildStepCompatibilityLayer implements Bui ...@@ -56,13 +58,6 @@ public abstract class Builder extends BuildStepCompatibilityLayer implements Bui
return true; return true;
} }
/**
* Default implementation that does nothing.
*/
public Action getProjectAction(Project project) {
return null;
}
/** /**
* Returns {@link BuildStepMonitor#NONE} by default, as {@link Builder}s normally don't depend * Returns {@link BuildStepMonitor#NONE} by default, as {@link Builder}s normally don't depend
* on its previous result. * on its previous result.
......
...@@ -40,6 +40,8 @@ import org.kohsuke.stapler.AncestorInPath; ...@@ -40,6 +40,8 @@ import org.kohsuke.stapler.AncestorInPath;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
/** /**
* Saves Javadoc for the project and publish them. * Saves Javadoc for the project and publish them.
...@@ -117,8 +119,8 @@ public class JavadocArchiver extends Recorder { ...@@ -117,8 +119,8 @@ public class JavadocArchiver extends Recorder {
} }
@Override @Override
public Action getProjectAction(AbstractProject project) { public Collection<Action> getProjectActions(AbstractProject project) {
return new JavadocAction(project); return Collections.<Action>singleton(new JavadocAction(project));
} }
public BuildStepMonitor getRequiredMonitorService() { public BuildStepMonitor getRequiredMonitorService() {
......
...@@ -55,6 +55,8 @@ import java.io.File; ...@@ -55,6 +55,8 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List; import java.util.List;
import net.sf.json.JSONObject; import net.sf.json.JSONObject;
...@@ -189,8 +191,8 @@ public class JUnitResultArchiver extends Recorder implements Serializable, ...@@ -189,8 +191,8 @@ public class JUnitResultArchiver extends Recorder implements Serializable,
} }
@Override @Override
public Action getProjectAction(AbstractProject<?, ?> project) { public Collection<Action> getProjectActions(AbstractProject<?, ?> project) {
return new TestResultProjectAction(project); return Collections.<Action>singleton(new TestResultProjectAction(project));
} }
public MatrixAggregator createAggregator(MatrixBuild build, public MatrixAggregator createAggregator(MatrixBuild build,
......
...@@ -43,6 +43,8 @@ import org.kohsuke.stapler.DataBoundConstructor; ...@@ -43,6 +43,8 @@ import org.kohsuke.stapler.DataBoundConstructor;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.PrintStream; import java.io.PrintStream;
import java.util.Collection;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -93,8 +95,8 @@ public class SCMTrigger extends Trigger<SCMedItem> { ...@@ -93,8 +95,8 @@ public class SCMTrigger extends Trigger<SCMedItem> {
} }
@Override @Override
public Action getProjectAction() { public Collection<? extends Action> getProjectActions() {
return new SCMAction(); return Collections.singleton(new SCMAction());
} }
/** /**
......
...@@ -107,11 +107,30 @@ public abstract class Trigger<J extends Item> implements Describable<Trigger<?>> ...@@ -107,11 +107,30 @@ public abstract class Trigger<J extends Item> implements Describable<Trigger<?>>
/** /**
* Returns an action object if this {@link Trigger} has an action * Returns an action object if this {@link Trigger} has an action
* to contribute to a {@link Project}. * to contribute to a {@link Project}.
*
* @deprecated as of 1.341
* Use {@link #getProjectActions()} instead.
*/ */
public Action getProjectAction() { public Action getProjectAction() {
return null; return null;
} }
/**
* {@link Action}s to be displayed in the job page.
*
* @param job
* This object owns the {@link BuildWrapper}. The returned action will be added to this object.
* @return
* can be empty but never null
* @since 1.341
*/
public Collection<? extends Action> getProjectActions() {
// delegate to getJobAction (singular) for backward compatible behavior
Action a = getProjectAction();
if (a==null) return Collections.emptyList();
return Collections.singletonList(a);
}
public TriggerDescriptor getDescriptor() { public TriggerDescriptor getDescriptor() {
return (TriggerDescriptor)Hudson.getInstance().getDescriptorOrDie(getClass()); return (TriggerDescriptor)Hudson.getInstance().getDescriptorOrDie(getClass());
} }
......
...@@ -72,11 +72,8 @@ public abstract class AbstractMavenProject<P extends AbstractProject<P,R>,R exte ...@@ -72,11 +72,8 @@ public abstract class AbstractMavenProject<P extends AbstractProject<P,R>,R exte
addTransientActionsFromBuild(getLastBuild(),added); addTransientActionsFromBuild(getLastBuild(),added);
addTransientActionsFromBuild(getLastSuccessfulBuild(),added); addTransientActionsFromBuild(getLastSuccessfulBuild(),added);
for (Trigger trigger : triggers) { for (Trigger trigger : triggers)
Action a = trigger.getProjectAction(); transientActions.addAll(trigger.getProjectActions());
if(a!=null)
transientActions.add(a);
}
} }
} }
......
...@@ -120,7 +120,7 @@ public interface MavenBuildProxy { ...@@ -120,7 +120,7 @@ public interface MavenBuildProxy {
/** /**
* Nominates that the reporter will contribute a project action * Nominates that the reporter will contribute a project action
* for this build by using {@link MavenReporter#getProjectAction(MavenModule)}. * for this build by using {@link MavenReporter#getProjectActions(MavenModule)}.
* *
* <p> * <p>
* The specified {@link MavenReporter} object will be transfered to the master * The specified {@link MavenReporter} object will be transfered to the master
......
...@@ -413,9 +413,7 @@ public final class MavenModule extends AbstractMavenProject<MavenModule,MavenBui ...@@ -413,9 +413,7 @@ public final class MavenModule extends AbstractMavenProject<MavenModule,MavenBui
for (MavenReporter step : list) { for (MavenReporter step : list) {
if(!added.add(step.getClass())) continue; // already added if(!added.add(step.getClass())) continue; // already added
try { try {
Action a = step.getProjectAction(this); transientActions.addAll(step.getProjectActions(this));
if(a!=null)
transientActions.add(a);
} catch (Exception e) { } catch (Exception e) {
LOGGER.log(Level.WARNING, "Failed to getProjectAction from " + step LOGGER.log(Level.WARNING, "Failed to getProjectAction from " + step
+ ". Report issue to plugin developers.", e); + ". Report issue to plugin developers.", e);
......
...@@ -202,18 +202,12 @@ public final class MavenModuleSet extends AbstractMavenProject<MavenModuleSet,Ma ...@@ -202,18 +202,12 @@ public final class MavenModuleSet extends AbstractMavenProject<MavenModuleSet,Ma
module.updateTransientActions(); module.updateTransientActions();
} }
if(publishers!=null) // this method can be loaded from within the onLoad method, where this might be null if(publishers!=null) // this method can be loaded from within the onLoad method, where this might be null
for (BuildStep step : publishers) { for (BuildStep step : publishers)
Action a = step.getProjectAction(this); transientActions.addAll(step.getProjectActions(this));
if(a!=null)
transientActions.add(a);
}
if (buildWrappers!=null) if (buildWrappers!=null)
for (BuildWrapper step : buildWrappers) { for (BuildWrapper step : buildWrappers)
Action a = step.getProjectAction(this); transientActions.addAll(step.getProjectActions(this));
if(a!=null)
transientActions.add(a);
}
} }
protected void addTransientActionsFromBuild(MavenModuleSetBuild build, Set<Class> added) { protected void addTransientActionsFromBuild(MavenModuleSetBuild build, Set<Class> added) {
......
...@@ -40,6 +40,8 @@ import org.apache.maven.reporting.MavenReport; ...@@ -40,6 +40,8 @@ import org.apache.maven.reporting.MavenReport;
import java.io.IOException; import java.io.IOException;
import java.io.Serializable; import java.io.Serializable;
import java.util.Collection;
import java.util.Collections;
/** /**
* Listens to the build execution of {@link MavenBuild}, * Listens to the build execution of {@link MavenBuild},
...@@ -261,11 +263,40 @@ public abstract class MavenReporter implements Describable<MavenReporter>, Exten ...@@ -261,11 +263,40 @@ public abstract class MavenReporter implements Describable<MavenReporter>, Exten
* *
* @return * @return
* null not to contribute an action, which is the default. * null not to contribute an action, which is the default.
* @deprecated as of 1.341
* Use {@link #getProjectActions(MavenModule)} instead.
*/ */
public Action getProjectAction(MavenModule module) { public Action getProjectAction(MavenModule module) {
return null; return null;
} }
/**
* Equivalent of {@link BuildStep#getProjectActions(AbstractProject)}
* for {@link MavenReporter}.
*
* <p>
* Registers a transient action to {@link MavenModule} when it's rendered.
* This is useful if you'd like to display an action at the module level.
*
* <p>
* Since this contributes a transient action, the returned {@link Action}
* will not be serialized.
*
* <p>
* For this method to be invoked, your {@link MavenReporter} has to invoke
* {@link MavenBuildProxy#registerAsProjectAction(MavenReporter)} during the build.
*
* @return
* can be empty but never null.
* @since 1.341
*/
public Collection<? extends Action> getProjectActions(MavenModule module) {
// delegate to getProjectAction (singular) for backward compatible behavior
Action a = getProjectAction(module);
if (a==null) return Collections.emptyList();
return Collections.singletonList(a);
}
/** /**
* Works like {@link #getProjectAction(MavenModule)} but * Works like {@link #getProjectAction(MavenModule)} but
* works at {@link MavenModuleSet} level. * works at {@link MavenModuleSet} level.
......
...@@ -42,6 +42,8 @@ import org.codehaus.plexus.component.configurator.ComponentConfigurationExceptio ...@@ -42,6 +42,8 @@ import org.codehaus.plexus.component.configurator.ComponentConfigurationExceptio
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
/** /**
* Records the javadoc and archives it. * Records the javadoc and archives it.
...@@ -107,8 +109,8 @@ public class MavenJavadocArchiver extends MavenReporter { ...@@ -107,8 +109,8 @@ public class MavenJavadocArchiver extends MavenReporter {
return postExecute(build,pom,report,listener,null); return postExecute(build,pom,report,listener,null);
} }
public Action getProjectAction(MavenModule project) { public Collection<? extends Action> getProjectActions(MavenModule project) {
return new JavadocAction(project); return Collections.singleton(new JavadocAction(project));
} }
public Action getAggregatedProjectAction(MavenModuleSet project) { public Action getAggregatedProjectAction(MavenModuleSet project) {
......
...@@ -43,6 +43,8 @@ import org.codehaus.plexus.component.configurator.ComponentConfigurationExceptio ...@@ -43,6 +43,8 @@ import org.codehaus.plexus.component.configurator.ComponentConfigurationExceptio
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
/** /**
* Watches out for the execution of maven-site-plugin and records its output. * Watches out for the execution of maven-site-plugin and records its output.
...@@ -84,8 +86,8 @@ public class MavenSiteArchiver extends MavenReporter { ...@@ -84,8 +86,8 @@ public class MavenSiteArchiver extends MavenReporter {
} }
public Action getProjectAction(MavenModule project) { public Collection<? extends Action> getProjectActions(MavenModule project) {
return new SiteAction(project); return Collections.singleton(new SiteAction(project));
} }
public Action getAggregatedProjectAction(MavenModuleSet project) { public Action getAggregatedProjectAction(MavenModuleSet project) {
......
...@@ -47,6 +47,8 @@ import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration; ...@@ -47,6 +47,8 @@ import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
/** /**
* Records the surefire test result. * Records the surefire test result.
...@@ -122,8 +124,8 @@ public class SurefireArchiver extends MavenReporter { ...@@ -122,8 +124,8 @@ public class SurefireArchiver extends MavenReporter {
} }
public Action getProjectAction(MavenModule module) { public Collection<? extends Action> getProjectActions(MavenModule module) {
return new TestResultProjectAction(module); return Collections.singleton(new TestResultProjectAction(module));
} }
private boolean isSurefireTest(MojoInfo mojo) { private boolean isSurefireTest(MojoInfo mojo) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册