/*
 * 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
 *
 * http://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.commons.compress.archivers.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.

@NotThreadSafe
/** * 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> * @NotThreadSafe */
public class UnrecognizedExtraField implements ZipExtraField {
The Header-ID.
/** * The Header-ID. */
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(final ZipShort headerId) { this.headerId = headerId; }
Get the header id.
Returns:the header id
/** * Get the header id. * @return the header id */
@Override public ZipShort getHeaderId() { return headerId; }
Extra field data in local file data - without Header-ID or length specifier.
/** * Extra field data in local file data - without * Header-ID or length specifier. */
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(final 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 */
@Override public ZipShort getLocalFileDataLength() { return new ZipShort(localData != null ? localData.length : 0); }
Get the local data.
Returns:the local data
/** * Get the local data. * @return the local data */
@Override public byte[] getLocalFileDataData() { return ZipUtil.copy(localData); }
Extra field data in central directory - without Header-ID or length specifier.
/** * Extra field data in central directory - without * Header-ID or length specifier. */
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(final 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 */
@Override 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 */
@Override 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) */
@Override public void parseFromLocalFileData(final byte[] data, final int offset, final int length) { final 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.
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#parseFromCentralDirectoryData(byte[], int, int) */
@Override public void parseFromCentralDirectoryData(final byte[] data, final int offset, final int length) { final byte[] tmp = new byte[length]; System.arraycopy(data, offset, tmp, 0, length); setCentralDirectoryData(tmp); if (localData == null) { setLocalFileDataData(tmp); } } }