View Javadoc
1   /*
2    * Licensed to The Apereo Foundation under one or more contributor license
3    * agreements. See the NOTICE file distributed with this work for additional
4    * information regarding copyright ownership.
5    *
6    *
7    * The Apereo Foundation licenses this file to you under the Educational
8    * Community License, Version 2.0 (the "License"); you may not use this file
9    * except in compliance with the License. You may obtain a copy of the License
10   * at:
11   *
12   *   http://opensource.org/licenses/ecl2.txt
13   *
14   * Unless required by applicable law or agreed to in writing, software
15   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
17   * License for the specific language governing permissions and limitations under
18   * the License.
19   *
20   */
21  package org.opencastproject.assetmanager.api;
22  
23  import org.opencastproject.util.Checksum;
24  import org.opencastproject.util.MimeType;
25  
26  import java.io.InputStream;
27  import java.util.Optional;
28  
29  /**
30   * An asset is a {@link org.opencastproject.mediapackage.MediaPackageElement}
31   * under the control of the {@link AssetManager}.
32   */
33  public interface Asset {
34    /** Return the identifier of the asset. */
35    AssetId getId();
36  
37    /**
38     * Return a stream to the asset data. A client is responsible of closing the stream after consumption.
39     * Use the <i>try with resource</i> construct which is available from Java 7 onwards if possible.
40     * <p>
41     * If the asset is currently not {@linkplain #getAvailability() available} an empty input stream is
42     * returned.
43     */
44    InputStream getInputStream();
45  
46    /** Mime type of the asset. */
47    Optional<MimeType> getMimeType();
48  
49    /** Size of the asset in bytes. */
50    long getSize();
51  
52    /** Tell about the availability of the asset. */
53    Availability getAvailability();
54  
55    /** Get the store ID of the asset store where this snapshot currently lives */
56    String getStorageId();
57  
58    /** Get the checksum */
59    Checksum getChecksum();
60  }