GERONIMO-6675 ensure info can be configured into the mojo
authorRomain Manni-Bucau <rmannibucau@gmail.com>
Wed, 9 Jan 2019 09:36:55 +0000 (10:36 +0100)
committerRomain Manni-Bucau <rmannibucau@gmail.com>
Wed, 9 Jan 2019 09:36:55 +0000 (10:36 +0100)
README.adoc
geronimo-openapi-maven-plugin/src/main/java/org/apache/geronimo/microprofile/openapi/mojo/OpenAPIMojo.java
geronimo-openapi-maven-plugin/src/test/java/org/apache/geronimo/microprofile/openapi/mojo/OpenAPIMojoTest.java

index af30bab..0617a39 100644 (file)
@@ -47,6 +47,11 @@ Here is how to define it:
           <endpointClass>com.test.SomeEndpoint</endpointClass>
           <endpointClass>com.test.SomeOtherEndpoint</endpointClass>
         </endpointClasses>
+        <info>
+          <version>1</version>
+          <title>My Title</title>
+          <description>Bla Bla</description>
+        </info>
       </configuration>
     </execution>
   </executions>
index 1886e95..9379218 100644 (file)
@@ -47,6 +47,7 @@ import javax.json.bind.Jsonb;
 import javax.json.bind.JsonbBuilder;
 import javax.json.bind.JsonbConfig;
 
+import org.apache.geronimo.microprofile.openapi.impl.model.InfoImpl;
 import org.apache.geronimo.microprofile.openapi.impl.model.OpenAPIImpl;
 import org.apache.geronimo.microprofile.openapi.impl.processor.AnnotatedMethodElement;
 import org.apache.geronimo.microprofile.openapi.impl.processor.AnnotatedTypeElement;
@@ -84,6 +85,9 @@ public class OpenAPIMojo extends AbstractMojo {
     @Parameter(defaultValue = "${project}", readonly = true)
     protected MavenProject project;
 
+    @Parameter
+    protected InfoImpl info;
+
     @Override
     public void execute() throws MojoExecutionException {
         if (skip) {
@@ -141,6 +145,21 @@ public class OpenAPIMojo extends AbstractMojo {
             throw new MojoExecutionException(e.getMessage(), e);
         }
 
+        // info are required
+        if (info == null) {
+            info = new InfoImpl();
+        }
+        if (info.getVersion() == null) {
+            info.setVersion(project.getVersion());
+        }
+        if (info.getTitle() == null) {
+            info.setTitle(project.getName());
+        }
+        if (info.getDescription() == null) {
+            info.setDescription(project.getDescription());
+        }
+        api.info(info);
+
         output.getParentFile().mkdirs();
         try (final Jsonb jsonb = JsonbBuilder.create(new JsonbConfig().withFormatting(prettify));
              final Writer writer = new FileWriter(output)) {
index ab3e2ea..6695ab6 100644 (file)
@@ -35,6 +35,7 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.geronimo.microprofile.openapi.impl.loader.ApiBindings;
 import org.apache.geronimo.microprofile.openapi.impl.model.OpenAPIImpl;
+import org.apache.maven.project.MavenProject;
 import org.eclipse.microprofile.openapi.models.OpenAPI;
 import org.eclipse.microprofile.openapi.models.Operation;
 import org.eclipse.microprofile.openapi.models.media.Schema;
@@ -46,8 +47,12 @@ public class OpenAPIMojoTest {
         final OpenAPIMojo mojo = new OpenAPIMojo();
         mojo.output = new File("target/OpenAPIMojoTest_run_1.json");
         mojo.endpointClasses = singleton(HelloServiceImpl1.class.getName());
+        mojo.project = new MavenProject();
+        mojo.project.setVersion("1.2.3");
         mojo.execute();
         final OpenAPI openAPI = readOpenAPI(mojo.output);
+        assertNotNull(openAPI.getInfo());
+        assertEquals("1.2.3", openAPI.getInfo().getVersion());
         final Operation get = openAPI.getPaths().get("/sayHello/{a}").getGET();
         assertNotNull(get);
         assertEquals(1, get.getParameters().size());