From 12e2d2efb716c284c11fbe94848f9bc9250f442a Mon Sep 17 00:00:00 2001 From: vzikratyi Date: Wed, 23 Sep 2020 12:49:30 +0300 Subject: [PATCH] Packed domain objects to ClientParams --- .../server/controller/OAuth2Controller.java | 9 ++-- .../server/dao/oauth2/OAuth2Service.java | 7 ++- .../data/oauth2/OAuth2ClientsParams.java | 33 +++++++++++++ .../server/dao/oauth2/OAuth2ServiceImpl.java | 25 +++++----- .../server/dao/oauth2/OAuth2Utils.java | 9 ++-- .../dao/service/BaseOAuth2ServiceTest.java | 49 +++++++++---------- 6 files changed, 82 insertions(+), 50 deletions(-) create mode 100644 common/data/src/main/java/org/thingsboard/server/common/data/oauth2/OAuth2ClientsParams.java diff --git a/application/src/main/java/org/thingsboard/server/controller/OAuth2Controller.java b/application/src/main/java/org/thingsboard/server/controller/OAuth2Controller.java index 3396c5537d..6be426c245 100644 --- a/application/src/main/java/org/thingsboard/server/controller/OAuth2Controller.java +++ b/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 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 saveClientParams(@RequestBody List 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); } diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2Service.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2Service.java index 0f4cd1d0be..76920561d6 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2Service.java +++ b/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 getOAuth2Clients(String domainName); - List saveDomainsParams(List domainsParams); + OAuth2ClientsParams saveOAuth2Params(OAuth2ClientsParams oauth2Params); - List findDomainsParams(); + OAuth2ClientsParams findOAuth2Params(); OAuth2ClientRegistration findClientRegistration(UUID id); diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/oauth2/OAuth2ClientsParams.java b/common/data/src/main/java/org/thingsboard/server/common/data/oauth2/OAuth2ClientsParams.java new file mode 100644 index 0000000000..b42571b2d6 --- /dev/null +++ b/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 oAuth2DomainDtos; +} \ No newline at end of file diff --git a/dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ServiceImpl.java index 26bad5566b..f4fc8265e1 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ServiceImpl.java +++ b/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 saveDomainsParams(List domainsParams) { - log.trace("Executing saveDomainsParams [{}]", domainsParams); - clientParamsValidator.accept(domainsParams); - List inputClientRegistrations = OAuth2Utils.toClientRegistrations(domainsParams); + public OAuth2ClientsParams saveOAuth2Params(OAuth2ClientsParams oauth2Params) { + log.trace("Executing saveOAuth2Params [{}]", oauth2Params); + clientParamsValidator.accept(oauth2Params); + List inputClientRegistrations = OAuth2Utils.toClientRegistrations(oauth2Params); List 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 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> clientParamsValidator = domainsParams -> { - if (domainsParams == null || domainsParams.isEmpty()) { + private final Consumer 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!"); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2Utils.java b/dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2Utils.java index 7af0b80ba5..91a1feb84e 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2Utils.java +++ b/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 toClientRegistrations(List domainsParams) { - return domainsParams.stream() + public static List 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 toDomainsParams(List clientRegistrations) { + public static OAuth2ClientsParams toOAuth2Params(List clientRegistrations) { Map 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) { diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/BaseOAuth2ServiceTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/BaseOAuth2ServiceTest.java index 4ff0716266..80df39cbdf 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/BaseOAuth2ServiceTest.java +++ b/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 savedDomainsParams = oAuth2Service.saveDomainsParams(OAuth2Utils.toDomainsParams(Collections.singletonList(clientRegistration))); - Assert.assertNotNull(savedDomainsParams); + OAuth2ClientsParams savedOAuth2Params = oAuth2Service.saveOAuth2Params(OAuth2Utils.toOAuth2Params(Collections.singletonList(clientRegistration))); + Assert.assertNotNull(savedOAuth2Params); - List savedClientRegistrations = OAuth2Utils.toClientRegistrations(savedDomainsParams); + List 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 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 foundClientRegistrations = OAuth2Utils.toClientRegistrations(foundDomainsParams); + List 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 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 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 savedFirstDomainsParams = oAuth2Service.saveDomainsParams( - OAuth2Utils.toDomainsParams(Collections.singletonList(first))); - List 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 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 domainsParams = oAuth2Service.findDomainsParams(); - List clientRegistrations = toClientRegistrations(domainsParams); - Assert.assertEquals(2, domainsParams.size()); + OAuth2ClientsParams oAuth2Params = oAuth2Service.findOAuth2Params(); + List 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() {