|
17 | 17 | package org.springframework.boot.loader;
|
18 | 18 |
|
19 | 19 | import java.io.File;
|
| 20 | +import java.io.FileOutputStream; |
20 | 21 | import java.net.URL;
|
21 | 22 | import java.net.URLClassLoader;
|
22 | 23 | import java.util.ArrayList;
|
|
33 | 34 | import org.springframework.boot.loader.archive.Archive;
|
34 | 35 | import org.springframework.boot.loader.archive.ExplodedArchive;
|
35 | 36 | import org.springframework.boot.loader.archive.JarFileArchive;
|
36 |
| -import org.springframework.boot.testsupport.compiler.TestCompiler; |
| 37 | +import org.springframework.core.io.ClassPathResource; |
| 38 | +import org.springframework.core.test.tools.SourceFile; |
| 39 | +import org.springframework.core.test.tools.TestCompiler; |
37 | 40 | import org.springframework.util.FileCopyUtils;
|
| 41 | +import org.springframework.util.function.ThrowingConsumer; |
38 | 42 |
|
39 | 43 | import static org.assertj.core.api.Assertions.assertThat;
|
40 | 44 |
|
@@ -101,24 +105,26 @@ void jarFilesPresentInBootInfLibsAndNotInClasspathIndexShouldBeAddedAfterBootInf
|
101 | 105 | }
|
102 | 106 |
|
103 | 107 | @Test
|
104 |
| - @SuppressWarnings("removal") |
105 |
| - void explodedJarDefinedPackagesIncludeManifestAttributes() throws Exception { |
| 108 | + void explodedJarDefinedPackagesIncludeManifestAttributes() { |
106 | 109 | Manifest manifest = new Manifest();
|
107 | 110 | Attributes attributes = manifest.getMainAttributes();
|
108 | 111 | attributes.put(Name.MANIFEST_VERSION, "1.0");
|
109 | 112 | attributes.put(Name.IMPLEMENTATION_TITLE, "test");
|
110 |
| - File explodedRoot = explode( |
111 |
| - createJarArchive("archive.jar", manifest, "BOOT-INF", true, Collections.emptyList())); |
112 |
| - TestCompiler compiler = new TestCompiler(new File(explodedRoot, "BOOT-INF/classes")); |
113 |
| - File source = new File(this.tempDir, "explodedsample/ExampleClass.java"); |
114 |
| - source.getParentFile().mkdirs(); |
115 |
| - FileCopyUtils.copy(new File("src/test/resources/explodedsample/ExampleClass.txt"), source); |
116 |
| - compiler.getTask(Collections.singleton(source)).call(); |
117 |
| - JarLauncher launcher = new JarLauncher(new ExplodedArchive(explodedRoot, true)); |
118 |
| - Iterator<Archive> archives = launcher.getClassPathArchivesIterator(); |
119 |
| - URLClassLoader classLoader = (URLClassLoader) launcher.createClassLoader(archives); |
120 |
| - Class<?> loaded = classLoader.loadClass("explodedsample.ExampleClass"); |
121 |
| - assertThat(loaded.getPackage().getImplementationTitle()).isEqualTo("test"); |
| 113 | + SourceFile sourceFile = SourceFile.of("explodedsample/ExampleClass.java", |
| 114 | + new ClassPathResource("explodedsample/ExampleClass.txt")); |
| 115 | + TestCompiler.forSystem().compile(sourceFile, ThrowingConsumer.of((compiled) -> { |
| 116 | + File explodedRoot = explode( |
| 117 | + createJarArchive("archive.jar", manifest, "BOOT-INF", true, Collections.emptyList())); |
| 118 | + File target = new File(explodedRoot, "BOOT-INF/classes/explodedsample/ExampleClass.class"); |
| 119 | + target.getParentFile().mkdirs(); |
| 120 | + FileCopyUtils.copy(compiled.getClassLoader().getResourceAsStream("explodedsample/ExampleClass.class"), |
| 121 | + new FileOutputStream(target)); |
| 122 | + JarLauncher launcher = new JarLauncher(new ExplodedArchive(explodedRoot, true)); |
| 123 | + Iterator<Archive> archives = launcher.getClassPathArchivesIterator(); |
| 124 | + URLClassLoader classLoader = (URLClassLoader) launcher.createClassLoader(archives); |
| 125 | + Class<?> loaded = classLoader.loadClass("explodedsample.ExampleClass"); |
| 126 | + assertThat(loaded.getPackage().getImplementationTitle()).isEqualTo("test"); |
| 127 | + })); |
122 | 128 | }
|
123 | 129 |
|
124 | 130 | protected final URL[] getExpectedFileUrls(File explodedRoot) {
|
|
0 commit comments