@@ -19,12 +19,23 @@ public record Spec(
1919 Map <String , Parameter > componentParameters ,
2020 String basePath ,
2121 Map <String , Schema > schemaRefIndex ,
22- Map <String , Parameter > parameterRefIndex ) {
22+ Map <String , Parameter > parameterRefIndex ,
23+ Map <String , Object > extensions ) {
2324
2425 private static final String SCHEMA_KEY = "schema" ;
2526 private static final String SCHEMA_REF_PREFIX = "#/components/schemas/" ;
2627 private static final String PARAMETER_REF_PREFIX = "#/components/parameters/" ;
2728
29+ static Map <String , Object > extractExtensions (Map <String , Object > raw ) {
30+ Map <String , Object > out = new LinkedHashMap <>();
31+ for (var e : raw .entrySet ()) {
32+ if (e .getKey ().startsWith ("x-" )) {
33+ out .put (e .getKey (), e .getValue ());
34+ }
35+ }
36+ return Map .copyOf (out );
37+ }
38+
2839 @ SuppressWarnings ("unchecked" )
2940 public static Spec from (Map <String , Object > raw ) {
3041 String openapi = (String ) raw .get ("openapi" );
@@ -46,7 +57,8 @@ public static Spec from(Map<String, Object> raw) {
4657 componentParameters ,
4758 computeBasePath (servers ),
4859 indexByRef (componentSchemas , SCHEMA_REF_PREFIX ),
49- indexByRef (componentParameters , PARAMETER_REF_PREFIX ));
60+ indexByRef (componentParameters , PARAMETER_REF_PREFIX ),
61+ extractExtensions (raw ));
5062 }
5163
5264 private static String computeBasePath (List <Server > servers ) {
0 commit comments