Skip to content

Commit

Permalink
Keep the order for server configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
gsmet committed Nov 29, 2022
1 parent 45df767 commit 0ee0cb0
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 29 deletions.
25 changes: 19 additions & 6 deletions core/src/main/java/io/smallrye/openapi/api/OpenApiConfig.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package io.smallrye.openapi.api;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
Expand Down Expand Up @@ -55,16 +57,16 @@ default boolean scanBeanValidation() {
return true;
}

default Set<String> servers() {
return new HashSet<>();
default List<String> servers() {
return new ArrayList<>();
}

default Set<String> pathServers(String path) {
return new HashSet<>();
default List<String> pathServers(String path) {
return new ArrayList<>();
}

default Set<String> operationServers(String operationId) {
return new HashSet<>();
default List<String> operationServers(String operationId) {
return new ArrayList<>();
}

default boolean scanDependenciesDisable() {
Expand Down Expand Up @@ -224,4 +226,15 @@ default Set<String> asCsvSet(String items) {
}
return rval;
}

default List<String> asCsvList(String items) {
List<String> rval = new ArrayList<>();
if (items != null) {
String[] split = items.split(",");
for (String item : split) {
rval.add(item.trim());
}
}
return rval;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
Expand Down Expand Up @@ -32,7 +33,7 @@ public class OpenApiConfigImpl implements OpenApiConfig {
private Set<String> scanExcludePackages;
private Set<String> scanExcludeClasses;
private Boolean scanBeanValidation;
private Set<String> servers;
private List<String> servers;
private Boolean scanDependenciesDisable;
private Set<String> scanDependenciesJars;
private Boolean arrayReferencesEnable;
Expand Down Expand Up @@ -183,10 +184,10 @@ public boolean scanBeanValidation() {
* @see io.smallrye.openapi.api.OpenApiConfig#servers()
*/
@Override
public Set<String> servers() {
public List<String> servers() {
if (servers == null) {
String theServers = getStringConfigValue(OASConfig.SERVERS);
servers = asCsvSet(theServers);
servers = asCsvList(theServers);
}
return servers;
}
Expand All @@ -195,18 +196,18 @@ public Set<String> servers() {
* @see io.smallrye.openapi.api.OpenApiConfig#pathServers(java.lang.String)
*/
@Override
public Set<String> pathServers(String path) {
public List<String> pathServers(String path) {
String pathServers = getStringConfigValue(OASConfig.SERVERS_PATH_PREFIX + path);
return asCsvSet(pathServers);
return asCsvList(pathServers);
}

/**
* @see io.smallrye.openapi.api.OpenApiConfig#operationServers(java.lang.String)
*/
@Override
public Set<String> operationServers(String operationId) {
public List<String> operationServers(String operationId) {
String opServers = getStringConfigValue(OASConfig.SERVERS_OPERATION_PREFIX + operationId);
return asCsvSet(opServers);
return asCsvList(opServers);
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package io.smallrye.openapi.api.util;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.eclipse.microprofile.openapi.models.OpenAPI;
import org.eclipse.microprofile.openapi.models.Operation;
Expand Down Expand Up @@ -85,7 +85,7 @@ protected static final void configureInfo(OpenApiConfig config, OpenAPI oai) {

protected static final void configureServers(OpenApiConfig config, OpenAPI oai) {
// Start with the global servers.
Set<String> servers = config.servers();
List<String> servers = config.servers();
if (servers != null && !servers.isEmpty()) {
oai.servers(new ArrayList<>());
for (String server : servers) {
Expand Down Expand Up @@ -114,7 +114,7 @@ protected static void configureServers(OpenApiConfig config, String pathName, Pa
return;
}

Set<String> pathServers = config.pathServers(pathName);
List<String> pathServers = config.pathServers(pathName);
if (pathServers != null && !pathServers.isEmpty()) {
pathItem.servers(new ArrayList<>());
for (String pathServer : pathServers) {
Expand Down Expand Up @@ -148,7 +148,7 @@ protected static void configureServers(OpenApiConfig config, Operation operation
return;
}

Set<String> operationServers = config.operationServers(operation.getOperationId());
List<String> operationServers = config.operationServers(operation.getOperationId());
if (operationServers != null && !operationServers.isEmpty()) {
operation.servers(new ArrayList<>());
for (String operationServer : operationServers) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

import java.nio.charset.StandardCharsets;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.gradle.api.file.RegularFileProperty;
Expand Down Expand Up @@ -160,18 +161,18 @@ public Set<String> scanExcludeClasses() {
}

@Override
public Set<String> servers() {
return new HashSet<>(servers.getOrElse(emptyList()));
public List<String> servers() {
return servers.getOrElse(emptyList());
}

@Override
public Set<String> pathServers(String path) {
return asCsvSet(pathServers.getting(path).getOrNull());
public List<String> pathServers(String path) {
return asCsvList(pathServers.getting(path).getOrNull());
}

@Override
public Set<String> operationServers(String operationId) {
return asCsvSet(operationServers.getting(operationId).getOrNull());
public List<String> operationServers(String operationId) {
return asCsvList(operationServers.getting(operationId).getOrNull());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.smallrye.openapi.mavenplugin;

import java.util.List;
import java.util.Map;
import java.util.Set;

Expand Down Expand Up @@ -61,18 +62,18 @@ public Set<String> scanExcludeClasses() {
}

@Override
public Set<String> servers() {
return asCsvSet(properties.getOrDefault(OASConfig.SERVERS, null));
public List<String> servers() {
return asCsvList(properties.getOrDefault(OASConfig.SERVERS, null));
}

@Override
public Set<String> pathServers(String path) {
return asCsvSet(properties.getOrDefault(OASConfig.SERVERS_PATH_PREFIX + path, null));
public List<String> pathServers(String path) {
return asCsvList(properties.getOrDefault(OASConfig.SERVERS_PATH_PREFIX + path, null));
}

@Override
public Set<String> operationServers(String operationId) {
return asCsvSet(properties.getOrDefault(OASConfig.SERVERS_OPERATION_PREFIX + operationId, null));
public List<String> operationServers(String operationId) {
return asCsvList(properties.getOrDefault(OASConfig.SERVERS_OPERATION_PREFIX + operationId, null));
}

@Override
Expand Down

0 comments on commit 0ee0cb0

Please sign in to comment.