Merge pull request #7071 from aloubyansky/7038

QuarkusDev should be serializing the AppModel in the same manner as QuarkusTestConfig
This commit is contained in:
George Gastaldi
2020-02-07 23:59:44 -03:00
committed by GitHub
4 changed files with 35 additions and 18 deletions

View File

@@ -253,11 +253,6 @@ public class QuarkusDev extends QuarkusTask {
wiringClassesDirectory.mkdirs();
addToClassPaths(classPathManifest, context, wiringClassesDirectory);
//now we need to build a temporary jar to actually run
File tempFile = new File(getBuildDir(), extension.finalName() + "-dev.jar");
tempFile.delete();
tempFile.deleteOnExit();
StringBuilder resources = new StringBuilder();
String res = null;
for (File file : extension.resourcesDir()) {
@@ -377,6 +372,10 @@ public class QuarkusDev extends QuarkusTask {
context.setCacheDir(new File(getBuildDir(), "transformer-cache").getAbsoluteFile());
// this is the jar file we will use to launch the dev mode main class
final File tempFile = new File(getBuildDir(), extension.finalName() + "-dev.jar");
tempFile.delete();
tempFile.deleteOnExit();
context.setDevModeRunnerJarFile(tempFile);
try (ZipOutputStream out = new ZipOutputStream(new FileOutputStream(tempFile))) {
out.putNextEntry(new ZipEntry("META-INF/"));
@@ -389,19 +388,23 @@ public class QuarkusDev extends QuarkusTask {
out.putNextEntry(new ZipEntry(DevModeMain.DEV_MODE_CONTEXT));
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
ObjectOutputStream obj = new ObjectOutputStream(new DataOutputStream(bytes));
obj.writeObject(context);
obj.close();
try (ObjectOutputStream obj = new ObjectOutputStream(new DataOutputStream(bytes))) {
obj.writeObject(context);
}
out.write(bytes.toByteArray());
out.putNextEntry(new ZipEntry(BootstrapConstants.SERIALIZED_APP_MODEL));
bytes = new ByteArrayOutputStream();
obj = new ObjectOutputStream(new DataOutputStream(bytes));
obj.writeObject(appModel);
obj.close();
try (ObjectOutputStream obj = new ObjectOutputStream(new DataOutputStream(bytes))) {
obj.writeObject(appModel);
}
out.write(bytes.toByteArray());
}
final Path serializedModel = QuarkusGradleUtils.serializeAppModel(appModel);
serializedModel.toFile().deleteOnExit();
args.add("-D" + BootstrapConstants.SERIALIZED_APP_MODEL + "=" + serializedModel.toAbsolutePath());
extension.outputDirectory().mkdirs();
args.add("-jar");

View File

@@ -0,0 +1,19 @@
package io.quarkus.gradle.tasks;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import io.quarkus.bootstrap.model.AppModel;
public class QuarkusGradleUtils {
public static Path serializeAppModel(final AppModel appModel) throws IOException {
final Path serializedModel = Files.createTempFile("quarkus-", "-gradle-test");
try (ObjectOutputStream out = new ObjectOutputStream(Files.newOutputStream(serializedModel))) {
out.writeObject(appModel);
}
return serializedModel;
}
}

View File

@@ -1,7 +1,5 @@
package io.quarkus.gradle.tasks;
import java.io.ObjectOutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Map;
@@ -29,10 +27,7 @@ public class QuarkusTestConfig extends QuarkusTask {
.toAbsolutePath()
.toString();
final Path serializedModel = Files.createTempFile("quarkus-", "-gradle-test");
try (ObjectOutputStream out = new ObjectOutputStream(Files.newOutputStream(serializedModel))) {
out.writeObject(deploymentDeps);
}
final Path serializedModel = QuarkusGradleUtils.serializeAppModel(deploymentDeps);
for (Test test : getProject().getTasks().withType(Test.class)) {
final Map<String, Object> props = test.getSystemProperties();

View File

@@ -221,7 +221,7 @@ public class BootstrapAppModelFactory {
final Path p = Paths.get(serializedModel);
if (Files.exists(p)) {
try (InputStream existing = Files.newInputStream(Paths.get(serializedModel))) {
AppModel appModel = (AppModel) new ObjectInputStream(existing).readObject();
final AppModel appModel = (AppModel) new ObjectInputStream(existing).readObject();
return new CurationResult(appModel);
} catch (IOException | ClassNotFoundException e) {
log.error("Failed to load serialized app mode", e);