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