Skip to content

Commit 59d7c71

Browse files
authored
Merge pull request #327 from mcruzdev/issue-326
Add application level annotation using CodegenInfo
2 parents baa16ae + a9477ec commit 59d7c71

File tree

11 files changed

+134
-25
lines changed

11 files changed

+134
-25
lines changed

core/src/main/java/io/apicurio/hub/api/codegen/OpenApi2JaxRs.java

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -285,8 +285,8 @@ protected void generateAll(CodegenInfo info, StringBuilder log, ZipOutputStream
285285
}
286286

287287
if (!this.updateOnly) {
288-
String appFileName = javaPackageToZipPath(this.settings.javaPackage) + "JaxRsApplication.java";
289-
String jaxRsApp = generateJaxRsApplication();
288+
String appFileName = javaPackageToZipPath(this.settings.javaPackage) + getMainClassName() + ".java";
289+
String jaxRsApp = generateJaxRsApplication(info);
290290
if (jaxRsApp != null) {
291291
log.append("Generating " + appFileName + "\r\n");
292292
zipOutput.putNextEntry(new ZipEntry(appFileName));
@@ -409,6 +409,25 @@ protected String getContextRoot(Document document) {
409409
return null;
410410
}
411411

412+
protected String getMainClassName() {
413+
return "JaxRsApplication";
414+
}
415+
protected JavaClassSource generateApplicationClassSource(String topLevelPackage, CodegenInfo info) {
416+
return Roaster.create(JavaClassSource.class)
417+
.setPackage(this.settings.javaPackage)
418+
.setPublic()
419+
.setName(getMainClassName())
420+
.setSuperType(String.format("%s.ws.rs.core.Application", topLevelPackage))
421+
.getJavaDoc()
422+
.setFullText("The JAX-RS application.")
423+
.getOrigin()
424+
.addAnnotation(String.format("%s.enterprise.context.ApplicationScoped", topLevelPackage))
425+
.getOrigin()
426+
.addAnnotation(String.format("%s.ws.rs.ApplicationPath", topLevelPackage))
427+
.setStringValue("/")
428+
.getOrigin();
429+
}
430+
412431
/**
413432
* Pre-process the document to modify it in the following ways:
414433
*
@@ -471,20 +490,8 @@ protected String generatePomXml(CodegenInfo info) throws IOException {
471490
/**
472491
* Generates the JaxRsApplication Java class.
473492
*/
474-
protected String generateJaxRsApplication(String topLevelPackage) {
475-
JavaClassSource jaxRsApp = Roaster.create(JavaClassSource.class)
476-
.setPackage(this.settings.javaPackage)
477-
.setPublic()
478-
.setName("JaxRsApplication")
479-
.setSuperType(String.format("%s.ws.rs.core.Application", topLevelPackage))
480-
.getJavaDoc()
481-
.setFullText("The JAX-RS application.")
482-
.getOrigin()
483-
.addAnnotation(String.format("%s.enterprise.context.ApplicationScoped", topLevelPackage))
484-
.getOrigin()
485-
.addAnnotation(String.format("%s.ws.rs.ApplicationPath", topLevelPackage))
486-
.setStringValue("/")
487-
.getOrigin();
493+
protected String generateJaxRsApplication(String topLevelPackage, CodegenInfo info) {
494+
JavaClassSource jaxRsApp = generateApplicationClassSource(topLevelPackage, info);
488495

489496
sortImports(jaxRsApp);
490497

@@ -494,8 +501,8 @@ protected String generateJaxRsApplication(String topLevelPackage) {
494501
/**
495502
* Generates the JaxRsApplication java class.
496503
*/
497-
protected String generateJaxRsApplication() {
498-
return generateJaxRsApplication("jakarta");
504+
protected String generateJaxRsApplication(CodegenInfo info) {
505+
return generateJaxRsApplication("jakarta", info);
499506
}
500507

501508
void sortImports(Importer<?> javaSource) {

core/src/main/java/io/apicurio/hub/api/codegen/OpenApi2Quarkus.java

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import java.io.IOException;
2020
import java.io.UncheckedIOException;
2121
import java.net.URL;
22-
import java.nio.charset.Charset;
2322
import java.nio.charset.StandardCharsets;
2423
import java.util.stream.Stream;
2524
import java.util.zip.ZipEntry;
@@ -28,6 +27,8 @@
2827
import org.apache.commons.io.IOUtils;
2928

3029
import io.apicurio.hub.api.codegen.beans.CodegenInfo;
30+
import org.jboss.forge.roaster.Roaster;
31+
import org.jboss.forge.roaster.model.source.JavaClassSource;
3132

3233

3334
/**
@@ -75,13 +76,20 @@ protected void generateAll(CodegenInfo info, StringBuilder log, ZipOutputStream
7576
}
7677
}
7778

78-
/**
79-
* @see io.apicurio.hub.api.codegen.OpenApi2JaxRs#generateJaxRsApplication()
80-
*/
8179
@Override
82-
protected String generateJaxRsApplication() {
83-
// Don't need one of these for Quarkus.
84-
return null;
80+
protected JavaClassSource generateApplicationClassSource(String topLevelPackage, CodegenInfo info) {
81+
82+
return Roaster.create(JavaClassSource.class)
83+
.setName(getMainClassName())
84+
.getJavaDoc()
85+
.setFullText(info.getName() + " " + info.getVersion())
86+
.getOrigin()
87+
.setSuperType("jakarta.ws.rs.core.Application")
88+
.setPackage(this.settings.javaPackage)
89+
.setPublic()
90+
.addAnnotation("org.eclipse.microprofile.openapi.annotations.OpenApiDefinition")
91+
.setLiteralValue("info", String.format("@org.eclipse.microprofile.openapi.annotations.info.Info(title = \"%s\", version = \"%s\")", info.getName(), info.getVersion()))
92+
.getOrigin();
8593
}
8694

8795
@Override
@@ -118,4 +126,8 @@ protected URL getQuarkusResource(String name) {
118126
return getClass().getResource("quarkus/" + name);
119127
}
120128

129+
@Override
130+
protected String getMainClassName() {
131+
return "Application";
132+
}
121133
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.example.api;
2+
3+
import org.eclipse.microprofile.openapi.annotations.OpenApiDefinition;
4+
5+
/**
6+
* Beer API 1.0.0
7+
*/
8+
@OpenApiDefinition(info = @org.eclipse.microprofile.openapi.annotations.info.Info(title = "Beer API", version = "1.0.0"))
9+
public class Application extends jakarta.ws.rs.core.Application {
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package my.other.pkg;
2+
3+
import org.eclipse.microprofile.openapi.annotations.OpenApiDefinition;
4+
5+
/**
6+
* Apicurio Registry API [v2] 2.4.x
7+
*/
8+
@OpenApiDefinition(info = @org.eclipse.microprofile.openapi.annotations.info.Info(title = "Apicurio Registry API [v2]", version = "2.4.x"))
9+
public class Application extends jakarta.ws.rs.core.Application {
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package my.other.pkg;
2+
3+
import org.eclipse.microprofile.openapi.annotations.OpenApiDefinition;
4+
5+
/**
6+
* Apicurio Registry API [v2] 2.4.x
7+
*/
8+
@OpenApiDefinition(info = @org.eclipse.microprofile.openapi.annotations.info.Info(title = "Apicurio Registry API [v2]", version = "2.4.x"))
9+
public class Application extends jakarta.ws.rs.core.Application {
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.example.api;
2+
3+
import org.eclipse.microprofile.openapi.annotations.OpenApiDefinition;
4+
5+
/**
6+
* Beer API 1.0.0
7+
*/
8+
@OpenApiDefinition(info = @org.eclipse.microprofile.openapi.annotations.info.Info(title = "Beer API", version = "1.0.0"))
9+
public class Application extends jakarta.ws.rs.core.Application {
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.example.api;
2+
3+
import org.eclipse.microprofile.openapi.annotations.OpenApiDefinition;
4+
5+
/**
6+
* Beer API 1.0.0
7+
*/
8+
@OpenApiDefinition(info = @org.eclipse.microprofile.openapi.annotations.info.Info(title = "Beer API", version = "1.0.0"))
9+
public class Application extends jakarta.ws.rs.core.Application {
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.example.api;
2+
3+
import org.eclipse.microprofile.openapi.annotations.OpenApiDefinition;
4+
5+
/**
6+
* GitHub v3 REST API 0.0.3
7+
*/
8+
@OpenApiDefinition(info = @org.eclipse.microprofile.openapi.annotations.info.Info(title = "GitHub v3 REST API", version = "0.0.3"))
9+
public class Application extends jakarta.ws.rs.core.Application {
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.example.api;
2+
3+
import org.eclipse.microprofile.openapi.annotations.OpenApiDefinition;
4+
5+
/**
6+
* GitHub v3 REST API 0.0.3
7+
*/
8+
@OpenApiDefinition(info = @org.eclipse.microprofile.openapi.annotations.info.Info(title = "GitHub v3 REST API", version = "0.0.3"))
9+
public class Application extends jakarta.ws.rs.core.Application {
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.example.api;
2+
3+
import org.eclipse.microprofile.openapi.annotations.OpenApiDefinition;
4+
5+
/**
6+
* Strimzi Kafka Bridge API Reference 0.1.0
7+
*/
8+
@OpenApiDefinition(info = @org.eclipse.microprofile.openapi.annotations.info.Info(title = "Strimzi Kafka Bridge API Reference", version = "0.1.0"))
9+
public class Application extends jakarta.ws.rs.core.Application {
10+
}

0 commit comments

Comments
 (0)