修复BeanUtil.copyProperties中mapToMap时key被转为String问题

This commit is contained in:
Looly
2024-07-06 11:36:34 +08:00
parent 2fffc07c0f
commit ca16ad9f1d
15 changed files with 84 additions and 33 deletions

View File

@@ -879,7 +879,7 @@ public class BeanUtilTest {
//setIgnoreNullValue(true).
//setIgnoreCase(false).
setFieldEditor(entry->{
entry.setKey(StrUtil.toCamelCase(entry.getKey()));
entry.setKey(StrUtil.toCamelCase(entry.getKey().toString()));
return entry;
});

View File

@@ -46,7 +46,7 @@ public class Issue1687Test {
// 补救别名错位
final CopyOptions copyOptions = CopyOptions.of().setFieldMapping(
MapUtil.builder("depart", "depId").build()
MapUtil.builder((Object)"depart", (Object)"depId").build()
);
final SysUser sysUser = BeanUtil.toBean(sysUserFb, SysUser.class, copyOptions);

View File

@@ -35,7 +35,7 @@ public class Issue2202Test {
headerMap.put("wechatpay-signature", "signature");
final ResponseSignVerifyParams case1 = BeanUtil.toBean(headerMap, ResponseSignVerifyParams.class,
CopyOptions.of().setFieldEditor(entry -> {
entry.setKey(NamingCase.toCamelCase(entry.getKey(), '-'));
entry.setKey(NamingCase.toCamelCase(entry.getKey().toString(), '-'));
return entry;
}));

View File

@@ -14,7 +14,7 @@ public class Issue3497Test {
public void setFieldEditorTest() {
final Map<String, String> aB = MapUtil.builder("a_b", "1").build();
final Map<?, ?> bean = BeanUtil.toBean(aB, Map.class, CopyOptions.of().setFieldEditor((entry)->{
entry.setKey(StrUtil.toCamelCase(entry.getKey()));
entry.setKey(StrUtil.toCamelCase(entry.getKey().toString()));
return entry;
}));
Assertions.assertEquals(bean.toString(), "{aB=1}");

View File

@@ -0,0 +1,43 @@
/*
* Copyright (c) 2024. looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* https://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.bean;
import lombok.Data;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import java.util.HashMap;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertNotNull;
public class Issue3645Test {
@Test
public void copyPropertiesTest() {
final User p = new User();
p.setUserId(123L);
final Map<Long, User> map = new HashMap<>();
map.put(123L,p);
final Map<Long, User> m = new HashMap<>();
BeanUtil.copyProperties(map, m);
final User u = m.get(123L);
assertNotNull(u);
}
@Data
static class User{
private Long userId;
}
}