The GitHub Actions job "CI" on grails-core.git/fix/rx-observable-scalar-projection has failed. Run started by GitHub user jdaugherty (triggered by jdaugherty).
Head commit for run: 853deb687feb042aa1675b945f5dceaf3eb7e9c4 / James Daugherty <[email protected]> Implement a reactive projection by its return type in the RxJava data service adapters A data service method returning an Observable of a scalar property projection, such as `Observable<String> findBookAuthor(String title)`, failed at runtime with "GroovyCastException: Cannot cast object 'Stephen King' ... to class 'java.lang.Iterable'": SingleResultAdapter accepted the method for FindOnePropertyProjectionImplementer on the projected type alone, without checking that the method returns a Single, so the generated body found one value while the scheduling transform typed the transactional delegate as returning an Iterable. The mirror image broke a Single of an interface projection, such as `Single<BookInfo> findByTitle(String title)`: ObservableResultAdapter claimed it for FindAllByInterfaceProjectionImplementer, and the list it built failed to cast to the interface. Both adapters now require their own reactive return type before delegating to a projection implementer, so an Observable of a projection lists every projected value and a Single of a projection finds one. ObservableResultAdapter also no longer takes the Observable's generic type as the domain class of a projection, which made `Observable<String> listBookAuthor(String title)` fail at compile time with "No property exists on domain class [java.lang.String]". Fixes #16692 Report URL: https://github.com/apache/grails-core/actions/runs/39471583813 With regards, GitHub Actions via GitBox
