Skip to content

Commit 61c2b6e

Browse files
committed
added clients and servers languages endpoint.
1 parent a0d5033 commit 61c2b6e

File tree

5 files changed

+150
-1
lines changed

5 files changed

+150
-1
lines changed

modules/swagger-generator/pom.xml

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,18 +56,44 @@
5656
</execution>
5757
</executions>
5858
</plugin>
59+
<plugin>
60+
<groupId>org.apache.maven.plugins</groupId>
61+
<artifactId>maven-failsafe-plugin</artifactId>
62+
<version>2.18.1</version>
63+
<executions>
64+
<execution>
65+
<id>integration-test</id>
66+
<goals>
67+
<goal>integration-test</goal>
68+
</goals>
69+
</execution>
70+
<execution>
71+
<id>verify</id>
72+
<goals>
73+
<goal>verify</goal>
74+
</goals>
75+
</execution>
76+
</executions>
77+
</plugin>
5978
<plugin>
6079
<groupId>org.eclipse.jetty</groupId>
6180
<artifactId>jetty-maven-plugin</artifactId>
6281
<version>${jetty-version}</version>
6382
<configuration>
83+
<useTestScope>true</useTestScope>
84+
<systemProperties>
85+
<systemProperty>
86+
<name>config</name>
87+
<value>src/test/resources/configuration.yaml</value>
88+
</systemProperty>
89+
</systemProperties>
6490
<webApp>
6591
<contextPath>/</contextPath>
6692
</webApp>
67-
<webAppSourceDirectory>target/${project.artifactId}-${project.version}</webAppSourceDirectory>
6893
<stopPort>8079</stopPort>
6994
<stopKey>stopit</stopKey>
7095
<httpConnector>
96+
<port>8080</port>
7197
<idleTimeout>60000</idleTimeout>
7298
</httpConnector>
7399
</configuration>
@@ -80,6 +106,7 @@
80106
</goals>
81107
<configuration>
82108
<scanIntervalSeconds>0</scanIntervalSeconds>
109+
<daemon>true</daemon>
83110
</configuration>
84111
</execution>
85112
<execution>
@@ -146,6 +173,11 @@
146173
<artifactId>swagger-inflector</artifactId>
147174
<version>${inflector-version}</version>
148175
</dependency>
176+
<dependency>
177+
<groupId>org.testng</groupId>
178+
<artifactId>testng</artifactId>
179+
<scope>test</scope>
180+
</dependency>
149181
</dependencies>
150182
<properties>
151183
<maven-plugin-version>1.0.0</maven-plugin-version>

modules/swagger-generator/src/main/java/io/swagger/generator/online/GeneratorController.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.fasterxml.jackson.databind.JsonNode;
44
import io.swagger.codegen.ClientOptInput;
5+
import io.swagger.codegen.CodegenConfig;
6+
import io.swagger.codegen.CodegenType;
57
import io.swagger.codegen.DefaultGenerator;
68
import io.swagger.codegen.config.CodegenConfigurator;
79
import io.swagger.generator.model.GenerationRequest;
@@ -17,15 +19,49 @@
1719
import org.slf4j.LoggerFactory;
1820

1921
import javax.ws.rs.core.MediaType;
22+
import javax.ws.rs.core.Response;
2023
import java.io.File;
2124
import java.io.IOException;
25+
import java.util.ArrayList;
2226
import java.util.Arrays;
27+
import java.util.Collections;
2328
import java.util.HashMap;
29+
import java.util.List;
2430
import java.util.Map;
31+
import java.util.ServiceLoader;
2532

