/*
 *  Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  See the NOTICE file distributed with
 *  this work for additional information regarding copyright ownership.
 *  The ASF licenses this file to You under the Apache License, Version 2.0
 *  (the "License"); you may not use this file except in compliance with
 *  the License.  You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 */

package org.apache.tools.zip;

Simple placeholder for all those extra fields we don't want to deal with.

Assumes local file data and central directory entries are identical - unless told the opposite.

/** * Simple placeholder for all those extra fields we don't want to deal * with. * * <p>Assumes local file data and central directory entries are * identical - unless told the opposite.</p> * */
public class UnrecognizedExtraField implements CentralDirectoryParsingZipExtraField {
The Header-ID.
Since:1.1
/** * The Header-ID. * * @since 1.1 */
private ZipShort headerId;
Set the header id.
Params:
  • headerId – the header id to use
/** * Set the header id. * @param headerId the header id to use */
public void setHeaderId(ZipShort headerId) { this.headerId = headerId; }
Get the header id.
Returns:the header id
/** * Get the header id. * @return the header id */
public ZipShort getHeaderId() { return headerId; }
Extra field data in local file data - without Header-ID or length specifier.
Since:1.1
/** * Extra field data in local file data - without * Header-ID or length specifier. * * @since 1.1 */
private byte[] localData;
Set the extra field data in the local file data - without Header-ID or length specifier.
Params:
  • data – the field data to use
/** * Set the extra field data in the local file data - * without Header-ID or length specifier. * @param data the field data to use */
public void setLocalFileDataData(byte[] data) { localData = ZipUtil.copy(data); }
Get the length of the local data.
Returns:the length of the local data
/** * Get the length of the local data. * @return the length of the local data */
public ZipShort getLocalFileDataLength() { return new ZipShort(localData.length); }
Get the local data.
Returns:the local data
/** * Get the local data. * @return the local data */
public byte[] getLocalFileDataData() { return ZipUtil.copy(localData); }
Extra field data in central directory - without Header-ID or length specifier.
Since:1.1
/** * Extra field data in central directory - without * Header-ID or length specifier. * * @since 1.1 */
private byte[] centralData;
Set the extra field data in central directory.
Params:
  • data – the data to use
/** * Set the extra field data in central directory. * @param data the data to use */
public void setCentralDirectoryData(byte[] data) { centralData = ZipUtil.copy(data); }
Get the central data length. If there is no central data, get the local file data length.
Returns:the central data length
/** * Get the central data length. * If there is no central data, get the local file data length. * @return the central data length */
public ZipShort getCentralDirectoryLength() { if (centralData != null) { return new ZipShort(centralData.length); } return getLocalFileDataLength(); }
Get the central data.
Returns:the central data if present, else return the local file data
/** * Get the central data. * @return the central data if present, else return the local file data */
public byte[] getCentralDirectoryData() { if (centralData != null) { return ZipUtil.copy(centralData); } return getLocalFileDataData(); }
Params:
  • data – the array of bytes.
  • offset – the source location in the data array.
  • length – the number of bytes to use in the data array.
See Also:
/** * @param data the array of bytes. * @param offset the source location in the data array. * @param length the number of bytes to use in the data array. * @see ZipExtraField#parseFromLocalFileData(byte[], int, int) */
public void parseFromLocalFileData(byte[] data, int offset, int length) { byte[] tmp = new byte[length]; System.arraycopy(data, offset, tmp, 0, length); setLocalFileDataData(tmp); }
Params:
  • data – the array of bytes.
  • offset – the source location in the data array.
  • length – the number of bytes to use in the data array.
/** * @param data the array of bytes. * @param offset the source location in the data array. * @param length the number of bytes to use in the data array. */
public void parseFromCentralDirectoryData(byte[] data, int offset, int length) { byte[] tmp = new byte[length]; System.arraycopy(data, offset, tmp, 0, length); setCentralDirectoryData(tmp); if (localData == null) { setLocalFileDataData(tmp); } } }