Skip to content

Commit 41e028f

Browse files
committed
Deprecate
org.apache.commons.compress.utils.TimeUtils.toUnixTime(FileTime) in favor of org.apache.commons.io.file.attribute.FileTimes.toUnixTime(FileTime)
1 parent cab1b8a commit 41e028f

File tree

8 files changed

+25
-19
lines changed

8 files changed

+25
-19
lines changed

src/changes/changes.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ The <action> type attribute can be add,update,fix,remove.
9898
<action type="fix" dev="ggregory" due-to="Gary Gregory">Javadoc improvements throughout.</action>
9999
<action type="fix" dev="ggregory" due-to="Gary Gregory" issue="COMPRESS-699">ArchiveStreamFactory.detect(inputStream) ArchiveException for TAR regression.</action>
100100
<action type="fix" dev="ggregory" due-to="Gary Gregory" issue="COMPRESS-700">Can't detect file flutter_awesome_buttons-0.1.0.tar as a TAR file.</action>
101+
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate org.apache.commons.compress.utils.TimeUtils.toUnixTime(FileTime) in favor of org.apache.commons.io.file.attribute.FileTimes.toUnixTime(FileTime).</action>
101102
<!-- ADD -->
102103
<action type="add" dev="ggregory" due-to="Gary Gregory">Add GzipParameters.getModificationInstant().</action>
103104
<action type="add" dev="ggregory" due-to="Gary Gregory">Add GzipParameters.setModificationInstant(Instant).</action>

src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveEntry.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030

3131
import org.apache.commons.compress.archivers.ArchiveEntry;
3232
import org.apache.commons.compress.utils.ExactMath;
33-
import org.apache.commons.compress.utils.TimeUtils;
33+
import org.apache.commons.io.file.attribute.FileTimes;
3434

3535
/**
3636
* A cpio archive consists of a sequence of files. There are several types of headers defined in two categories of new and old format. The headers are
@@ -921,7 +921,7 @@ public void setSize(final long size) {
921921
* @param time The time to set.
922922
*/
923923
public void setTime(final FileTime time) {
924-
this.mtime = TimeUtils.toUnixTime(time);
924+
this.mtime = FileTimes.toUnixTime(time);
925925
}
926926

927927
/**

src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@
5151
import org.apache.commons.compress.utils.ArchiveUtils;
5252
import org.apache.commons.compress.utils.IOUtils;
5353
import org.apache.commons.compress.utils.ParsingUtils;
54-
import org.apache.commons.compress.utils.TimeUtils;
5554
import org.apache.commons.io.file.attribute.FileTimes;
5655
import org.apache.commons.lang3.SystemProperties;
5756

@@ -2017,7 +2016,8 @@ public void writeEntryHeader(final byte[] outbuf, final ZipEncoding encoding, fi
20172016
offset = writeEntryHeaderField(userId, outbuf, offset, UIDLEN, starMode);
20182017
offset = writeEntryHeaderField(groupId, outbuf, offset, GIDLEN, starMode);
20192018
offset = writeEntryHeaderField(size, outbuf, offset, SIZELEN, starMode);
2020-
offset = writeEntryHeaderField(TimeUtils.toUnixTime(mTime), outbuf, offset, MODTIMELEN, starMode);
2019+
final FileTime fileTime = mTime;
2020+
offset = writeEntryHeaderField(FileTimes.toUnixTime(fileTime), outbuf, offset, MODTIMELEN, starMode);
20212021
final int csOffset = offset;
20222022
offset = fill((byte) ' ', offset, outbuf, CHKSUMLEN);
20232023
outbuf[offset++] = linkFlag;
@@ -2056,7 +2056,7 @@ private int writeEntryHeaderField(final long value, final byte[] outbuf, final i
20562056

20572057
private int writeEntryHeaderOptionalTimeField(final FileTime time, int offset, final byte[] outbuf, final int fieldLength) {
20582058
if (time != null) {
2059-
offset = writeEntryHeaderField(TimeUtils.toUnixTime(time), outbuf, offset, fieldLength, true);
2059+
offset = writeEntryHeaderField(FileTimes.toUnixTime(time), outbuf, offset, fieldLength, true);
20602060
} else {
20612061
offset = fill(0, offset, outbuf, fieldLength);
20622062
}

src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveOutputStream.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
import org.apache.commons.compress.archivers.zip.ZipEncoding;
4040
import org.apache.commons.compress.archivers.zip.ZipEncodingHelper;
4141
import org.apache.commons.compress.utils.FixedLengthBlockOutputStream;
42-
import org.apache.commons.compress.utils.TimeUtils;
4342
import org.apache.commons.io.Charsets;
4443
import org.apache.commons.io.file.attribute.FileTimes;
4544
import org.apache.commons.io.output.CountingOutputStream;
@@ -373,7 +372,7 @@ private void failForBigNumber(final String field, final long value, final long m
373372
private void failForBigNumbers(final TarArchiveEntry entry) {
374373
failForBigNumber("entry size", entry.getSize(), TarConstants.MAXSIZE);
375374
failForBigNumberWithPosixMessage("group id", entry.getLongGroupId(), TarConstants.MAXID);
376-
failForBigNumber("last modification time", TimeUtils.toUnixTime(entry.getLastModifiedTime()), TarConstants.MAXSIZE);
375+
failForBigNumber("last modification time", FileTimes.toUnixTime(entry.getLastModifiedTime()), TarConstants.MAXSIZE);
377376
failForBigNumber("user id", entry.getLongUserId(), TarConstants.MAXID);
378377
failForBigNumber("mode", entry.getMode(), TarConstants.MAXID);
379378
failForBigNumber("major device number", entry.getDevMajor(), TarConstants.MAXID);
@@ -614,7 +613,7 @@ private String stripTo7Bits(final String name) {
614613
}
615614

616615
private void transferModTime(final TarArchiveEntry from, final TarArchiveEntry to) {
617-
long fromModTimeSeconds = TimeUtils.toUnixTime(from.getLastModifiedTime());
616+
long fromModTimeSeconds = FileTimes.toUnixTime(from.getLastModifiedTime());
618617
if (fromModTimeSeconds < 0 || fromModTimeSeconds > TarConstants.MAXSIZE) {
619618
fromModTimeSeconds = 0;
620619
}

src/main/java/org/apache/commons/compress/archivers/zip/X5455_ExtendedTimestamp.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import java.util.Objects;
2626
import java.util.zip.ZipException;
2727

28-
import org.apache.commons.compress.utils.TimeUtils;
2928
import org.apache.commons.io.file.attribute.FileTimes;
3029

3130
/**
@@ -118,7 +117,7 @@ private static ZipLong dateToZipLong(final Date d) {
118117
* @return ZipLong
119118
*/
120119
private static ZipLong fileTimeToZipLong(final FileTime time) {
121-
return time == null ? null : unixTimeToZipLong(TimeUtils.toUnixTime(time));
120+
return time == null ? null : unixTimeToZipLong(FileTimes.toUnixTime(time));
122121
}
123122

