OpenAPI30To31.java

package io.swagger.v3.core.util;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.SpecVersion;

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

public class OpenAPI30To31 {

    public void process(OpenAPI openAPI) {
        openAPI.openapi("3.1.0")
                .jsonSchemaDialect("https://spec.openapis.org/oas/3.1/dialect/base")
                .specVersion(SpecVersion.V31);

        removeReservedExtensionsName(openAPI.getExtensions());

        if (openAPI.getInfo() != null) {
            removeReservedExtensionsName(openAPI.getInfo().getExtensions());
        }

        if (openAPI.getPaths() != null) {
            removeReservedExtensionsName(openAPI.getPaths().getExtensions());
        }

        if (openAPI.getComponents() != null) {
            removeReservedExtensionsName(openAPI.getComponents().getExtensions());
        }
    }

    private void removeReservedExtensionsName(Map<String, Object> extensions) {
        if (extensions == null || extensions.isEmpty()) {
            return;
        }
        final Set<String> keys = extensions.keySet();
        for (String key : keys) {
            if (key.startsWith("x-oas-") || key.startsWith("x-oai-")) {
                extensions.remove(key);
            }
        }
    }
}