Skip to content

Commit 3809339

Browse files
committed
simplify AbstractAuthenticationProvider
1 parent 366dfd4 commit 3809339

File tree

12 files changed

+85
-109
lines changed

12 files changed

+85
-109
lines changed
Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,24 @@
11
package io.quarkiverse.openapi.generator.deployment.authentication;
22

3-
import io.quarkiverse.openapi.generator.Authentication;
4-
import io.quarkiverse.openapi.generator.markers.ApiKeyAuthenticationMarker;
5-
import io.quarkiverse.openapi.generator.markers.BasicAuthenticationMarker;
6-
import io.quarkiverse.openapi.generator.markers.OauthAuthenticationMarker;
7-
import io.quarkiverse.openapi.generator.providers.ApiKeyAuthenticationProvider;
8-
import io.quarkiverse.openapi.generator.providers.BasicAuthenticationProvider;
9-
import io.quarkiverse.openapi.generator.providers.OAuth2AuthenticationProvider;
10-
import io.quarkus.test.QuarkusUnitTest;
3+
import static io.quarkiverse.openapi.generator.providers.ApiKeyIn.header;
4+
115
import jakarta.inject.Inject;
6+
127
import org.jboss.shrinkwrap.api.ShrinkWrap;
138
import org.jboss.shrinkwrap.api.asset.StringAsset;
149
import org.jboss.shrinkwrap.api.spec.JavaArchive;
1510
import org.junit.jupiter.api.Assertions;
1611
import org.junit.jupiter.api.Test;
1712
import org.junit.jupiter.api.extension.RegisterExtension;
1813

19-
import static io.quarkiverse.openapi.generator.providers.ApiKeyIn.header;
20-
14+
import io.quarkiverse.openapi.generator.Authentication;
15+
import io.quarkiverse.openapi.generator.markers.ApiKeyAuthenticationMarker;
16+
import io.quarkiverse.openapi.generator.markers.BasicAuthenticationMarker;
17+
import io.quarkiverse.openapi.generator.markers.OauthAuthenticationMarker;
18+
import io.quarkiverse.openapi.generator.providers.ApiKeyAuthenticationProvider;
19+
import io.quarkiverse.openapi.generator.providers.BasicAuthenticationProvider;
20+
import io.quarkiverse.openapi.generator.providers.OAuth2AuthenticationProvider;
21+
import io.quarkus.test.QuarkusUnitTest;
2122

