in grails-forge-api/src/main/java/org/grails/forge/api/create/AbstractCreateController.java [65:109]
public GeneratorContext createProjectGeneratorContext(
ApplicationType type,
@Pattern(regexp = "[\\w\\d-_\\.]+") String name,
@Nullable List<String> features,
@Nullable BuildTool buildTool,
@Nullable TestFramework testFramework,
@Nullable GormImpl gorm,
@Nullable ServletImpl servlet,
@Nullable JdkVersion javaVersion,
@Nullable @Header(HttpHeaders.USER_AGENT) String userAgent) {
Project project;
try {
project = NameUtils.parse(name);
} catch (IllegalArgumentException e) {
throw new HttpStatusException(HttpStatus.BAD_REQUEST, "Invalid project name: " + e.getMessage());
}
GeneratorContext generatorContext;
try {
GormImpl gormImpl = gorm != null ? gorm : GormImpl.DEFAULT_OPTION;
ServletImpl servletImpl = servlet != null ? servlet : ServletImpl.DEFAULT_OPTION;
generatorContext = projectGenerator.createGeneratorContext(
type,
project,
new Options(testFramework != null ? testFramework.toTestFramework() : org.grails.forge.options.TestFramework.DEFAULT_OPTION,
gormImpl == null ? GormImpl.DEFAULT_OPTION : gormImpl,
servletImpl == null ? ServletImpl.DEFAULT_OPTION : servletImpl,
javaVersion == null ? JdkVersion.DEFAULT_OPTION : javaVersion,
getOperatingSystem(userAgent)),
getOperatingSystem(userAgent),
features != null ? features : Collections.emptyList(),
ConsoleOutput.NOOP
);
try {
eventPublisher.publishEvent(new ApplicationGeneratingEvent(generatorContext));
} catch (Exception e) {
LOG.warn("Error firing application generated event: " + e.getMessage(), e);
}
} catch (IllegalArgumentException e) {
throw new HttpStatusException(HttpStatus.BAD_REQUEST, e.getMessage());
}
return generatorContext;
}