Skip to content

Commit 334c66f

Browse files
committed
temporary fix for Class does not exist in ClassLoader error
1 parent 56acf4b commit 334c66f

File tree

3 files changed

+81
-9
lines changed

3 files changed

+81
-9
lines changed

client/deployment/src/main/java/io/quarkiverse/openapi/generator/deployment/GeneratorProcessor.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,16 @@ FeatureBuildItem feature() {
4646
@BuildStep
4747
void additionalBean(
4848
Capabilities capabilities,
49-
BuildProducer<AdditionalBeanBuildItem> additionalBeanBuildItem) {
49+
BuildProducer<AdditionalBeanBuildItem> producer) {
50+
5051
if (capabilities.isPresent(Capability.REST_CLIENT_REACTIVE)) {
51-
additionalBeanBuildItem.produce(
52+
producer.produce(
5253
AdditionalBeanBuildItem.builder().addBeanClass(ReactiveOidcClientRequestFilterDelegate.class)
5354
.setDefaultScope(DotName.createSimple(Dependent.class))
5455
.setUnremovable()
5556
.build());
5657
} else {
57-
additionalBeanBuildItem.produce(
58+
producer.produce(
5859
AdditionalBeanBuildItem.builder().addBeanClass(ClassicOidcClientRequestFilterDelegate.class)
5960
.setDefaultScope(DotName.createSimple(Dependent.class))
6061
.setUnremovable()

client/runtime/src/main/java/io/quarkiverse/openapi/generator/ClassicOidcClientRequestFilterDelegate.java

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,28 @@
11
package io.quarkiverse.openapi.generator;
22

3+
import java.io.IOException;
4+
35
import jakarta.annotation.Priority;
46
import jakarta.enterprise.inject.spi.InjectionPoint;
57
import jakarta.ws.rs.Priorities;
8+
import jakarta.ws.rs.client.ClientRequestContext;
9+
import jakarta.ws.rs.client.ClientRequestFilter;
10+
11+
import org.jboss.logging.Logger;
612

713
import io.quarkiverse.openapi.generator.providers.OAuth2AuthenticationProvider;
814
import io.quarkus.oidc.client.filter.runtime.AbstractOidcClientRequestFilter;
15+
import io.quarkus.oidc.client.runtime.AbstractTokensProducer;
16+
import io.quarkus.oidc.client.runtime.DisabledOidcClientException;
917

1018
@Priority(Priorities.AUTHENTICATION)
1119
@OidcClient
12-
public class ClassicOidcClientRequestFilterDelegate extends AbstractOidcClientRequestFilter
13-
implements OAuth2AuthenticationProvider.OidcClientRequestFilterDelegate {
20+
public class ClassicOidcClientRequestFilterDelegate extends AbstractTokensProducer
21+
implements ClientRequestFilter, OAuth2AuthenticationProvider.OidcClientRequestFilterDelegate {
22+
23+
private static final Logger LOG = Logger
24+
.getLogger(io.quarkus.oidc.client.filter.runtime.AbstractOidcClientRequestFilter.class);
25+
private static final String BEARER_SCHEME_WITH_SPACE = "Bearer ";
1426

1527
ClassicOidcClientRequestFilterDelegate(InjectionPoint injectionPoint) {
1628
OidcClient annotation = (OidcClient) injectionPoint.getQualifiers().stream()
@@ -27,4 +39,20 @@ protected java.util.Optional<String> clientId() {
2739
return java.util.Optional.of(clientId);
2840
}
2941

42+
public void filter(ClientRequestContext requestContext) throws IOException {
43+
try {
44+
String accessToken = this.getAccessToken();
45+
requestContext.getHeaders().add("Authorization", "Bearer " + accessToken);
46+
} catch (DisabledOidcClientException var3) {
47+
LOG.debug("Client is disabled, acquiring and propagating the token is not necessary");
48+
} catch (Exception var4) {
49+
Exception ex = var4;
50+
LOG.debugf("Access token is not available, cause: %s, aborting the request", ex.getMessage());
51+
throw ex instanceof RuntimeException ? (RuntimeException) ex : new RuntimeException(ex);
52+
}
53+
}
54+
55+
private String getAccessToken() {
56+
return this.awaitTokens().getAccessToken();
57+
}
3058
}

client/runtime/src/main/java/io/quarkiverse/openapi/generator/ReactiveOidcClientRequestFilterDelegate.java

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,31 @@
11
package io.quarkiverse.openapi.generator;
22

3+
import java.util.function.Consumer;
4+
35
import jakarta.annotation.Priority;
46
import jakarta.enterprise.inject.spi.InjectionPoint;
57
import jakarta.ws.rs.Priorities;
68
import jakarta.ws.rs.client.ClientRequestContext;
9+
import jakarta.ws.rs.core.HttpHeaders;
710

11+
import org.jboss.logging.Logger;
812
import org.jboss.resteasy.reactive.client.spi.ResteasyReactiveClientRequestContext;
13+
import org.jboss.resteasy.reactive.client.spi.ResteasyReactiveClientRequestFilter;
914

1015
import io.quarkiverse.openapi.generator.providers.OAuth2AuthenticationProvider;
11-
import io.quarkus.oidc.client.reactive.filter.runtime.AbstractOidcClientRequestReactiveFilter;
16+
import io.quarkus.oidc.client.Tokens;
17+
import io.quarkus.oidc.client.runtime.AbstractTokensProducer;
18+
import io.quarkus.oidc.client.runtime.DisabledOidcClientException;
19+
import io.quarkus.oidc.common.runtime.OidcConstants;
1220

1321
@Priority(Priorities.AUTHENTICATION)
1422
@OidcClient
15-
public class ReactiveOidcClientRequestFilterDelegate extends AbstractOidcClientRequestReactiveFilter
16-
implements OAuth2AuthenticationProvider.OidcClientRequestFilterDelegate {
23+
public class ReactiveOidcClientRequestFilterDelegate extends AbstractTokensProducer
24+
implements ResteasyReactiveClientRequestFilter, OAuth2AuthenticationProvider.OidcClientRequestFilterDelegate {
25+
26+
private static final Logger LOG = Logger
27+
.getLogger(ReactiveOidcClientRequestFilterDelegate.class);
28+
private static final String BEARER_SCHEME_WITH_SPACE = OidcConstants.BEARER_SCHEME + " ";
1729

1830
ReactiveOidcClientRequestFilterDelegate(InjectionPoint injectionPoint) {
1931
OidcClient annotation = (OidcClient) injectionPoint.getQualifiers().stream()
@@ -29,8 +41,39 @@ protected java.util.Optional<String> clientId() {
2941
return java.util.Optional.of(clientId);
3042
}
3143

44+
protected void initTokens() {
45+
if (earlyTokenAcquisition) {
46+
LOG.debug("Token acquisition will be delayed until this filter is executed to avoid blocking an IO thread");
47+
}
48+
}
49+
3250
@Override
3351
public void filter(ClientRequestContext requestContext) throws java.io.IOException {
34-
super.filter((ResteasyReactiveClientRequestContext) requestContext);
52+
filter((ResteasyReactiveClientRequestContext) requestContext);
53+
}
54+
55+
@Override
56+
public void filter(ResteasyReactiveClientRequestContext requestContext) {
57+
requestContext.suspend();
58+
59+
super.getTokens().subscribe().with(new Consumer<>() {
60+
@Override
61+
public void accept(Tokens tokens) {
62+
requestContext.getHeaders().putSingle(HttpHeaders.AUTHORIZATION,
63+
BEARER_SCHEME_WITH_SPACE + tokens.getAccessToken());
64+
requestContext.resume();
65+
}
66+
}, new Consumer<>() {
67+
@Override
68+
public void accept(Throwable t) {
69+
if (t instanceof DisabledOidcClientException) {
70+
LOG.debug("Client is disabled, acquiring and propagating the token is not necessary");
71+
requestContext.resume();
72+
} else {
73+
LOG.debugf("Access token is not available, cause: %s, aborting the request", t.getMessage());
74+
requestContext.resume((t instanceof RuntimeException) ? t : new RuntimeException(t));
75+
}
76+
}
77+
});
3578
}
3679
}

0 commit comments

Comments
 (0)