Skip to content

Commit a8a9251

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

File tree

3 files changed

+80
-9
lines changed

3 files changed

+80
-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: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,27 @@
11
package io.quarkiverse.openapi.generator;
22

3+
import io.quarkus.oidc.client.runtime.AbstractTokensProducer;
4+
import io.quarkus.oidc.client.runtime.DisabledOidcClientException;
35
import jakarta.annotation.Priority;
46
import jakarta.enterprise.inject.spi.InjectionPoint;
57
import jakarta.ws.rs.Priorities;
68

79
import io.quarkiverse.openapi.generator.providers.OAuth2AuthenticationProvider;
810
import io.quarkus.oidc.client.filter.runtime.AbstractOidcClientRequestFilter;
11+
import jakarta.ws.rs.client.ClientRequestContext;
12+
import jakarta.ws.rs.client.ClientRequestFilter;
13+
import org.jboss.logging.Logger;
14+
15+
import java.io.IOException;
916

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

1526
ClassicOidcClientRequestFilterDelegate(InjectionPoint injectionPoint) {
1627
OidcClient annotation = (OidcClient) injectionPoint.getQualifiers().stream()
@@ -27,4 +38,20 @@ protected java.util.Optional<String> clientId() {
2738
return java.util.Optional.of(clientId);
2839
}
2940

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

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)