2633
public class GeneratorController {
2734

2835
static Logger LOGGER = LoggerFactory.getLogger(GeneratorController.class);
36+
static List<String> CLIENTS = new ArrayList<>();
37+
static List<String> SERVERS = new ArrayList<>();
38+
39+
static {
40+
final ServiceLoader<CodegenConfig> loader = ServiceLoader.load(CodegenConfig.class);
41+
42+
loader.forEach(config -> {
43+
if (config.getTag().equals(CodegenType.CLIENT) || config.getTag().equals(CodegenType.DOCUMENTATION)) {
44+
CLIENTS.add(config.getName());
45+
} else if (config.getTag().equals(CodegenType.SERVER)) {
46+
SERVERS.add(config.getName());
47+
}
48+
});
49+
Collections.sort(CLIENTS, String.CASE_INSENSITIVE_ORDER);
50+
Collections.sort(SERVERS, String.CASE_INSENSITIVE_ORDER);
51+
}
52+
53+
public ResponseContext getClients(RequestContext requestContext) {
54+
return new ResponseContext()
55+
.status(Response.Status.OK.getStatusCode())
56+
.entity(CLIENTS);
57+
58+
}
59+
60+
public ResponseContext getServers(RequestContext requestContext) {
61+
return new ResponseContext()
62+
.status(Response.Status.OK.getStatusCode())
63+
.entity(SERVERS);
64+
}
2965

3066
public ResponseContext generateFiles(RequestContext context, String argumentsUrl) {
3167
final String content;

modules/swagger-generator/src/main/resources/openapi.yaml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,34 @@ paths:
7979
type: string
8080
format: binary
8181

82+
/clients:
83+
get:
84+
x-swagger-router-controller: "io.swagger.generator.online.GeneratorController"
85+
operationId: getClients
86+
responses:
87+
200:
88+
description: successful operation
89+
content:
90+
application/json:
91+
schema:
92+
type: array
93+
items:
94+
type: string
95+
96+
/servers:
97+
get:
98+
x-swagger-router-controller: "io.swagger.generator.online.GeneratorController"
99+
operationId: getServers
100+
responses:
101+
200:
102+
description: successful operation
103+
content:
104+
application/json:
105+
schema:
106+
type: array
107+
items:
108+
type: string
109+
82110
components:
83111
schemas:
84112
GenerationRequest:
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package io.swagger.generator.online;
2+
3+
import com.fasterxml.jackson.databind.JsonNode;
4+
import io.swagger.v3.core.util.Json;
5+
import org.apache.commons.io.IOUtils;
6+
import org.apache.http.HttpResponse;
7+
import org.apache.http.client.HttpClient;
8+
import org.apache.http.client.methods.HttpGet;
9+
import org.apache.http.impl.client.HttpClientBuilder;
10+
import org.testng.Assert;
11+
import org.testng.annotations.Test;
12+
13+
public class GeneratorControllerIT {
14+
15+
static final String DEFAULT_HOST = "http://localhost:8080/v2";
16+
private HttpClient client = HttpClientBuilder.create().build();
17+
18+
@Test
19+
public void getClients() throws Exception {
20+
final HttpResponse response = client.execute(new HttpGet(DEFAULT_HOST + "/clients"));
21+
int responseCode = response.getStatusLine().getStatusCode();
22+
Assert.assertEquals(responseCode, 200);
23+
24+
String json = IOUtils.toString(response.getEntity().getContent());
25+
JsonNode jsonNode = Json.mapper().readTree(json);
26+
Assert.assertTrue(jsonNode.isArray());
27+
Assert.assertTrue(jsonNode.toString().contains("java"));
28+
}
29+
30+
@Test
31+
public void getServers() throws Exception {
32+
final HttpResponse response = client.execute(new HttpGet(DEFAULT_HOST + "/servers"));
33+
int responseCode = response.getStatusLine().getStatusCode();
34+
Assert.assertEquals(responseCode, 200);
35+
36+
String json = IOUtils.toString(response.getEntity().getContent());
37+
JsonNode jsonNode = Json.mapper().readTree(json);
38+
Assert.assertTrue(jsonNode.isArray());
39+
Assert.assertTrue(jsonNode.toString().contains("inflector"));
40+
}
41+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
controllerPackage: io.swagger.generator.online
2+
modelPackage: io.swagger.generator.model
3+
swaggerUrl: ./src/main/resources/openapi.yaml
4+
modelMappings:
5+
GenerationRequest: io.swagger.generator.model
6+
7+
entityProcessors:
8+
- json
9+
- xml
10+
- yaml
11+
12+
rootPath: /v2

0 commit comments

Comments
 (0)