in grails-forge-api/src/main/java/org/grails/forge/api/create/zip/ZipCreateController.java [147:182]
public HttpResponse<Writable> generateAppIntoZipFile(
@NotNull ApplicationType type,
@NotNull String name,
@Nullable List<String> features,
@Nullable BuildTool buildTool,
@Nullable TestFramework testFramework,
@Nullable GormImpl gorm,
@Nullable ServletImpl servlet,
@Nullable JdkVersion javaVersion,
@Nullable String userAgent) {
GeneratorContext generatorContext = createProjectGeneratorContext(type, name, features, buildTool, testFramework, gorm, servlet, javaVersion, userAgent);
MutableHttpResponse<Writable> response = HttpResponse.created(new Writable() {
@Override
public void writeTo(OutputStream outputStream, @Nullable Charset charset) throws IOException {
try {
final Project project = generatorContext.getProject();
projectGenerator.generate(type,
project,
new ZipOutputHandler(project.getName(), outputStream),
generatorContext);
outputStream.flush();
} catch (Exception e) {
LOG.error("Error generating application: " + e.getMessage(), e);
throw new IOException(e.getMessage(), e);
}
}
@Override
public void writeTo(Writer out) {
// no-op, output stream used
}
});
return response.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + getFilename(generatorContext.getProject()));
}