package org.skywalking.apm.sniffer.mock.trace.builders.span;
/**
* The <code>SpanGeneration</code> implementations can generate several kinds of spans.
*
* @author wusheng
*/
public abstract class SpanGeneration {
private SpanGeneration[] next;
public SpanGeneration build(SpanGeneration next) {
this.next = new SpanGeneration[] {next};
return next;
}
public void build(SpanGeneration... next) {
this.next = next;
}
protected abstract void before();
protected abstract void after();
public void generate() {
this.before();
if (next != null) {
for (SpanGeneration generation : next) {
generation.generate();
}
}
this.after();
}
}