Browse Source

Packed domain objects to ClientParams

pull/3557/head
vzikratyi 6 years ago
parent
commit
12e2d2efb7
  1. 9
      application/src/main/java/org/thingsboard/server/controller/OAuth2Controller.java
  2. 7
      common/dao-api/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2Service.java
  3. 33
      common/data/src/main/java/org/thingsboard/server/common/data/oauth2/OAuth2ClientsParams.java
  4. 25
      dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ServiceImpl.java
  5. 9
      dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2Utils.java
  6. 49
      dao/src/test/java/org/thingsboard/server/dao/service/BaseOAuth2ServiceTest.java

9
application/src/main/java/org/thingsboard/server/controller/OAuth2Controller.java

@ -25,6 +25,7 @@ import org.thingsboard.server.common.data.exception.ThingsboardException;
import org.thingsboard.server.common.data.id.OAuth2ClientRegistrationId;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientInfo;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientsDomainParams;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientsParams;
import org.thingsboard.server.queue.util.TbCoreComponent;
import javax.servlet.http.HttpServletRequest;
@ -51,9 +52,9 @@ public class OAuth2Controller extends BaseController {
@PreAuthorize("hasAnyAuthority('SYS_ADMIN')")
@RequestMapping(value = "/oauth2/config", method = RequestMethod.GET, produces = "application/json")
@ResponseBody
public List<OAuth2ClientsDomainParams> getCurrentClientsParams() throws ThingsboardException {
public OAuth2ClientsParams getCurrentOAuth2Params() throws ThingsboardException {
try {
return oAuth2Service.findDomainsParams();
return oAuth2Service.findOAuth2Params();
} catch (Exception e) {
throw handleException(e);
}
@ -62,9 +63,9 @@ public class OAuth2Controller extends BaseController {
@PreAuthorize("hasAnyAuthority('SYS_ADMIN')")
@RequestMapping(value = "/oauth2/config", method = RequestMethod.POST)
@ResponseStatus(value = HttpStatus.OK)
public List<OAuth2ClientsDomainParams> saveClientParams(@RequestBody List<OAuth2ClientsDomainParams> domainsParams) throws ThingsboardException {
public OAuth2ClientsParams saveOAuth2Params(@RequestBody OAuth2ClientsParams oauth2Params) throws ThingsboardException {
try {
return oAuth2Service.saveDomainsParams(domainsParams);
return oAuth2Service.saveOAuth2Params(oauth2Params);
} catch (Exception e) {
throw handleException(e);
}

7
common/dao-api/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2Service.java

@ -16,10 +16,9 @@
package org.thingsboard.server.dao.oauth2;
import org.thingsboard.server.common.data.id.OAuth2ClientRegistrationId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientInfo;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientRegistration;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientsDomainParams;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientsParams;
import java.util.List;
import java.util.UUID;
@ -27,9 +26,9 @@ import java.util.UUID;
public interface OAuth2Service {
List<OAuth2ClientInfo> getOAuth2Clients(String domainName);
List<OAuth2ClientsDomainParams> saveDomainsParams(List<OAuth2ClientsDomainParams> domainsParams);
OAuth2ClientsParams saveOAuth2Params(OAuth2ClientsParams oauth2Params);
List<OAuth2ClientsDomainParams> findDomainsParams();
OAuth2ClientsParams findOAuth2Params();
OAuth2ClientRegistration findClientRegistration(UUID id);

33
common/data/src/main/java/org/thingsboard/server/common/data/oauth2/OAuth2ClientsParams.java

@ -0,0 +1,33 @@
/**
* Copyright © 2016-2020 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.common.data.oauth2;
import lombok.*;
import org.thingsboard.server.common.data.id.TenantId;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
@EqualsAndHashCode
@Data
@ToString
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
public class OAuth2ClientsParams {
private List<OAuth2ClientsDomainParams> oAuth2DomainDtos;
}

25
dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ServiceImpl.java

@ -24,7 +24,6 @@ import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.oauth2.*;
import org.thingsboard.server.dao.entity.AbstractEntityService;
import org.thingsboard.server.dao.exception.DataValidationException;
import org.thingsboard.server.dao.tenant.TenantService;
import javax.transaction.Transactional;
import java.util.*;
@ -55,20 +54,20 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se
@Override
@Transactional
public List<OAuth2ClientsDomainParams> saveDomainsParams(List<OAuth2ClientsDomainParams> domainsParams) {
log.trace("Executing saveDomainsParams [{}]", domainsParams);
clientParamsValidator.accept(domainsParams);
List<OAuth2ClientRegistration> inputClientRegistrations = OAuth2Utils.toClientRegistrations(domainsParams);
public OAuth2ClientsParams saveOAuth2Params(OAuth2ClientsParams oauth2Params) {
log.trace("Executing saveOAuth2Params [{}]", oauth2Params);
clientParamsValidator.accept(oauth2Params);
List<OAuth2ClientRegistration> inputClientRegistrations = OAuth2Utils.toClientRegistrations(oauth2Params);
List<OAuth2ClientRegistration> savedClientRegistrations = inputClientRegistrations.stream()
.map(clientRegistration -> clientRegistrationDao.save(TenantId.SYS_TENANT_ID, clientRegistration))
.collect(Collectors.toList());
return OAuth2Utils.toDomainsParams(savedClientRegistrations);
return OAuth2Utils.toOAuth2Params(savedClientRegistrations);
}
@Override
public List<OAuth2ClientsDomainParams> findDomainsParams() {
log.trace("Executing findDomainsParams");
return OAuth2Utils.toDomainsParams(clientRegistrationDao.findAll());
public OAuth2ClientsParams findOAuth2Params() {
log.trace("Executing findOAuth2Params");
return OAuth2Utils.toOAuth2Params(clientRegistrationDao.findAll());
}
@Override
@ -99,11 +98,13 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se
clientRegistrationDao.removeByDomainName(domain);
}
private final Consumer<List<OAuth2ClientsDomainParams>> clientParamsValidator = domainsParams -> {
if (domainsParams == null || domainsParams.isEmpty()) {
private final Consumer<OAuth2ClientsParams> clientParamsValidator = oauth2Params -> {
if (oauth2Params == null
|| oauth2Params.getOAuth2DomainDtos() == null
|| oauth2Params.getOAuth2DomainDtos().isEmpty()) {
throw new DataValidationException("Domain params should be specified!");
}
for (OAuth2ClientsDomainParams domainParams : domainsParams) {
for (OAuth2ClientsDomainParams domainParams : oauth2Params.getOAuth2DomainDtos()) {
if (StringUtils.isEmpty(domainParams.getDomainName())) {
throw new DataValidationException("Domain name should be specified!");
}

9
dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2Utils.java

@ -24,7 +24,6 @@ import java.util.Map;
import java.util.stream.Collectors;
public class OAuth2Utils {
public static final String ALLOW_OAUTH2_CONFIGURATION = "allowOAuth2Configuration";
public static final String OAUTH2_AUTHORIZATION_PATH_TEMPLATE = "/oauth2/authorization/%s";
public static OAuth2ClientInfo toClientInfo(OAuth2ClientRegistration clientRegistration) {
@ -35,8 +34,8 @@ public class OAuth2Utils {
return client;
}
public static List<OAuth2ClientRegistration> toClientRegistrations(List<OAuth2ClientsDomainParams> domainsParams) {
return domainsParams.stream()
public static List<OAuth2ClientRegistration> toClientRegistrations(OAuth2ClientsParams oAuth2Params) {
return oAuth2Params.getOAuth2DomainDtos().stream()
.flatMap(domainParams -> domainParams.getClientRegistrations().stream()
.map(clientRegistrationDto -> OAuth2Utils.toClientRegistration(domainParams.getDomainName(),
domainParams.getRedirectUriTemplate(), clientRegistrationDto)
@ -44,7 +43,7 @@ public class OAuth2Utils {
.collect(Collectors.toList());
}
public static List<OAuth2ClientsDomainParams> toDomainsParams(List<OAuth2ClientRegistration> clientRegistrations) {
public static OAuth2ClientsParams toOAuth2Params(List<OAuth2ClientRegistration> clientRegistrations) {
Map<String, OAuth2ClientsDomainParams> domainParamsMap = new HashMap<>();
for (OAuth2ClientRegistration clientRegistration : clientRegistrations) {
String domainName = clientRegistration.getDomainName();
@ -54,7 +53,7 @@ public class OAuth2Utils {
domainParams.getClientRegistrations()
.add(toClientRegistrationDto(clientRegistration));
}
return new ArrayList<>(domainParamsMap.values());
return new OAuth2ClientsParams(new ArrayList<>(domainParamsMap.values()));
}
public static ClientRegistrationDto toClientRegistrationDto(OAuth2ClientRegistration oAuth2ClientRegistration) {

49
dao/src/test/java/org/thingsboard/server/dao/service/BaseOAuth2ServiceTest.java

@ -20,7 +20,6 @@ import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.oauth2.*;
import org.thingsboard.server.dao.oauth2.OAuth2Service;
import org.thingsboard.server.dao.oauth2.OAuth2Utils;
@ -51,10 +50,10 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
@Test
public void testCreateNewParams() {
OAuth2ClientRegistration clientRegistration = validClientRegistration("domain-name");
List<OAuth2ClientsDomainParams> savedDomainsParams = oAuth2Service.saveDomainsParams(OAuth2Utils.toDomainsParams(Collections.singletonList(clientRegistration)));
Assert.assertNotNull(savedDomainsParams);
OAuth2ClientsParams savedOAuth2Params = oAuth2Service.saveOAuth2Params(OAuth2Utils.toOAuth2Params(Collections.singletonList(clientRegistration)));
Assert.assertNotNull(savedOAuth2Params);
List<OAuth2ClientRegistration> savedClientRegistrations = OAuth2Utils.toClientRegistrations(savedDomainsParams);
List<OAuth2ClientRegistration> savedClientRegistrations = OAuth2Utils.toClientRegistrations(savedOAuth2Params);
Assert.assertEquals(1, savedClientRegistrations.size());
OAuth2ClientRegistration savedClientRegistration = savedClientRegistrations.get(0);
@ -69,13 +68,13 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
@Test
public void testFindDomainParams() {
OAuth2ClientRegistration clientRegistration = validClientRegistration();
oAuth2Service.saveDomainsParams(OAuth2Utils.toDomainsParams(Collections.singletonList(clientRegistration)));
oAuth2Service.saveOAuth2Params(OAuth2Utils.toOAuth2Params(Collections.singletonList(clientRegistration)));
List<OAuth2ClientsDomainParams> foundDomainsParams = oAuth2Service.findDomainsParams();
Assert.assertEquals(1, foundDomainsParams.size());
OAuth2ClientsParams foundOAuth2Params = oAuth2Service.findOAuth2Params();
Assert.assertEquals(1, foundOAuth2Params.getOAuth2DomainDtos().size());
Assert.assertEquals(1, oAuth2Service.findAllClientRegistrations().size());
List<OAuth2ClientRegistration> foundClientRegistrations = OAuth2Utils.toClientRegistrations(foundDomainsParams);
List<OAuth2ClientRegistration> foundClientRegistrations = OAuth2Utils.toClientRegistrations(foundOAuth2Params);
OAuth2ClientRegistration foundClientRegistration = foundClientRegistrations.get(0);
Assert.assertNotNull(foundClientRegistration);
clientRegistration.setId(foundClientRegistration.getId());
@ -89,8 +88,8 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
OAuth2ClientRegistration first = validClientRegistration(testDomainName);
OAuth2ClientRegistration second = validClientRegistration(testDomainName);
oAuth2Service.saveDomainsParams(OAuth2Utils.toDomainsParams(Collections.singletonList(first)));
oAuth2Service.saveDomainsParams(OAuth2Utils.toDomainsParams(Collections.singletonList(second)));
oAuth2Service.saveOAuth2Params(OAuth2Utils.toOAuth2Params(Collections.singletonList(first)));
oAuth2Service.saveOAuth2Params(OAuth2Utils.toOAuth2Params(Collections.singletonList(second)));
List<OAuth2ClientInfo> oAuth2Clients = oAuth2Service.getOAuth2Clients(testDomainName);
@ -106,8 +105,8 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
String testDomainName = "test_domain";
OAuth2ClientRegistration tenantClientRegistration = validClientRegistration(testDomainName);
OAuth2ClientRegistration sysAdminClientRegistration = validClientRegistration(testDomainName);
oAuth2Service.saveDomainsParams(OAuth2Utils.toDomainsParams(Collections.singletonList(tenantClientRegistration)));
oAuth2Service.saveDomainsParams(OAuth2Utils.toDomainsParams(Collections.singletonList(sysAdminClientRegistration)));
oAuth2Service.saveOAuth2Params(OAuth2Utils.toOAuth2Params(Collections.singletonList(tenantClientRegistration)));
oAuth2Service.saveOAuth2Params(OAuth2Utils.toOAuth2Params(Collections.singletonList(sysAdminClientRegistration)));
List<OAuth2ClientInfo> oAuth2Clients = oAuth2Service.getOAuth2Clients("random-domain");
Assert.assertTrue(oAuth2Clients.isEmpty());
}
@ -117,13 +116,13 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
OAuth2ClientRegistration first = validClientRegistration();
OAuth2ClientRegistration second = validClientRegistration();
List<OAuth2ClientsDomainParams> savedFirstDomainsParams = oAuth2Service.saveDomainsParams(
OAuth2Utils.toDomainsParams(Collections.singletonList(first)));
List<OAuth2ClientsDomainParams> savedSecondDomainsParams = oAuth2Service.saveDomainsParams(
OAuth2Utils.toDomainsParams(Collections.singletonList(second)));
OAuth2ClientsParams savedFirstOAuth2Params = oAuth2Service.saveOAuth2Params(
OAuth2Utils.toOAuth2Params(Collections.singletonList(first)));
OAuth2ClientsParams savedSecondOAuth2Params = oAuth2Service.saveOAuth2Params(
OAuth2Utils.toOAuth2Params(Collections.singletonList(second)));
OAuth2ClientRegistration savedFirstRegistration = toClientRegistrations(savedFirstDomainsParams).get(0);
OAuth2ClientRegistration savedSecondRegistration = toClientRegistrations(savedSecondDomainsParams).get(0);
OAuth2ClientRegistration savedFirstRegistration = toClientRegistrations(savedFirstOAuth2Params).get(0);
OAuth2ClientRegistration savedSecondRegistration = toClientRegistrations(savedSecondOAuth2Params).get(0);
oAuth2Service.deleteClientRegistrationById(savedFirstRegistration.getId());
List<OAuth2ClientRegistration> foundRegistrations = oAuth2Service.findAllClientRegistrations();
@ -133,24 +132,24 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
@Test
public void testDeleteDomainOAuth2ClientRegistrations() {
oAuth2Service.saveDomainsParams(OAuth2Utils.toDomainsParams(Arrays.asList(
oAuth2Service.saveOAuth2Params(OAuth2Utils.toOAuth2Params(Arrays.asList(
validClientRegistration("domain1"),
validClientRegistration("domain1"),
validClientRegistration("domain2")
)));
oAuth2Service.saveDomainsParams(OAuth2Utils.toDomainsParams(Arrays.asList(
oAuth2Service.saveOAuth2Params(OAuth2Utils.toOAuth2Params(Arrays.asList(
validClientRegistration("domain2")
)));
Assert.assertEquals(4, oAuth2Service.findAllClientRegistrations().size());
List<OAuth2ClientsDomainParams> domainsParams = oAuth2Service.findDomainsParams();
List<OAuth2ClientRegistration> clientRegistrations = toClientRegistrations(domainsParams);
Assert.assertEquals(2, domainsParams.size());
OAuth2ClientsParams oAuth2Params = oAuth2Service.findOAuth2Params();
List<OAuth2ClientRegistration> clientRegistrations = toClientRegistrations(oAuth2Params);
Assert.assertEquals(2, oAuth2Params.getOAuth2DomainDtos().size());
Assert.assertEquals(4, clientRegistrations.size());
oAuth2Service.deleteClientRegistrationsByDomain("domain1");
Assert.assertEquals(2, oAuth2Service.findAllClientRegistrations().size());
Assert.assertEquals(1, oAuth2Service.findDomainsParams().size());
Assert.assertEquals(2, toClientRegistrations(oAuth2Service.findDomainsParams()).size());
Assert.assertEquals(1, oAuth2Service.findOAuth2Params().getOAuth2DomainDtos().size());
Assert.assertEquals(2, toClientRegistrations(oAuth2Service.findOAuth2Params()).size());
}
private OAuth2ClientRegistration validClientRegistration() {

Loading…
Cancel
Save