Skip to content

Commit 282ae06

Browse files
committed
remove & replace usage of File with Path
1 parent f29dc08 commit 282ae06

File tree

5 files changed

+76
-22
lines changed

5 files changed

+76
-22
lines changed

src/main/groovy/com/github/hauner/openapi/spring/parser/openapi4j/Parser.groovy

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,12 @@ import org.openapi4j.parser.validation.v3.OpenApi3Validator
3030
class Parser {
3131

3232
ParserOpenApi parse (String apiPath) {
33+
if (!hasScheme (apiPath)) {
34+
apiPath = "file://${apiPath}"
35+
}
3336

3437
OpenApi3 api = new OpenApi3Parser ()
35-
.parse (new File (apiPath), true)
38+
.parse (new URL (apiPath), true)
3639

3740
ValidationResults results = OpenApi3Validator
3841
.instance ()
@@ -41,4 +44,8 @@ class Parser {
4144
new OpenApi (api, results)
4245
}
4346

47+
boolean hasScheme (String path) {
48+
path.indexOf ("://") > -1
49+
}
50+
4451
}

src/main/groovy/com/github/hauner/openapi/spring/parser/swagger/Parser.groovy

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,17 @@ import io.swagger.v3.parser.core.models.ParseOptions
2222
import io.swagger.v3.parser.core.models.SwaggerParseResult
2323

2424
/**
25-
* openapi4j parser.
25+
* swagger parser.
2626
*
2727
* @author Martin Hauner
2828
*/
2929
class Parser {
3030

3131
ParserOpenApi parse (String apiPath) {
32+
if (!hasScheme (apiPath)) {
33+
apiPath = "file://${apiPath}"
34+
}
35+
3236
ParseOptions opts = new ParseOptions(
3337
// loads $refs to other files into #/components/schema and replaces the $refs to the
3438
// external files with $refs to #/components/schema.
@@ -40,4 +44,8 @@ class Parser {
4044
new OpenApi(result)
4145
}
4246

47+
boolean hasScheme (String path) {
48+
path.indexOf ("://") > -1
49+
}
50+
4351
}

src/main/groovy/com/github/hauner/openapi/spring/writer/ApiWriter.groovy

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ import com.google.googlejavaformat.java.Formatter
2525
import com.google.googlejavaformat.java.JavaFormatterOptions
2626
import groovy.util.logging.Slf4j
2727

28+
import java.nio.file.Files
29+
import java.nio.file.Path
30+
2831
import 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
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*
2+
* Copyright 2019-2020 the original authors
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.github.hauner.openapi.spring.writer
18+
19+
import java.nio.file.Files
20+
import java.nio.file.Path
21+
22+
/**
23+
* Path based Writer
24+
*
25+
* @author Martin Haner
26+
*/
27+
class PathWriter extends OutputStreamWriter {
28+
29+
PathWriter(Path target) throws IOException {
30+
super(Files.newOutputStream (target));
31+
}
32+
33+
}

src/test/groovy/com/github/hauner/openapi/spring/writer/ApiWriterSpec.groovy

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ class ApiWriterSpec extends Specification {
4747
)
4848

4949
when:
50-
new ApiWriter (opts, Stub (InterfaceWriter), null, null).write (new Api())
50+
new ApiWriter (opts, Stub (InterfaceWriter), null, null)
51+
.write (new Api())
5152

5253
then:
5354
def api = new File([opts.targetDir, 'com', 'github', 'hauner', 'openapi', 'api'].join(File.separator))

0 commit comments

Comments
 (0)