Commit ade8590b7f987f39ed40ee29622b565d893f581b

Authored by Igor Kulikov
Committed by GitHub
2 parents 887cb712 599889eb

Merge pull request #4 from ashvayka/feature/TB-50

TB-50: Swagger integration
... ... @@ -21,9 +21,9 @@
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23 23 <version>0.0.1-SNAPSHOT</version>
24   - <artifactId>server</artifactId>
  24 + <artifactId>thingsboard</artifactId>
25 25 </parent>
26   - <groupId>org.thingsboard.server</groupId>
  26 + <groupId>org.thingsboard</groupId>
27 27 <artifactId>application</artifactId>
28 28 <packaging>jar</packaging>
29 29
... ... @@ -47,35 +47,35 @@
47 47 <classifier>linux-x86_64</classifier>
48 48 </dependency>
49 49 <dependency>
50   - <groupId>org.thingsboard.server</groupId>
  50 + <groupId>org.thingsboard</groupId>
51 51 <artifactId>extensions-api</artifactId>
52 52 </dependency>
53 53 <dependency>
54   - <groupId>org.thingsboard.server</groupId>
  54 + <groupId>org.thingsboard</groupId>
55 55 <artifactId>extensions-core</artifactId>
56 56 </dependency>
57 57 <dependency>
58   - <groupId>org.thingsboard.server.common</groupId>
  58 + <groupId>org.thingsboard.common</groupId>
59 59 <artifactId>transport</artifactId>
60 60 </dependency>
61 61 <dependency>
62   - <groupId>org.thingsboard.server.transport</groupId>
  62 + <groupId>org.thingsboard.transport</groupId>
63 63 <artifactId>http</artifactId>
64 64 </dependency>
65 65 <dependency>
66   - <groupId>org.thingsboard.server.transport</groupId>
  66 + <groupId>org.thingsboard.transport</groupId>
67 67 <artifactId>coap</artifactId>
68 68 </dependency>
69 69 <dependency>
70   - <groupId>org.thingsboard.server.transport</groupId>
  70 + <groupId>org.thingsboard.transport</groupId>
71 71 <artifactId>mqtt</artifactId>
72 72 </dependency>
73 73 <dependency>
74   - <groupId>org.thingsboard.server</groupId>
  74 + <groupId>org.thingsboard</groupId>
75 75 <artifactId>dao</artifactId>
76 76 </dependency>
77 77 <dependency>
78   - <groupId>org.thingsboard.server</groupId>
  78 + <groupId>org.thingsboard</groupId>
79 79 <artifactId>dao</artifactId>
80 80 <type>test-jar</type>
81 81 <scope>test</scope>
... ... @@ -97,7 +97,7 @@
97 97 <scope>test</scope>
98 98 </dependency>
99 99 <dependency>
100   - <groupId>org.thingsboard.server</groupId>
  100 + <groupId>org.thingsboard</groupId>
101 101 <artifactId>ui</artifactId>
102 102 <version>${project.version}</version>
103 103 <scope>runtime</scope>
... ... @@ -212,6 +212,14 @@
212 212 <groupId>io.grpc</groupId>
213 213 <artifactId>grpc-stub</artifactId>
214 214 </dependency>
  215 + <dependency>
  216 + <groupId>io.springfox</groupId>
  217 + <artifactId>springfox-swagger-ui</artifactId>
  218 + </dependency>
  219 + <dependency>
  220 + <groupId>io.springfox</groupId>
  221 + <artifactId>springfox-swagger2</artifactId>
  222 + </dependency>
215 223 </dependencies>
216 224
217 225 <build>
... ... @@ -325,17 +333,17 @@
325 333 <outputDirectory>${project.build.directory}/extensions</outputDirectory>
326 334 <artifactItems>
327 335 <artifactItem>
328   - <groupId>org.thingsboard.server.extensions</groupId>
  336 + <groupId>org.thingsboard.extensions</groupId>
329 337 <artifactId>extension-rabbitmq</artifactId>
330 338 <classifier>extension</classifier>
331 339 </artifactItem>
332 340 <artifactItem>
333   - <groupId>org.thingsboard.server.extensions</groupId>
  341 + <groupId>org.thingsboard.extensions</groupId>
