forked from loafle/openapi-generator-original
[bug] Fix FILES sort and path provider issue (#7729)
The FILES metadata is supplementary, but was logging a warning while generating Ada client that FILES couldn't be written. An exception was being thrown because Path was being reported as two different "types of Path". One would be reported as mac file, while the other was reported as a unix file. The fix here is to disconnect path details from the underlying file system provider by creating a new Path based on the file's absolute path. This change also fixes sorting so it works alphabetically in ascending order.
This commit is contained in:
@@ -1433,6 +1433,11 @@ public class DefaultGenerator implements Generator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Path absPath(File input) {
|
||||||
|
// intentionally creates a new absolute path instance, disconnected from underlying FileSystem provider of File
|
||||||
|
return java.nio.file.Paths.get(input.getAbsolutePath());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates a file at .openapi-generator/FILES to track the files created by the user's latest run.
|
* Generates a file at .openapi-generator/FILES to track the files created by the user's latest run.
|
||||||
* This is ideal for CI and regeneration of code without stale/unused files from older generations.
|
* This is ideal for CI and regeneration of code without stale/unused files from older generations.
|
||||||
@@ -1443,7 +1448,7 @@ public class DefaultGenerator implements Generator {
|
|||||||
if (generateMetadata) {
|
if (generateMetadata) {
|
||||||
try {
|
try {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
File outDir = new File(this.config.getOutputDir());
|
Path outDir = absPath(new File(this.config.getOutputDir()));
|
||||||
|
|
||||||
List<File> filesToSort = new ArrayList<>();
|
List<File> filesToSort = new ArrayList<>();
|
||||||
|
|
||||||
@@ -1452,7 +1457,7 @@ public class DefaultGenerator implements Generator {
|
|||||||
// We have seen NPE on CI for getPath() returning null, so guard against this (to be fixed in 5.0 template management refactor)
|
// We have seen NPE on CI for getPath() returning null, so guard against this (to be fixed in 5.0 template management refactor)
|
||||||
//noinspection ConstantConditions
|
//noinspection ConstantConditions
|
||||||
if (f != null && f.getPath() != null) {
|
if (f != null && f.getPath() != null) {
|
||||||
filesToSort.add(f);
|
filesToSort.add(outDir.relativize(absPath(f)).normalize().toFile());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1461,13 +1466,12 @@ public class DefaultGenerator implements Generator {
|
|||||||
String relativeMeta = METADATA_DIR + "/VERSION";
|
String relativeMeta = METADATA_DIR + "/VERSION";
|
||||||
filesToSort.sort(PathFileComparator.PATH_COMPARATOR);
|
filesToSort.sort(PathFileComparator.PATH_COMPARATOR);
|
||||||
filesToSort.forEach(f -> {
|
filesToSort.forEach(f -> {
|
||||||
String tmp = outDir.toPath().relativize(f.toPath()).normalize().toString();
|
|
||||||
// some Java implementations don't honor .relativize documentation fully.
|
// some Java implementations don't honor .relativize documentation fully.
|
||||||
// When outDir is /a/b and the input is /a/b/c/d, the result should be c/d.
|
// When outDir is /a/b and the input is /a/b/c/d, the result should be c/d.
|
||||||
// Some implementations make the output ./c/d which seems to mix the logic
|
// Some implementations make the output ./c/d which seems to mix the logic
|
||||||
// as documented for symlinks. So we need to trim any / or ./ from the start,
|
// as documented for symlinks. So we need to trim any / or ./ from the start,
|
||||||
// as nobody should be generating into system root and our expectation is no ./
|
// as nobody should be generating into system root and our expectation is no ./
|
||||||
String relativePath = removeStart(removeStart(tmp, "." + File.separator), File.separator);
|
String relativePath = removeStart(removeStart(f.toString(), "." + File.separator), File.separator);
|
||||||
if (File.separator.equals("\\")) {
|
if (File.separator.equals("\\")) {
|
||||||
// ensure that windows outputs same FILES format
|
// ensure that windows outputs same FILES format
|
||||||
relativePath = relativePath.replace(File.separator, "/");
|
relativePath = relativePath.replace(File.separator, "/");
|
||||||
|
|||||||
8
samples/client/petstore/ada/.openapi-generator/FILES
Normal file
8
samples/client/petstore/ada/.openapi-generator/FILES
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
config.gpr
|
||||||
|
src/client/samples-petstore-clients.adb
|
||||||
|
src/client/samples-petstore-clients.ads
|
||||||
|
src/model/samples-petstore-models.adb
|
||||||
|
src/model/samples-petstore-models.ads
|
||||||
|
src/samples-petstore-client.adb
|
||||||
|
src/samples-petstore.ads
|
||||||
|
src/samples.ads
|
||||||
@@ -11,9 +11,9 @@ git_push.sh
|
|||||||
index.ts
|
index.ts
|
||||||
model/apiResponse.ts
|
model/apiResponse.ts
|
||||||
model/category.ts
|
model/category.ts
|
||||||
|
model/models.ts
|
||||||
model/order.ts
|
model/order.ts
|
||||||
model/pet.ts
|
model/pet.ts
|
||||||
model/tag.ts
|
model/tag.ts
|
||||||
model/user.ts
|
model/user.ts
|
||||||
model/models.ts
|
|
||||||
variables.ts
|
variables.ts
|
||||||
|
|||||||
@@ -11,11 +11,11 @@ git_push.sh
|
|||||||
index.ts
|
index.ts
|
||||||
model/apiResponse.ts
|
model/apiResponse.ts
|
||||||
model/category.ts
|
model/category.ts
|
||||||
|
model/models.ts
|
||||||
model/order.ts
|
model/order.ts
|
||||||
model/pet.ts
|
model/pet.ts
|
||||||
model/tag.ts
|
model/tag.ts
|
||||||
model/user.ts
|
model/user.ts
|
||||||
model/models.ts
|
|
||||||
ng-package.json
|
ng-package.json
|
||||||
package.json
|
package.json
|
||||||
tsconfig.json
|
tsconfig.json
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ git_push.sh
|
|||||||
index.ts
|
index.ts
|
||||||
model/apiResponse.ts
|
model/apiResponse.ts
|
||||||
model/category.ts
|
model/category.ts
|
||||||
|
model/models.ts
|
||||||
model/order.ts
|
model/order.ts
|
||||||
model/pet.ts
|
model/pet.ts
|
||||||
model/tag.ts
|
model/tag.ts
|
||||||
model/user.ts
|
model/user.ts
|
||||||
model/models.ts
|
|
||||||
variables.ts
|
variables.ts
|
||||||
|
|||||||
@@ -11,11 +11,11 @@ git_push.sh
|
|||||||
index.ts
|
index.ts
|
||||||
model/apiResponse.ts
|
model/apiResponse.ts
|
||||||
model/category.ts
|
model/category.ts
|
||||||
|
model/models.ts
|
||||||
model/order.ts
|
model/order.ts
|
||||||
model/pet.ts
|
model/pet.ts
|
||||||
model/tag.ts
|
model/tag.ts
|
||||||
model/user.ts
|
model/user.ts
|
||||||
model/models.ts
|
|
||||||
ng-package.json
|
ng-package.json
|
||||||
package.json
|
package.json
|
||||||
tsconfig.json
|
tsconfig.json
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ git_push.sh
|
|||||||
index.ts
|
index.ts
|
||||||
model/apiResponse.ts
|
model/apiResponse.ts
|
||||||
model/category.ts
|
model/category.ts
|
||||||
|
model/models.ts
|
||||||
model/order.ts
|
model/order.ts
|
||||||
model/pet.ts
|
model/pet.ts
|
||||||
model/tag.ts
|
model/tag.ts
|
||||||
model/user.ts
|
model/user.ts
|
||||||
model/models.ts
|
|
||||||
variables.ts
|
variables.ts
|
||||||
|
|||||||
@@ -11,11 +11,11 @@ git_push.sh
|
|||||||
index.ts
|
index.ts
|
||||||
model/apiResponse.ts
|
model/apiResponse.ts
|
||||||
model/category.ts
|
model/category.ts
|
||||||
|
model/models.ts
|
||||||
model/order.ts
|
model/order.ts
|
||||||
model/pet.ts
|
model/pet.ts
|
||||||
model/tag.ts
|
model/tag.ts
|
||||||
model/user.ts
|
model/user.ts
|
||||||
model/models.ts
|
|
||||||
ng-package.json
|
ng-package.json
|
||||||
package.json
|
package.json
|
||||||
tsconfig.json
|
tsconfig.json
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ git_push.sh
|
|||||||
index.ts
|
index.ts
|
||||||
model/apiResponse.ts
|
model/apiResponse.ts
|
||||||
model/category.ts
|
model/category.ts
|
||||||
|
model/models.ts
|
||||||
model/order.ts
|
model/order.ts
|
||||||
model/pet.ts
|
model/pet.ts
|
||||||
model/tag.ts
|
model/tag.ts
|
||||||
model/user.ts
|
model/user.ts
|
||||||
model/models.ts
|
|
||||||
variables.ts
|
variables.ts
|
||||||
|
|||||||
@@ -11,11 +11,11 @@ git_push.sh
|
|||||||
index.ts
|
index.ts
|
||||||
model/apiResponse.ts
|
model/apiResponse.ts
|
||||||
model/category.ts
|
model/category.ts
|
||||||
|
model/models.ts
|
||||||
model/order.ts
|
model/order.ts
|
||||||
model/pet.ts
|
model/pet.ts
|
||||||
model/tag.ts
|
model/tag.ts
|
||||||
model/user.ts
|
model/user.ts
|
||||||
model/models.ts
|
|
||||||
ng-package.json
|
ng-package.json
|
||||||
package.json
|
package.json
|
||||||
tsconfig.json
|
tsconfig.json
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ git_push.sh
|
|||||||
index.ts
|
index.ts
|
||||||
model/apiResponse.ts
|
model/apiResponse.ts
|
||||||
model/category.ts
|
model/category.ts
|
||||||
|
model/models.ts
|
||||||
model/order.ts
|
model/order.ts
|
||||||
model/pet.ts
|
model/pet.ts
|
||||||
model/tag.ts
|
model/tag.ts
|
||||||
model/user.ts
|
model/user.ts
|
||||||
model/models.ts
|
|
||||||
variables.ts
|
variables.ts
|
||||||
|
|||||||
@@ -11,11 +11,11 @@ git_push.sh
|
|||||||
index.ts
|
index.ts
|
||||||
model/apiResponse.ts
|
model/apiResponse.ts
|
||||||
model/category.ts
|
model/category.ts
|
||||||
|
model/models.ts
|
||||||
model/order.ts
|
model/order.ts
|
||||||
model/pet.ts
|
model/pet.ts
|
||||||
model/tag.ts
|
model/tag.ts
|
||||||
model/user.ts
|
model/user.ts
|
||||||
model/models.ts
|
|
||||||
ng-package.json
|
ng-package.json
|
||||||
package.json
|
package.json
|
||||||
tsconfig.json
|
tsconfig.json
|
||||||
|
|||||||
@@ -11,11 +11,11 @@ git_push.sh
|
|||||||
index.ts
|
index.ts
|
||||||
model/apiResponse.ts
|
model/apiResponse.ts
|
||||||
model/category.ts
|
model/category.ts
|
||||||
|
model/models.ts
|
||||||
model/order.ts
|
model/order.ts
|
||||||
model/pet.ts
|
model/pet.ts
|
||||||
model/tag.ts
|
model/tag.ts
|
||||||
model/user.ts
|
model/user.ts
|
||||||
model/models.ts
|
|
||||||
ng-package.json
|
ng-package.json
|
||||||
package.json
|
package.json
|
||||||
tsconfig.json
|
tsconfig.json
|
||||||
|
|||||||
@@ -11,11 +11,11 @@ git_push.sh
|
|||||||
index.ts
|
index.ts
|
||||||
model/apiResponse.ts
|
model/apiResponse.ts
|
||||||
model/category.ts
|
model/category.ts
|
||||||
|
model/models.ts
|
||||||
model/order.ts
|
model/order.ts
|
||||||
model/pet.ts
|
model/pet.ts
|
||||||
model/tag.ts
|
model/tag.ts
|
||||||
model/user.ts
|
model/user.ts
|
||||||
model/models.ts
|
|
||||||
ng-package.json
|
ng-package.json
|
||||||
package.json
|
package.json
|
||||||
tsconfig.json
|
tsconfig.json
|
||||||
|
|||||||
@@ -11,11 +11,11 @@ git_push.sh
|
|||||||
index.ts
|
index.ts
|
||||||
model/apiResponse.ts
|
model/apiResponse.ts
|
||||||
model/category.ts
|
model/category.ts
|
||||||
|
model/models.ts
|
||||||
model/order.ts
|
model/order.ts
|
||||||
model/pet.ts
|
model/pet.ts
|
||||||
model/tag.ts
|
model/tag.ts
|
||||||
model/user.ts
|
model/user.ts
|
||||||
model/models.ts
|
|
||||||
ng-package.json
|
ng-package.json
|
||||||
package.json
|
package.json
|
||||||
tsconfig.json
|
tsconfig.json
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ git_push.sh
|
|||||||
index.ts
|
index.ts
|
||||||
model/apiResponse.ts
|
model/apiResponse.ts
|
||||||
model/category.ts
|
model/category.ts
|
||||||
|
model/models.ts
|
||||||
model/order.ts
|
model/order.ts
|
||||||
model/pet.ts
|
model/pet.ts
|
||||||
model/tag.ts
|
model/tag.ts
|
||||||
model/user.ts
|
model/user.ts
|
||||||
model/models.ts
|
|
||||||
variables.ts
|
variables.ts
|
||||||
|
|||||||
@@ -11,11 +11,11 @@ git_push.sh
|
|||||||
index.ts
|
index.ts
|
||||||
model/apiResponse.ts
|
model/apiResponse.ts
|
||||||
model/category.ts
|
model/category.ts
|
||||||
|
model/models.ts
|
||||||
model/order.ts
|
model/order.ts
|
||||||
model/pet.ts
|
model/pet.ts
|
||||||
model/tag.ts
|
model/tag.ts
|
||||||
model/user.ts
|
model/user.ts
|
||||||
model/models.ts
|
|
||||||
ng-package.json
|
ng-package.json
|
||||||
package.json
|
package.json
|
||||||
tsconfig.json
|
tsconfig.json
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ api/userApi.ts
|
|||||||
git_push.sh
|
git_push.sh
|
||||||
model/apiResponse.ts
|
model/apiResponse.ts
|
||||||
model/category.ts
|
model/category.ts
|
||||||
|
model/models.ts
|
||||||
model/order.ts
|
model/order.ts
|
||||||
model/pet.ts
|
model/pet.ts
|
||||||
model/tag.ts
|
model/tag.ts
|
||||||
model/user.ts
|
model/user.ts
|
||||||
model/models.ts
|
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ api/userApi.ts
|
|||||||
git_push.sh
|
git_push.sh
|
||||||
model/apiResponse.ts
|
model/apiResponse.ts
|
||||||
model/category.ts
|
model/category.ts
|
||||||
|
model/models.ts
|
||||||
model/order.ts
|
model/order.ts
|
||||||
model/pet.ts
|
model/pet.ts
|
||||||
model/tag.ts
|
model/tag.ts
|
||||||
model/user.ts
|
model/user.ts
|
||||||
model/models.ts
|
|
||||||
package.json
|
package.json
|
||||||
tsconfig.json
|
tsconfig.json
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
.coveralls.yml
|
||||||
|
.gitignore
|
||||||
|
.php_cs.dist
|
||||||
|
.travis.yml
|
||||||
Api/ApiServer.php
|
Api/ApiServer.php
|
||||||
Api/PetApiInterface.php
|
Api/PetApiInterface.php
|
||||||
Api/StoreApiInterface.php
|
Api/StoreApiInterface.php
|
||||||
@@ -6,27 +10,14 @@ Controller/Controller.php
|
|||||||
Controller/PetController.php
|
Controller/PetController.php
|
||||||
Controller/StoreController.php
|
Controller/StoreController.php
|
||||||
Controller/UserController.php
|
Controller/UserController.php
|
||||||
|
DependencyInjection/Compiler/OpenAPIServerApiPass.php
|
||||||
|
DependencyInjection/OpenAPIServerExtension.php
|
||||||
Model/ApiResponse.php
|
Model/ApiResponse.php
|
||||||
Model/Category.php
|
Model/Category.php
|
||||||
Model/Order.php
|
Model/Order.php
|
||||||
Model/Pet.php
|
Model/Pet.php
|
||||||
Model/Tag.php
|
Model/Tag.php
|
||||||
Model/User.php
|
Model/User.php
|
||||||
Service/JmsSerializer.php
|
|
||||||
Service/SerializerInterface.php
|
|
||||||
Service/StrictJsonDeserializationVisitor.php
|
|
||||||
Service/SymfonyValidator.php
|
|
||||||
Service/TypeMismatchException.php
|
|
||||||
Service/ValidatorInterface.php
|
|
||||||
Tests/AppKernel.php
|
|
||||||
Tests/Controller/ControllerTest.php
|
|
||||||
Tests/test_config.yml
|
|
||||||
.coveralls.yml
|
|
||||||
.gitignore
|
|
||||||
.php_cs.dist
|
|
||||||
.travis.yml
|
|
||||||
DependencyInjection/Compiler/OpenAPIServerApiPass.php
|
|
||||||
DependencyInjection/OpenAPIServerExtension.php
|
|
||||||
OpenAPIServerBundle.php
|
OpenAPIServerBundle.php
|
||||||
README.md
|
README.md
|
||||||
Resources/config/routing.yml
|
Resources/config/routing.yml
|
||||||
@@ -40,6 +31,15 @@ Resources/docs/Model/Order.md
|
|||||||
Resources/docs/Model/Pet.md
|
Resources/docs/Model/Pet.md
|
||||||
Resources/docs/Model/Tag.md
|
Resources/docs/Model/Tag.md
|
||||||
Resources/docs/Model/User.md
|
Resources/docs/Model/User.md
|
||||||
|
Service/JmsSerializer.php
|
||||||
|
Service/SerializerInterface.php
|
||||||
|
Service/StrictJsonDeserializationVisitor.php
|
||||||
|
Service/SymfonyValidator.php
|
||||||
|
Service/TypeMismatchException.php
|
||||||
|
Service/ValidatorInterface.php
|
||||||
|
Tests/AppKernel.php
|
||||||
|
Tests/Controller/ControllerTest.php
|
||||||
|
Tests/test_config.yml
|
||||||
autoload.php
|
autoload.php
|
||||||
composer.json
|
composer.json
|
||||||
git_push.sh
|
git_push.sh
|
||||||
|
|||||||
Reference in New Issue
Block a user