001 /* 002 * Jpkg - Java library and tools for operating system package creation. 003 * 004 * Copyright (c) 2007 Three Rings Design, Inc. 005 * All rights reserved. 006 * 007 * Redistribution and use in source and binary forms, with or without 008 * modification, are permitted provided that the following conditions 009 * are met: 010 * 1. Redistributions of source code must retain the above copyright 011 * notice, this list of conditions and the following disclaimer. 012 * 2. Redistributions in binary form must reproduce the above copyright 013 * notice, this list of conditions and the following disclaimer in the 014 * documentation and/or other materials provided with the distribution. 015 * 3. Neither the name of the copyright owner nor the names of contributors 016 * may be used to endorse or promote products derived from this software 017 * without specific prior written permission. 018 * 019 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 020 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 021 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 022 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 023 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 024 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 025 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 026 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 027 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 028 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 029 * POSSIBILITY OF SUCH DAMAGE. 030 */ 031 package com.threerings.jpkg.ar; 032 033 import java.io.File; 034 import java.io.IOException; 035 import java.io.InputStream; 036 037 /** 038 * An object which represents data which can be added to an {@link Archive}. 039 */ 040 public interface ArchiveEntry 041 { 042 /** 043 * Returns an {@link InputStream} from the data contained in this entry. 044 */ 045 public InputStream getInputStream () throws IOException; 046 047 /** 048 * Returns the size of the data contained in this entry in bytes. An {@link Archive} can only 049 * store data whose size can be expressed in a 32 bit integer however the interface allows 050 * size to be expressed as a long to support for example {@link File} objects. The 051 * {@link Archive} class will guarantee that the size returned by this method can be converted 052 * safely into a 32 bit integer. 053 */ 054 public long getSize (); 055 056 /** 057 * Returns the path name used to identify this entry in the archive. 058 * Must be 15 characters or less. 059 */ 060 public String getPath (); 061 062 /** 063 * Returns the user id which will own this entry in the archive. 064 */ 065 public int getUserId (); 066 067 /** 068 * Returns the group id which will own this entry in the archive. 069 */ 070 public int getGroupId (); 071 072 /** 073 * Returns the file permissions mode (e.g. 0644) for this entry in the archive. 074 */ 075 public int getMode (); 076 }