334 342 <artifactId>extension-rest-api-call</artifactId>
335 343 <classifier>extension</classifier>
336 344 </artifactItem>
337 345 <artifactItem>
338   - <groupId>org.thingsboard.server.extensions</groupId>
  346 + <groupId>org.thingsboard.extensions</groupId>
339 347 <artifactId>extension-kafka</artifactId>
340 348 <classifier>extension</classifier>
341 349 </artifactItem>
... ...
... ... @@ -19,11 +19,13 @@ import org.springframework.boot.SpringApplication;
19 19 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
20 20 import org.springframework.boot.autoconfigure.SpringBootApplication;
21 21 import org.springframework.context.annotation.ComponentScan;
  22 +import springfox.documentation.swagger2.annotations.EnableSwagger2;
22 23
23 24 import java.util.Arrays;
24 25
25 26 @EnableAutoConfiguration
26 27 @SpringBootApplication
  28 +@EnableSwagger2
27 29 @ComponentScan({"org.thingsboard.server"})
28 30 public class ThingsboardServerApplication {
29 31
... ...
  1 +/**
  2 + * Copyright © 2016 The Thingsboard 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 +package org.thingsboard.server.config;
  17 +
  18 +import org.springframework.context.annotation.Bean;
  19 +import org.springframework.context.annotation.Configuration;
  20 +import org.thingsboard.server.common.data.security.Authority;
  21 +import springfox.documentation.builders.ApiInfoBuilder;
  22 +import springfox.documentation.builders.PathSelectors;
  23 +import springfox.documentation.service.*;
  24 +import springfox.documentation.spi.DocumentationType;
  25 +import springfox.documentation.spi.service.contexts.SecurityContext;
  26 +import springfox.documentation.spring.web.plugins.Docket;
  27 +
  28 +import java.util.List;
  29 +
  30 +import static com.google.common.collect.Lists.newArrayList;
  31 +
  32 +@Configuration
  33 +public class SwaggerConfiguration {
  34 +
  35 + @Bean
  36 + public Docket thingsboardApi() {
  37 + return new Docket(DocumentationType.SWAGGER_2)
  38 + .groupName("thingsboard")
  39 + .apiInfo(apiInfo())
  40 + .select()
  41 + .paths(PathSelectors.any())
  42 + .build()
  43 + .securitySchemes(newArrayList(jwtTokenKey()))
  44 + .securityContexts(newArrayList(securityContext()));
  45 + }
  46 +
  47 + private ApiKey jwtTokenKey() {
  48 + return new ApiKey("X-Authorization", "JWT token", "header");
  49 + }
  50 +
  51 + private SecurityContext securityContext() {
  52 + return SecurityContext.builder()
  53 + .securityReferences(defaultAuth())
  54 + .forPaths(PathSelectors.regex("/api.*"))
  55 + .build();
  56 + }
  57 +
  58 + List<SecurityReference> defaultAuth() {
  59 + AuthorizationScope[] authorizationScopes = new AuthorizationScope[3];
  60 + authorizationScopes[0] = new AuthorizationScope(Authority.SYS_ADMIN.name(), "System administrator");
  61 + authorizationScopes[1] = new AuthorizationScope(Authority.TENANT_ADMIN.name(), "Tenant administrator");
  62 + authorizationScopes[2] = new AuthorizationScope(Authority.CUSTOMER_USER.name(), "Customer");
  63 + return newArrayList(
  64 + new SecurityReference("X-Authorization", authorizationScopes));
  65 + }
  66 +
  67 + private ApiInfo apiInfo() {
  68 + return new ApiInfoBuilder()
  69 + .title("Thingsboard REST API")
  70 + .description("For instructions how to authorize requests please visit <a href='http://thingsboard.io/docs/rest-auth'>Documentation page</a>")
  71 + .contact(new Contact("Thingsboard team", "http://thingsboard.io", "info@thingsboard.io"))
  72 + .license("Apache License Version 2.0")
  73 + .licenseUrl("https://github.com/thingsboard/thingsboard/blob/master/LICENSE")
  74 + .version("2.0")
  75 + .build();
  76 + }
  77 +
  78 +}
... ...
... ... @@ -53,10 +53,11 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt
53 53 public static final String JWT_TOKEN_HEADER_PARAM = "X-Authorization";
54 54 public static final String JWT_TOKEN_QUERY_PARAM = "token";
55 55
  56 + public static final String WEBJARS_ENTRY_POINT = "/webjars/**";
56 57 public static final String DEVICE_API_ENTRY_POINT = "/api/v1/**";
57 58 public static final String FORM_BASED_LOGIN_ENTRY_POINT = "/api/auth/login";
58 59 public static final String TOKEN_REFRESH_ENTRY_POINT = "/api/auth/token";
59   - public static final String[] NON_TOKEN_BASED_AUTH_ENTRY_POINTS = new String[] {"/index.html", "/static/**", "/api/noauth/**"};
  60 + public static final String[] NON_TOKEN_BASED_AUTH_ENTRY_POINTS = new String[] {"/index.html", "/static/**", "/api/noauth/**", "/webjars/**"};
60 61 public static final String TOKEN_BASED_AUTH_ENTRY_POINT = "/api/**";
61 62 public static final String WS_TOKEN_BASED_AUTH_ENTRY_POINT = "/api/ws/**";
62 63
... ... @@ -89,7 +90,7 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt
89 90 @Bean
90 91 protected JwtTokenAuthenticationProcessingFilter buildJwtTokenAuthenticationProcessingFilter() throws Exception {
91 92 List<String> pathsToSkip = new ArrayList(Arrays.asList(NON_TOKEN_BASED_AUTH_ENTRY_POINTS));
92   - pathsToSkip.addAll(Arrays.asList(WS_TOKEN_BASED_AUTH_ENTRY_POINT, TOKEN_REFRESH_ENTRY_POINT, FORM_BASED_LOGIN_ENTRY_POINT, DEVICE_API_ENTRY_POINT));
  93 + pathsToSkip.addAll(Arrays.asList(WS_TOKEN_BASED_AUTH_ENTRY_POINT, TOKEN_REFRESH_ENTRY_POINT, FORM_BASED_LOGIN_ENTRY_POINT, DEVICE_API_ENTRY_POINT, WEBJARS_ENTRY_POINT));
93 94 SkipPathRequestMatcher matcher = new SkipPathRequestMatcher(pathsToSkip, TOKEN_BASED_AUTH_ENTRY_POINT);
94 95 JwtTokenAuthenticationProcessingFilter filter
95 96 = new JwtTokenAuthenticationProcessingFilter(failureHandler, jwtHeaderTokenExtractor, matcher);
... ... @@ -142,6 +143,7 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt
142 143 .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
143 144 .and()
144 145 .authorizeRequests()
  146 + .antMatchers(WEBJARS_ENTRY_POINT).permitAll() // Webjars
145 147 .antMatchers(DEVICE_API_ENTRY_POINT).permitAll() // Device HTTP Transport API
146 148 .antMatchers(FORM_BASED_LOGIN_ENTRY_POINT).permitAll() // Login end-point
147 149 .antMatchers(TOKEN_REFRESH_ENTRY_POINT).permitAll() // Token refresh end-point
... ...
... ... @@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
21 21 @Controller
22 22 public class WebConfig {
23 23
24   - @RequestMapping(value = "/{path:^(?!api$)(?!static$)[^\\.]*}/**")
  24 + @RequestMapping(value = "/{path:^(?!api$)(?!static$)(?!webjars$)[^\\.]*}/**")
25 25 public String redirect() {
26 26 return "forward:/index.html";
27 27 }
... ...
... ... @@ -15,6 +15,7 @@
15 15 */
16 16 package org.thingsboard.server.controller;
17 17
  18 +import io.swagger.annotations.*;
18 19 import org.springframework.beans.factory.annotation.Autowired;
19 20 import org.springframework.security.access.prepost.PreAuthorize;
20 21 import org.springframework.web.bind.annotation.*;
... ... @@ -45,6 +46,18 @@ public class AdminController extends BaseController {
45 46 }
46 47
47 48 @PreAuthorize("hasAuthority('SYS_ADMIN')")
  49 + @ApiOperation(
  50 + value = "Save admin settings", notes = "Saves admin settings",
  51 + response = AdminSettings.class,
  52 + authorizations = {
  53 + @Authorization(value = "X-Authorization", scopes = {
  54 + @AuthorizationScope(scope = "SYS_ADMIN", description = "")
  55 + })})
  56 + @ApiResponses(value = {
  57 + @ApiResponse(code = 200, response = AdminSettings.class, message = "Admin settings successfully updated"),
  58 + @ApiResponse(code = 400, message = "Invalid admin settings payload supplied"),
  59 + @ApiResponse(code = 404, message = "Admin settings not found")}
  60 + )
48 61 @RequestMapping(value = "/settings", method = RequestMethod.POST)
49 62 @ResponseBody
50 63 public AdminSettings saveAdminSettings(@RequestBody AdminSettings adminSettings) throws ThingsboardException {
... ...
... ... @@ -15,6 +15,9 @@
15 15 */
16 16 package org.thingsboard.server.controller;
17 17
  18 +import io.swagger.annotations.ApiOperation;
  19 +import io.swagger.annotations.ApiResponse;
  20 +import io.swagger.annotations.ApiResponses;
18 21 import org.springframework.http.HttpStatus;
19 22 import org.springframework.security.access.prepost.PreAuthorize;
20 23 import org.springframework.web.bind.annotation.*;
... ... @@ -34,6 +37,12 @@ import java.util.List;
34 37 @RequestMapping("/api")
35 38 public class RuleController extends BaseController {
36 39
  40 + @ApiOperation(value = "getRuleById", nickname = "Get Rule By ID")
  41 + @ApiResponses(value = {
  42 + @ApiResponse(code = 200, message = "Success", response = RuleMetaData.class),
  43 + @ApiResponse(code = 401, message = "Unauthorized"),
  44 + @ApiResponse(code = 403, message = "Forbidden"),
  45 + @ApiResponse(code = 404, message = "Not Found")})
37 46 @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN')")
38 47 @RequestMapping(value = "/rule/{ruleId}", method = RequestMethod.GET)
39 48 @ResponseBody
... ...
... ... @@ -19,11 +19,11 @@
19 19 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22   - <groupId>org.thingsboard.server</groupId>
  22 + <groupId>org.thingsboard</groupId>
23 23 <version>0.0.1-SNAPSHOT</version>
24 24 <artifactId>common</artifactId>
25 25 </parent>
26   - <groupId>org.thingsboard.server.common</groupId>
  26 + <groupId>org.thingsboard.common</groupId>
27 27 <artifactId>data</artifactId>
28 28 <packaging>jar</packaging>
29 29
... ...
... ... @@ -19,11 +19,11 @@
19 19 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22   - <groupId>org.thingsboard.server</groupId>
  22 + <groupId>org.thingsboard</groupId>
23 23 <version>0.0.1-SNAPSHOT</version>
24 24 <artifactId>common</artifactId>
25 25 </parent>
26   - <groupId>org.thingsboard.server.common</groupId>
  26 + <groupId>org.thingsboard.common</groupId>
27 27 <artifactId>message</artifactId>
28 28 <packaging>jar</packaging>
29 29
... ... @@ -37,7 +37,7 @@
37 37
38 38 <dependencies>
39 39 <dependency>
40   - <groupId>org.thingsboard.server.common</groupId>
  40 + <groupId>org.thingsboard.common</groupId>
41 41 <artifactId>data</artifactId>
42 42 </dependency>
43 43 <dependency>
... ...
... ... @@ -21,9 +21,9 @@
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23 23 <version>0.0.1-SNAPSHOT</version>
24   - <artifactId>server</artifactId>
  24 + <artifactId>thingsboard</artifactId>
25 25 </parent>
26   - <groupId>org.thingsboard.server</groupId>
  26 + <groupId>org.thingsboard</groupId>
27 27 <artifactId>common</artifactId>
28 28 <packaging>pom</packaging>
29 29
... ...
... ... @@ -19,11 +19,11 @@
19 19 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22   - <groupId>org.thingsboard.server</groupId>
  22 + <groupId>org.thingsboard</groupId>
23 23 <version>0.0.1-SNAPSHOT</version>
24 24 <artifactId>common</artifactId>
25 25 </parent>
26   - <groupId>org.thingsboard.server.common</groupId>
  26 + <groupId>org.thingsboard.common</groupId>
27 27 <artifactId>transport</artifactId>
28 28 <packaging>jar</packaging>
29 29
... ... @@ -37,11 +37,11 @@
37 37
38 38 <dependencies>
39 39 <dependency>
40   - <groupId>org.thingsboard.server.common</groupId>
  40 + <groupId>org.thingsboard.common</groupId>
41 41 <artifactId>data</artifactId>
42 42 </dependency>
43 43 <dependency>
44   - <groupId>org.thingsboard.server.common</groupId>
  44 + <groupId>org.thingsboard.common</groupId>
45 45 <artifactId>message</artifactId>
46 46 </dependency>
47 47 <dependency>
... ...
... ... @@ -21,9 +21,9 @@
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23 23 <version>0.0.1-SNAPSHOT</version>
24   - <artifactId>server</artifactId>
  24 + <artifactId>thingsboard</artifactId>
25 25 </parent>
26   - <groupId>org.thingsboard.server</groupId>
  26 + <groupId>org.thingsboard</groupId>
27 27 <artifactId>dao</artifactId>
28 28 <packaging>jar</packaging>
29 29
... ... @@ -37,7 +37,7 @@
37 37
38 38 <dependencies>
39 39 <dependency>
40   - <groupId>org.thingsboard.server.common</groupId>
  40 + <groupId>org.thingsboard.common</groupId>
41 41 <artifactId>data</artifactId>
42 42 </dependency>
43 43 <dependency>
... ...
... ... @@ -21,9 +21,9 @@
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23 23 <version>0.0.1-SNAPSHOT</version>
24   - <artifactId>server</artifactId>
  24 + <artifactId>thingsboard</artifactId>
25 25 </parent>
26   - <groupId>org.thingsboard.server</groupId>
  26 + <groupId>org.thingsboard</groupId>
27 27 <artifactId>extensions-api</artifactId>
28 28 <packaging>jar</packaging>
29 29
... ... @@ -37,11 +37,11 @@
37 37
38 38 <dependencies>
39 39 <dependency>
40   - <groupId>org.thingsboard.server.common</groupId>
  40 + <groupId>org.thingsboard.common</groupId>
41 41 <artifactId>data</artifactId>
42 42 </dependency>
43 43 <dependency>
44   - <groupId>org.thingsboard.server.common</groupId>
  44 + <groupId>org.thingsboard.common</groupId>
45 45 <artifactId>message</artifactId>
46 46 </dependency>
47 47 <dependency>
... ...
... ... @@ -21,9 +21,9 @@
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23 23 <version>0.0.1-SNAPSHOT</version>
24   - <artifactId>server</artifactId>
  24 + <artifactId>thingsboard</artifactId>
25 25 </parent>
26   - <groupId>org.thingsboard.server</groupId>
  26 + <groupId>org.thingsboard</groupId>
27 27 <artifactId>extensions-core</artifactId>
28 28 <packaging>jar</packaging>
29 29
... ... @@ -37,7 +37,7 @@
37 37
38 38 <dependencies>
39 39 <dependency>
40   - <groupId>org.thingsboard.server</groupId>
  40 + <groupId>org.thingsboard</groupId>
41 41 <artifactId>extensions-api</artifactId>
42 42 <scope>provided</scope>
43 43 </dependency>
... ...
... ... @@ -21,11 +21,11 @@
21 21 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
22 22 <modelVersion>4.0.0</modelVersion>
23 23 <parent>
24   - <groupId>org.thingsboard.server</groupId>
  24 + <groupId>org.thingsboard</groupId>
25 25 <version>0.0.1-SNAPSHOT</version>
26 26 <artifactId>extensions</artifactId>
27 27 </parent>
28   - <groupId>org.thingsboard.server.extensions</groupId>
  28 + <groupId>org.thingsboard.extensions</groupId>
29 29 <artifactId>extension-kafka</artifactId>
30 30 <packaging>jar</packaging>
31 31
... ... @@ -49,12 +49,12 @@
49 49 <scope>provided</scope>
50 50 </dependency>
51 51 <dependency>
52   - <groupId>org.thingsboard.server</groupId>
  52 + <groupId>org.thingsboard</groupId>
53 53 <artifactId>extensions-api</artifactId>
54 54 <scope>provided</scope>
55 55 </dependency>
56 56 <dependency>
57   - <groupId>org.thingsboard.server</groupId>
  57 + <groupId>org.thingsboard</groupId>
58 58 <artifactId>extensions-core</artifactId>
59 59 <scope>provided</scope>
60 60 </dependency>
... ...
... ... @@ -19,11 +19,11 @@
19 19 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22   - <groupId>org.thingsboard.server</groupId>
  22 + <groupId>org.thingsboard</groupId>
23 23 <version>0.0.1-SNAPSHOT</version>
24 24 <artifactId>extensions</artifactId>
25 25 </parent>
26   - <groupId>org.thingsboard.server.extensions</groupId>
  26 + <groupId>org.thingsboard.extensions</groupId>
27 27 <artifactId>extension-rabbitmq</artifactId>
28 28 <packaging>jar</packaging>
29 29
... ... @@ -41,12 +41,12 @@
41 41 <artifactId>amqp-client</artifactId>
42 42 </dependency>
43 43 <dependency>
44   - <groupId>org.thingsboard.server</groupId>
  44 + <groupId>org.thingsboard</groupId>
45 45 <artifactId>extensions-api</artifactId>
46 46 <scope>provided</scope>
47 47 </dependency>
48 48 <dependency>
49   - <groupId>org.thingsboard.server</groupId>
  49 + <groupId>org.thingsboard</groupId>
50 50 <artifactId>extensions-core</artifactId>
51 51 <scope>provided</scope>
52 52 </dependency>
... ...
... ... @@ -21,11 +21,11 @@
21 21 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
22 22 <modelVersion>4.0.0</modelVersion>
23 23 <parent>
24   - <groupId>org.thingsboard.server</groupId>
  24 + <groupId>org.thingsboard</groupId>
25 25 <version>0.0.1-SNAPSHOT</version>
26 26 <artifactId>extensions</artifactId>
27 27 </parent>
28   - <groupId>org.thingsboard.server.extensions</groupId>
  28 + <groupId>org.thingsboard.extensions</groupId>
29 29 <artifactId>extension-rest-api-call</artifactId>
30 30 <packaging>jar</packaging>
31 31
... ... @@ -49,7 +49,7 @@
49 49 <scope>provided</scope>
50 50 </dependency>
51 51 <dependency>
52   - <groupId>org.thingsboard.server</groupId>
  52 + <groupId>org.thingsboard</groupId>
53 53 <artifactId>extensions-api</artifactId>
54 54 <scope>provided</scope>
55 55 </dependency>
... ... @@ -59,7 +59,7 @@
59 59 <scope>provided</scope>
60 60 </dependency>
61 61 <dependency>
62   - <groupId>org.thingsboard.server</groupId>
  62 + <groupId>org.thingsboard</groupId>
63 63 <artifactId>extensions-core</artifactId>
64 64 <scope>provided</scope>
65 65 </dependency>
... ...
... ... @@ -21,9 +21,9 @@
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23 23 <version>0.0.1-SNAPSHOT</version>
24   - <artifactId>server</artifactId>
  24 + <artifactId>thingsboard</artifactId>
25 25 </parent>
26   - <groupId>org.thingsboard.server</groupId>
  26 + <groupId>org.thingsboard</groupId>
27 27 <artifactId>extensions</artifactId>
28 28 <packaging>pom</packaging>
29 29
... ...
... ... @@ -68,6 +68,7 @@
68 68 <hazelcast-zookeeper.version>3.6.1</hazelcast-zookeeper.version>
69 69 <surfire.version>2.19.1</surfire.version>
70 70 <jar-plugin.version>3.0.2</jar-plugin.version>
  71 + <springfox-swagger.version>2.6.1</springfox-swagger.version>
71 72 </properties>
72 73
73 74 <modules>
... ... @@ -301,70 +302,70 @@
301 302 <dependencyManagement>
302 303 <dependencies>
303 304 <dependency>
304   - <groupId>org.thingsboard.server</groupId>
  305 + <groupId>org.thingsboard</groupId>
305 306 <artifactId>extensions-api</artifactId>
306 307 <version>${project.version}</version>
307 308 </dependency>
308 309 <dependency>
309   - <groupId>org.thingsboard.server</groupId>
  310 + <groupId>org.thingsboard</groupId>
310 311 <artifactId>extensions-core</artifactId>
311 312 <version>${project.version}</version>
312 313 </dependency>
313 314 <dependency>
314   - <groupId>org.thingsboard.server.extensions</groupId>
  315 + <groupId>org.thingsboard.extensions</groupId>
315 316 <artifactId>extension-rabbitmq</artifactId>
316 317 <classifier>extension</classifier>
317 318 <version>${project.version}</version>
318 319 </dependency>
319 320 <dependency>
320   - <groupId>org.thingsboard.server.extensions</groupId>
  321 + <groupId>org.thingsboard.extensions</groupId>
321 322 <artifactId>extension-rest-api-call</artifactId>
322 323 <classifier>extension</classifier>
323 324 <version>${project.version}</version>
324 325 </dependency>
325 326 <dependency>
326   - <groupId>org.thingsboard.server.extensions</groupId>
  327 + <groupId>org.thingsboard.extensions</groupId>
327 328 <artifactId>extension-kafka</artifactId>
328 329 <classifier>extension</classifier>
329 330 <version>${project.version}</version>
330 331 </dependency>
331 332 <dependency>
332   - <groupId>org.thingsboard.server.common</groupId>
  333 + <groupId>org.thingsboard.common</groupId>
333 334 <artifactId>data</artifactId>
334 335 <version>${project.version}</version>
335 336 </dependency>
336 337 <dependency>
337   - <groupId>org.thingsboard.server.common</groupId>
  338 + <groupId>org.thingsboard.common</groupId>
338 339 <artifactId>message</artifactId>
339 340 <version>${project.version}</version>
340 341 </dependency>
341 342 <dependency>
342   - <groupId>org.thingsboard.server.common</groupId>
  343 + <groupId>org.thingsboard.common</groupId>
343 344 <artifactId>transport</artifactId>
344 345 <version>${project.version}</version>
345 346 </dependency>
346 347 <dependency>
347   - <groupId>org.thingsboard.server.transport</groupId>
  348 + <groupId>org.thingsboard.transport</groupId>
348 349 <artifactId>http</artifactId>
349 350 <version>${project.version}</version>
350 351 </dependency>
351 352 <dependency>
352   - <groupId>org.thingsboard.server.transport</groupId>
  353 + <groupId>org.thingsboard.transport</groupId>
353 354 <artifactId>coap</artifactId>
354 355 <version>${project.version}</version>
355 356 </dependency>
356 357 <dependency>
357   - <groupId>org.thingsboard.server.transport</groupId>
  358 + <groupId>org.thingsboard.transport</groupId>
358 359 <artifactId>mqtt</artifactId>
359 360 <version>${project.version}</version>
360 361 </dependency>
361 362 <dependency>
362   - <groupId>org.thingsboard.server</groupId>
  363 + <groupId>org.thingsboard</groupId>
363 364 <artifactId>dao</artifactId>
364 365 <version>${project.version}</version>
365 366 </dependency>
366 367 <dependency>
367   - <groupId>org.thingsboard.server</groupId>
  368 + <groupId>org.thingsboard</groupId>
368 369 <artifactId>dao</artifactId>
369 370 <version>${project.version}</version>
370 371 <type>test-jar</type>
... ... @@ -672,6 +673,16 @@
672 673 <artifactId>hazelcast</artifactId>
673 674 <version>${hazelcast.version}</version>
674 675 </dependency>
  676 + <dependency>
  677 + <groupId>io.springfox</groupId>
  678 + <artifactId>springfox-swagger-ui</artifactId>
  679 + <version>${springfox-swagger.version}</version>
  680 + </dependency>
  681 + <dependency>
  682 + <groupId>io.springfox</groupId>
  683 + <artifactId>springfox-swagger2</artifactId>
  684 + <version>${springfox-swagger.version}</version>
  685 + </dependency>
675 686 </dependencies>
676 687 </dependencyManagement>
677 688
... ...
... ... @@ -21,9 +21,9 @@
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23 23 <version>0.0.1-SNAPSHOT</version>
24   - <artifactId>server</artifactId>
  24 + <artifactId>thingsboard</artifactId>
25 25 </parent>
26   - <groupId>org.thingsboard.server</groupId>
  26 + <groupId>org.thingsboard</groupId>
27 27 <artifactId>tools</artifactId>
28 28 <packaging>jar</packaging>
29 29
... ... @@ -37,7 +37,7 @@
37 37
38 38 <dependencies>
39 39 <dependency>
40   - <groupId>org.thingsboard.server.common</groupId>
  40 + <groupId>org.thingsboard.common</groupId>
41 41 <artifactId>data</artifactId>
42 42 </dependency>
43 43 <dependency>
... ...
... ... @@ -19,11 +19,11 @@
19 19 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22   - <groupId>org.thingsboard.server</groupId>
  22 + <groupId>org.thingsboard</groupId>
23 23 <version>0.0.1-SNAPSHOT</version>
24 24 <artifactId>transport</artifactId>
25 25 </parent>
26   - <groupId>org.thingsboard.server.transport</groupId>
  26 + <groupId>org.thingsboard.transport</groupId>
27 27 <artifactId>coap</artifactId>
28 28 <packaging>jar</packaging>
29 29
... ... @@ -37,7 +37,7 @@
37 37
38 38 <dependencies>
39 39 <dependency>
40   - <groupId>org.thingsboard.server.common</groupId>
  40 + <groupId>org.thingsboard.common</groupId>
41 41 <artifactId>transport</artifactId>
42 42 </dependency>
43 43 <dependency>
... ...
... ... @@ -19,11 +19,11 @@
19 19 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22   - <groupId>org.thingsboard.server</groupId>
  22 + <groupId>org.thingsboard</groupId>
23 23 <version>0.0.1-SNAPSHOT</version>
24 24 <artifactId>transport</artifactId>
25 25 </parent>
26   - <groupId>org.thingsboard.server.transport</groupId>
  26 + <groupId>org.thingsboard.transport</groupId>
27 27 <artifactId>http</artifactId>
28 28 <packaging>jar</packaging>
29 29
... ... @@ -37,7 +37,7 @@
37 37
38 38 <dependencies>
39 39 <dependency>
40   - <groupId>org.thingsboard.server.common</groupId>
  40 + <groupId>org.thingsboard.common</groupId>
41 41 <artifactId>transport</artifactId>
42 42 </dependency>
43 43 <dependency>
... ...
... ... @@ -19,11 +19,11 @@
19 19 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22   - <groupId>org.thingsboard.server</groupId>
  22 + <groupId>org.thingsboard</groupId>
23 23 <version>0.0.1-SNAPSHOT</version>
24 24 <artifactId>transport</artifactId>
25 25 </parent>
26   - <groupId>org.thingsboard.server.transport</groupId>
  26 + <groupId>org.thingsboard.transport</groupId>
27 27 <artifactId>mqtt</artifactId>
28 28 <packaging>jar</packaging>
29 29
... ... @@ -37,7 +37,7 @@
37 37
38 38 <dependencies>
39 39 <dependency>
40   - <groupId>org.thingsboard.server.common</groupId>
  40 + <groupId>org.thingsboard.common</groupId>
41 41 <artifactId>transport</artifactId>
42 42 </dependency>
43 43 <dependency>
... ...
... ... @@ -21,9 +21,9 @@
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23 23 <version>0.0.1-SNAPSHOT</version>
24   - <artifactId>server</artifactId>
  24 + <artifactId>thingsboard</artifactId>
25 25 </parent>
26   - <groupId>org.thingsboard.server</groupId>
  26 + <groupId>org.thingsboard</groupId>
27 27 <artifactId>transport</artifactId>
28 28 <packaging>pom</packaging>
29 29
... ...
... ... @@ -21,9 +21,9 @@
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23 23 <version>0.0.1-SNAPSHOT</version>
24   - <artifactId>server</artifactId>
  24 + <artifactId>thingsboard</artifactId>
25 25 </parent>
26   - <groupId>org.thingsboard.server</groupId>
  26 + <groupId>org.thingsboard</groupId>
27 27 <artifactId>ui</artifactId>
28 28 <packaging>jar</packaging>
29 29
... ...