|
11 | 11 | import java.nio.file.Files; |
12 | 12 | import java.nio.file.Paths; |
13 | 13 | import java.util.List; |
| 14 | +import java.util.function.Predicate; |
14 | 15 |
|
15 | 16 | import javax.annotation.Nonnull; |
16 | 17 |
|
17 | 18 | import org.apache.commons.io.FileUtils; |
| 19 | +import org.apache.commons.io.function.IOConsumer; |
18 | 20 | import org.openapitools.codegen.ClientOptInput; |
19 | 21 | import org.openapitools.codegen.DefaultGenerator; |
20 | 22 |
|
@@ -107,15 +109,20 @@ private Try<GenerationResult> invokeCodeGeneration( @Nonnull final GenerationCon |
107 | 109 | }); |
108 | 110 | } |
109 | 111 |
|
110 | | - private void cleanOutputDirectoryIfRequested( final GenerationConfiguration generationConfiguration ) |
| 112 | + private void cleanOutputDirectoryIfRequested( final GenerationConfiguration configuration ) |
111 | 113 | throws IOException |
112 | 114 | { |
113 | | - final File outputDirectory = FileUtils.getFile(generationConfiguration.getOutputDirectory()); |
114 | | - if( generationConfiguration.deleteOutputDirectory() |
115 | | - && outputDirectory.exists() |
116 | | - && outputDirectory.isDirectory() ) { |
117 | | - log.info("Deleting output directory \"{}\".", outputDirectory.getAbsolutePath()); |
118 | | - FileUtils.cleanDirectory(outputDirectory); |
| 115 | + final File outputDirectory = FileUtils.getFile(configuration.getOutputDirectory()); |
| 116 | + if( configuration.deleteOutputDirectory() && outputDirectory.exists() && outputDirectory.isDirectory() ) { |
| 117 | + log.info("Cleaning generated folders in output directory \"{}\".", outputDirectory.getAbsolutePath()); |
| 118 | + |
| 119 | + for( final var pckg : List.of(configuration.getModelPackage(), configuration.getApiPackage()) ) { |
| 120 | + final var file = outputDirectory.toPath().resolve(pckg.replace(".", File.separator)).toFile(); |
| 121 | + if( file.exists() && file.isDirectory() ) { |
| 122 | + log.info("Deleting files from directory \"{}\".", file); |
| 123 | + IOConsumer.forAll(FileUtils::forceDelete, file); |
| 124 | + } |
| 125 | + } |
119 | 126 | } |
120 | 127 | } |
121 | 128 |
|
@@ -149,17 +156,16 @@ private void assertRequiredFieldsAreFilled( final GenerationConfiguration config |
149 | 156 | if( configuration.getInputSpec() == null || configuration.getInputSpec().isEmpty() ) { |
150 | 157 | throw new IllegalArgumentException("Input file path is null or empty."); |
151 | 158 | } |
152 | | - |
153 | | - if( configuration.getApiPackage() == null || configuration.getApiPackage().isEmpty() ) { |
154 | | - throw new IllegalArgumentException("API package is null or empty."); |
| 159 | + if( configuration.getOutputDirectory() == null || configuration.getOutputDirectory().isEmpty() ) { |
| 160 | + throw new IllegalArgumentException("Output directory is null or empty."); |
155 | 161 | } |
156 | 162 |
|
157 | | - if( configuration.getModelPackage() == null || configuration.getModelPackage().isEmpty() ) { |
158 | | - throw new IllegalArgumentException("Model package is null or empty."); |
| 163 | + final Predicate<String> goodPackage = p -> !p.isEmpty() && !p.startsWith(".") && !p.contains(File.separator); |
| 164 | + if( configuration.getApiPackage() == null || !goodPackage.test(configuration.getApiPackage()) ) { |
| 165 | + throw new IllegalArgumentException("API package is null or empty or invalid."); |
159 | 166 | } |
160 | | - |
161 | | - if( configuration.getOutputDirectory() == null || configuration.getOutputDirectory().isEmpty() ) { |
162 | | - throw new IllegalArgumentException("Output directory is null or empty."); |
| 167 | + if( configuration.getModelPackage() == null || !goodPackage.test(configuration.getModelPackage()) ) { |
| 168 | + throw new IllegalArgumentException("Model package is null or empty or invalid."); |
163 | 169 | } |
164 | 170 | } |
165 | 171 |
|
|
0 commit comments