From 8caa7f890e0c162abdf7f2005659c7c63255f989 Mon Sep 17 00:00:00 2001 From: Looly Date: Tue, 29 Jun 2021 23:02:52 +0800 Subject: [PATCH] add test --- CHANGELOG.md | 1 + .../java/cn/hutool/core/net/url/UrlQuery.java | 9 +++ .../cn/hutool/core/bean/Issue1687Test.java | 67 +++++++++++++++++++ .../java/cn/hutool/core/net/UrlQueryTest.java | 9 +++ 4 files changed, 86 insertions(+) create mode 100755 hutool-core/src/test/java/cn/hutool/core/bean/Issue1687Test.java diff --git a/CHANGELOG.md b/CHANGELOG.md index c83a1c8a5..ca24156b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ * 【core 】 修复BeanCopier中setFieldNameEditor失效问题(pr#349@Gitee) * 【core 】 修复ArrayUtil.indexOfSub查找bug(issue#1683@Github) * 【core 】 修复Node的权重比较空指针问题(issue#1681@Github) +* 【core 】 修复UrlQuery传入无参数路径解析问题(issue#1688@Github) ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-core/src/main/java/cn/hutool/core/net/url/UrlQuery.java b/hutool-core/src/main/java/cn/hutool/core/net/url/UrlQuery.java index 62fa8e429..392864149 100644 --- a/hutool-core/src/main/java/cn/hutool/core/net/url/UrlQuery.java +++ b/hutool-core/src/main/java/cn/hutool/core/net/url/UrlQuery.java @@ -173,8 +173,17 @@ public class UrlQuery { } } + if(i - pos == len){ + // 没有任何参数符号 + if(queryStr.startsWith("http") || queryStr.contains("/")){ + // 可能为url路径,忽略之 + return this; + } + } + // 处理结尾 addParam(name, queryStr.substring(pos, i), charset); + return this; } diff --git a/hutool-core/src/test/java/cn/hutool/core/bean/Issue1687Test.java b/hutool-core/src/test/java/cn/hutool/core/bean/Issue1687Test.java new file mode 100755 index 000000000..488405fc0 --- /dev/null +++ b/hutool-core/src/test/java/cn/hutool/core/bean/Issue1687Test.java @@ -0,0 +1,67 @@ +package cn.hutool.core.bean; + +import cn.hutool.core.annotation.Alias; +import cn.hutool.core.bean.copier.CopyOptions; +import cn.hutool.core.map.MapUtil; +import lombok.Data; +import org.junit.Assert; +import org.junit.Test; + +import java.io.Serializable; + +/** + * https://github.com/dromara/hutool/issues/1687 + */ +public class Issue1687Test { + + @Test + public void toBeanTest(){ + final SysUserFb sysUserFb = new SysUserFb(); + sysUserFb.setDepId("123"); + sysUserFb.setCustomerId("456"); + + final SysUser sysUser = BeanUtil.toBean(sysUserFb, SysUser.class); + // 别名错位导致找不到字段 + Assert.assertNull(sysUser.getDepart()); + Assert.assertEquals(new Long(456L), sysUser.getOrgId()); + } + + @Test + public void toBeanTest2(){ + final SysUserFb sysUserFb = new SysUserFb(); + sysUserFb.setDepId("123"); + sysUserFb.setCustomerId("456"); + + // 补救别名错位 + final CopyOptions copyOptions = CopyOptions.create().setFieldMapping( + MapUtil.builder("depart", "depId").build() + ); + final SysUser sysUser = BeanUtil.toBean(sysUserFb, SysUser.class, copyOptions); + + Assert.assertEquals(new Long(123L), sysUser.getDepart()); + Assert.assertEquals(new Long(456L), sysUser.getOrgId()); + } + + @Data + static class SysUserFb implements Serializable { + + private static final long serialVersionUID = 1L; + + @Alias("depart") + private String depId; + + @Alias("orgId") + private String customerId; + } + + @Data + static class SysUser implements Serializable { + + private static final long serialVersionUID = 1L; + + @Alias("depId") + private Long depart; + + private Long orgId; + } +} diff --git a/hutool-core/src/test/java/cn/hutool/core/net/UrlQueryTest.java b/hutool-core/src/test/java/cn/hutool/core/net/UrlQueryTest.java index 285661c1f..16387c496 100644 --- a/hutool-core/src/test/java/cn/hutool/core/net/UrlQueryTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/net/UrlQueryTest.java @@ -1,5 +1,6 @@ package cn.hutool.core.net; +import cn.hutool.core.map.MapUtil; import cn.hutool.core.net.url.UrlBuilder; import cn.hutool.core.net.url.UrlQuery; import org.junit.Assert; @@ -34,4 +35,12 @@ public class UrlQueryTest { UrlQuery parse = q.parse(requestUrl, Charset.defaultCharset()); Assert.assertEquals("=d52i5837i4ed=o39-ap9e19s5--=72e54*ll0lodl-f338868d2", parse.toString()); } + + @Test + public void parseTest3(){ + // issue#1688@Github + String u = "https://www.baidu.com/proxy"; + final UrlQuery query = UrlQuery.of(u, Charset.defaultCharset()); + Assert.assertTrue(MapUtil.isEmpty(query.getQueryMap())); + } }