![]() |
|
|
|
|
Change By:
|
David Eckel
(06/Oct/14 6:50 PM)
|
|
Description:
|
EnvInject throws a StringIndexOutOfBoundsException in BuildCauseRetriever.getTriggeredCause if the class that triggered it was anonymous. This is because getTriggerName uses cause.getClass().getSimpleName(), which returns an empty string for anonymous classes, empty strings are skipped when getTriggeredCause iterates over build causes, but it always assumes that there is at least one non-empty build cause.
To reproduce, create a trigger that uses an anonymous Cause like this: {code} private static void scheduleBuild(BuildableItem job) { job.scheduleBuild(new Cause() { @Override public String getShortDescription() { return "Triggered by XYZ"; } }); } {code}
To work around this, the above snippet can be rewritten to avoid the anonymous class: {code} private static void scheduleBuild(BuildableItem job) { job.scheduleBuild(new XyzCause()); }
private static class XyzCause extends Cause { @Override public String getShortDescription() { return "Triggered by XYZ"; } } {code}
I'm not sure which fix would be most consistent with the intent of the ENV_CAUSE variable for custom triggers. I see these options: - Skip setting an ENV_CAUSE, possibly log a warning - Use the parent class as the trigger name - make the trigger "ANONYMOUSTRIGGER", possibly prefixed by the parent class
|
|
|
|
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators.
For more information on JIRA, see: http://www.atlassian.com/software/jira
|
--
You received this message because you are subscribed to the Google Groups "Jenkins Issues" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
[email protected].
For more options, visit
https://groups.google.com/d/optout.