This commit is contained in:
Looly 2021-07-30 13:42:39 +08:00
parent 02b68f970b
commit 09ae727b81
3 changed files with 84 additions and 5 deletions

View File

@ -3,15 +3,17 @@
-------------------------------------------------------------------------------------------------------------
# 5.7.6 (2021-07-29)
# 5.7.6 (2021-07-30)
### 🐣新特性
* 【core 】 增加LookupFactory和MethodHandleUtilissue#I42TVY@Gitee
* 【core 】 改进RegexPool.TEL支持无-号码pr#387@Gitee
* 【core 】 PhoneUtil中新增获取固话号码中区号,以及固话号码中号码的方法pr#387@Gitee
* 【json 】 JSONGetter增加getLocalDateTime方法pr#387@Gitee
* 【core 】 增加JNDIUtilissue#1727@Github
### 🐞Bug修复
* 【jwt 】 修复JWTUtil中几个方法非static的问题pr#386@Gitee
* 【jwt 】 修复JWTUtil中几个方法非static的问题issue#1735@Github
-------------------------------------------------------------------------------------------------------------

View File

@ -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工具类<br>
* JNDI是Java Naming and Directory InterfaceJAVA命名和目录接口的英文简写<br>
* 它是为JAVA应用程序提供命名和目录访问服务的APIApplication Programing Interface应用程序编程接口
*
* @author loolY
* @since 5.7.7
*/
public class JNDIUtil {
public static InitialDirContext createInitialDirContext(Map<String, String> 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<String, String> 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<String, String> environment) {
try {
if (MapUtil.isEmpty(environment)) {
return new InitialContext();
}
return new InitialContext(Convert.convert(Hashtable.class, environment));
} catch (NamingException e) {
throw new UtilException(e);
}
}
}

View File

@ -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<K> extends OptNullBasicTypeFromObjectGetter<K> {
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);
}
/**
* 获取指定类型的对象<br>
* 转换失败或抛出异常