dependency updated to fix userSettingsDao.findByTypeAndPath: hypersistence-utils-hibernate-63:3.7.4 for hibernate-core:6.4.4. Test and notes added
This commit is contained in:
parent
9a8e39856b
commit
da3b496a68
@ -19,6 +19,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
|
|||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.ToString;
|
||||||
import org.thingsboard.server.common.data.id.UserId;
|
import org.thingsboard.server.common.data.id.UserId;
|
||||||
import org.thingsboard.server.common.data.validation.Length;
|
import org.thingsboard.server.common.data.validation.Length;
|
||||||
import org.thingsboard.server.common.data.validation.NoXss;
|
import org.thingsboard.server.common.data.validation.NoXss;
|
||||||
@ -48,6 +49,7 @@ public class UserSettings implements Serializable {
|
|||||||
private transient JsonNode settings;
|
private transient JsonNode settings;
|
||||||
|
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
|
@ToString.Exclude
|
||||||
private byte[] settingsBytes;
|
private byte[] settingsBytes;
|
||||||
|
|
||||||
public JsonNode getSettings() {
|
public JsonNode getSettings() {
|
||||||
|
|||||||
@ -238,7 +238,7 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.hypersistence</groupId>
|
<groupId>io.hypersistence</groupId>
|
||||||
<artifactId>hypersistence-utils-hibernate-62</artifactId>
|
<artifactId>hypersistence-utils-hibernate-63</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.xmlgraphics</groupId>
|
<groupId>org.apache.xmlgraphics</groupId>
|
||||||
|
|||||||
@ -40,6 +40,7 @@ public class JpaUserSettingsDao extends JpaAbstractDaoListeningExecutorService i
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UserSettings save(TenantId tenantId, UserSettings userSettings) {
|
public UserSettings save(TenantId tenantId, UserSettings userSettings) {
|
||||||
|
log.trace("save [{}][{}]", tenantId, userSettings);
|
||||||
return DaoUtil.getData(userSettingsRepository.save(new UserSettingsEntity(userSettings)));
|
return DaoUtil.getData(userSettingsRepository.save(new UserSettingsEntity(userSettings)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,6 +56,7 @@ public class JpaUserSettingsDao extends JpaAbstractDaoListeningExecutorService i
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<UserSettings> findByTypeAndPath(TenantId tenantId, UserSettingsType type, String... path) {
|
public List<UserSettings> findByTypeAndPath(TenantId tenantId, UserSettingsType type, String... path) {
|
||||||
|
log.trace("findByTypeAndPath [{}][{}][{}]", tenantId, type, path);
|
||||||
return DaoUtil.convertDataList(userSettingsRepository.findByTypeAndPathExisting(type.name(), path));
|
return DaoUtil.convertDataList(userSettingsRepository.findByTypeAndPathExisting(type.name(), path));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -16,6 +16,7 @@
|
|||||||
package org.thingsboard.server.dao.sql.user;
|
package org.thingsboard.server.dao.sql.user;
|
||||||
|
|
||||||
import com.datastax.oss.driver.api.core.uuid.Uuids;
|
import com.datastax.oss.driver.api.core.uuid.Uuids;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@ -37,11 +38,14 @@ import org.thingsboard.server.dao.user.UserSettingsDao;
|
|||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.assertj.core.data.Index.atIndex;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertNull;
|
import static org.junit.Assert.assertNull;
|
||||||
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
|
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
|
||||||
import static org.thingsboard.server.dao.service.AbstractServiceTest.SYSTEM_TENANT_ID;
|
import static org.thingsboard.server.dao.service.AbstractServiceTest.SYSTEM_TENANT_ID;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
public class JpaUserSettingsDaoTest extends AbstractJpaDaoTest {
|
public class JpaUserSettingsDaoTest extends AbstractJpaDaoTest {
|
||||||
|
|
||||||
private UUID tenantId;
|
private UUID tenantId;
|
||||||
@ -77,6 +81,34 @@ public class JpaUserSettingsDaoTest extends AbstractJpaDaoTest {
|
|||||||
assertNull(retrievedUserSettings2);
|
assertNull(retrievedUserSettings2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If Hibernate fail to bind JSON path please check the hypersistence-utils-hibernate-XX artifact name and version in the dependency management
|
||||||
|
// Example: java.lang.ClassCastException: class [Ljava.lang.String; cannot be cast to class [B ([Ljava.lang.String; and [B are in module java.base of loader 'bootstrap')
|
||||||
|
@Test
|
||||||
|
public void testFindByTypeAndJsonPath() {
|
||||||
|
UserSettings userSettings = createUserSettings(user.getId());
|
||||||
|
log.warn("userSettings {}", userSettings);
|
||||||
|
|
||||||
|
userSettings.setSettings(JacksonUtil.toJsonNode("{\"text\":\"bla1\",\"sessions\":{\"tenantFcmToken\":{\"fcmTokenTimestamp\":0}}}"));
|
||||||
|
|
||||||
|
userSettingsDao.save(SYSTEM_TENANT_ID, userSettings);
|
||||||
|
|
||||||
|
assertThat(userSettingsDao.findByTypeAndPath(SYSTEM_TENANT_ID, UserSettingsType.GENERAL, "text"))
|
||||||
|
.isNotEmpty().hasSize(1).contains(userSettings, atIndex(0));
|
||||||
|
|
||||||
|
assertThat(userSettingsDao.findByTypeAndPath(SYSTEM_TENANT_ID, UserSettingsType.GENERAL, "sessions", "tenantFcmToken"))
|
||||||
|
.isNotEmpty().hasSize(1).contains(userSettings, atIndex(0));
|
||||||
|
|
||||||
|
assertThat(userSettingsDao.findByTypeAndPath(user.getTenantId(), UserSettingsType.GENERAL, "mistery")).isEmpty();
|
||||||
|
assertThat(userSettingsDao.findByTypeAndPath(user.getTenantId(), UserSettingsType.GENERAL, "text", "text")).isEmpty();
|
||||||
|
assertThat(userSettingsDao.findByTypeAndPath(user.getTenantId(), UserSettingsType.GENERAL, "text", "lvl2")).isEmpty();
|
||||||
|
assertThat(userSettingsDao.findByTypeAndPath(user.getTenantId(), UserSettingsType.MOBILE, "text")).isEmpty();
|
||||||
|
assertThat(userSettingsDao.findByTypeAndPath(user.getTenantId(), UserSettingsType.MOBILE, "sessions", "1")).isEmpty();
|
||||||
|
assertThat(userSettingsDao.findByTypeAndPath(user.getTenantId(), UserSettingsType.MOBILE, "text", "text")).isEmpty();
|
||||||
|
assertThat(userSettingsDao.findByTypeAndPath(user.getTenantId(), UserSettingsType.MOBILE, "")).isEmpty();
|
||||||
|
assertThat(userSettingsDao.findByTypeAndPath(user.getTenantId(), UserSettingsType.MOBILE, null)).isEmpty();
|
||||||
|
assertThat(userSettingsDao.findByTypeAndPath(user.getTenantId(), UserSettingsType.MOBILE)).isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
private UserSettings createUserSettings(UserId userId) {
|
private UserSettings createUserSettings(UserId userId) {
|
||||||
UserSettings userSettings = new UserSettings();
|
UserSettings userSettings = new UserSettings();
|
||||||
userSettings.setType(UserSettingsType.GENERAL);
|
userSettings.setType(UserSettingsType.GENERAL);
|
||||||
|
|||||||
4
pom.xml
4
pom.xml
@ -127,7 +127,7 @@
|
|||||||
<wire-schema.version>3.7.1</wire-schema.version>
|
<wire-schema.version>3.7.1</wire-schema.version>
|
||||||
<twilio.version>10.1.3</twilio.version>
|
<twilio.version>10.1.3</twilio.version>
|
||||||
<hibernate-validator.version>8.0.1.Final</hibernate-validator.version>
|
<hibernate-validator.version>8.0.1.Final</hibernate-validator.version>
|
||||||
<hypersistence-utils.version>3.7.3</hypersistence-utils.version>
|
<hypersistence-utils.version>3.7.4</hypersistence-utils.version> <!-- artifact name should be updated with hibernate-core version -->
|
||||||
<jakarta.el.version>4.0.2</jakarta.el.version>
|
<jakarta.el.version>4.0.2</jakarta.el.version>
|
||||||
<jakarta.validation-api.version>3.0.2</jakarta.validation-api.version>
|
<jakarta.validation-api.version>3.0.2</jakarta.validation-api.version>
|
||||||
<antisamy.version>1.7.5</antisamy.version>
|
<antisamy.version>1.7.5</antisamy.version>
|
||||||
@ -2034,7 +2034,7 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.hypersistence</groupId>
|
<groupId>io.hypersistence</groupId>
|
||||||
<artifactId>hypersistence-utils-hibernate-62</artifactId>
|
<artifactId>hypersistence-utils-hibernate-63</artifactId>
|
||||||
<version>${hypersistence-utils.version}</version>
|
<version>${hypersistence-utils.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user