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 io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.ToString;
 | 
			
		||||
import org.thingsboard.server.common.data.id.UserId;
 | 
			
		||||
import org.thingsboard.server.common.data.validation.Length;
 | 
			
		||||
import org.thingsboard.server.common.data.validation.NoXss;
 | 
			
		||||
@ -48,6 +49,7 @@ public class UserSettings implements Serializable {
 | 
			
		||||
    private transient JsonNode settings;
 | 
			
		||||
 | 
			
		||||
    @JsonIgnore
 | 
			
		||||
    @ToString.Exclude
 | 
			
		||||
    private byte[] settingsBytes;
 | 
			
		||||
 | 
			
		||||
    public JsonNode getSettings() {
 | 
			
		||||
 | 
			
		||||
@ -238,7 +238,7 @@
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>io.hypersistence</groupId>
 | 
			
		||||
            <artifactId>hypersistence-utils-hibernate-62</artifactId>
 | 
			
		||||
            <artifactId>hypersistence-utils-hibernate-63</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.apache.xmlgraphics</groupId>
 | 
			
		||||
 | 
			
		||||
@ -40,6 +40,7 @@ public class JpaUserSettingsDao extends JpaAbstractDaoListeningExecutorService i
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public UserSettings save(TenantId tenantId, UserSettings userSettings) {
 | 
			
		||||
        log.trace("save [{}][{}]", tenantId, userSettings);
 | 
			
		||||
        return DaoUtil.getData(userSettingsRepository.save(new UserSettingsEntity(userSettings)));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -55,6 +56,7 @@ public class JpaUserSettingsDao extends JpaAbstractDaoListeningExecutorService i
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<UserSettings> findByTypeAndPath(TenantId tenantId, UserSettingsType type, String... path) {
 | 
			
		||||
        log.trace("findByTypeAndPath [{}][{}][{}]", tenantId, type, path);
 | 
			
		||||
        return DaoUtil.convertDataList(userSettingsRepository.findByTypeAndPathExisting(type.name(), path));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -16,6 +16,7 @@
 | 
			
		||||
package org.thingsboard.server.dao.sql.user;
 | 
			
		||||
 | 
			
		||||
import com.datastax.oss.driver.api.core.uuid.Uuids;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.junit.After;
 | 
			
		||||
import org.junit.Before;
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
@ -37,11 +38,14 @@ import org.thingsboard.server.dao.user.UserSettingsDao;
 | 
			
		||||
 | 
			
		||||
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.assertNull;
 | 
			
		||||
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
 | 
			
		||||
import static org.thingsboard.server.dao.service.AbstractServiceTest.SYSTEM_TENANT_ID;
 | 
			
		||||
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class JpaUserSettingsDaoTest extends AbstractJpaDaoTest {
 | 
			
		||||
 | 
			
		||||
    private UUID tenantId;
 | 
			
		||||
@ -77,6 +81,34 @@ public class JpaUserSettingsDaoTest extends AbstractJpaDaoTest {
 | 
			
		||||
        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) {
 | 
			
		||||
        UserSettings userSettings = new UserSettings();
 | 
			
		||||
        userSettings.setType(UserSettingsType.GENERAL);
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								pom.xml
									
									
									
									
									
								
							@ -127,7 +127,7 @@
 | 
			
		||||
        <wire-schema.version>3.7.1</wire-schema.version>
 | 
			
		||||
        <twilio.version>10.1.3</twilio.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.validation-api.version>3.0.2</jakarta.validation-api.version>
 | 
			
		||||
        <antisamy.version>1.7.5</antisamy.version>
 | 
			
		||||
@ -2034,7 +2034,7 @@
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>io.hypersistence</groupId>
 | 
			
		||||
                <artifactId>hypersistence-utils-hibernate-62</artifactId>
 | 
			
		||||
                <artifactId>hypersistence-utils-hibernate-63</artifactId>
 | 
			
		||||
                <version>${hypersistence-utils.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user