@@ -25,6 +25,9 @@ import com.google.googlejavaformat.java.Formatter
2525import com.google.googlejavaformat.java.JavaFormatterOptions
2626import groovy.util.logging.Slf4j
2727
28+ import java.nio.file.Files
29+ import java.nio.file.Path
30+
2831import static com.github.hauner.openapi.support.Identifier.toClass
2932
3033/**
@@ -40,8 +43,8 @@ class ApiWriter {
4043 DataTypeWriter dataTypeWriter
4144 StringEnumWriter enumWriter
4245
43- File apiFolder
44- File modelFolder
46+ Path apiFolder
47+ Path modelFolder
4548
4649 Formatter formatter
4750
@@ -69,22 +72,22 @@ class ApiWriter {
6972 createTargetFolders ()
7073
7174 api. interfaces. each {
72- def target = new File ( apiFolder, " ${ it.interfaceName} .java" )
73- def writer = new FileWriter ( target)
75+ def target = apiFolder. resolve ( " ${ it.interfaceName} .java" )
76+ def writer = new BufferedWriter ( new PathWriter ( target) )
7477 writeInterface (writer, it)
7578 writer. close ()
7679 }
7780
7881 api. models. objectDataTypes. each {
79- def target = new File ( modelFolder, " ${ it.name} .java" )
80- def writer = new FileWriter ( target)
82+ def target = modelFolder. resolve ( " ${ it.name} .java" )
83+ def writer = new BufferedWriter ( new PathWriter ( target) )
8184 writeDataType (writer, it)
8285 writer. close ()
8386 }
8487
8588 api. models. enumDataTypes. each {
86- def target = new File ( modelFolder, " ${ it.name} .java" )
87- def writer = new FileWriter ( target)
89+ def target = modelFolder. resolve ( " ${ it.name} .java" )
90+ def writer = new BufferedWriter ( new PathWriter ( target) )
8891 writeEnumDataType (writer, it)
8992 writer. close ()
9093 }
@@ -132,23 +135,25 @@ class ApiWriter {
132135 log. debug (' creating target folders: {}' , rootPkg)
133136
134137 apiFolder = createTargetPackage (apiPkg)
135- log. debug (' created target folder: {}' , apiFolder. absolutePath )
138+ log. debug (' created target folder: {}' , apiFolder. toAbsolutePath () . toString () )
136139
137140 modelFolder = createTargetPackage (modelPkg)
138- log. debug (' created target folder: {}' , modelFolder. absolutePath )
141+ log. debug (' created target folder: {}' , modelFolder. toAbsolutePath () . toString () )
139142 }
140143
141- private File createTargetPackage (String apiPkg ) {
142- def folder = new File ([ options. targetDir, apiPkg] . join ( File . separator))
143- if (folder . exists () && folder . isDirectory ( )) {
144- return folder
144+ private Path createTargetPackage (String apiPkg ) {
145+ String root = options. targetDir
146+ if (! hasScheme (root )) {
147+ root = " file:// ${ root } "
145148 }
146149
147- def success = folder. mkdirs ()
148- if (! success) {
149- log. error (' failed to create package {}' , folder)
150- }
151- folder
150+ def target = Path . of (new URL ([root, apiPkg]. join (' /' )). toURI ())
151+ Files . createDirectories (target)
152+ target
153+ }
154+
155+ private boolean hasScheme (String source ) {
156+ source. indexOf (" ://" ) > -1
152157 }
153158
154159}
0 commit comments