diff --git a/dao/pom.xml b/dao/pom.xml index a3c9b2cfa4..9ab0b62611 100644 --- a/dao/pom.xml +++ b/dao/pom.xml @@ -60,10 +60,6 @@ org.postgresql postgresql - - org.springframework - spring-test - junit junit @@ -177,10 +173,6 @@ com.h2database h2 - - org.springframework.boot - spring-boot-starter-data-jpa - diff --git a/dao/src/main/java/org/thingsboard/server/dao/cache/ServiceCacheConfiguration.java b/dao/src/main/java/org/thingsboard/server/dao/cache/ServiceCacheConfiguration.java index 7c435bf779..35391785d0 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/cache/ServiceCacheConfiguration.java +++ b/dao/src/main/java/org/thingsboard/server/dao/cache/ServiceCacheConfiguration.java @@ -57,16 +57,25 @@ public class ServiceCacheConfiguration { Config config = new Config(); if (zkEnabled) { - config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false); - - config.setProperty(GroupProperty.DISCOVERY_SPI_ENABLED.getName(), Boolean.TRUE.toString()); - DiscoveryStrategyConfig discoveryStrategyConfig = new DiscoveryStrategyConfig(new ZookeeperDiscoveryStrategyFactory()); - discoveryStrategyConfig.addProperty(ZookeeperDiscoveryProperties.ZOOKEEPER_URL.key(), zkUrl); - discoveryStrategyConfig.addProperty(ZookeeperDiscoveryProperties.ZOOKEEPER_PATH.key(), zkDir); - discoveryStrategyConfig.addProperty(ZookeeperDiscoveryProperties.GROUP.key(), HAZELCAST_CLUSTER_NAME); - config.getNetworkConfig().getJoin().getDiscoveryConfig().addDiscoveryStrategyConfig(discoveryStrategyConfig); + addZkConfig(config); } + config.addMapConfig(createDeviceCredentialsCacheConfig()); + + return Hazelcast.newHazelcastInstance(config); + } + + private void addZkConfig(Config config) { + config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false); + config.setProperty(GroupProperty.DISCOVERY_SPI_ENABLED.getName(), Boolean.TRUE.toString()); + DiscoveryStrategyConfig discoveryStrategyConfig = new DiscoveryStrategyConfig(new ZookeeperDiscoveryStrategyFactory()); + discoveryStrategyConfig.addProperty(ZookeeperDiscoveryProperties.ZOOKEEPER_URL.key(), zkUrl); + discoveryStrategyConfig.addProperty(ZookeeperDiscoveryProperties.ZOOKEEPER_PATH.key(), zkDir); + discoveryStrategyConfig.addProperty(ZookeeperDiscoveryProperties.GROUP.key(), HAZELCAST_CLUSTER_NAME); + config.getNetworkConfig().getJoin().getDiscoveryConfig().addDiscoveryStrategyConfig(discoveryStrategyConfig); + } + + private MapConfig createDeviceCredentialsCacheConfig() { MapConfig deviceCredentialsCacheConfig = new MapConfig(CacheConstants.DEVICE_CREDENTIALS_CACHE); deviceCredentialsCacheConfig.setTimeToLiveSeconds(cacheDeviceCredentialsTTL); deviceCredentialsCacheConfig.setEvictionPolicy(EvictionPolicy.LRU); @@ -75,9 +84,7 @@ public class ServiceCacheConfiguration { cacheDeviceCredentialsMaxSizeSize, MaxSizeConfig.MaxSizePolicy.valueOf(cacheDeviceCredentialsMaxSizePolicy)) ); - config.addMapConfig(deviceCredentialsCacheConfig); - - return Hazelcast.newHazelcastInstance(config); + return deviceCredentialsCacheConfig; } @Bean diff --git a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsService.java b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsService.java index 3e71162961..73e9dd3f76 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsService.java +++ b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsService.java @@ -15,25 +15,18 @@ */ package org.thingsboard.server.dao.device; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; import org.thingsboard.server.common.data.id.DeviceId; import org.thingsboard.server.common.data.security.DeviceCredentials; -import static org.thingsboard.server.common.data.CacheConstants.DEVICE_CREDENTIALS_CACHE; - public interface DeviceCredentialsService { DeviceCredentials findDeviceCredentialsByDeviceId(DeviceId deviceId); - @Cacheable(cacheNames = DEVICE_CREDENTIALS_CACHE, unless="#result == null") DeviceCredentials findDeviceCredentialsByCredentialsId(String credentialsId); - @CacheEvict(cacheNames = DEVICE_CREDENTIALS_CACHE, keyGenerator="previousDeviceCredentialsId", beforeInvocation = true) DeviceCredentials updateDeviceCredentials(DeviceCredentials deviceCredentials); DeviceCredentials createDeviceCredentials(DeviceCredentials deviceCredentials); - @CacheEvict(cacheNames = DEVICE_CREDENTIALS_CACHE, key="#deviceCredentials.credentialsId") void deleteDeviceCredentials(DeviceCredentials deviceCredentials); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsServiceImpl.java index ae2322121c..fb8553c96c 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsServiceImpl.java @@ -18,6 +18,8 @@ package org.thingsboard.server.dao.device; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import org.thingsboard.server.common.data.Device; @@ -28,6 +30,7 @@ import org.thingsboard.server.dao.EncryptionUtil; import org.thingsboard.server.dao.exception.DataValidationException; import org.thingsboard.server.dao.service.DataValidator; +import static org.thingsboard.server.common.data.CacheConstants.DEVICE_CREDENTIALS_CACHE; import static org.thingsboard.server.dao.service.Validator.validateId; import static org.thingsboard.server.dao.service.Validator.validateString; @@ -49,6 +52,7 @@ public class DeviceCredentialsServiceImpl implements DeviceCredentialsService { } @Override + @Cacheable(cacheNames = DEVICE_CREDENTIALS_CACHE, unless="#result == null") public DeviceCredentials findDeviceCredentialsByCredentialsId(String credentialsId) { log.trace("Executing findDeviceCredentialsByCredentialsId [{}]", credentialsId); validateString(credentialsId, "Incorrect credentialsId " + credentialsId); @@ -56,6 +60,7 @@ public class DeviceCredentialsServiceImpl implements DeviceCredentialsService { } @Override + @CacheEvict(cacheNames = DEVICE_CREDENTIALS_CACHE, keyGenerator="previousDeviceCredentialsId", beforeInvocation = true) public DeviceCredentials updateDeviceCredentials(DeviceCredentials deviceCredentials) { return saveOrUpdare(deviceCredentials); } @@ -82,6 +87,7 @@ public class DeviceCredentialsServiceImpl implements DeviceCredentialsService { } @Override + @CacheEvict(cacheNames = DEVICE_CREDENTIALS_CACHE, key="#deviceCredentials.credentialsId") public void deleteDeviceCredentials(DeviceCredentials deviceCredentials) { log.trace("Executing deleteDeviceCredentials [{}]", deviceCredentials); deviceCredentialsDao.removeById(deviceCredentials.getUuidId()); diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/DeviceCredentialsCacheTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/DeviceCredentialsCacheTest.java index 4428d020eb..66b4f2bfbc 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/DeviceCredentialsCacheTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/DeviceCredentialsCacheTest.java @@ -15,13 +15,9 @@ */ package org.thingsboard.server.dao.service; -import com.datastax.driver.core.utils.UUIDs; import com.hazelcast.core.HazelcastInstance; import org.apache.commons.lang3.RandomStringUtils; -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; +import org.junit.*; import org.springframework.aop.framework.Advised; import org.springframework.aop.support.AopUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -56,7 +52,7 @@ public class DeviceCredentialsCacheTest extends AbstractServiceTest { @Autowired private HazelcastInstance hazelcastInstance; - private UUID deviceId = UUIDs.timeBased(); + private UUID deviceId = UUID.randomUUID(); @Before public void setup() throws Exception { @@ -115,7 +111,7 @@ public class DeviceCredentialsCacheTest extends AbstractServiceTest { when(deviceCredentialsDao.findByDeviceId(deviceId)).thenReturn(createDummyDeviceCredentialsEntity(CREDENTIALS_ID_1)); - UUID deviceCredentialsId = UUIDs.timeBased(); + UUID deviceCredentialsId = UUID.randomUUID(); when(deviceCredentialsDao.findById(deviceCredentialsId)).thenReturn(createDummyDeviceCredentialsEntity(CREDENTIALS_ID_1)); when(deviceService.findDeviceById(new DeviceId(deviceId))).thenReturn(new Device()); @@ -140,7 +136,7 @@ public class DeviceCredentialsCacheTest extends AbstractServiceTest { } private DeviceCredentials createDummyDeviceCredentialsEntity(String deviceCredentialsId) { - DeviceCredentials result = new DeviceCredentials(new DeviceCredentialsId(UUIDs.timeBased())); + DeviceCredentials result = new DeviceCredentials(new DeviceCredentialsId(UUID.randomUUID())); result.setCredentialsId(deviceCredentialsId); return result; }