This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 3683f77  CAMEL-17326: Resolve swagger references (#6536)
3683f77 is described below

commit 3683f770b7b9a31e1778b3d347cc0dbe047da63e
Author: Jeremy Ross <[email protected]>
AuthorDate: Tue Dec 14 00:27:02 2021 -0600

    CAMEL-17326: Resolve swagger references (#6536)
---
 .../swagger/RestSwaggerComponentConfigurer.java    |    6 +
 .../swagger/RestSwaggerEndpointConfigurer.java     |    6 +
 .../swagger/RestSwaggerEndpointUriFactory.java     |    3 +-
 .../camel/component/rest/swagger/rest-swagger.json |    2 +
 .../rest/swagger/RestSwaggerComponent.java         |   11 +
 .../rest/swagger/RestSwaggerEndpoint.java          |   54 +-
 .../rest/swagger/RestSwaggerEndpointTest.java      |   24 +-
 .../src/test/resources/swagger.json                | 1050 +++++++++++++++++++-
 .../dsl/RestSwaggerComponentBuilderFactory.java    |   17 +
 .../dsl/RestSwaggerEndpointBuilderFactory.java     |   31 +
 10 files changed, 1185 insertions(+), 19 deletions(-)

diff --git 
a/components/camel-rest-swagger/src/generated/java/org/apache/camel/component/rest/swagger/RestSwaggerComponentConfigurer.java
 
b/components/camel-rest-swagger/src/generated/java/org/apache/camel/component/rest/swagger/RestSwaggerComponentConfigurer.java
index ba877d6..301a9af 100644
--- 
a/components/camel-rest-swagger/src/generated/java/org/apache/camel/component/rest/swagger/RestSwaggerComponentConfigurer.java
+++ 
b/components/camel-rest-swagger/src/generated/java/org/apache/camel/component/rest/swagger/RestSwaggerComponentConfigurer.java
@@ -32,6 +32,8 @@ public class RestSwaggerComponentConfigurer extends 
PropertyConfigurerSupport im
         case "lazystartproducer":
         case "lazyStartProducer": 
target.setLazyStartProducer(property(camelContext, boolean.class, value)); 
return true;
         case "produces": target.setProduces(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "resolvereferences":
+        case "resolveReferences": 
target.setResolveReferences(property(camelContext, java.lang.Boolean.class, 
value)); return true;
         case "specificationuri":
         case "specificationUri": 
target.setSpecificationUri(property(camelContext, java.net.URI.class, value)); 
return true;
         case "sslcontextparameters":
@@ -56,6 +58,8 @@ public class RestSwaggerComponentConfigurer extends 
PropertyConfigurerSupport im
         case "lazystartproducer":
         case "lazyStartProducer": return boolean.class;
         case "produces": return java.lang.String.class;
+        case "resolvereferences":
+        case "resolveReferences": return java.lang.Boolean.class;
         case "specificationuri":
         case "specificationUri": return java.net.URI.class;
         case "sslcontextparameters":
@@ -81,6 +85,8 @@ public class RestSwaggerComponentConfigurer extends 
PropertyConfigurerSupport im
         case "lazystartproducer":
         case "lazyStartProducer": return target.isLazyStartProducer();
         case "produces": return target.getProduces();
+        case "resolvereferences":
+        case "resolveReferences": return target.getResolveReferences();
         case "specificationuri":
         case "specificationUri": return target.getSpecificationUri();
         case "sslcontextparameters":
diff --git 
a/components/camel-rest-swagger/src/generated/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpointConfigurer.java
 
b/components/camel-rest-swagger/src/generated/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpointConfigurer.java
index a201c5b..f8e5b65 100644
--- 
a/components/camel-rest-swagger/src/generated/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpointConfigurer.java
+++ 
b/components/camel-rest-swagger/src/generated/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpointConfigurer.java
@@ -30,6 +30,8 @@ public class RestSwaggerEndpointConfigurer extends 
PropertyConfigurerSupport imp
         case "lazystartproducer":
         case "lazyStartProducer": 
target.setLazyStartProducer(property(camelContext, boolean.class, value)); 
return true;
         case "produces": target.setProduces(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "resolvereferences":
+        case "resolveReferences": 
target.setResolveReferences(property(camelContext, java.lang.Boolean.class, 
value)); return true;
         case "sslcontextparameters":
         case "sslContextParameters": 
target.setSslContextParameters(property(camelContext, 
org.apache.camel.support.jsse.SSLContextParameters.class, value)); return true;
         default: return false;
@@ -48,6 +50,8 @@ public class RestSwaggerEndpointConfigurer extends 
PropertyConfigurerSupport imp
         case "lazystartproducer":
         case "lazyStartProducer": return boolean.class;
         case "produces": return java.lang.String.class;
+        case "resolvereferences":
+        case "resolveReferences": return java.lang.Boolean.class;
         case "sslcontextparameters":
         case "sslContextParameters": return 
org.apache.camel.support.jsse.SSLContextParameters.class;
         default: return null;
@@ -67,6 +71,8 @@ public class RestSwaggerEndpointConfigurer extends 
PropertyConfigurerSupport imp
         case "lazystartproducer":
         case "lazyStartProducer": return target.isLazyStartProducer();
         case "produces": return target.getProduces();
+        case "resolvereferences":
+        case "resolveReferences": return target.getResolveReferences();
         case "sslcontextparameters":
         case "sslContextParameters": return target.getSslContextParameters();
         default: return null;
diff --git 
a/components/camel-rest-swagger/src/generated/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpointUriFactory.java
 
b/components/camel-rest-swagger/src/generated/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpointUriFactory.java
index d00b667..4f85a90 100644
--- 
a/components/camel-rest-swagger/src/generated/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpointUriFactory.java
+++ 
b/components/camel-rest-swagger/src/generated/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpointUriFactory.java
@@ -20,13 +20,14 @@ public class RestSwaggerEndpointUriFactory extends 
org.apache.camel.support.comp
     private static final Set<String> PROPERTY_NAMES;
     private static final Set<String> SECRET_PROPERTY_NAMES;
     static {
-        Set<String> props = new HashSet<>(9);
+        Set<String> props = new HashSet<>(10);
         props.add("lazyStartProducer");
         props.add("basePath");
         props.add("host");
         props.add("produces");
         props.add("sslContextParameters");
         props.add("operationId");
+        props.add("resolveReferences");
         props.add("componentName");
         props.add("specificationUri");
         props.add("consumes");
diff --git 
a/components/camel-rest-swagger/src/generated/resources/org/apache/camel/component/rest/swagger/rest-swagger.json
 
b/components/camel-rest-swagger/src/generated/resources/org/apache/camel/component/rest/swagger/rest-swagger.json
index 57f5167..f3593a7 100644
--- 
a/components/camel-rest-swagger/src/generated/resources/org/apache/camel/component/rest/swagger/rest-swagger.json
+++ 
b/components/camel-rest-swagger/src/generated/resources/org/apache/camel/component/rest/swagger/rest-swagger.json
@@ -28,6 +28,7 @@
     "host": { "kind": "property", "displayName": "Host", "group": "producer", 
"label": "producer", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Scheme hostname and port to direct the HTTP requests to in the 
form of https:\/\/hostname:port. Can be configured at the endpoint, component 
or in the corresponding REST configuration in the Camel Context. If you give 
this component a name (e.g. pets [...]
     "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start 
Producer", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "Whether the producer 
should be started lazy (on the first message). By starting lazy you can use 
this to allow CamelContext and routes to startup in situations where a producer 
may otherwise fail during star [...]
     "produces": { "kind": "property", "displayName": "Produces", "group": 
"producer", "label": "producer", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "What payload type this component is producing. 
For example application\/json according to the RFC7231. This equates to the 
value of Content-Type HTTP header. If set overrides any value present in the 
Swagger specification. Can be overridden i [...]
+    "resolveReferences": { "kind": "property", "displayName": "Resolve 
References", "group": "producer", "label": "producer", "required": false, 
"type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "false", "description": 
"Resolve references in Swagger specification." },
     "specificationUri": { "kind": "property", "displayName": "Specification 
Uri", "group": "producer", "label": "producer", "required": false, "type": 
"string", "javaType": "java.net.URI", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "swagger.json", "description": "Path to the 
Swagger specification file. The scheme, host base path are taken from this 
specification, but these can be overridden with properties on the component or 
endpoint level. If not given th [...]
     "autowiredEnabled": { "kind": "property", "displayName": "Autowired 
Enabled", "group": "advanced", "label": "advanced", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": true, "description": "Whether autowiring is 
enabled. This is used for automatic autowiring options (the option must be 
marked as autowired) by looking up in the registry to find if there is a single 
instance of matching type, which t [...]
     "sslContextParameters": { "kind": "property", "displayName": "Ssl Context 
Parameters", "group": "security", "label": "security", "required": false, 
"type": "object", "javaType": 
"org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, 
"autowired": false, "secret": false, "description": "Customize TLS parameters 
used by the component. If not set defaults to the TLS parameters set in the 
Camel context" },
@@ -42,6 +43,7 @@
     "host": { "kind": "parameter", "displayName": "Host", "group": "producer", 
"label": "producer", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Scheme hostname and port to direct the HTTP requests to in the 
form of https:\/\/hostname:port. Can be configured at the endpoint, component 
or in the corresponding REST configuration in the Camel Context. If you give 
this component a name (e.g. pet [...]
     "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start 
Producer", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "Whether the producer 
should be started lazy (on the first message). By starting lazy you can use 
this to allow CamelContext and routes to startup in situations where a producer 
may otherwise fail during sta [...]
     "produces": { "kind": "parameter", "displayName": "Produces", "group": 
"producer", "label": "producer", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "What payload type this component is producing. 
For example application\/json according to the RFC7231. This equates to the 
value of Content-Type HTTP header. If set overrides any value present in the 
Swagger specification. Overrides all othe [...]
+    "resolveReferences": { "kind": "parameter", "displayName": "Resolve 
References", "group": "producer", "label": "producer", "required": false, 
"type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, 
"autowired": false, "secret": false, "description": "Resolve references in 
Swagger specification." },
     "sslContextParameters": { "kind": "parameter", "displayName": "Ssl Context 
Parameters", "group": "security", "label": "security", "required": false, 
"type": "object", "javaType": 
"org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, 
"autowired": false, "secret": false, "description": "To configure security 
using SSLContextParameters." }
   }
 }
diff --git 
a/components/camel-rest-swagger/src/main/java/org/apache/camel/component/rest/swagger/RestSwaggerComponent.java
 
b/components/camel-rest-swagger/src/main/java/org/apache/camel/component/rest/swagger/RestSwaggerComponent.java
index 12e0646..84c68e5 100644
--- 
a/components/camel-rest-swagger/src/main/java/org/apache/camel/component/rest/swagger/RestSwaggerComponent.java
+++ 
b/components/camel-rest-swagger/src/main/java/org/apache/camel/component/rest/swagger/RestSwaggerComponent.java
@@ -136,6 +136,10 @@ public final class RestSwaggerComponent extends 
DefaultComponent implements SSLC
               defaultValue = "false")
     private boolean useGlobalSslContextParameters;
 
+    @Metadata(description = "Resolve references in Swagger specification.", 
label = "producer",
+              defaultValue = "false")
+    private Boolean resolveReferences;
+
     public RestSwaggerComponent() {
     }
 
@@ -217,4 +221,11 @@ public final class RestSwaggerComponent extends 
DefaultComponent implements SSLC
         this.useGlobalSslContextParameters = useGlobalSslContextParameters;
     }
 
+    public Boolean getResolveReferences() {
+        return resolveReferences;
+    }
+
+    public void setResolveReferences(Boolean resolveReferences) {
+        this.resolveReferences = resolveReferences;
+    }
 }
diff --git 
a/components/camel-rest-swagger/src/main/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpoint.java
 
b/components/camel-rest-swagger/src/main/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpoint.java
index 2109f57..5d8acb9 100644
--- 
a/components/camel-rest-swagger/src/main/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpoint.java
+++ 
b/components/camel-rest-swagger/src/main/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpoint.java
@@ -26,6 +26,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -74,7 +75,9 @@ import static 
org.apache.camel.component.rest.swagger.RestSwaggerHelper.isHostPa
 import static 
org.apache.camel.component.rest.swagger.RestSwaggerHelper.isMediaRange;
 import static org.apache.camel.util.ObjectHelper.isNotEmpty;
 import static org.apache.camel.util.ObjectHelper.notNull;
-import static org.apache.camel.util.StringHelper.*;
+import static org.apache.camel.util.StringHelper.after;
+import static org.apache.camel.util.StringHelper.before;
+import static org.apache.camel.util.StringHelper.notEmpty;
 
 /**
  * Configure REST producers based on a Swagger (OpenAPI) specification 
document delegating to a component implementing
@@ -146,6 +149,9 @@ public final class RestSwaggerEndpoint extends 
DefaultEndpoint {
              defaultValueNote = "By default loads `swagger.json` file", label 
= "producer")
     private URI specificationUri = 
RestSwaggerComponent.DEFAULT_SPECIFICATION_URI;
 
+    @UriParam(description = "Resolve references in Swagger specification.", 
label = "producer")
+    private Boolean resolveReferences;
+
     public RestSwaggerEndpoint() {
         // help tooling instantiate endpoint
     }
@@ -174,7 +180,8 @@ public final class RestSwaggerEndpoint extends 
DefaultEndpoint {
     public Producer createProducer() throws Exception {
         final CamelContext camelContext = getCamelContext();
 
-        final Swagger swagger = loadSpecificationFrom(camelContext, 
specificationUri, resolveSslContextParameters());
+        final Swagger swagger = loadSpecificationFrom(camelContext, 
specificationUri, resolveSslContextParameters(),
+                determineResolveReferences());
 
         final Map<String, Path> paths = swagger.getPaths();
 
@@ -289,6 +296,14 @@ public final class RestSwaggerEndpoint extends 
DefaultEndpoint {
         this.specificationUri = notNull(specificationUri, "specificationUri");
     }
 
+    public Boolean getResolveReferences() {
+        return resolveReferences;
+    }
+
+    public void setResolveReferences(Boolean resolveReferences) {
+        this.resolveReferences = resolveReferences;
+    }
+
     RestSwaggerComponent component() {
         return (RestSwaggerComponent) getComponent();
     }
@@ -350,6 +365,13 @@ public final class RestSwaggerEndpoint extends 
DefaultEndpoint {
         return 
Optional.ofNullable(componentName).orElse(component().getComponentName());
     }
 
+    Boolean determineResolveReferences() {
+        return Stream.of(getResolveReferences(), 
component().getResolveReferences())
+                .filter(Objects::nonNull)
+                .findFirst()
+                .orElse(false);
+    }
+
     Map<String, Object> determineEndpointParameters(final Swagger swagger, 
final Operation operation) {
         final Map<String, Object> parameters = new HashMap<>();
 
@@ -376,11 +398,11 @@ public final class RestSwaggerEndpoint extends 
DefaultEndpoint {
 
         // what we produce is what the API defined by Swagger specification
         // consumes
-        final String determinedProducers = 
determineOption(swagger.getConsumes(), operation.getConsumes(),
+        final String determinedProduces = 
determineOption(swagger.getConsumes(), operation.getConsumes(),
                 component.getProduces(), produces);
 
-        if (isNotEmpty(determinedProducers)) {
-            parameters.put("produces", determinedProducers);
+        if (isNotEmpty(determinedProduces)) {
+            parameters.put("produces", determinedProduces);
         }
 
         final String queryParameters = determineQueryParameters(swagger, 
operation).map(this::queryParameter)
@@ -631,7 +653,8 @@ public final class RestSwaggerEndpoint extends 
DefaultEndpoint {
      * @throws IOException
      */
     static Swagger loadSpecificationFrom(
-            final CamelContext camelContext, final URI uri, 
SSLContextParameters sslContextParameters)
+            final CamelContext camelContext, final URI uri, 
SSLContextParameters sslContextParameters,
+            boolean resolveReferences)
             throws IOException {
         final ObjectMapper mapper = Json.mapper();
 
@@ -641,9 +664,9 @@ public final class RestSwaggerEndpoint extends 
DefaultEndpoint {
 
         if (sslContextParameters == null) {
             try (InputStream stream = 
ResourceHelper.resolveMandatoryResourceAsInputStream(camelContext, 
uriAsString)) {
-                return parseInputStream(swaggerParser, mapper, stream);
+                return parseInputStream(swaggerParser, mapper, stream, 
resolveReferences);
             } catch (final Exception e) {
-                return loadSpecificationFallback(swaggerParser, uriAsString, 
e);
+                return loadSpecificationFallback(swaggerParser, uriAsString, 
e, resolveReferences);
             }
         }
 
@@ -654,15 +677,16 @@ public final class RestSwaggerEndpoint extends 
DefaultEndpoint {
              HttpProducer p = (HttpProducer) e.createProducer();
              InputStream stream = p.getHttpClient().execute(new 
HttpGet(uri)).getEntity().getContent()) {
 
-            return parseInputStream(swaggerParser, mapper, stream);
+            return parseInputStream(swaggerParser, mapper, stream, 
resolveReferences);
         } catch (final Exception e) {
-            return loadSpecificationFallback(swaggerParser, uriAsString, e);
+            return loadSpecificationFallback(swaggerParser, uriAsString, e, 
resolveReferences);
         }
     }
 
-    static Swagger loadSpecificationFallback(SwaggerParser swaggerParser, 
String uriAsString, Exception originalException) {
+    static Swagger loadSpecificationFallback(
+            SwaggerParser swaggerParser, String uriAsString, Exception 
originalException, boolean resolveReferences) {
         // try Swaggers loader
-        final Swagger swagger = swaggerParser.read(uriAsString);
+        final Swagger swagger = swaggerParser.read(uriAsString, null, 
resolveReferences);
 
         if (swagger != null) {
             return swagger;
@@ -677,10 +701,12 @@ public final class RestSwaggerEndpoint extends 
DefaultEndpoint {
                 originalException);
     }
 
-    static Swagger parseInputStream(SwaggerParser swaggerParser, ObjectMapper 
mapper, InputStream stream) throws IOException {
+    static Swagger parseInputStream(
+            SwaggerParser swaggerParser, ObjectMapper mapper, InputStream 
stream, boolean resolveReferences)
+            throws IOException {
         final JsonNode node = mapper.readTree(stream);
 
-        return swaggerParser.read(node);
+        return swaggerParser.read(node, resolveReferences);
     }
 
     static String pickBestScheme(final String specificationScheme, final 
List<Scheme> schemes) {
diff --git 
a/components/camel-rest-swagger/src/test/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpointTest.java
 
b/components/camel-rest-swagger/src/test/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpointTest.java
index a7a50ee..4803c0d 100644
--- 
a/components/camel-rest-swagger/src/test/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpointTest.java
+++ 
b/components/camel-rest-swagger/src/test/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpointTest.java
@@ -23,6 +23,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
+import io.swagger.models.HttpMethod;
 import io.swagger.models.Operation;
 import io.swagger.models.Scheme;
 import io.swagger.models.Swagger;
@@ -75,6 +76,22 @@ public class RestSwaggerEndpointTest {
     }
 
     @Test
+    public void shouldComputeQueryParameterReferences() throws IOException {
+        final CamelContext camelContext = mock(CamelContext.class);
+        when(camelContext.getClassResolver()).thenReturn(new 
DefaultClassResolver());
+
+        assertThat(
+                RestSwaggerEndpoint
+                        .loadSpecificationFrom(camelContext, 
RestSwaggerComponent.DEFAULT_SPECIFICATION_URI, null, true)
+                        
.getPaths().get("/pet/findByTags").getOperationMap().get(HttpMethod.GET).getParameters()
+                        .stream()
+                        .filter(p -> "offset".equals(p.getName()))
+                        .findAny()
+                        .orElse(null))
+                                .isNotNull();
+    }
+
+    @Test
     public void shouldCreateQueryParameterExpressions() {
         assertThat(RestSwaggerEndpoint.queryParameterExpression(new 
QueryParameter().name("q").required(true)))
                 .isEqualTo("q={q}");
@@ -339,8 +356,9 @@ public class RestSwaggerEndpointTest {
         when(camelContext.getClassResolver()).thenReturn(new 
DefaultClassResolver());
 
         assertThat(
-                RestSwaggerEndpoint.loadSpecificationFrom(camelContext, 
RestSwaggerComponent.DEFAULT_SPECIFICATION_URI, null))
-                        .isNotNull();
+                RestSwaggerEndpoint.loadSpecificationFrom(camelContext, 
RestSwaggerComponent.DEFAULT_SPECIFICATION_URI, null,
+                        false))
+                                .isNotNull();
     }
 
     @Test
@@ -368,7 +386,7 @@ public class RestSwaggerEndpointTest {
 
         final URI uri = URI.create("non-existant.json");
         assertThrows(IllegalArgumentException.class,
-                () -> RestSwaggerEndpoint.loadSpecificationFrom(camelContext, 
uri, null));
+                () -> RestSwaggerEndpoint.loadSpecificationFrom(camelContext, 
uri, null, false));
     }
 
     @Test
diff --git a/components/camel-rest-swagger/src/test/resources/swagger.json 
b/components/camel-rest-swagger/src/test/resources/swagger.json
index 816847f..e6b08db 100644
--- a/components/camel-rest-swagger/src/test/resources/swagger.json
+++ b/components/camel-rest-swagger/src/test/resources/swagger.json
@@ -1 +1,1049 @@
-{"swagger":"2.0","info":{"description":"This is a sample server Petstore 
server.  You can find out more about Swagger at 
[http://swagger.io](http://swagger.io) or on [irc.freenode.net, 
#swagger](http://swagger.io/irc/).  For this sample, you can use the api key 
`special-key` to test the authorization 
filters.","version":"1.0.0","title":"Swagger 
Petstore","termsOfService":"http://swagger.io/terms/","contact":{"email":"[email protected]"},"license":{"name":"Apache
 2.0","url":"http://www.a [...]
\ No newline at end of file
+{
+  "swagger": "2.0",
+  "info": {
+    "description": "This is a sample server Petstore server.  You can find out 
more about Swagger at [http://swagger.io](http://swagger.io) or on 
[irc.freenode.net, #swagger](http://swagger.io/irc/).  For this sample, you can 
use the api key `special-key` to test the authorization filters.",
+    "version": "1.0.0",
+    "title": "Swagger Petstore",
+    "termsOfService": "http://swagger.io/terms/";,
+    "contact": {
+      "email": "[email protected]"
+    },
+    "license": {
+      "name": "Apache 2.0",
+      "url": "http://www.apache.org/licenses/LICENSE-2.0.html";
+    }
+  },
+  "host": "petstore.swagger.io",
+  "basePath": "/v2",
+  "parameters": {
+    "offset": {
+      "description": "Indicates how many items should be skipped before 
returning results.",
+      "in": "query",
+      "name": "offset",
+      "required": false,
+      "default": 0,
+      "format": "int32",
+      "type": "integer"
+    }
+  },
+  "tags": [
+    {
+      "name": "pet",
+      "description": "Everything about your Pets",
+      "externalDocs": {
+        "description": "Find out more",
+        "url": "http://swagger.io";
+      }
+    },
+    {
+      "name": "store",
+      "description": "Access to Petstore orders"
+    },
+    {
+      "name": "user",
+      "description": "Operations about user",
+      "externalDocs": {
+        "description": "Find out more about our store",
+        "url": "http://swagger.io";
+      }
+    }
+  ],
+  "schemes": [
+    "http"
+  ],
+  "paths": {
+    "/pet": {
+      "post": {
+        "tags": [
+          "pet"
+        ],
+        "summary": "Add a new pet to the store",
+        "description": "",
+        "operationId": "addPet",
+        "consumes": [
+          "application/json",
+          "application/xml"
+        ],
+        "produces": [
+          "application/xml",
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "in": "body",
+            "name": "body",
+            "description": "Pet object that needs to be added to the store",
+            "required": true,
+            "schema": {
+              "$ref": "#/definitions/Pet"
+            }
+          }
+        ],
+        "responses": {
+          "405": {
+            "description": "Invalid input"
+          }
+        },
+        "security": [
+          {
+            "petstore_auth": [
+              "write:pets",
+              "read:pets"
+            ]
+          }
+        ]
+      },
+      "put": {
+        "tags": [
+          "pet"
+        ],
+        "summary": "Update an existing pet",
+        "description": "",
+        "operationId": "updatePet",
+        "consumes": [
+          "application/json",
+          "application/xml"
+        ],
+        "produces": [
+          "application/xml",
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "in": "body",
+            "name": "body",
+            "description": "Pet object that needs to be added to the store",
+            "required": true,
+            "schema": {
+              "$ref": "#/definitions/Pet"
+            }
+          }
+        ],
+        "responses": {
+          "400": {
+            "description": "Invalid ID supplied"
+          },
+          "404": {
+            "description": "Pet not found"
+          },
+          "405": {
+            "description": "Validation exception"
+          }
+        },
+        "security": [
+          {
+            "petstore_auth": [
+              "write:pets",
+              "read:pets"
+            ]
+          }
+        ]
+      }
+    },
+    "/pet/findByStatus": {
+      "get": {
+        "tags": [
+          "pet"
+        ],
+        "summary": "Finds Pets by status",
+        "description": "Multiple status values can be provided with comma 
separated strings",
+        "operationId": "findPetsByStatus",
+        "produces": [
+          "application/xml",
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "name": "status",
+            "in": "query",
+            "description": "Status values that need to be considered for 
filter",
+            "required": true,
+            "type": "array",
+            "items": {
+              "type": "string",
+              "enum": [
+                "available",
+                "pending",
+                "sold"
+              ],
+              "default": "available"
+            },
+            "collectionFormat": "multi"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "successful operation",
+            "schema": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Pet"
+              }
+            }
+          },
+          "400": {
+            "description": "Invalid status value"
+          }
+        },
+        "security": [
+          {
+            "petstore_auth": [
+              "write:pets",
+              "read:pets"
+            ]
+          }
+        ]
+      }
+    },
+    "/pet/findByTags": {
+      "get": {
+        "tags": [
+          "pet"
+        ],
+        "summary": "Finds Pets by tags",
+        "description": "Multiple tags can be provided with comma separated 
strings. Use tag1, tag2, tag3 for testing.",
+        "operationId": "findPetsByTags",
+        "produces": [
+          "application/xml",
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "name": "tags",
+            "in": "query",
+            "description": "Tags to filter by",
+            "required": true,
+            "type": "array",
+            "items": {
+              "type": "string"
+            },
+            "collectionFormat": "multi"
+          },
+          {
+            "$ref": "#/parameters/offset"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "successful operation",
+            "schema": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/Pet"
+              }
+            }
+          },
+          "400": {
+            "description": "Invalid tag value"
+          }
+        },
+        "security": [
+          {
+            "petstore_auth": [
+              "write:pets",
+              "read:pets"
+            ]
+          }
+        ],
+        "deprecated": true
+      }
+    },
+    "/pet/{petId}": {
+      "get": {
+        "tags": [
+          "pet"
+        ],
+        "summary": "Find pet by ID",
+        "description": "Returns a single pet",
+        "operationId": "getPetById",
+        "produces": [
+          "application/xml",
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "name": "petId",
+            "in": "path",
+            "description": "ID of pet to return",
+            "required": true,
+            "type": "integer",
+            "format": "int64"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "successful operation",
+            "schema": {
+              "$ref": "#/definitions/Pet"
+            }
+          },
+          "400": {
+            "description": "Invalid ID supplied"
+          },
+          "404": {
+            "description": "Pet not found"
+          }
+        },
+        "security": [
+          {
+            "api_key": []
+          }
+        ]
+      },
+      "post": {
+        "tags": [
+          "pet"
+        ],
+        "summary": "Updates a pet in the store with form data",
+        "description": "",
+        "operationId": "updatePetWithForm",
+        "consumes": [
+          "application/x-www-form-urlencoded"
+        ],
+        "produces": [
+          "application/xml",
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "name": "petId",
+            "in": "path",
+            "description": "ID of pet that needs to be updated",
+            "required": true,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "name",
+            "in": "formData",
+            "description": "Updated name of the pet",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "status",
+            "in": "formData",
+            "description": "Updated status of the pet",
+            "required": false,
+            "type": "string"
+          }
+        ],
+        "responses": {
+          "405": {
+            "description": "Invalid input"
+          }
+        },
+        "security": [
+          {
+            "petstore_auth": [
+              "write:pets",
+              "read:pets"
+            ]
+          }
+        ]
+      },
+      "delete": {
+        "tags": [
+          "pet"
+        ],
+        "summary": "Deletes a pet",
+        "description": "",
+        "operationId": "deletePet",
+        "produces": [
+          "application/xml",
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "name": "api_key",
+            "in": "header",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "petId",
+            "in": "path",
+            "description": "Pet id to delete",
+            "required": true,
+            "type": "integer",
+            "format": "int64"
+          }
+        ],
+        "responses": {
+          "400": {
+            "description": "Invalid ID supplied"
+          },
+          "404": {
+            "description": "Pet not found"
+          }
+        },
+        "security": [
+          {
+            "petstore_auth": [
+              "write:pets",
+              "read:pets"
+            ]
+          }
+        ]
+      }
+    },
+    "/pet/{petId}/uploadImage": {
+      "post": {
+        "tags": [
+          "pet"
+        ],
+        "summary": "uploads an image",
+        "description": "",
+        "operationId": "uploadFile",
+        "consumes": [
+          "multipart/form-data"
+        ],
+        "produces": [
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "name": "petId",
+            "in": "path",
+            "description": "ID of pet to update",
+            "required": true,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "additionalMetadata",
+            "in": "formData",
+            "description": "Additional data to pass to server",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "file",
+            "in": "formData",
+            "description": "file to upload",
+            "required": false,
+            "type": "file"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "successful operation",
+            "schema": {
+              "$ref": "#/definitions/ApiResponse"
+            }
+          }
+        },
+        "security": [
+          {
+            "petstore_auth": [
+              "write:pets",
+              "read:pets"
+            ]
+          }
+        ]
+      }
+    },
+    "/store/inventory": {
+      "get": {
+        "tags": [
+          "store"
+        ],
+        "summary": "Returns pet inventories by status",
+        "description": "Returns a map of status codes to quantities",
+        "operationId": "getInventory",
+        "produces": [
+          "application/json"
+        ],
+        "parameters": [],
+        "responses": {
+          "200": {
+            "description": "successful operation",
+            "schema": {
+              "type": "object",
+              "additionalProperties": {
+                "type": "integer",
+                "format": "int32"
+              }
+            }
+          }
+        },
+        "security": [
+          {
+            "api_key": []
+          }
+        ]
+      }
+    },
+    "/store/order": {
+      "post": {
+        "tags": [
+          "store"
+        ],
+        "summary": "Place an order for a pet",
+        "description": "",
+        "operationId": "placeOrder",
+        "produces": [
+          "application/xml",
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "in": "body",
+            "name": "body",
+            "description": "order placed for purchasing the pet",
+            "required": true,
+            "schema": {
+              "$ref": "#/definitions/Order"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "successful operation",
+            "schema": {
+              "$ref": "#/definitions/Order"
+            }
+          },
+          "400": {
+            "description": "Invalid Order"
+          }
+        }
+      }
+    },
+    "/store/order/{orderId}": {
+      "get": {
+        "tags": [
+          "store"
+        ],
+        "summary": "Find purchase order by ID",
+        "description": "For valid response try integer IDs with value >= 1 and 
<= 10. Other values will generated exceptions",
+        "operationId": "getOrderById",
+        "produces": [
+          "application/xml",
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "name": "orderId",
+            "in": "path",
+            "description": "ID of pet that needs to be fetched",
+            "required": true,
+            "type": "integer",
+            "maximum": 10.0,
+            "minimum": 1.0,
+            "format": "int64"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "successful operation",
+            "schema": {
+              "$ref": "#/definitions/Order"
+            }
+          },
+          "400": {
+            "description": "Invalid ID supplied"
+          },
+          "404": {
+            "description": "Order not found"
+          }
+        }
+      },
+      "delete": {
+        "tags": [
+          "store"
+        ],
+        "summary": "Delete purchase order by ID",
+        "description": "For valid response try integer IDs with positive 
integer value. Negative or non-integer values will generate API errors",
+        "operationId": "deleteOrder",
+        "produces": [
+          "application/xml",
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "name": "orderId",
+            "in": "path",
+            "description": "ID of the order that needs to be deleted",
+            "required": true,
+            "type": "integer",
+            "minimum": 1.0,
+            "format": "int64"
+          }
+        ],
+        "responses": {
+          "400": {
+            "description": "Invalid ID supplied"
+          },
+          "404": {
+            "description": "Order not found"
+          }
+        }
+      }
+    },
+    "/user": {
+      "post": {
+        "tags": [
+          "user"
+        ],
+        "summary": "Create user",
+        "description": "This can only be done by the logged in user.",
+        "operationId": "createUser",
+        "produces": [
+          "application/xml",
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "in": "body",
+            "name": "body",
+            "description": "Created user object",
+            "required": true,
+            "schema": {
+              "$ref": "#/definitions/User"
+            }
+          }
+        ],
+        "responses": {
+          "default": {
+            "description": "successful operation"
+          }
+        }
+      }
+    },
+    "/user/createWithArray": {
+      "post": {
+        "tags": [
+          "user"
+        ],
+        "summary": "Creates list of users with given input array",
+        "description": "",
+        "operationId": "createUsersWithArrayInput",
+        "produces": [
+          "application/xml",
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "in": "body",
+            "name": "body",
+            "description": "List of user object",
+            "required": true,
+            "schema": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/User"
+              }
+            }
+          }
+        ],
+        "responses": {
+          "default": {
+            "description": "successful operation"
+          }
+        }
+      }
+    },
+    "/user/createWithList": {
+      "post": {
+        "tags": [
+          "user"
+        ],
+        "summary": "Creates list of users with given input array",
+        "description": "",
+        "operationId": "createUsersWithListInput",
+        "produces": [
+          "application/xml",
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "in": "body",
+            "name": "body",
+            "description": "List of user object",
+            "required": true,
+            "schema": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/User"
+              }
+            }
+          }
+        ],
+        "responses": {
+          "default": {
+            "description": "successful operation"
+          }
+        }
+      }
+    },
+    "/user/login": {
+      "get": {
+        "tags": [
+          "user"
+        ],
+        "summary": "Logs user into the system",
+        "description": "",
+        "operationId": "loginUser",
+        "produces": [
+          "application/xml",
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "name": "username",
+            "in": "query",
+            "description": "The user name for login",
+            "required": true,
+            "type": "string"
+          },
+          {
+            "name": "password",
+            "in": "query",
+            "description": "The password for login in clear text",
+            "required": true,
+            "type": "string"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "successful operation",
+            "schema": {
+              "type": "string"
+            },
+            "headers": {
+              "X-Rate-Limit": {
+                "type": "integer",
+                "format": "int32",
+                "description": "calls per hour allowed by the user"
+              },
+              "X-Expires-After": {
+                "type": "string",
+                "format": "date-time",
+                "description": "date in UTC when token expires"
+              }
+            }
+          },
+          "400": {
+            "description": "Invalid username/password supplied"
+          }
+        }
+      }
+    },
+    "/user/logout": {
+      "get": {
+        "tags": [
+          "user"
+        ],
+        "summary": "Logs out current logged in user session",
+        "description": "",
+        "operationId": "logoutUser",
+        "produces": [
+          "application/xml",
+          "application/json"
+        ],
+        "parameters": [],
+        "responses": {
+          "default": {
+            "description": "successful operation"
+          }
+        }
+      }
+    },
+    "/user/{username}": {
+      "get": {
+        "tags": [
+          "user"
+        ],
+        "summary": "Get user by user name",
+        "description": "",
+        "operationId": "getUserByName",
+        "produces": [
+          "application/xml",
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "name": "username",
+            "in": "path",
+            "description": "The name that needs to be fetched. Use user1 for 
testing. ",
+            "required": true,
+            "type": "string"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "successful operation",
+            "schema": {
+              "$ref": "#/definitions/User"
+            }
+          },
+          "400": {
+            "description": "Invalid username supplied"
+          },
+          "404": {
+            "description": "User not found"
+          }
+        }
+      },
+      "put": {
+        "tags": [
+          "user"
+        ],
+        "summary": "Updated user",
+        "description": "This can only be done by the logged in user.",
+        "operationId": "updateUser",
+        "produces": [
+          "application/xml",
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "name": "username",
+            "in": "path",
+            "description": "name that need to be updated",
+            "required": true,
+            "type": "string"
+          },
+          {
+            "in": "body",
+            "name": "body",
+            "description": "Updated user object",
+            "required": true,
+            "schema": {
+              "$ref": "#/definitions/User"
+            }
+          }
+        ],
+        "responses": {
+          "400": {
+            "description": "Invalid user supplied"
+          },
+          "404": {
+            "description": "User not found"
+          }
+        }
+      },
+      "delete": {
+        "tags": [
+          "user"
+        ],
+        "summary": "Delete user",
+        "description": "This can only be done by the logged in user.",
+        "operationId": "deleteUser",
+        "produces": [
+          "application/xml",
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "name": "username",
+            "in": "path",
+            "description": "The name that needs to be deleted",
+            "required": true,
+            "type": "string"
+          }
+        ],
+        "responses": {
+          "400": {
+            "description": "Invalid username supplied"
+          },
+          "404": {
+            "description": "User not found"
+          }
+        }
+      }
+    }
+  },
+  "securityDefinitions": {
+    "petstore_auth": {
+      "type": "oauth2",
+      "authorizationUrl": "http://petstore.swagger.io/oauth/dialog";,
+      "flow": "implicit",
+      "scopes": {
+        "write:pets": "modify pets in your account",
+        "read:pets": "read your pets"
+      }
+    },
+    "api_key": {
+      "type": "apiKey",
+      "name": "api_key",
+      "in": "header"
+    }
+  },
+  "definitions": {
+    "Order": {
+      "type": "object",
+      "properties": {
+        "id": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "petId": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "quantity": {
+          "type": "integer",
+          "format": "int32"
+        },
+        "shipDate": {
+          "type": "string",
+          "format": "date-time"
+        },
+        "status": {
+          "type": "string",
+          "description": "Order Status",
+          "enum": [
+            "placed",
+            "approved",
+            "delivered"
+          ]
+        },
+        "complete": {
+          "type": "boolean",
+          "default": false
+        }
+      },
+      "xml": {
+        "name": "Order"
+      }
+    },
+    "Category": {
+      "type": "object",
+      "properties": {
+        "id": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "name": {
+          "type": "string"
+        }
+      },
+      "xml": {
+        "name": "Category"
+      }
+    },
+    "User": {
+      "type": "object",
+      "properties": {
+        "id": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "username": {
+          "type": "string"
+        },
+        "firstName": {
+          "type": "string"
+        },
+        "lastName": {
+          "type": "string"
+        },
+        "email": {
+          "type": "string"
+        },
+        "password": {
+          "type": "string"
+        },
+        "phone": {
+          "type": "string"
+        },
+        "userStatus": {
+          "type": "integer",
+          "format": "int32",
+          "description": "User Status"
+        }
+      },
+      "xml": {
+        "name": "User"
+      }
+    },
+    "Tag": {
+      "type": "object",
+      "properties": {
+        "id": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "name": {
+          "type": "string"
+        }
+      },
+      "xml": {
+        "name": "Tag"
+      }
+    },
+    "Pet": {
+      "type": "object",
+      "required": [
+        "name",
+        "photoUrls"
+      ],
+      "properties": {
+        "id": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "category": {
+          "$ref": "#/definitions/Category"
+        },
+        "name": {
+          "type": "string",
+          "example": "doggie"
+        },
+        "photoUrls": {
+          "type": "array",
+          "xml": {
+            "name": "photoUrl",
+            "wrapped": true
+          },
+          "items": {
+            "type": "string"
+          }
+        },
+        "tags": {
+          "type": "array",
+          "xml": {
+            "name": "tag",
+            "wrapped": true
+          },
+          "items": {
+            "$ref": "#/definitions/Tag"
+          }
+        },
+        "status": {
+          "type": "string",
+          "description": "pet status in the store",
+          "enum": [
+            "available",
+            "pending",
+            "sold"
+          ]
+        }
+      },
+      "xml": {
+        "name": "Pet"
+      }
+    },
+    "ApiResponse": {
+      "type": "object",
+      "properties": {
+        "code": {
+          "type": "integer",
+          "format": "int32"
+        },
+        "type": {
+          "type": "string"
+        },
+        "message": {
+          "type": "string"
+        }
+      }
+    }
+  },
+  "externalDocs": {
+    "description": "Find out more about Swagger",
+    "url": "http://swagger.io";
+  }
+}
\ No newline at end of file
diff --git 
a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/RestSwaggerComponentBuilderFactory.java
 