2223
public class AuthenticationProviderTest {
2324

@@ -26,12 +27,11 @@ public class AuthenticationProviderTest {
2627
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
2728
.addClass(CompositeAuthenticationProvider.class)
2829
.addAsResource(
29-
new StringAsset("\n"
30-
),
30+
new StringAsset("\n"),
3131
"application.properties"));
3232

3333
@Test
34-
public void test(){
34+
public void test() {
3535
Assertions.assertEquals("petstore_auth", oAuth2Provider.getName());
3636
Assertions.assertEquals("spec_1", oAuth2Provider.getOpenApiSpecId());
3737
Assertions.assertEquals("basic_auth", basicAuthProvider.getName());
@@ -40,27 +40,22 @@ public void test(){
4040
Assertions.assertEquals("spec_2", apiKeyQueryProvider.getOpenApiSpecId());
4141
}
4242

43-
4443
@Inject
45-
@Authentication(name="petstore_auth", openApiSpecId="spec_1")
44+
@Authentication(name = "petstore_auth", openApiSpecId = "spec_1")
4645
OAuth2AuthenticationProvider oAuth2Provider;
4746

48-
@Authentication(name="basic_auth", openApiSpecId="spec_1")
47+
@Authentication(name = "basic_auth", openApiSpecId = "spec_1")
4948
BasicAuthenticationProvider basicAuthProvider;
5049

51-
52-
@Authentication(name="api_key", openApiSpecId="spec_2")
50+
@Authentication(name = "api_key", openApiSpecId = "spec_2")
5351
ApiKeyAuthenticationProvider apiKeyQueryProvider;
5452

55-
56-
5753
@jakarta.annotation.Priority(jakarta.ws.rs.Priorities.AUTHENTICATION)
58-
@OauthAuthenticationMarker(name="petstore_auth", openApiSpecId="spec_1")
59-
@BasicAuthenticationMarker(name="basic_auth", openApiSpecId="spec_1")
60-
@ApiKeyAuthenticationMarker(name="api_key", openApiSpecId="spec_2", apiKeyIn= header, apiKeyName="api_key")
54+
@OauthAuthenticationMarker(name = "petstore_auth", openApiSpecId = "spec_1")
55+
@BasicAuthenticationMarker(name = "basic_auth", openApiSpecId = "spec_1")
56+
@ApiKeyAuthenticationMarker(name = "api_key", openApiSpecId = "spec_2", apiKeyIn = header, apiKeyName = "api_key")
6157
public static class CompositeAuthenticationProvider {
6258

63-
6459
}
6560

66-
}
61+
}
Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,28 @@
11
package io.quarkiverse.openapi.generator.deployment.authentication;
22

3-
import io.quarkiverse.openapi.generator.Authentication;
4-
import io.quarkiverse.openapi.generator.annotations.GeneratedClass;
5-
import io.quarkiverse.openapi.generator.markers.ApiKeyAuthenticationMarker;
6-
import io.quarkiverse.openapi.generator.markers.BasicAuthenticationMarker;
7-
import io.quarkiverse.openapi.generator.markers.OauthAuthenticationMarker;
8-
import io.quarkiverse.openapi.generator.markers.OperationMarker;
9-
import io.quarkiverse.openapi.generator.providers.ApiKeyAuthenticationProvider;
10-
import io.quarkiverse.openapi.generator.providers.BasicAuthenticationProvider;
11-
import io.quarkiverse.openapi.generator.providers.OAuth2AuthenticationProvider;
12-
import io.quarkiverse.openapi.generator.providers.OperationAuthInfo;
13-
import io.quarkus.test.QuarkusUnitTest;
143
import jakarta.enterprise.context.ApplicationScoped;
154
import jakarta.inject.Inject;
16-
import jakarta.ws.rs.GET;
175
import jakarta.ws.rs.POST;
186
import jakarta.ws.rs.Path;
197
import jakarta.ws.rs.core.Response;
8+
209
import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
2110
import org.jboss.shrinkwrap.api.ShrinkWrap;
2211
import org.jboss.shrinkwrap.api.asset.StringAsset;
2312
import org.jboss.shrinkwrap.api.spec.JavaArchive;
2413
import org.junit.jupiter.api.Assertions;
2514
import org.junit.jupiter.api.Test;
2615
import org.junit.jupiter.api.extension.RegisterExtension;
27-
import org.wildfly.common.Assert;
2816

17+
import io.quarkiverse.openapi.generator.Authentication;
18+
import io.quarkiverse.openapi.generator.annotations.GeneratedClass;
19+
import io.quarkiverse.openapi.generator.markers.BasicAuthenticationMarker;
20+
import io.quarkiverse.openapi.generator.markers.OauthAuthenticationMarker;
21+
import io.quarkiverse.openapi.generator.markers.OperationMarker;
22+
import io.quarkiverse.openapi.generator.providers.BasicAuthenticationProvider;
23+
import io.quarkiverse.openapi.generator.providers.OAuth2AuthenticationProvider;
24+
import io.quarkiverse.openapi.generator.providers.OperationAuthInfo;
25+
import io.quarkus.test.QuarkusUnitTest;
2926

3027
public class OperationTest {
3128

@@ -35,12 +32,11 @@ public class OperationTest {
3532
.addClass(PetApi.class)
3633
.addClass(CompositeAuthenticationProvider.class)
3734
.addAsResource(
38-
new StringAsset("\n"
39-
),
35+
new StringAsset("\n"),
4036
"application.properties"));
4137

4238
@Test
43-
public void test(){
39+
public void test() {
4440
Assertions.assertEquals(0, basicAuthProvider.operationsToFilter().size());
4541
Assertions.assertEquals(1, oAuth2Provider.operationsToFilter().size());
4642
OperationAuthInfo operation = oAuth2Provider.operationsToFilter().get(0);
@@ -50,19 +46,17 @@ public void test(){
5046

5147
}
5248

53-
5449
@Inject
55-
@Authentication(name="petstore_auth", openApiSpecId="petstore_json")
50+
@Authentication(name = "petstore_auth", openApiSpecId = "petstore_json")
5651
OAuth2AuthenticationProvider oAuth2Provider;
57-
@Authentication(name="basic_auth", openApiSpecId="petstore_json")
52+
@Authentication(name = "basic_auth", openApiSpecId = "petstore_json")
5853
BasicAuthenticationProvider basicAuthProvider;
5954

6055
@RegisterRestClient(baseUri = "http://localhost/api/v3", configKey = "petstore_json")
6156
@GeneratedClass(value = "petstore.json", tag = "Pet")
6257
@ApplicationScoped
6358
public interface PetApi {
6459

65-
6660
@OperationMarker(name = "petstore_auth", openApiSpecId = "petstore_json", operationId = "addPet", method = "POST", path = "/api/v3/method1")
6761
@Path("/method1")
6862
@POST
@@ -71,11 +65,10 @@ public interface PetApi {
7165
}
7266

7367
@jakarta.annotation.Priority(jakarta.ws.rs.Priorities.AUTHENTICATION)
74-
@OauthAuthenticationMarker(name="petstore_auth", openApiSpecId="petstore_json")
75-
@BasicAuthenticationMarker(name="basic_auth", openApiSpecId="petstore_json")
68+
@OauthAuthenticationMarker(name = "petstore_auth", openApiSpecId = "petstore_json")
69+
@BasicAuthenticationMarker(name = "basic_auth", openApiSpecId = "petstore_json")
7670
public static class CompositeAuthenticationProvider {
7771

78-
7972
}
8073

81-
}
74+
}

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

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

33
import java.util.List;
4+
import java.util.Objects;
45
import java.util.function.Function;
56

67
import io.quarkiverse.openapi.generator.providers.*;
@@ -23,29 +24,31 @@ public Function<SyntheticCreationalContext<ApiKeyAuthenticationProvider>, ApiKey
2324
ApiKeyIn apiKeyIn,
2425
String apiKeyName,
2526
List<OperationAuthInfo> operations) {
26-
return context -> new ApiKeyAuthenticationProvider(openApiSpecId, name, apiKeyIn, apiKeyName, generatorConfig,
27+
return context -> new ApiKeyAuthenticationProvider(openApiSpecId, name, apiKeyIn, apiKeyName,
28+
getAuthConfig(openApiSpecId, name),
2729
operations);
2830
}
2931

3032
public Function<SyntheticCreationalContext<BearerAuthenticationProvider>, BearerAuthenticationProvider> recordBearerAuthProvider(
3133
String name,
3234
String scheme,
3335
String openApiSpecId, List<OperationAuthInfo> operations) {
34-
return context -> new BearerAuthenticationProvider(openApiSpecId, name, scheme, generatorConfig, operations);
36+
return context -> new BearerAuthenticationProvider(openApiSpecId, name, scheme, getAuthConfig(openApiSpecId, name),
37+
operations);
3538
}
3639

3740
public Function<SyntheticCreationalContext<BasicAuthenticationProvider>, BasicAuthenticationProvider> recordBasicAuthProvider(
3841
String name,
3942
String openApiSpecId, List<OperationAuthInfo> operations) {
40-
return context -> new BasicAuthenticationProvider(openApiSpecId, name, generatorConfig, operations);
43+
return context -> new BasicAuthenticationProvider(openApiSpecId, name, getAuthConfig(openApiSpecId, name), operations);
4144
}
4245

4346
public RuntimeValue<OAuth2AuthenticationProvider> recordOauthAuthProvider(
4447
String name,
4548
String openApiSpecId, OAuth2AuthenticationProvider.OidcClientRequestFilterDelegate delegate,
4649
List<OperationAuthInfo> operations) {
47-
return new RuntimeValue<>(new OAuth2AuthenticationProvider(generatorConfig, name, openApiSpecId,
48-
delegate, operations)) ;
50+
return new RuntimeValue<>(new OAuth2AuthenticationProvider(getAuthConfig(openApiSpecId, name), name, openApiSpecId,
51+
delegate, operations));
4952
}
5053

5154
public OAuth2AuthenticationProvider.OidcClientRequestFilterDelegate recordReactiveDelegate(String clientId) {
@@ -55,4 +58,12 @@ public OAuth2AuthenticationProvider.OidcClientRequestFilterDelegate recordReacti
5558
public OAuth2AuthenticationProvider.OidcClientRequestFilterDelegate recordClassicDelegate(String clientId) {
5659
return new ClassicOidcClientRequestFilterDelegate(clientId);
5760
}
61+
62+
AuthConfig getAuthConfig(String openApiSpecId, String name) {
63+
return Objects.requireNonNull(generatorConfig, "generatorConfig can't be null.")
64+
.getItemConfig(openApiSpecId)
65+
.flatMap(SpecItemConfig::getAuth)
66+
.flatMap(authsConfig -> authsConfig.getItemConfig(name))
67+
.orElse(null);
68+
}
5869
}

client/runtime/src/main/java/io/quarkiverse/openapi/generator/providers/AbstractAuthProvider.java

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,11 @@
66
import java.util.ArrayList;
77
import java.util.List;
88
import java.util.Objects;
9-
import java.util.Optional;
109

1110
import jakarta.ws.rs.core.HttpHeaders;
1211
import jakarta.ws.rs.core.MultivaluedMap;
1312

1413
import io.quarkiverse.openapi.generator.AuthConfig;
15-
import io.quarkiverse.openapi.generator.AuthsConfig;
16-
import io.quarkiverse.openapi.generator.OpenApiGeneratorConfig;
17-
import io.quarkiverse.openapi.generator.SpecItemConfig;
1814

1915
public abstract class AbstractAuthProvider implements AuthProvider {
2016

@@ -24,28 +20,15 @@ public abstract class AbstractAuthProvider implements AuthProvider {
2420

2521
private final String openApiSpecId;
2622
private final String name;
27-
private final OpenApiGeneratorConfig generatorConfig;
28-
private AuthConfig authConfig;
23+
private final AuthConfig authConfig;
2924
private final List<OperationAuthInfo> applyToOperations = new ArrayList<>();
3025

31-
protected AbstractAuthProvider(OpenApiGeneratorConfig generatorConfig, String name, String openApiSpecId,
26+
protected AbstractAuthProvider(AuthConfig authConfig, String name, String openApiSpecId,
3227
List<OperationAuthInfo> operations) {
33-
this.generatorConfig = generatorConfig;
3428
this.name = name;
3529
this.openApiSpecId = openApiSpecId;
30+
this.authConfig = authConfig;
3631
this.applyToOperations.addAll(operations);
37-
configureOpenApiSpecId(openApiSpecId);
38-
}
39-
40-
private void configureOpenApiSpecId(String openApiSpecId) {
41-
42-
Optional<SpecItemConfig> specItemConfig = Objects.requireNonNull(generatorConfig, "generatorConfig can't be null.")
43-
.getItemConfig(openApiSpecId);
44-
if (specItemConfig.isPresent()) {
45-
Optional<AuthsConfig> authsConfig = specItemConfig.get().getAuth();
46-
authsConfig.ifPresent(
47-
specItemAuthsConfig -> authConfig = specItemAuthsConfig.getItemConfig(name).orElse(null));
48-
}
4932
}
5033

5134
public String getOpenApiSpecId() {
@@ -57,10 +40,6 @@ public String getName() {
5740
return name;
5841
}
5942

60-
public OpenApiGeneratorConfig getGeneratorConfig() {
61-
return generatorConfig;
62-
}
63-
6443
public boolean isTokenPropagation() {
6544
return authConfig != null && authConfig.getTokenPropagation().orElse(false);
6645
}
@@ -83,7 +62,6 @@ public List<OperationAuthInfo> operationsToFilter() {
8362
return applyToOperations;
8463
}
8564

86-
8765
public String getAuthConfigParam(String paramName, String defaultValue) {
8866
if (authConfig != null) {
8967
return authConfig.getConfigParam(paramName).orElse(defaultValue);

client/runtime/src/main/java/io/quarkiverse/openapi/generator/providers/ApiKeyAuthenticationProvider.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@
1313
import org.slf4j.Logger;
1414
import org.slf4j.LoggerFactory;
1515

16-
import io.quarkiverse.openapi.generator.OpenApiGeneratorConfig;
17-
import io.quarkiverse.openapi.generator.OpenApiGeneratorException;
16+
import io.quarkiverse.openapi.generator.*;
1817

1918
/**
2019
* Provider for API Key authentication.
@@ -31,8 +30,8 @@ public class ApiKeyAuthenticationProvider extends AbstractAuthProvider {
3130

3231
public ApiKeyAuthenticationProvider(final String openApiSpecId, final String name, final ApiKeyIn apiKeyIn,
3332
final String apiKeyName,
34-
final OpenApiGeneratorConfig generatorConfig, List<OperationAuthInfo> operations) {
35-
super(generatorConfig, name, openApiSpecId, operations);
33+
final AuthConfig authConfig, List<OperationAuthInfo> operations) {
34+
super(authConfig, name, openApiSpecId, operations);
3635
this.apiKeyIn = apiKeyIn;
3736
this.apiKeyName = apiKeyName;
3837
validateConfig();

client/runtime/src/main/java/io/quarkiverse/openapi/generator/providers/BasicAuthenticationProvider.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import jakarta.ws.rs.client.ClientRequestContext;
99
import jakarta.ws.rs.core.HttpHeaders;
1010

11-
import io.quarkiverse.openapi.generator.OpenApiGeneratorConfig;
11+
import io.quarkiverse.openapi.generator.AuthConfig;
1212
import io.quarkiverse.openapi.generator.OpenApiGeneratorException;
1313

1414
/**
@@ -21,9 +21,9 @@ public class BasicAuthenticationProvider extends AbstractAuthProvider {
2121
static final String USER_NAME = "username";
2222
static final String PASSWORD = "password";
2323

24-
public BasicAuthenticationProvider(final String openApiSpecId, String name, final OpenApiGeneratorConfig generatorConfig,
24+
public BasicAuthenticationProvider(final String openApiSpecId, String name, final AuthConfig authConfig,
2525
List<OperationAuthInfo> operations) {
26-
super(generatorConfig, name, openApiSpecId, operations);
26+
super(authConfig, name, openApiSpecId, operations);
2727
validateConfig();
2828
}
2929

client/runtime/src/main/java/io/quarkiverse/openapi/generator/providers/BearerAuthenticationProvider.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import jakarta.ws.rs.client.ClientRequestContext;
77
import jakarta.ws.rs.core.HttpHeaders;
88

9-
import io.quarkiverse.openapi.generator.OpenApiGeneratorConfig;
9+
import io.quarkiverse.openapi.generator.AuthConfig;
1010

1111
/**
1212
* Provides bearer token authentication or any other valid scheme.
@@ -20,8 +20,8 @@ public class BearerAuthenticationProvider extends AbstractAuthProvider {
2020
private final String scheme;
2121

2222
public BearerAuthenticationProvider(final String openApiSpecId, final String name, final String scheme,
23-
final OpenApiGeneratorConfig generatorConfig, List<OperationAuthInfo> operations) {
24-
super(generatorConfig, name, openApiSpecId, operations);
23+
final AuthConfig authConfig, List<OperationAuthInfo> operations) {
24+
super(authConfig, name, openApiSpecId, operations);
2525
this.scheme = scheme;
2626
}
2727

client/runtime/src/main/java/io/quarkiverse/openapi/generator/providers/OAuth2AuthenticationProvider.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import org.slf4j.Logger;
1212
import org.slf4j.LoggerFactory;
1313

14-
import io.quarkiverse.openapi.generator.OpenApiGeneratorConfig;
14+
import io.quarkiverse.openapi.generator.AuthConfig;
1515
import io.quarkus.oidc.common.runtime.OidcConstants;
1616

1717
public class OAuth2AuthenticationProvider extends AbstractAuthProvider {
@@ -20,9 +20,9 @@ public class OAuth2AuthenticationProvider extends AbstractAuthProvider {
2020

2121
private final OidcClientRequestFilterDelegate delegate;
2222

23-
public OAuth2AuthenticationProvider(final OpenApiGeneratorConfig generatorConfig, String name,
23+
public OAuth2AuthenticationProvider(final AuthConfig authConfig, String name,
2424
String openApiSpecId, OidcClientRequestFilterDelegate delegate, List<OperationAuthInfo> operations) {
25-
super(generatorConfig, name, openApiSpecId, operations);
25+
super(authConfig, name, openApiSpecId, operations);
2626
this.delegate = delegate;
2727
validateConfig();
2828
}

0 commit comments

Comments
 (0)