Skip to content

Commit

Permalink
Merge branch '2.5.x' into 2.6.x
Browse files Browse the repository at this point in the history
Closes gh-29268
  • Loading branch information
wilkinsona committed Jan 5, 2022
2 parents 99a683d + 41b01cc commit a6d8ff4
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 3 deletions.
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2021 the original author or authors.
* Copyright 2012-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -254,8 +254,8 @@ private void writeEntry(JarArchiveEntry entry, EntryWriter entryWriter) throws I
private void writeEntry(JarArchiveEntry entry, Library library, EntryWriter entryWriter,
UnpackHandler unpackHandler) throws IOException {
String name = entry.getName();
writeParentDirectoryEntries(name);
if (this.writtenEntries.add(name)) {
writeParentDirectoryEntries(name);
entry.setUnixMode(name.endsWith("/") ? UNIX_DIR_MODE : UNIX_FILE_MODE);
entry.getGeneralPurposeBit().useUTF8ForNames(true);
if (!entry.isDirectory() && entry.getSize() == -1) {
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2021 the original author or authors.
* Copyright 2012-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -38,6 +38,7 @@

import org.springframework.boot.loader.tools.sample.ClassWithMainMethod;
import org.springframework.util.FileCopyUtils;
import org.springframework.util.StopWatch;
import org.springframework.util.StringUtils;

import static org.assertj.core.api.Assertions.assertThat;
Expand Down Expand Up @@ -202,6 +203,18 @@ void allEntriesUseProvidedTimestamp() throws IOException {
}
}

@Test
void repackagingDeeplyNestedPackageIsNotProhibitivelySlow() throws IOException {
StopWatch stopWatch = new StopWatch();
stopWatch.start();
this.testJarFile.addClass("a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/Some.class",
ClassWithMainMethod.class);
Repackager repackager = createRepackager(this.testJarFile.getFile(), true);
repackager.repackage(this.destination, NO_LIBRARIES, null, null);
stopWatch.stop();
assertThat(stopWatch.getTotalTimeMillis()).isLessThan(5000);
}

private boolean hasLauncherClasses(File file) throws IOException {
return hasEntry(file, "org/springframework/boot/")
&& hasEntry(file, "org/springframework/boot/loader/JarLauncher.class");
Expand Down

0 comments on commit a6d8ff4

Please sign in to comment.