001/*
002 * SPDX-FileCopyrightText: none
003 * SPDX-License-Identifier: CC0-1.0
004 */
005
006package dev.metaschema.oscal.lib.profile.resolver.support;
007
008import java.util.Set;
009
010import dev.metaschema.core.metapath.item.node.IRootAssemblyNodeItem;
011import dev.metaschema.oscal.lib.profile.resolver.support.IEntityItem.ItemType;
012import edu.umd.cs.findbugs.annotations.NonNull;
013
014/**
015 * A visitor that walks a catalog visiting controls and parameters.
016 */
017public class ControlIndexingVisitor
018    extends AbstractIndexingVisitor<IIndexer, Void> {
019
020  public ControlIndexingVisitor(@NonNull Set<ItemType> itemTypesToIndex) {
021    super(itemTypesToIndex);
022  }
023
024  @SuppressWarnings("null")
025  @Override
026  protected IIndexer getIndexer(IIndexer state) {
027    return state;
028  }
029
030  @Override
031  protected Void newDefaultResult(IIndexer state) {
032    return null;
033  }
034
035  @Override
036  protected Void aggregateResults(Void first, Void second, IIndexer state) {
037    return null;
038  }
039
040  public void visitProfile(@NonNull IRootAssemblyNodeItem root, @NonNull IIndexer index) {
041    visitMetadata(root, index);
042    visitBackMatter(root, index);
043  }
044}