public GeneratorContext createProjectGeneratorContext()

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;
    }