Skip to content

Commit

Permalink
Now handling header params in the jx-rs generator
Browse files Browse the repository at this point in the history
Signed-off-by: Eric Wittmann <[email protected]>
  • Loading branch information
EricWittmann committed Aug 7, 2019
1 parent f9b220b commit c78f488
Show file tree
Hide file tree
Showing 12 changed files with 2,976 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,10 @@ private String generateJavaInterface(CodegenJavaInterface _interface) {
paramBuilder.addAnnotation(AnnotationSpec.builder(ClassName.get("javax.ws.rs", "QueryParam"))
.addMember("value", "$S", cgArgument.getName()).build());
}
if (cgArgument.getIn().equals("header")) {
paramBuilder.addAnnotation(AnnotationSpec.builder(ClassName.get("javax.ws.rs", "HeaderParam"))
.addMember("value", "$S", cgArgument.getName()).build());
}
methodBuilder.addParameter(paramBuilder.build());
}
}
Expand Down Expand Up @@ -560,7 +564,35 @@ private static String paramNameToJavaArgName(String paramName) {
if (paramName == null) {
return null;
}
return paramName.replaceAll("[^a-zA-Z0-9_]", "_");
String [] split = paramName.replaceAll("[^a-zA-Z0-9_]", "_").split("_");
StringBuilder builder = new StringBuilder();
boolean first = true;
for (String term : split) {
if (term.trim().length() == 0) {
continue;
}
if (first) {
builder.append(decapitalize(term));
first = false;
} else {
builder.append(capitalize(term));
}
}
return builder.toString();
}

private static String capitalize(String term) {
if (term.length() == 1) {
return term.toUpperCase();
}
return term.substring(0, 1).toUpperCase() + term.substring(1);
}

private static String decapitalize(String term) {
if (term.length() == 1) {
return term.toLowerCase();
}
return term.substring(0, 1).toLowerCase() + term.substring(1);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,14 @@ public void testGenerateFull_GatewayApi() throws IOException {
doFullTest("OpenApi2JaxRsTest/gateway-api.json", UpdateOnly.no, Reactive.no, "_expected-gatewayApi-full/generated-api", false);
}

/**
* Test method for {@link io.apicurio.hub.api.codegen.OpenApi2JaxRs#generate()}.
*/
@Test
public void testGenerateFull_RegistryApi() throws IOException {
doFullTest("OpenApi2JaxRsTest/registry-api.json", UpdateOnly.no, Reactive.no, "_expected-registryApi-full/generated-api", false);
}

/**
* Test method for {@link io.apicurio.hub.api.codegen.OpenApi2JaxRs#generate()}.
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example.api</groupId>
<artifactId>generated-api</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<name>Apicurio Registry API</name>
<description>The Apicurio Registry project's primary REST API - used by clients to add and remove APIs and Schemas to the registry.</description>

<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<failOnMissingWebXml>false</failOnMissingWebXml>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<version.org.jboss.spec.javax.ws.jboss-jaxrs-api_2.1_spec>1.0.2.Final</version.org.jboss.spec.javax.ws.jboss-jaxrs-api_2.1_spec>
<version.com.fasterxml.jackson>2.9.8</version.com.fasterxml.jackson>
</properties>

<dependencies>
<!-- Third Party Dependencies -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${version.com.fasterxml.jackson}</version>
</dependency>
<!-- Specification Dependencies -->
<dependency>
<groupId>org.jboss.spec.javax.ws.rs</groupId>
<artifactId>jboss-jaxrs-api_2.1_spec</artifactId>
<version>${version.org.jboss.spec.javax.ws.jboss-jaxrs-api_2.1_spec}</version>
</dependency>
</dependencies>
</project>
Loading

0 comments on commit c78f488

Please sign in to comment.