quarkusio/quarkus · error · UnsupportedOperationException

Pending implementation

Error message

Pending implementation

What it means

RESTEasy Reactive does not implement the JAX-RS 3.1 client-side bootstrapping API (SeBootstrap). createConfigurationBuilder is a stub that always throws UnsupportedOperationException with the message 'Pending implementation'.

Source

Thrown at independent-projects/resteasy-reactive/common/runtime/src/main/java/org/jboss/resteasy/reactive/common/jaxrs/RuntimeDelegateImpl.java:134

            return (HeaderDelegate<T>) EntityTagDelegate.INSTANCE;
        } else if (type.equals(Locale.class)) {
            return (HeaderDelegate<T>) LocaleDelegate.INSTANCE;
        } else if (type.equals(Link.class)) {
            return (HeaderDelegate<T>) LinkDelegate.INSTANCE;
        } else {
            return (HeaderDelegate<T>) ObjectToStringDelegate.INSTANCE;
        }
    }

    @Override
    public Link.Builder createLinkBuilder() {
        return new LinkBuilderImpl();
    }

    @Override
    public SeBootstrap.Configuration.Builder createConfigurationBuilder() {
        // RR does not implement currently implement the bootstrapping API
        throw new UnsupportedOperationException("Pending implementation");
    }

    @Override
    public CompletionStage<SeBootstrap.Instance> bootstrap(Application application,
            SeBootstrap.Configuration configuration) {
        // RR does not implement currently implement the bootstrapping API
        throw new UnsupportedOperationException("Pending implementation");
    }

    @Override
    public CompletionStage<SeBootstrap.Instance> bootstrap(Class<? extends Application> aClass,
            SeBootstrap.Configuration configuration) {
        // RR does not implement currently implement the bootstrapping API
        throw new UnsupportedOperationException("Pending implementation");
    }

    @Override
    public EntityPart.Builder createEntityPartBuilder(String s) throws IllegalArgumentException {

View on GitHub (pinned to e1c734241f)

Solutions

  1. Start the application with Quarkus itself (quarkus:dev / quarkus run / main via QuarkusApplication) instead of SeBootstrap
  2. For tests use @QuarkusTest or @QuarkusIntegrationTest
  3. Abstract bootstrap code behind a vendor check and provide a Quarkus-specific path
  4. Track upstream RESTEasy Reactive for SeBootstrap support before relying on it

Example fix

// before
SeBootstrap.Configuration.Builder b = rd.createConfigurationBuilder(); // UnsupportedOperationException
// after
public static void main(String[] args) {
    Quarkus.run(QuarkusApplication.class, args); // Quarkus-native startup
}
Defensive patterns

Strategy: try-catch

Validate before calling

boolean supportsBootstrap = false;
try { rd.createConfigurationBuilder(); supportsBootstrap = true; } catch (UnsupportedOperationException ignored) { }

Try / catch

try {
    SeBootstrap.Configuration.Builder b = rd.createConfigurationBuilder();
    // proceed with bootstrap
} catch (UnsupportedOperationException e) {
    // fall back to Quarkus-native startup
    Quarkus.run(args);
}

Prevention

When it happens

Trigger: Calling RuntimeDelegate.getInstance().createConfigurationBuilder() — i.e., attempting to bootstrap a JAX-RS application embedded in SE mode via the SeBootstrap API.

Common situations: Portable JAX-RS code written for other vendors (Jersey/RESTEasy classic) that uses SeBootstrap being ported to Quarkus; vendor-neutral integration frameworks probing bootstrap support.

Related errors


AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05). Data as JSON: /api/errors/661f6fac0dea7f85. Report an issue: GitHub.