From f40b086ef5570c9d18ec2e384e334bc6fec47727 Mon Sep 17 00:00:00 2001 From: dreis2211 Date: Mon, 22 Apr 2019 17:29:14 +0200 Subject: [PATCH] Optimize JarEntry construction This commit avoids calling the underlying ZipEntry.setExtra() method that is not very inline friendly in cases where there is no extra information to be set. See gh-16620 --- .../boot/loader/jar/CentralDirectoryFileHeader.java | 4 ++++ .../java/org/springframework/boot/loader/jar/JarEntry.java | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/CentralDirectoryFileHeader.java b/spring-boot-project/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/CentralDirectoryFileHeader.java index ca7bae40c2f..e1f3efd17b0 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/CentralDirectoryFileHeader.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/CentralDirectoryFileHeader.java @@ -153,6 +153,10 @@ final class CentralDirectoryFileHeader implements FileHeader { return this.extra; } + public boolean hasExtra() { + return this.extra.length > 0; + } + public AsciiBytes getComment() { return this.comment; } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/JarEntry.java b/spring-boot-project/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/JarEntry.java index aed07d1bc70..1c69dbaa1e8 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/JarEntry.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/JarEntry.java @@ -56,7 +56,9 @@ class JarEntry extends java.util.jar.JarEntry implements FileHeader { setComment(header.getComment().toString()); setSize(header.getSize()); setTime(header.getTime()); - setExtra(header.getExtra()); + if (header.hasExtra()) { + setExtra(header.getExtra()); + } } AsciiBytes getAsciiBytesName() {