Skip to content

Commit 0ece62e

Browse files
committed
updated dependency versions, added springfox.endpoints configuration
1 parent bc2d79b commit 0ece62e

File tree

6 files changed

+91
-10
lines changed

6 files changed

+91
-10
lines changed

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ _pom.xml_
4646
<dependency>
4747
<groupId>com.github.springfox.loader</groupId>
4848
<artifactId>springfox-loader</artifactId>
49-
<version>1.0.0</version>
49+
<version>1.1.0</version>
5050
</dependency>
5151
```
5252

@@ -126,11 +126,12 @@ __Application properties__
126126
* springfox.license.url
127127
* springfox.activeProfiles - _Enable springfox for the configured profiles. If not set, all profiles loads springfox. Default is all profiles._
128128
* springfox.swagger-ui-base-path
129+
* springfox.endpoints - _Enables springfox-loader endpoints, `/springfox-loader/api-docs`. Is [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS) enabled._
129130

130131
### Swagger UI
131132

132133
The swagger-ui dependency is already included by Springfox Loader.
133-
After enabling Springfox Loader you can access the webpage: http://localhost:8080/swagger-ui.html
134+
After enabling Springfox Loader you can access the webpage: `http://localhost:8080/swagger-ui.html`
134135
The base path to swagger-ui can be customized with the `springfox.swagger-ui-base-path`.
135136

136137
A list of the swagger resources are available here: http://localhost:8080/swagger-resources

pom.xml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,17 @@
55

66
<groupId>com.github.springfox.loader</groupId>
77
<artifactId>springfox-loader</artifactId>
8-
<version>1.0.1-SNAPSHOT</version>
8+
<version>1.1.0-SNAPSHOT</version>
99
<packaging>jar</packaging>
1010

1111
<properties>
12-
<springfox.version>2.6.1</springfox.version>
13-
<spring.version>1.5.2.RELEASE</spring.version>
14-
<spock.version>1.1-groovy-2.4-rc-3</spock.version>
15-
<cglib.version>3.2.2</cglib.version>
16-
<jackson.version>2.8.2</jackson.version>
12+
<springfox.version>2.7.0</springfox.version>
13+
<spring.version>1.5.3.RELEASE</spring.version>
14+
<spock.version>1.1-groovy-2.4</spock.version>
15+
<cglib.version>3.2.5</cglib.version>
16+
<jackson.version>2.8.8</jackson.version>
1717
<lombok.version>1.16.16</lombok.version>
18+
<reflections.version>0.9.11</reflections.version>
1819

1920
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
2021
<java.version>1.8</java.version>
@@ -63,7 +64,7 @@
6364
<dependency>
6465
<groupId>org.reflections</groupId>
6566
<artifactId>reflections</artifactId>
66-
<version>0.9.10</version>
67+
<version>${reflections.version}</version>
6768
</dependency>
6869
<dependency>
6970
<groupId>org.projectlombok</groupId>

src/main/java/com/github/springfox/loader/SpringfoxLoaderConfig.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import springfox.documentation.spring.web.readers.operation.DefaultTagsProvider;
2727

2828
import javax.annotation.PostConstruct;
29+
import java.util.Collections;
2930
import java.util.function.Predicate;
3031

3132
@EnableConfigurationProperties
@@ -88,7 +89,7 @@ public Docket api() {
8889

8990
private ApiInfo apiInfo() {
9091
return new ApiInfo(springfoxLoader.getTitle(), springfoxLoader.getDescription(), springfoxLoader.getVersion(),
91-
springfoxLoader.getTermsOfServiceUrl(), springfoxLoader.getContact(), springfoxLoader.getLicense(), springfoxLoader.getLicenseUrl());
92+
springfoxLoader.getTermsOfServiceUrl(), springfoxLoader.getContact(), springfoxLoader.getLicense(), springfoxLoader.getLicenseUrl(), Collections.emptyList());
9293
}
9394

9495
@Bean

src/main/java/com/github/springfox/loader/SpringfoxLoaderProps.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
@Component
99
@ConfigurationProperties(prefix = "springfox")
1010
public class SpringfoxLoaderProps {
11+
public static final String PROPS_SPRINGFOX_ENDPOINTS = "springfox.endpoints";
1112

1213
private String path = "";
1314

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.github.springfox.loader.controller;
2+
3+
import com.github.springfox.loader.SpringfoxLoaderProps;
4+
import com.google.common.collect.Lists;
5+
import lombok.extern.slf4j.Slf4j;
6+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
7+
import org.springframework.http.HttpEntity;
8+
import org.springframework.http.HttpHeaders;
9+
import org.springframework.http.HttpMethod;
10+
import org.springframework.http.ResponseEntity;
11+
import org.springframework.web.bind.annotation.GetMapping;
12+
import org.springframework.web.bind.annotation.RequestMapping;
13+
import org.springframework.web.bind.annotation.RestController;
14+
import org.springframework.web.client.RestTemplate;
15+
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
16+
import org.springframework.web.util.UriComponents;
17+
18+
import javax.annotation.PostConstruct;
19+
import javax.servlet.http.HttpServletRequest;
20+
import java.io.IOException;
21+
22+
@Slf4j
23+
@RestController
24+
@RequestMapping("/springfox-loader")
25+
@ConditionalOnProperty(value = SpringfoxLoaderProps.PROPS_SPRINGFOX_ENDPOINTS, havingValue = "true")
26+
public class SpringfoxLoaderController {
27+
28+
private RestTemplate restTemplate;
29+
private HttpHeaders headers;
30+
31+
@PostConstruct
32+
public void init() {
33+
headers = new HttpHeaders();
34+
headers.put(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, Lists.newArrayList("*"));
35+
restTemplate = new RestTemplate();
36+
}
37+
38+
@GetMapping("/api-docs")
39+
public ResponseEntity getApiDocs(HttpServletRequest request) throws IOException {
40+
UriComponents uri = ServletUriComponentsBuilder.fromServletMapping(request).path("/v2/api-docs").build();
41+
ResponseEntity<String> response = restTemplate.exchange(uri.toString(), HttpMethod.GET, new HttpEntity<>(null), String.class);
42+
return new ResponseEntity<>(response.getBody(), headers, response.getStatusCode());
43+
}
44+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.github.springfox.loader.controller
2+
3+
import org.springframework.http.HttpEntity
4+
import org.springframework.http.HttpMethod
5+
import org.springframework.http.ResponseEntity
6+
import org.springframework.test.web.servlet.MockMvc
7+
import org.springframework.test.web.servlet.setup.MockMvcBuilders
8+
import org.springframework.web.client.RestTemplate
9+
import spock.lang.Specification
10+
11+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
12+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status
13+
14+
class SpringfoxLoaderControllerSpec extends Specification {
15+
private SpringfoxLoaderController controller
16+
private RestTemplate restTemplate
17+
private MockMvc mockMvc
18+
19+
void setup() {
20+
restTemplate = Mock(RestTemplate)
21+
controller = new SpringfoxLoaderController(restTemplate: restTemplate)
22+
mockMvc = MockMvcBuilders.standaloneSetup(controller).build()
23+
}
24+
25+
def "GET api-docs"() {
26+
when:
27+
def response = mockMvc.perform(get('/springfox-loader/api-docs'))
28+
29+
then:
30+
1 * restTemplate.exchange('http://localhost/v2/api-docs', HttpMethod.GET, _ as HttpEntity, String) >> ResponseEntity.ok('')
31+
response.andExpect(status().isOk())
32+
}
33+
}

0 commit comments

Comments
 (0)