View Javadoc
1   /*
2    * SPDX-FileCopyrightText: Copyright (c) 2012-2025 Yegor Bugayenko
3    * SPDX-License-Identifier: MIT
4    */
5   package com.jcabi.manifests;
6   
7   import java.io.File;
8   import java.io.IOException;
9   import java.io.InputStream;
10  import java.util.ArrayList;
11  import java.util.Collection;
12  import java.util.Collections;
13  
14  /**
15   * Manifests in files.
16   *
17   * Append attributes from {@code MANIFEST.MF} file:
18   *
19   * <pre> Manifests.append(new FilesMfs(new File("MANIFEST.MF")));</pre>
20   *
21   * <p>The class is immutable and thread-safe.
22   *
23   * @since 1.1
24   */
25  public final class FilesMfs implements Mfs {
26  
27      /**
28       * Files.
29       */
30      private final transient Collection<File> files;
31  
32      /**
33       * Ctor.
34       * @param file File
35       */
36      public FilesMfs(final File file) {
37          this(Collections.singleton(file));
38      }
39  
40      /**
41       * Ctor.
42       * @param list Files
43       */
44      public FilesMfs(final Collection<File> list) {
45          this.files = Collections.unmodifiableCollection(list);
46      }
47  
48      @Override
49      public Collection<InputStream> fetch() throws IOException {
50          final Collection<InputStream> streams = new ArrayList<>(1);
51          for (final File file : this.files) {
52              streams.add(file.toURI().toURL().openStream());
53          }
54          return streams;
55      }
56  
57  }