I am using the open-api generator plugin
in my java project.
For more information about the plugin, see
Here is a part of my pom.xml
where i registered the openapi-generator-maven-plugin
in the <build>
section :
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>6.2.1</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/pistache-api.yaml</inputSpec>
<generatorName>jaxrs-spec</generatorName>
<apiPackage>com.example.api</apiPackage>
<modelPackage>
com.example.api.model
</modelPackage>
<configOptions>
<useSwaggerAnnotations>false</useSwaggerAnnotations>
<library>quarkus</library>
<interfaceOnly>true</interfaceOnly>
<dateLibrary>java8</dateLibrary>
<useTags>true</useTags>
<useBeanValidation>false</useBeanValidation>
<returnResponse>true</returnResponse>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
Here is my controller src/main/java/com/example/controller/BasicAuth.java
in which I implement the generated interface and in which the errors are located:
package com.example.controller;
import com.example.api.UsersApi;
import com.example.client.RestClientBasicAuth;
import com.example.config.BasicUserConfig;
import org.eclipse.microprofile.rest.client.inject.RestClient;
import javax.inject.Inject;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;
import static com.example.RestResourceRoot.APPLICATION_PATH;
@Path(APPLICATION_PATH)
public class BasicAuth implements UsersApi {
@Override
public Response retrievePwdGet() {
// my custom implementation
}
}
Here is the interface target/generated-sources/openapi/src/gen/java/com/example/api/UsersApi.java
:
package com.example.api;
import javax.ws.rs.*;
import javax.ws.rs.core.Response;
import java.io.InputStream;
import java.util.Map;
import java.util.List;
@Path("/retrieve-pwd")
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaJAXRSSpecServerCodegen", date = "2022-12-10T18:01:45.461936200 01:00[Europe/Paris]")
public interface UsersApi {
@GET
@Produces({ "application/json" })
Response retrievePwdGet();
}
I don't know what's going wrong here. My IDE does not report any errors, although I know that the IDE cannot be fully trusted.
Finally, my application can be started correctly via the IDE, but the controller endpoint for my GET
method is not the one defined in the UsersApi
interface. The path is not api/v1/retrieve-pwd
, but api/v1
.
This behavior is also strange. Maybe by overloading the method in my controller the path can be modified, but, the path is not defined on the method but on the interface.
I await your comments or feedback and thank you in advance
CodePudding user response:
Problem was generated files : they were not compiled. This explain errors messages.
Solution was adding a maven helper plugin :
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src/main/newsrc/</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>