622ff17383321051701ee40ff79a6ae3473234e9
[vamsas.git] / src / org / apache / tools / zip / ZipExtraField.java
1 /*
2  *  Licensed to the Apache Software Foundation (ASF) under one or more
3  *  contributor license agreements.  See the NOTICE file distributed with
4  *  this work for additional information regarding copyright ownership.
5  *  The ASF licenses this file to You under the Apache License, Version 2.0
6  *  (the "License"); you may not use this file except in compliance with
7  *  the License.  You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *  Unless required by applicable law or agreed to in writing, software
12  *  distributed under the License is distributed on an "AS IS" BASIS,
13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *  See the License for the specific language governing permissions and
15  *  limitations under the License.
16  *
17  */
18
19 package org.apache.tools.zip;
20
21 import java.util.zip.ZipException;
22
23 /**
24  * General format of extra field data.
25  *
26  * <p>Extra fields usually appear twice per file, once in the local
27  * file data and once in the central directory.  Usually they are the
28  * same, but they don't have to be.  {@link
29  * java.util.zip.ZipOutputStream java.util.zip.ZipOutputStream} will
30  * only use the local file data in both places.</p>
31  *
32  */
33 public interface ZipExtraField {
34
35     /**
36      * The Header-ID.
37      * @return the header id
38      * @since 1.1
39      */
40     ZipShort getHeaderId();
41
42     /**
43      * Length of the extra field in the local file data - without
44      * Header-ID or length specifier.
45      * @return the length of the field in the local file data
46      * @since 1.1
47      */
48     ZipShort getLocalFileDataLength();
49
50     /**
51      * Length of the extra field in the central directory - without
52      * Header-ID or length specifier.
53      * @return the length of the field in the central directory
54      * @since 1.1
55      */
56     ZipShort getCentralDirectoryLength();
57
58     /**
59      * The actual data to put into local file data - without Header-ID
60      * or length specifier.
61      * @return the data
62      * @since 1.1
63      */
64     byte[] getLocalFileDataData();
65
66     /**
67      * The actual data to put central directory - without Header-ID or
68      * length specifier.
69      * @return the data
70      * @since 1.1
71      */
72     byte[] getCentralDirectoryData();
73
74     /**
75      * Populate data from this array as if it was in local file data.
76      * @param data an array of bytes
77      * @param offset the start offset
78      * @param length the number of bytes in the array from offset
79      *
80      * @since 1.1
81      * @throws ZipException on error
82      */
83     void parseFromLocalFileData(byte[] data, int offset, int length)
84         throws ZipException;
85 }