124123
private static FileTime unixTimeToFileTime(final ZipLong unixTime) {

src/main/java/org/apache/commons/compress/utils/TimeUtils.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,11 +170,17 @@ public static long toNtfsTime(final long javaTime) {
170170
}
171171

172172
/**
173-
* Converts {@link FileTime} to standard Unix time.
173+
* Converts a {@link FileTime} to standard Unix time in seconds.
174+
* <p>
175+
* The returned seconds value may lie out of bounds of Unix time. Check with {@link FileTimes#isUnixTime(long)}.
176+
* </p>
174177
*
175178
* @param fileTime the original FileTime.
176-
* @return the Unix timestamp.
179+
* @return the Unix timestamp or 0 if the input is null.
180+
* @see FileTimes#isUnixTime(long)
181+
* @deprecated Use {@link FileTimes#toUnixTime(FileTime)}.
177182
*/
183+
@Deprecated
178184
public static long toUnixTime(final FileTime fileTime) {
179185
return FileTimes.toUnixTime(fileTime);
180186
}

src/test/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntryTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ void testShouldSetExtraDateFieldsIfAccessDateIsSet() {
383383
assertEquals(time, ze.getLastModifiedTime().toMillis());
384384
final X5455_ExtendedTimestamp extendedTimestamp = (X5455_ExtendedTimestamp) ze.getExtraField(X5455_ExtendedTimestamp.HEADER_ID);
385385
assertNotNull(extendedTimestamp);
386-
assertEquals(TimeUtils.toUnixTime(lastAccessTime), extendedTimestamp.getAccessTime().getValue());
386+
assertEquals(FileTimes.toUnixTime(lastAccessTime), extendedTimestamp.getAccessTime().getValue());
387387
assertNull(extendedTimestamp.getCreateTime());
388388
final X000A_NTFS ntfs = (X000A_NTFS) ze.getExtraField(X000A_NTFS.HEADER_ID);
389389
assertNotNull(ntfs);
@@ -406,8 +406,8 @@ void testShouldSetExtraDateFieldsIfAllDatesAreSet() {
406406
assertEquals(time, ze.getLastModifiedTime().toMillis());
407407
final X5455_ExtendedTimestamp extendedTimestamp = (X5455_ExtendedTimestamp) ze.getExtraField(X5455_ExtendedTimestamp.HEADER_ID);
408408
assertNotNull(extendedTimestamp);
409-
assertEquals(TimeUtils.toUnixTime(accessTime), extendedTimestamp.getAccessTime().getValue());
410-
assertEquals(TimeUtils.toUnixTime(creationTime), extendedTimestamp.getCreateTime().getValue());
409+
assertEquals(FileTimes.toUnixTime(accessTime), extendedTimestamp.getAccessTime().getValue());
410+
assertEquals(FileTimes.toUnixTime(creationTime), extendedTimestamp.getCreateTime().getValue());
411411
final X000A_NTFS ntfs = (X000A_NTFS) ze.getExtraField(X000A_NTFS.HEADER_ID);
412412
assertNotNull(ntfs);
413413
assertEquals(TimeUtils.toNtfsTime(time), ntfs.getModifyTime().getLongValue());
@@ -428,7 +428,7 @@ void testShouldSetExtraDateFieldsIfCreationDateIsSet() {
428428
final X5455_ExtendedTimestamp extendedTimestamp = (X5455_ExtendedTimestamp) ze.getExtraField(X5455_ExtendedTimestamp.HEADER_ID);
429429
assertNotNull(extendedTimestamp);
430430
assertNull(extendedTimestamp.getAccessTime());
431-
assertEquals(TimeUtils.toUnixTime(creationTime), extendedTimestamp.getCreateTime().getValue());
431+
assertEquals(FileTimes.toUnixTime(creationTime), extendedTimestamp.getCreateTime().getValue());
432432
final X000A_NTFS ntfs = (X000A_NTFS) ze.getExtraField(X000A_NTFS.HEADER_ID);
433433
assertNotNull(ntfs);
434434
assertEquals(TimeUtils.toNtfsTime(time), ntfs.getModifyTime().getLongValue());
@@ -446,7 +446,7 @@ void testShouldSetExtraDateFieldsIfDateExceedsDosDate() {
446446
assertEquals(time, ze.getLastModifiedTime());
447447
final X5455_ExtendedTimestamp extendedTimestamp = (X5455_ExtendedTimestamp) ze.getExtraField(X5455_ExtendedTimestamp.HEADER_ID);
448448
assertNotNull(extendedTimestamp);
449-
assertEquals(TimeUtils.toUnixTime(time), extendedTimestamp.getModifyTime().getValue());
449+
assertEquals(FileTimes.toUnixTime(time), extendedTimestamp.getModifyTime().getValue());
450450
assertNull(extendedTimestamp.getAccessTime());
451451
assertNull(extendedTimestamp.getCreateTime());
452452
final X000A_NTFS ntfs = (X000A_NTFS) ze.getExtraField(X000A_NTFS.HEADER_ID);
@@ -466,7 +466,7 @@ void testShouldSetExtraDateFieldsIfModifyDateIsExplicitlySet() {
466466
assertEquals(time, ze.getLastModifiedTime());
467467
final X5455_ExtendedTimestamp extendedTimestamp = (X5455_ExtendedTimestamp) ze.getExtraField(X5455_ExtendedTimestamp.HEADER_ID);
468468
assertNotNull(extendedTimestamp);
469-
assertEquals(TimeUtils.toUnixTime(time), extendedTimestamp.getModifyTime().getValue());
469+
assertEquals(FileTimes.toUnixTime(time), extendedTimestamp.getModifyTime().getValue());
470470
assertNull(extendedTimestamp.getAccessTime());
471471
assertNull(extendedTimestamp.getCreateTime());
472472
final X000A_NTFS ntfs = (X000A_NTFS) ze.getExtraField(X000A_NTFS.HEADER_ID);

src/test/java/org/apache/commons/compress/utils/TimeUtilsTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import java.util.stream.Stream;
3737

3838
import org.apache.commons.compress.archivers.sevenz.SevenZArchiveEntry;
39+
import org.apache.commons.io.file.attribute.FileTimes;
3940
import org.junit.jupiter.api.Test;
4041
import org.junit.jupiter.params.ParameterizedTest;
4142
import org.junit.jupiter.params.provider.Arguments;
@@ -163,7 +164,7 @@ void testToNtfsTime(final String instant, final long ntfsTime) {
163164
@ParameterizedTest
164165
@MethodSource("fileTimeToUnixTimeArguments")
165166
void testToUnixTime(final long expectedUnixTime, final String instant) {
166-
assertEquals(expectedUnixTime, TimeUtils.toUnixTime(FileTime.from(Instant.parse(instant))));
167+
assertEquals(expectedUnixTime, FileTimes.toUnixTime(FileTime.from(Instant.parse(instant))));
167168
}
168169

169170
@ParameterizedTest

0 commit comments

Comments
 (0)