package com.capgemini.reports.bomlineholder.visitor;

import com.capgemini.reports.bomlineholder.BOMLineHolder;

import java.io.Serializable;

/**
 * Extractor of {@link BOMLineHolder} data. Can Extract objects to produce an output. <br>
 * Produces a custom T object.
 *
 * @param <T> the output object Type
 */
public interface IBOMLineHolderExtractor<T> extends Serializable {

    /**
     * Visit the Top element of the Bom.
     *
     * @param aBomLineHolder
     * @return the produced object (if any)
     */
    T visitTopReceptorBom(final BOMLineHolder aBomLineHolder);

}
