001/*
002 * CDDL HEADER START
003 *
004 * The contents of this file are subject to the terms of the
005 * Common Development and Distribution License, Version 1.0 only
006 * (the "License").  You may not use this file except in compliance
007 * with the License.
008 *
009 * You can obtain a copy of the license at
010 * docs/licenses/cddl.txt
011 * or http://www.opensource.org/licenses/cddl1.php.
012 * See the License for the specific language governing permissions
013 * and limitations under the License.
014 *
015 * When distributing Covered Code, include this CDDL HEADER in each
016 * file and include the License file at
017 * docs/licenses/cddl.txt.  If applicable,
018 * add the following below this CDDL HEADER, with the fields enclosed
019 * by brackets "[]" replaced with your own identifying information:
020 *      Portions Copyright [yyyy] [name of copyright owner]
021 *
022 * CDDL HEADER END
023 *
024 *
025 *      Portions Copyright 2022-2023 Ping Identity Corporation
026 */
027package com.unboundid.directory.sdk.ds.types;
028
029
030
031import java.io.IOException;
032
033import com.unboundid.directory.sdk.common.types.Entry;
034import com.unboundid.ldap.sdk.Attribute;
035import com.unboundid.util.NotNull;
036import com.unboundid.util.Nullable;
037import com.unboundid.util.ThreadSafety;
038import com.unboundid.util.ThreadSafetyLevel;
039
040
041
042/**
043 * This interface defines a method that a data security auditor may be used to
044 * report any issues identified with a given entry.
045 */
046@ThreadSafety(level=ThreadSafetyLevel.INTERFACE_THREADSAFE)
047public interface DataSecurityAuditorEntryReporter
048{
049  /**
050   * Reports the provided entry has having one or more issues identified by a
051   * data security auditor.
052   *
053   * @param  entryToReport             The entry with for which the issues were
054   *                                   identified.
055   * @param  auditSeverity             The severity to use for the reported
056   *                                   issue(s).  It must not be {@code null}.
057   * @param  objectClasses             The set of object classes to use for the
058   *                                   entry included in the report.  It must
059   *                                   not be {@code null} or empty.
060   * @param  attributesForReportEntry  A set of attributes to use for the entry
061   *                                   included in the report.  It may be
062   *                                   {@code null} or empty if the report entry
063   *                                   does not require any additional
064   *                                   attributes other than those that will be
065   *                                   automatically generated.
066   *
067   * @throws  IOException  If a problem occurs while attempting to write the
068   *                       generated entry to the report file.
069   */
070  void reportEntry(@NotNull final Entry entryToReport,
071                   @NotNull final AuditSeverity auditSeverity,
072                   @NotNull final String[] objectClasses,
073                   @Nullable final Attribute... attributesForReportEntry)
074       throws IOException;
075}