AbstractCatalog.java

/*
 * SPDX-FileCopyrightText: none
 * SPDX-License-Identifier: CC0-1.0
 */

package gov.nist.secauto.oscal.lib.model.control.catalog;

import gov.nist.secauto.metaschema.core.util.CollectionUtil;
import gov.nist.secauto.metaschema.core.util.ObjectUtils;
import gov.nist.secauto.oscal.lib.model.AbstractOscalInstance;
import gov.nist.secauto.oscal.lib.model.control.AbstractParameter;

import java.util.stream.Stream;

import edu.umd.cs.findbugs.annotations.NonNull;

public abstract class AbstractCatalog
    extends AbstractOscalInstance
    implements ICatalog {

  @NonNull
  @Override
  public Stream<String> getReferencedParameterIds() {
    // get parameters referenced by the control's parameters
    return ObjectUtils.notNull(
        CollectionUtil.listOrEmpty(getParams()).stream()
            .flatMap(ObjectUtils::filterNull)
            .flatMap(AbstractParameter::getParameterReferences)
            .distinct());
  }
}