This repository was archived by the owner on Apr 27, 2021. It is now read-only.
Repository navigation
Expand file tree
/
Copy pathOpenAPI.java
More file actions
89 lines (75 loc) · 2.74 KB
/
Copy pathOpenAPI.java
File metadata and controls
89 lines (75 loc) · 2.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package org.javawebstack.openapi.parser;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.google.gson.annotations.JsonAdapter;
import lombok.Getter;
import lombok.Setter;
import org.javawebstack.abstractdata.AbstractElement;
import org.javawebstack.abstractdata.AbstractMapper;
import org.javawebstack.abstractdata.AbstractObject;
import org.javawebstack.abstractdata.NamingPolicy;
import org.javawebstack.openapi.parser.util.PathMapAdapter;
import org.javawebstack.openapi.parser.util.ServerListAdapter;
import org.javawebstack.openapi.parser.util.TagListAdapter;
@Getter
@Setter
public class OpenAPI {
private static final AbstractMapper mapper = new AbstractMapper().setNamingPolicy(NamingPolicy.CAMEL_CASE);
String openapi = "3.0.0";
OpenAPIInfo info;
@JsonAdapter(ServerListAdapter.class)
List<OpenAPIServer> servers = new ArrayList<>();
@JsonAdapter(TagListAdapter.class)
List<OpenAPITag> tags = new ArrayList<>();
@JsonAdapter(PathMapAdapter.class)
Map<String, OpenAPIPath> paths = new HashMap<>();
OpenAPIComponents components = new OpenAPIComponents();
public AbstractObject toGraph(){
return mapper.toAbstract(this).object();
}
public String toJson(){
return toJson(false);
}
public String toJson(boolean pretty){
return toGraph().toJsonString(pretty);
}
public String toYaml(){
return toYaml(true);
}
public String toYaml(boolean pretty){
return toGraph().toYaml(pretty);
}
public static OpenAPI fromGraph(AbstractObject object){
if(object == null)
return null;
return mapper.fromAbstract(object, OpenAPI.class);
}
public static OpenAPI fromYaml(String yaml){
return fromGraph(AbstractElement.fromYaml(yaml, true).object());
}
public static OpenAPI fromJson(String json){
return fromGraph(AbstractElement.fromJson(json).object());
}
public static OpenAPI fromFile(File file){
if(!file.exists())
return null;
try {
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int r;
while ((r = fis.read(buffer)) != -1)
baos.write(buffer, 0, r);
fis.close();
if(file.getName().endsWith(".json"))
return OpenAPI.fromJson(new String(baos.toByteArray(), StandardCharsets.UTF_8));
return OpenAPI.fromYaml(new String(baos.toByteArray(), StandardCharsets.UTF_8));
} catch (IOException e) {
return null;
}
}
}