b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/RestSwaggerComponentBuilderFactory.java
index c1c9f76..5b8703d 100644
--- 
a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/RestSwaggerComponentBuilderFactory.java
+++ 
b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/RestSwaggerComponentBuilderFactory.java
@@ -169,6 +169,22 @@ public interface RestSwaggerComponentBuilderFactory {
             return this;
         }
         /**
+         * Resolve references in Swagger specification.
+         * 
+         * The option is a: &lt;code&gt;java.lang.Boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param resolveReferences the value to set
+         * @return the dsl builder
+         */
+        default RestSwaggerComponentBuilder resolveReferences(
+                java.lang.Boolean resolveReferences) {
+            doSetProperty("resolveReferences", resolveReferences);
+            return this;
+        }
+        /**
          * Path to the Swagger specification file. The scheme, host base path
          * are taken from this specification, but these can be overridden with
          * properties on the component or endpoint level. If not given the
@@ -268,6 +284,7 @@ public interface RestSwaggerComponentBuilderFactory {
             case "host": ((RestSwaggerComponent) 
component).setHost((java.lang.String) value); return true;
             case "lazyStartProducer": ((RestSwaggerComponent) 
component).setLazyStartProducer((boolean) value); return true;
             case "produces": ((RestSwaggerComponent) 
component).setProduces((java.lang.String) value); return true;
+            case "resolveReferences": ((RestSwaggerComponent) 
component).setResolveReferences((java.lang.Boolean) value); return true;
             case "specificationUri": ((RestSwaggerComponent) 
component).setSpecificationUri((java.net.URI) value); return true;
             case "autowiredEnabled": ((RestSwaggerComponent) 
component).setAutowiredEnabled((boolean) value); return true;
             case "sslContextParameters": ((RestSwaggerComponent) 
component).setSslContextParameters((org.apache.camel.support.jsse.SSLContextParameters)
 value); return true;
diff --git 
a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/RestSwaggerEndpointBuilderFactory.java
 
b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/RestSwaggerEndpointBuilderFactory.java
index 904c502..1ea16ff 100644
--- 
a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/RestSwaggerEndpointBuilderFactory.java
+++ 
b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/RestSwaggerEndpointBuilderFactory.java
@@ -176,6 +176,37 @@ public interface RestSwaggerEndpointBuilderFactory {
             return this;
         }
         /**
+         * Resolve references in Swagger specification.
+         * 
+         * The option is a: &lt;code&gt;java.lang.Boolean&lt;/code&gt; type.
+         * 
+         * Group: producer
+         * 
+         * @param resolveReferences the value to set
+         * @return the dsl builder
+         */
+        default RestSwaggerEndpointBuilder resolveReferences(
+                Boolean resolveReferences) {
+            doSetProperty("resolveReferences", resolveReferences);
+            return this;
+        }
+        /**
+         * Resolve references in Swagger specification.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;java.lang.Boolean&lt;/code&gt; type.
+         * 
+         * Group: producer
+         * 
+         * @param resolveReferences the value to set
+         * @return the dsl builder
+         */
+        default RestSwaggerEndpointBuilder resolveReferences(
+                String resolveReferences) {
+            doSetProperty("resolveReferences", resolveReferences);
+            return this;
+        }
+        /**
          * To configure security using SSLContextParameters.
          * 
          * The option is a:

Reply via email to