Skip to content

Commit af477ab

Browse files
committed
Decorators were being applied backwards.
1 parent fbcd60f commit af477ab

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

src/main/java/org/jenkinsci/plugins/workflow/log/TaskListenerDecorator.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import java.io.Serializable;
4040
import java.io.UnsupportedEncodingException;
4141
import java.util.ArrayList;
42+
import java.util.Collections;
4243
import java.util.List;
4344
import java.util.Objects;
4445
import java.util.logging.Level;
@@ -158,6 +159,7 @@ public static BuildListener apply(@Nonnull TaskListener listener, @Nonnull FlowE
158159
if (decorators.isEmpty()) {
159160
return BuildListenerAdapter.wrap(listener);
160161
} else {
162+
Collections.reverse(decorators);
161163
return new DecoratedTaskListener(listener, decorators);
162164
}
163165
}
@@ -175,7 +177,12 @@ private static class MergedTaskListenerDecorator extends TaskListenerDecorator {
175177
}
176178

177179
@Override public OutputStream decorate(OutputStream logger) throws IOException, InterruptedException {
178-
return subsequent.decorate(original.decorate(logger));
180+
// TODO BodyInvoker.MergedFilter probably has these backwards
181+
return original.decorate(subsequent.decorate(logger));
182+
}
183+
184+
@Override public String toString() {
185+
return "MergedTaskListenerDecorator[" + subsequent + ", " + original + "]";
179186
}
180187

181188
}
@@ -197,6 +204,10 @@ private static class ConsoleLogFilterAdapter extends TaskListenerDecorator {
197204
return filter.decorateLogger((AbstractBuild) null, logger);
198205
}
199206

207+
@Override public String toString() {
208+
return "ConsoleLogFilter[" + filter + "]";
209+
}
210+
200211
}
201212

202213
private static final class DecoratedTaskListener implements BuildListener {
@@ -211,7 +222,7 @@ private static final class DecoratedTaskListener implements BuildListener {
211222

212223
/**
213224
* A (nonempty) list of decorators we delegate to.
214-
* They are applied in order, so the last one “wins”.
225+
* They are applied in reverse order, so the first one has the final say in what gets printed.
215226
*/
216227
private final @Nonnull List<TaskListenerDecorator> decorators;
217228

@@ -243,6 +254,10 @@ private static final class DecoratedTaskListener implements BuildListener {
243254
return logger;
244255
}
245256

257+
@Override public String toString() {
258+
return "DecoratedTaskListener[" + delegate + decorators + "]";
259+
}
260+
246261
}
247262

248263
}

0 commit comments

Comments
 (0)