package org.checkerframework.framework.stub;

import java.io.IOException;
import java.io.InputStream;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;

/** {@link JarEntry}-based implementation of {@link AnnotationFileResource}. */
public class JarEntryAnnotationFileResource implements AnnotationFileResource {
  /** The underlying JarFile. */
  private final JarFile file;

  /** The entry in the jar file. */
  private final JarEntry entry;

  /**
   * Constructs a {@code AnnotationFileResource} for the specified entry in the specified JAR file.
   *
   * @param file the JAR file
   * @param entry the JAR entry
   */
  public JarEntryAnnotationFileResource(JarFile file, JarEntry entry) {
    this.file = file;
    this.entry = entry;
  }

  @Override
  public String getDescription() {
    return file.getName() + "!" + entry.getName();
  }

  @Override
  public InputStream getInputStream() throws IOException {
    return file.getInputStream(entry);
  }
}
