private Publisher diffFlowable()

in grails-forge-api/src/main/java/org/grails/forge/api/diff/DiffController.java [183:224]


    private Publisher<String> diffFlowable(ProjectGenerator projectGenerator, GeneratorContext generatorContext) {
        return Flux.create(emitter -> {
            try {
                // empty string so there is at least some content
                // if there is no difference
                emitter.next("");
                featureDiffer.produceDiff(
                        projectGenerator,
                        generatorContext,
                        new ConsoleOutput() {
                            @Override
                            public void out(String message) {
                                emitter.next(message + LINE_SEPARATOR);
                            }

                            @Override
                            public void err(String message) {
                                // will never be called
                            }

                            @Override
                            public void warning(String message) {
                                // will never be called
                            }

                            @Override
                            public boolean showStacktrace() {
                                return false;
                            }

                            @Override
                            public boolean verbose() {
                                return false;
                            }
                        }
                );
                emitter.complete();
            } catch (Exception e) {
                emitter.error(new HttpStatusException(HttpStatus.INTERNAL_SERVER_ERROR, "Could not produce diff: " + e.getMessage()));
            }
        });
    }