IModelInstanceReadHandler.java

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

package gov.nist.secauto.metaschema.databind.model.info;

import java.io.IOException;
import java.util.List;
import java.util.Map;

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

public interface IModelInstanceReadHandler<ITEM> {
  @Nullable
  default ITEM readSingleton() throws IOException {
    return readItem();
  }

  @NonNull
  List<ITEM> readList() throws IOException;

  @NonNull
  Map<String, ITEM> readMap() throws IOException;

  /**
   * Read the next item in the collection of items represented by the instance.
   *
   * @return the Java object representing the item, or {@code null} if no items
   *         remain to be read
   * @throws IOException
   *           if an error occurred while parsing the input
   */
  ITEM readItem() throws IOException;

  @Nullable
  String getJsonKeyFlagName();
}