diff --git a/CHANGELOG.md b/CHANGELOG.md index bd941c273..3ee138c09 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,15 +3,17 @@ ------------------------------------------------------------------------------------------------------------- -# 5.7.6 (2021-07-29) +# 5.7.6 (2021-07-30) ### 🐣新特性 * 【core 】 增加LookupFactory和MethodHandleUtil(issue#I42TVY@Gitee) * 【core 】 改进RegexPool.TEL支持无-号码(pr#387@Gitee) * 【core 】 PhoneUtil中新增获取固话号码中区号,以及固话号码中号码的方法(pr#387@Gitee) +* 【json 】 JSONGetter增加getLocalDateTime方法(pr#387@Gitee) +* 【core 】 增加JNDIUtil(issue#1727@Github) ### 🐞Bug修复 -* 【jwt 】 修复JWTUtil中几个方法非static的问题(pr#386@Gitee) +* 【jwt 】 修复JWTUtil中几个方法非static的问题(issue#1735@Github) ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-core/src/main/java/cn/hutool/core/util/JNDIUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/JNDIUtil.java index 28b5f8742..2dc140d87 100755 --- a/hutool-core/src/main/java/cn/hutool/core/util/JNDIUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/JNDIUtil.java @@ -1,12 +1,56 @@ package cn.hutool.core.util; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.exceptions.UtilException; +import cn.hutool.core.map.MapUtil; + +import javax.naming.InitialContext; +import javax.naming.NamingException; import javax.naming.directory.InitialDirContext; +import java.util.Hashtable; import java.util.Map; +/** + * JNDI工具类
+ * JNDI是Java Naming and Directory Interface(JAVA命名和目录接口)的英文简写,
+ * 它是为JAVA应用程序提供命名和目录访问服务的API(Application Programing Interface,应用程序编程接口)。 + * + * @author loolY + * @since 5.7.7 + */ public class JNDIUtil { - public static InitialDirContext createInitialDirContext(Map environment){ -// return new InitialDirContext(Convert.convert(Hashtable.class, environment)); - return null; + /** + * 创建{@link InitialDirContext} + * + * @param environment 环境参数,{code null}表示无参数 + * @return {@link InitialDirContext} + */ + public static InitialDirContext createInitialDirContext(Map environment) { + try { + if (MapUtil.isEmpty(environment)) { + return new InitialDirContext(); + } + return new InitialDirContext(Convert.convert(Hashtable.class, environment)); + } catch (NamingException e) { + throw new UtilException(e); + } + } + + /** + * 创建{@link InitialContext} + * + * @param environment 环境参数,{code null}表示无参数 + * @return {@link InitialContext} + */ + public static InitialContext createInitialContext(Map environment) { + try { + if (MapUtil.isEmpty(environment)) { + return new InitialContext(); + } + return new InitialContext(Convert.convert(Hashtable.class, environment)); + } catch (NamingException e) { + throw new UtilException(e); + } } } diff --git a/hutool-json/src/main/java/cn/hutool/json/JSONGetter.java b/hutool-json/src/main/java/cn/hutool/json/JSONGetter.java index e1901bb41..d0ac50cc2 100644 --- a/hutool-json/src/main/java/cn/hutool/json/JSONGetter.java +++ b/hutool-json/src/main/java/cn/hutool/json/JSONGetter.java @@ -4,9 +4,11 @@ import cn.hutool.core.bean.OptionalBean; import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.ConvertException; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.getter.OptNullBasicTypeFromObjectGetter; import cn.hutool.core.util.StrUtil; +import java.time.LocalDateTime; import java.util.Date; /** @@ -135,6 +137,37 @@ public interface JSONGetter extends OptNullBasicTypeFromObjectGetter { return Convert.toDate(obj, defaultValue); } + /** + * 获取{@link LocalDateTime}类型值 + * + * @param key 键 + * @param defaultValue 默认值 + * @return {@link LocalDateTime} + * @since 5.7.7 + */ + default LocalDateTime getLocalDateTime(K key, LocalDateTime defaultValue){ + // 默认转换 + final Object obj = getObj(key); + if (null == obj) { + return defaultValue; + } + if(obj instanceof LocalDateTime){ + return (LocalDateTime) obj; + } + + String format = OptionalBean.ofNullable(getConfig()).getBean(JSONConfig::getDateFormat).get(); + if(StrUtil.isNotBlank(format)){ + // 用户指定了日期格式,获取日期属性时使用对应格式 + final String str = Convert.toStr(obj); + if(null == str){ + return defaultValue; + } + return LocalDateTimeUtil.parse(str, format); + } + + return Convert.toLocalDateTime(obj, defaultValue); + } + /** * 获取指定类型的对象
* 转换失败或抛出异常