quarkusio/quarkus · error · RuntimeException
Not implemented yet
Error message
Not implemented yet
What it means
ReactiveRestDataResource is a default interface whose methods are meant to be implemented by generated resource classes at build time (the generated subclass overrides list(Page, Sort) with real Hibernate Reactive/Panache code). If the raw default implementation is ever invoked, it throws 'Not implemented yet' — it exists only to define the REST contract, not to run.
Source
Thrown at extensions/panache/rest-data-panache/runtime/src/main/java/io/quarkus/rest/data/panache/ReactiveRestDataResource.java:30
* <p>
* User shouldn't use this interface directly but rather its sub-interfaces defined by the data store specific extensions.
*
* @param <Entity> Entity type that is handled by this resource.
* @param <ID> ID type of the entity.
*/
public interface ReactiveRestDataResource<Entity, ID> {
/**
* Return entities as a JSON array.
* The response is paged by default, but that could be disabled with {@link ResourceProperties} annotation.
* Response content type: application/json.
*
* @param page Panache page instance that should be used in a query. Will be null if pagination is disabled.
* @param sort Panache sort instance that should be used in a query.
* @return A response with an entities JSON array.
*/
default Uni<List<Entity>> list(Page page, Sort sort) {
throw new RuntimeException("Not implemented yet");
}
/**
* @return the total number of entities.
*/
default Uni<Long> count() {
throw new RuntimeException("Not implemented yet");
}
/**
* Return an entity as a JSON object.
* Response content type: application/json.
*
* @param id Entity identifier.
* @return A response with a JSON object representing an entity.
*/
default Uni<Entity> get(ID id) {
throw new RuntimeException("Not implemented yet");View on GitHub (pinned to e1c734241f)
Solutions
- Annotate your Panache entity/repository resource for generation (quarkus REST Data Panache setup) so the implementation is generated at build time, rather than implementing the interface yourself.
- Override list(Page, Sort) in your resource with a real implementation (e.g. PanacheQuery.page(...).list()).
- Rebuild the app (mvn clean package) to regenerate resources if generation was skipped.
Example fix
// before
class MyResource implements ReactiveRestDataResource<Person, Long> { }
// after
public class PersonResource implements ReactiveRestDataResource<Person, Long> {
@Override
public Uni<List<Person>> list(Page page, Sort sort) {
return Person.findAll(sort).page(page).list();
}
} Defensive patterns
Strategy: try-catch
Validate before calling
// ensure the resource is generated (deployment-time), not hand-implemented
if (getClass().getMethod("list", Page.class, Sort.class)
.getDeclaringClass() == ReactiveRestDataResource.class) {
throw new IllegalStateException("list(Page, Sort) is not generated/overridden");
} Try / catch
try {
return resource.list(page, sort);
} catch (RuntimeException e) {
if ("Not implemented yet".equals(e.getMessage())) {
return fallbackList(page, sort); // custom Panache query
}
throw e;
} Prevention
- Do not implement ReactiveRestDataResource directly; use build-time generation.
- Override every default method you actually expose.
- Rebuild after adding/removing REST Data Panache config so resources regenerate.
- Write a boot-time smoke test hitting each endpoint (list/get/add/update/delete/count).
When it happens
Trigger: Runtime: a GET on the generated collection endpoint calls default list(Page, Sort) because the resource was NOT generated/overridden — e.g. using the interface directly in a custom resource, a generator regression that skipped method implementation, or calling the method on an anonymous/manual implementation.
Common situations: Developer implements ReactiveRestDataResource manually (or extends it partially) instead of using the generated resource; version change or build issue prevented method generation; a custom JAX-RS resource delegates to the interface defaults.
Related errors
- No datasource named '<dataSourceName>' exists
- Stateless operations not supported
- Blocking gRPC client call made from the event loop. If the c
- Attempting to boot a blocking Hibernate ORM instance on a re
- @Transactional cannot start a JTA transaction within a react
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/506ef5c08513370d.
Report an issue: GitHub.