001/* 002 * SPDX-FileCopyrightText: none 003 * SPDX-License-Identifier: CC0-1.0 004 */ 005 006package dev.metaschema.oscal.lib.model.control.catalog; 007 008import java.util.stream.Stream; 009 010import dev.metaschema.core.util.CollectionUtil; 011import dev.metaschema.core.util.ObjectUtils; 012import dev.metaschema.oscal.lib.model.AbstractOscalInstance; 013import dev.metaschema.oscal.lib.model.control.AbstractParameter; 014import edu.umd.cs.findbugs.annotations.NonNull; 015 016public abstract class AbstractCatalog 017 extends AbstractOscalInstance 018 implements ICatalog { 019 020 @NonNull 021 @Override 022 public Stream<String> getReferencedParameterIds() { 023 // get parameters referenced by the control's parameters 024 return ObjectUtils.notNull( 025 CollectionUtil.listOrEmpty(getParams()).stream() 026 .flatMap(ObjectUtils::filterNull) 027 .flatMap(AbstractParameter::getParameterReferences) 028 .distinct()); 029 } 030}