// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.yolean.trace; /** *

This class is an abstract visitor of {@link TraceNode}. See {@link TraceNode#accept(TraceVisitor)}.

* * @author bratseth * @since 5.1.15 */ public abstract class TraceVisitor { /** *

Visits a {@link TraceNode}. Called by {@link TraceNode#accept(TraceVisitor)}, before visiting its * children.

* * @param node the TraceNode being visited * @see TraceNode#accept(TraceVisitor) */ public abstract void visit(TraceNode node); /** *

Enters a {@link TraceNode}. This method is called after {@link #visit(TraceNode)}, but before visiting its * children. Note that this method is NOT called if a TraceNode has zero children.

*

The default implementation of this method does nothing.

* * @param node the TraceNode being entered * @see #leaving(TraceNode) */ @SuppressWarnings("UnusedParameters") public void entering(TraceNode node) { // empty } /** *

Leaves a {@link TraceNode}. This method is called after {@link #entering(TraceNode)}, and after visiting its * children. Note that this method is NOT called if a TraceNode has zero children.

*

The default implementation of this method does nothing.

* * @param node the TraceNode being left */ @SuppressWarnings("UnusedParameters") public void leaving(TraceNode node) { // empty } }