Package org.jenkinsci.plugins.tokenmacro
Class DataBoundTokenMacro
- java.lang.Object
-
- org.jenkinsci.plugins.tokenmacro.TokenMacro
-
- org.jenkinsci.plugins.tokenmacro.DataBoundTokenMacro
-
- All Implemented Interfaces:
hudson.ExtensionPoint
- Direct Known Subclasses:
AbstractChangesSinceMacro,BuildCauseMacro,BuildLogExcerptMacro,BuildLogMacro,BuildLogMultilineRegexMacro,BuildLogRegexMacro,BuildStatusMacro,ChangesSinceLastBuildMacro,EnvironmentVariableMacro,JenkinsUrlMacro,JobDescriptionMacro,JsonFileMacro,LogRegExMacro,ProjectNameMacro,ProjectUrlMacro,PropertyFromFileMacro,UpstreamRunNameMacro,WorkspaceFileMacro,XmlFileMacro
public abstract class DataBoundTokenMacro extends TokenMacro
Convenient base class for implementingTokenMacrothat does parameter databinding to fields.When you define your token macro as a subtype of this class, a fresh instance is created for each evaluation, and fields or setters with the
DataBoundTokenMacro.Parameterannotation will receive the corresponding parameter values, then theevaluate(AbstractBuild, TaskListener, String)method gets invoked.In this way, you simplify the parameter parsing and type conversion overhead.
- Author:
- Kohsuke Kawaguchi
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceDataBoundTokenMacro.Parameter
-
Constructor Summary
Constructors Constructor Description DataBoundTokenMacro()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract Stringevaluate(hudson.model.AbstractBuild<?,?> context, hudson.model.TaskListener listener, String macroName)Stringevaluate(hudson.model.AbstractBuild<?,?> build, hudson.model.TaskListener listener, String macroName, Map<String,String> arguments, com.google.common.collect.ListMultimap<String,String> argumentMultimap)Evaluates the macro and produces the token.Stringevaluate(hudson.model.Run<?,?> run, hudson.FilePath workspace, hudson.model.TaskListener listener, String macroName)Stringevaluate(hudson.model.Run<?,?> run, hudson.FilePath workspace, hudson.model.TaskListener listener, String macroName, Map<String,String> arguments, com.google.common.collect.ListMultimap<String,String> argumentMultimap)booleanhasNestedContent()Returns true if this object allows for nested content replacements.-
Methods inherited from class org.jenkinsci.plugins.tokenmacro.TokenMacro
acceptsMacroName, all, expand, expand, expand, expand, expandAll, expandAll, expandAll, expandAll, getAcceptedMacroNames, getAutoCompleteList, getPreviousRun, getWorkspace
-
-
-
-
Method Detail
-
evaluate
public String evaluate(hudson.model.AbstractBuild<?,?> build, hudson.model.TaskListener listener, String macroName, Map<String,String> arguments, com.google.common.collect.ListMultimap<String,String> argumentMultimap) throws MacroEvaluationException, IOException, InterruptedException
Description copied from class:TokenMacroEvaluates the macro and produces the token.Locale
If the token is to produce a human readable text, it should do so by using the implicit locale associated with the calling thread — see
Functions.getCurrentLocale().- Specified by:
evaluatein classTokenMacro- Parameters:
build- The build object for which this macro is evaluated.listener- If the progress/status needs to be reported to the build console output, this object can be used.macroName- The macro name that you acceptedarguments- Arguments as a map. If multiple values are specified for one key, this will only retain the last one. This is passed in separately fromargumentMultimapbecauseargumentMultimap- The same arguments, but in a multi-map. If multiple values are specified for one key, all of them are retained here in the order of appearance. For those macros that support multiple values for the same key this is more accurate thanarguments, but it's bit more tedious to use.- Returns:
- The result of the evaluation. Must not be null.
- Throws:
MacroEvaluationException- If the evaluation failed, for example because of the parameter error, and that the error message should be presented.IOException- Other fatalIOExceptions that should leave the stack trace in the console.InterruptedException- If the evaluation involves some remoting operation, user might cancel the build, which results in anInterruptedException. Don't catch it, just propagate.
-
evaluate
public String evaluate(hudson.model.Run<?,?> run, hudson.FilePath workspace, hudson.model.TaskListener listener, String macroName, Map<String,String> arguments, com.google.common.collect.ListMultimap<String,String> argumentMultimap) throws MacroEvaluationException, IOException, InterruptedException
- Overrides:
evaluatein classTokenMacro- Throws:
MacroEvaluationExceptionIOExceptionInterruptedException
-
evaluate
public abstract String evaluate(hudson.model.AbstractBuild<?,?> context, hudson.model.TaskListener listener, String macroName) throws MacroEvaluationException, IOException, InterruptedException
-
evaluate
public String evaluate(hudson.model.Run<?,?> run, hudson.FilePath workspace, hudson.model.TaskListener listener, String macroName) throws MacroEvaluationException, IOException, InterruptedException
-
hasNestedContent
public boolean hasNestedContent()
Description copied from class:TokenMacroReturns true if this object allows for nested content replacements.- Overrides:
hasNestedContentin classTokenMacro- Returns:
- true
... to have the replaced text passed again to
TokenMacro.expand(AbstractBuild, TaskListener, String)for additional expansion.
-
-