Skip to content
This repository was archived by the owner on May 9, 2025. It is now read-only.

Commit 00ebf20

Browse files
committed
Merge branch 'master' into cleanup-template-management
* master: [java-jersey2] Conditionally include http signature mustache template (OpenAPITools#6413) [bug] Fix path provider bug on CI (OpenAPITools#6409)
2 parents ef4e835 + e38168c commit 00ebf20

File tree

9 files changed

+34
-548
lines changed

9 files changed

+34
-548
lines changed

modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java

+29-19
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import io.swagger.v3.oas.models.parameters.Parameter;
3030
import io.swagger.v3.oas.models.security.*;
3131
import io.swagger.v3.oas.models.tags.Tag;
32+
import org.apache.commons.io.comparator.PathFileComparator;
3233
import org.apache.commons.lang3.ObjectUtils;
3334
import org.apache.commons.lang3.StringUtils;
3435
import org.openapitools.codegen.api.TemplatePathLocator;
@@ -57,7 +58,6 @@
5758
import java.nio.file.Path;
5859
import java.time.ZonedDateTime;
5960
import java.util.*;
60-
import java.util.stream.Stream;
6161

6262
import static org.openapitools.codegen.utils.OnceLogger.once;
6363

@@ -913,26 +913,36 @@ public List<File> generate() {
913913
System.err.println(sb.toString());
914914
} else {
915915
if (generateMetadata) {
916-
StringBuilder sb = new StringBuilder();
917-
File outDir = new File(this.config.getOutputDir());
918-
Optional.of(files)
919-
.map(Collection::stream)
920-
.orElseGet(Stream::empty)
921-
.filter(Objects::nonNull)
922-
.map(File::toPath)
923-
.sorted(Path::compareTo)
924-
.forEach(f -> {
925-
String relativePath = java.nio.file.Paths.get(outDir.toURI()).relativize(f).toString();
926-
if (!relativePath.equals(METADATA_DIR + File.separator + "VERSION")) {
927-
sb.append(relativePath).append(System.lineSeparator());
928-
}
929-
});
930-
931-
String targetFile = config.outputFolder() + File.separator + METADATA_DIR + File.separator + "FILES";
932916
try {
917+
StringBuilder sb = new StringBuilder();
918+
File outDir = new File(this.config.getOutputDir());
919+
920+
List<File> filesToSort = new ArrayList<>();
921+
922+
// Avoid side-effecting sort in this path when generateMetadata=true
923+
files.forEach(f -> {
924+
// We have seen NPE on CI for getPath() returning null, so guard against this (to be fixed in 5.0 template management refactor)
925+
//noinspection ConstantConditions
926+
if (f != null && f.getPath() != null) {
927+
filesToSort.add(f);
928+
}
929+
});
930+
931+
filesToSort.sort(PathFileComparator.PATH_COMPARATOR);
932+
filesToSort.forEach(f -> {
933+
String relativePath = outDir.toPath().relativize(f.toPath()).toString();
934+
if (!relativePath.equals(METADATA_DIR + File.separator + "VERSION")) {
935+
sb.append(relativePath).append(System.lineSeparator());
936+
}
937+
});
938+
939+
String targetFile = config.outputFolder() + File.separator + METADATA_DIR + File.separator + "FILES";
940+
933941
File filesFile = this.templateProcessor.writeToFile(targetFile, sb.toString().getBytes(StandardCharsets.UTF_8));
934-
files.add(filesFile);
935-
} catch (IOException e) {
942+
if (filesFile != null) {
943+
files.add(filesFile);
944+
}
945+
} catch (Exception e) {
936946
LOGGER.warn("Failed to write FILES metadata to track generated files.");
937947
}
938948
}

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,9 @@ public void processOpts() {
380380
} else if (JERSEY2.equals(getLibrary())) {
381381
supportingFiles.add(new SupportingFile("JSON.mustache", invokerFolder, "JSON.java"));
382382
supportingFiles.add(new SupportingFile("ApiResponse.mustache", invokerFolder, "ApiResponse.java"));
383-
supportingFiles.add(new SupportingFile("auth/HttpSignatureAuth.mustache", authFolder, "HttpSignatureAuth.java"));
383+
if (ProcessUtils.hasHttpSignatureMethods(openAPI)) {
384+
supportingFiles.add(new SupportingFile("auth/HttpSignatureAuth.mustache", authFolder, "HttpSignatureAuth.java"));
385+
}
384386
supportingFiles.add(new SupportingFile("AbstractOpenApiSchema.mustache", (sourceFolder + File.separator + modelPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar), "AbstractOpenApiSchema.java"));
385387
forceSerializationLibrary(SERIALIZATION_LIBRARY_JACKSON);
386388
} else if (NATIVE.equals(getLibrary())) {

modules/openapi-generator/src/main/resources/Java/libraries/jersey2/ApiClient.mustache

+2
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,9 @@ import java.util.regex.Pattern;
5959
import {{invokerPackage}}.auth.Authentication;
6060
import {{invokerPackage}}.auth.HttpBasicAuth;
6161
import {{invokerPackage}}.auth.HttpBearerAuth;
62+
{{#hasHttpSignatureMethods}}
6263
import {{invokerPackage}}.auth.HttpSignatureAuth;
64+
{{/hasHttpSignatureMethods}}
6365
import {{invokerPackage}}.auth.ApiKeyAuth;
6466
{{#hasOAuthMethods}}
6567
import {{invokerPackage}}.auth.OAuth;

samples/client/petstore/java/jersey2-java7/.openapi-generator/FILES

-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ src/main/java/org/openapitools/client/auth/ApiKeyAuth.java
8686
src/main/java/org/openapitools/client/auth/Authentication.java
8787
src/main/java/org/openapitools/client/auth/HttpBasicAuth.java
8888
src/main/java/org/openapitools/client/auth/HttpBearerAuth.java
89-
src/main/java/org/openapitools/client/auth/HttpSignatureAuth.java
9089
src/main/java/org/openapitools/client/auth/OAuth.java
9190
src/main/java/org/openapitools/client/auth/OAuthFlow.java
9291
src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java

samples/client/petstore/java/jersey2-java7/src/main/java/org/openapitools/client/ApiClient.java

-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@
5151
import org.openapitools.client.auth.Authentication;
5252
import org.openapitools.client.auth.HttpBasicAuth;
5353
import org.openapitools.client.auth.HttpBearerAuth;
54-
import org.openapitools.client.auth.HttpSignatureAuth;
5554
import org.openapitools.client.auth.ApiKeyAuth;
5655
import org.openapitools.client.auth.OAuth;
5756
import org.openapitools.client.model.AbstractOpenApiSchema;

samples/client/petstore/java/jersey2-java7/src/main/java/org/openapitools/client/auth/HttpSignatureAuth.java

-262
This file was deleted.

samples/client/petstore/java/jersey2-java8/.openapi-generator/FILES

-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ src/main/java/org/openapitools/client/auth/ApiKeyAuth.java
8686
src/main/java/org/openapitools/client/auth/Authentication.java
8787
src/main/java/org/openapitools/client/auth/HttpBasicAuth.java
8888
src/main/java/org/openapitools/client/auth/HttpBearerAuth.java
89-
src/main/java/org/openapitools/client/auth/HttpSignatureAuth.java
9089
src/main/java/org/openapitools/client/auth/OAuth.java
9190
src/main/java/org/openapitools/client/auth/OAuthFlow.java
9291
src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java

samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/ApiClient.java

-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@
5151
import org.openapitools.client.auth.Authentication;
5252
import org.openapitools.client.auth.HttpBasicAuth;
5353
import org.openapitools.client.auth.HttpBearerAuth;
54-
import org.openapitools.client.auth.HttpSignatureAuth;
5554
import org.openapitools.client.auth.ApiKeyAuth;
5655
import org.openapitools.client.auth.OAuth;
5756
import org.openapitools.client.model.AbstractOpenApiSchema;

0 commit comments

Comments
 (0)