We recently upgraded apache camel from 3.x to 4.x. Since then swagger has stopped working. Please see attached image of swagger ui.
We get the following warning while starting the application.
2024-01-11T13:17:36,363 WARN [main] o.a.c.s.s.SpringdocAutoConfiguration$1: Error generating OpenAPI from Camel Rest DSL due to: Cannot invoke "java.util.Map.clear()" because the return value of "io.swagger.v3.oas.models.media.Schema.getExtensions()" is null. This exception is ignored. java.lang.NullPointerException: Cannot invoke "java.util.Map.clear()" because the return value of "io.swagger.v3.oas.models.media.Schema.getExtensions()" is null at org.apache.camel.openapi.OpenApiHelper.clearVendorExtensions(OpenApiHelper.java:59) ~[camel-openapi-java-4.0.2.jar:4.0.2] at org.apache.camel.springboot.springdoc.SpringdocAutoConfiguration.createOpenAPI(SpringdocAutoConfiguration.java:131) ~[camel-springdoc-starter-4.0.2.jar:4.0.2] at org.apache.camel.springboot.springdoc.SpringdocAutoConfiguration$1.beforeApplicationStart(SpringdocAutoConfiguration.java:81) [camel-springdoc-starter-4.0.2.jar:4.0.2] at org.apache.camel.spring.boot.CamelSpringBootApplicationListener.onApplicationEvent(CamelSpringBootApplicationListener.java:111) [camel-spring-boot-4.0.2.jar:4.0.2] at org.apache.camel.spring.boot.CamelSpringBootApplicationListener.onApplicationEvent(CamelSpringBootApplicationListener.java:59) [camel-spring-boot-4.0.2.jar:4.0.2]
application.properties has exposed urls -
- app.context.profile.post=/v1/iwx/cj/gateway/profileattachments
- app.context.activity.post=/v1/iwx/cj/gateway/activity/status
We have following camel dependencies in pom.xml
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-spring-boot-starter</artifactId>
<version>${camel.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring-rabbitmq</artifactId>
<version>${camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-test-junit5</artifactId>
<version>${camel.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-servlet-starter</artifactId>
<version>${camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-jackson-starter</artifactId>
<version>${camel.version}</version>
</dependency>
<!-- for Swagger-->
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-springdoc-starter</artifactId>
<version>${camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-http</artifactId>
<version>${camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-cxf-soap-starter</artifactId>
<version>4.0.2</version>
<exclusions>
<exclusion>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-cxf-rest-starter</artifactId>
<version>4.0.2</version>
<exclusions>
<exclusion>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-core</artifactId>
<version>4.0.2</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxfcodegen.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
</exclusion>
<exclusion>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-resilience4j-starter</artifactId>
<version>${camel.version}</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.6.8</version>
</dependency>
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxfcodegen.version}</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<defaultOptions>
<autoNameResolution>true</autoNameResolution>
</defaultOptions>
<wsdlOptions>
<wsdlOption>
<wsdl>src/main/resources/wsdl/TransactionLookupService.wsdl</wsdl>
</wsdlOption>
<wsdlOption>
<wsdl>src/main/resources/wsdl/CTMService.wsdl</wsdl>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>

Okay I can see where the bug is and have created a ticket and a fix for next Camel releases https://issues.apache.org/jira/browse/CAMEL-20342