From e67bbdec19fb9b5d07f72469469d91f7562d93df Mon Sep 17 00:00:00 2001 From: Looly Date: Mon, 24 Apr 2023 11:35:14 +0800 Subject: [PATCH] fix code --- .../hutool/extra/aop/ProxyFactory.java | 83 ------------------- .../dromara/hutool/extra/aop/ProxyUtil.java | 46 ++++++---- .../hutool/extra/aop/engine/ProxyEngine.java | 47 +++++++++++ .../extra/aop/engine/ProxyEngineFactory.java | 43 ++++++++++ ...kProxyFactory.java => JdkProxyEngine.java} | 7 +- ...ctory.java => SpringCglibProxyEngine.java} | 5 +- .../hutool/extra/aop/package-info.java | 4 + .../hutool/extra/pinyin/PinyinException.java | 58 ++++++++++--- .../hutool/extra/pinyin/PinyinUtil.java | 15 ++-- .../pinyin/{ => engine}/PinyinEngine.java | 2 +- ...nFactory.java => PinyinEngineFactory.java} | 16 ++-- .../engine/bopomofo4j/Bopomofo4jEngine.java | 5 +- .../engine/houbbpinyin/HoubbPinyinEngine.java | 2 +- .../pinyin/engine/jpinyin/JPinyinEngine.java | 2 +- .../engine/pinyin4j/Pinyin4jEngine.java | 2 +- .../engine/tinypinyin/TinyPinyinEngine.java | 2 +- .../hutool/extra/pinyin/package-info.java | 6 +- .../hutool/extra/servlet/package-info.java | 19 ----- .../hutool/extra/template/TemplateConfig.java | 13 +-- .../extra/template/TemplateException.java | 58 ++++++++++--- .../hutool/extra/template/TemplateUtil.java | 58 +++++++++++++ .../TemplateEngineFactory.java} | 16 ++-- .../hutool/extra/template/package-info.java | 11 ++- ...omara.hutool.extra.aop.engine.ProxyEngine} | 4 +- ...a.hutool.extra.pinyin.engine.PinyinEngine} | 0 .../hutool/extra/template/JetbrickTest.java | 5 +- .../extra/template/TemplateFactoryTest.java | 29 +++---- .../hutool/extra/template/ThymeleafTest.java | 3 +- .../hutool/extra/template/VelocityTest.java | 3 +- 29 files changed, 361 insertions(+), 203 deletions(-) delete mode 100644 hutool-extra/src/main/java/org/dromara/hutool/extra/aop/ProxyFactory.java create mode 100755 hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/ProxyEngine.java create mode 100644 hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/ProxyEngineFactory.java rename hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/jdk/{JdkProxyFactory.java => JdkProxyEngine.java} (86%) rename hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/spring/{SpringCglibProxyFactory.java => SpringCglibProxyEngine.java} (86%) rename hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/{ => engine}/PinyinEngine.java (97%) rename hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/{PinyinFactory.java => PinyinEngineFactory.java} (81%) delete mode 100644 hutool-extra/src/main/java/org/dromara/hutool/extra/servlet/package-info.java create mode 100755 hutool-extra/src/main/java/org/dromara/hutool/extra/template/TemplateUtil.java rename hutool-extra/src/main/java/org/dromara/hutool/extra/template/{TemplateFactory.java => engine/TemplateEngineFactory.java} (81%) rename hutool-extra/src/main/resources/META-INF/services/{org.dromara.hutool.extra.aop.ProxyFactory => org.dromara.hutool.extra.aop.engine.ProxyEngine} (80%) rename hutool-extra/src/main/resources/META-INF/services/{org.dromara.hutool.extra.pinyin.PinyinEngine => org.dromara.hutool.extra.pinyin.engine.PinyinEngine} (100%) diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/ProxyFactory.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/ProxyFactory.java deleted file mode 100644 index b35b92c81..000000000 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/ProxyFactory.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2023 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: - * http://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.extra.aop; - -import org.dromara.hutool.core.reflect.ConstructorUtil; -import org.dromara.hutool.core.spi.SpiUtil; - -import java.io.Serializable; - -/** - * 代理工厂
- * 根据用户引入代理库的不同,产生不同的代理对象 - * - * @author looly - */ -public interface ProxyFactory extends Serializable { - - /** - * 根据用户引入Cglib与否自动创建代理对象 - * - * @param 切面对象类型 - * @param target 目标对象 - * @param aspectClass 切面对象类 - * @return 代理对象 - */ - static T createProxy(final T target, final Class aspectClass) { - return createProxy(target, ConstructorUtil.newInstance(aspectClass)); - } - - /** - * 根据用户引入Cglib与否自动创建代理对象 - * - * @param 切面对象类型 - * @param target 被代理对象 - * @param aspect 切面实现 - * @return 代理对象 - */ - static T createProxy(final T target, final Aspect aspect) { - return of().proxy(target, aspect); - } - - /** - * 根据用户引入Cglib与否创建代理工厂 - * - * @return 代理工厂 - */ - static ProxyFactory of() { - return SpiUtil.loadFirstAvailable(ProxyFactory.class); - } - - /** - * 创建代理 - * - * @param 代理对象类型 - * @param target 被代理对象 - * @param aspectClass 切面实现类,自动实例化 - * @return 代理对象 - * @since 5.3.1 - */ - default T proxy(final T target, final Class aspectClass) { - return proxy(target, ConstructorUtil.newInstanceIfPossible(aspectClass)); - } - - /** - * 创建代理 - * - * @param 代理对象类型 - * @param target 被代理对象 - * @param aspect 切面实现 - * @return 代理对象 - */ - T proxy(T target, Aspect aspect); -} diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/ProxyUtil.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/ProxyUtil.java index f16a8e9cd..70cafb70b 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/ProxyUtil.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/ProxyUtil.java @@ -13,41 +13,54 @@ package org.dromara.hutool.extra.aop; import org.dromara.hutool.core.classloader.ClassLoaderUtil; +import org.dromara.hutool.extra.aop.engine.ProxyEngine; +import org.dromara.hutool.extra.aop.engine.ProxyEngineFactory; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Proxy; /** * 代理工具类 - * @author Looly * + * @author Looly */ public final class ProxyUtil { /** - * 使用切面代理对象 + * 获取动态代理引擎 * - * @param 切面对象类型 - * @param target 目标对象 - * @param aspectClass 切面对象类 - * @return 代理对象 + * @return {@link ProxyEngine} */ - public static T proxy(final T target, final Class aspectClass){ - return ProxyFactory.createProxy(target, aspectClass); + public static ProxyEngine getEngine() { + return ProxyEngineFactory.getEngine(); } /** * 使用切面代理对象 * - * @param 被代理对象类型 + * @param 切面对象类型 + * @param target 目标对象 + * @param aspectClass 切面对象类 + * @return 代理对象 + */ + public static T proxy(final T target, final Class aspectClass) { + return getEngine().proxy(target, aspectClass); + } + + /** + * 使用切面代理对象 + * + * @param 被代理对象类型 * @param target 被代理对象 * @param aspect 切面对象 * @return 代理对象 */ - public static T proxy(final T target, final Aspect aspect){ - return ProxyFactory.createProxy(target, aspect); + public static T proxy(final T target, final Aspect aspect) { + return getEngine().proxy(target, aspect); } + // region ----- JDK Proxy utils + /** * 创建动态代理对象
* 动态代理对象的创建原理是:
@@ -58,10 +71,10 @@ public final class ProxyUtil { * 4、将$Proxy0的实例返回给客户端。
* 5、当调用代理类的相应方法时,相当于调用 {@link InvocationHandler#invoke(Object, java.lang.reflect.Method, Object[])} 方法 * - * @param 被代理对象类型 - * @param classloader 被代理类对应的ClassLoader + * @param 被代理对象类型 + * @param classloader 被代理类对应的ClassLoader * @param invocationHandler {@link InvocationHandler} ,被代理类通过实现此接口提供动态代理功能 - * @param interfaces 代理类中需要实现的被代理类的接口方法 + * @param interfaces 代理类中需要实现的被代理类的接口方法 * @return 代理类 */ @SuppressWarnings("unchecked") @@ -72,12 +85,13 @@ public final class ProxyUtil { /** * 创建动态代理对象 * - * @param 被代理对象类型 + * @param 被代理对象类型 * @param invocationHandler {@link InvocationHandler} ,被代理类通过实现此接口提供动态代理功能 - * @param interfaces 代理类中需要实现的被代理类的接口方法 + * @param interfaces 代理类中需要实现的被代理类的接口方法 * @return 代理类 */ public static T newProxyInstance(final InvocationHandler invocationHandler, final Class... interfaces) { return newProxyInstance(ClassLoaderUtil.getClassLoader(), invocationHandler, interfaces); } + // endregion } diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/ProxyEngine.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/ProxyEngine.java new file mode 100755 index 000000000..e3aab1a0c --- /dev/null +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/ProxyEngine.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2023 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: + * http://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.extra.aop.engine; + +import org.dromara.hutool.core.reflect.ConstructorUtil; +import org.dromara.hutool.extra.aop.Aspect; + +/** + * 动态代理引擎接口 + * + * @author looly + * @since 6.0.0 + */ +public interface ProxyEngine { + /** + * 创建代理 + * + * @param 代理对象类型 + * @param target 被代理对象 + * @param aspect 切面实现 + * @return 代理对象 + */ + T proxy(T target, Aspect aspect); + + /** + * 创建代理 + * + * @param 代理对象类型 + * @param target 被代理对象 + * @param aspectClass 切面实现类,自动实例化 + * @return 代理对象 + * @since 5.3.1 + */ + default T proxy(final T target, final Class aspectClass) { + return proxy(target, ConstructorUtil.newInstanceIfPossible(aspectClass)); + } +} diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/ProxyEngineFactory.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/ProxyEngineFactory.java new file mode 100644 index 000000000..aac3a3020 --- /dev/null +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/ProxyEngineFactory.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2023 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: + * http://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.extra.aop.engine; + +import org.dromara.hutool.core.lang.Singleton; +import org.dromara.hutool.core.spi.SpiUtil; + +/** + * 代理引擎简单工厂
+ * 根据用户引入代理库的不同,产生不同的代理引擎对象 + * + * @author looly + */ +public class ProxyEngineFactory { + + /** + * 获得单例的ProxyEngine + * + * @return 单例的ProxyEngine + */ + public static ProxyEngine getEngine() { + return Singleton.get(ProxyEngine.class.getName(), ProxyEngineFactory::createEngine); + } + + /** + * 根据用户引入Cglib与否创建代理工厂 + * + * @return 代理工厂 + */ + public static ProxyEngine createEngine() { + return SpiUtil.loadFirstAvailable(ProxyEngine.class); + } +} diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/jdk/JdkProxyFactory.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/jdk/JdkProxyEngine.java similarity index 86% rename from hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/jdk/JdkProxyFactory.java rename to hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/jdk/JdkProxyEngine.java index 06fd8aa47..75c88516f 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/jdk/JdkProxyFactory.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/jdk/JdkProxyEngine.java @@ -12,17 +12,16 @@ package org.dromara.hutool.extra.aop.engine.jdk; -import org.dromara.hutool.extra.aop.ProxyFactory; -import org.dromara.hutool.extra.aop.ProxyUtil; import org.dromara.hutool.extra.aop.Aspect; +import org.dromara.hutool.extra.aop.ProxyUtil; +import org.dromara.hutool.extra.aop.engine.ProxyEngine; /** * JDK实现的切面代理 * * @author looly */ -public class JdkProxyFactory implements ProxyFactory { - private static final long serialVersionUID = 1L; +public class JdkProxyEngine implements ProxyEngine { @Override public T proxy(final T target, final Aspect aspect) { diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/spring/SpringCglibProxyFactory.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/spring/SpringCglibProxyEngine.java similarity index 86% rename from hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/spring/SpringCglibProxyFactory.java rename to hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/spring/SpringCglibProxyEngine.java index 651e7033d..cbfb7cc0c 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/spring/SpringCglibProxyFactory.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/engine/spring/SpringCglibProxyEngine.java @@ -12,8 +12,8 @@ package org.dromara.hutool.extra.aop.engine.spring; -import org.dromara.hutool.extra.aop.ProxyFactory; import org.dromara.hutool.extra.aop.Aspect; +import org.dromara.hutool.extra.aop.engine.ProxyEngine; import org.springframework.cglib.proxy.Enhancer; /** @@ -22,8 +22,7 @@ import org.springframework.cglib.proxy.Enhancer; * @author looly * */ -public class SpringCglibProxyFactory implements ProxyFactory { - private static final long serialVersionUID = 1L; +public class SpringCglibProxyEngine implements ProxyEngine { @Override @SuppressWarnings("unchecked") diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/package-info.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/package-info.java index 770cbac08..c66b3e95f 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/package-info.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/aop/package-info.java @@ -17,6 +17,10 @@ *
  • 基于Spring-cglib代理
  • * * 考虑到cglib库不再更新且对JDK9+兼容性问题,不再封装 + *
    + *                            createEngine               proxy
    + *        ProxyEngineFactory       =》      ProxyEngine    =》  Proxy
    + * 
    * * @author looly * diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/PinyinException.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/PinyinException.java index 0f155eb88..29a359eb4 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/PinyinException.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/PinyinException.java @@ -13,37 +13,75 @@ package org.dromara.hutool.extra.pinyin; import org.dromara.hutool.core.exception.ExceptionUtil; +import org.dromara.hutool.core.exception.HutoolException; import org.dromara.hutool.core.text.StrUtil; /** * 模板异常 * - * @author xiaoleilu + * @author looly */ -public class PinyinException extends RuntimeException { +public class PinyinException extends HutoolException { private static final long serialVersionUID = 1L; + /** + * 构造 + * + * @param e 异常 + */ public PinyinException(final Throwable e) { - super(ExceptionUtil.getMessage(e), e); + super(e); } + /** + * 构造 + * + * @param message 消息 + */ public PinyinException(final String message) { super(message); } + /** + * 构造 + * + * @param messageTemplate 消息模板 + * @param params 参数 + */ public PinyinException(final String messageTemplate, final Object... params) { - super(StrUtil.format(messageTemplate, params)); + super(messageTemplate, params); } - public PinyinException(final String message, final Throwable throwable) { - super(message, throwable); + /** + * 构造 + * + * @param message 消息 + * @param cause 被包装的子异常 + */ + public PinyinException(final String message, final Throwable cause) { + super(message, cause); } - public PinyinException(final String message, final Throwable throwable, final boolean enableSuppression, final boolean writableStackTrace) { - super(message, throwable, enableSuppression, writableStackTrace); + /** + * 构造 + * + * @param message 消息 + * @param cause 被包装的子异常 + * @param enableSuppression 是否启用抑制 + * @param writableStackTrace 堆栈跟踪是否应该是可写的 + */ + public PinyinException(final String message, final Throwable cause, final boolean enableSuppression, final boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); } - public PinyinException(final Throwable throwable, final String messageTemplate, final Object... params) { - super(StrUtil.format(messageTemplate, params), throwable); + /** + * 构造 + * + * @param cause 被包装的子异常 + * @param messageTemplate 消息模板 + * @param params 参数 + */ + public PinyinException(final Throwable cause, final String messageTemplate, final Object... params) { + super(cause, messageTemplate, params); } } diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/PinyinUtil.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/PinyinUtil.java index d7df1ae22..f523b8653 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/PinyinUtil.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/PinyinUtil.java @@ -12,25 +12,26 @@ package org.dromara.hutool.extra.pinyin; +import org.dromara.hutool.core.regex.PatternPool; +import org.dromara.hutool.core.regex.ReUtil; import org.dromara.hutool.core.text.StrUtil; -import org.dromara.hutool.extra.pinyin.engine.PinyinFactory; +import org.dromara.hutool.extra.pinyin.engine.PinyinEngine; +import org.dromara.hutool.extra.pinyin.engine.PinyinEngineFactory; /** - * 拼音工具类,封装了TinyPinyin、JPinyin、Pinyin4j,通过SPI自动识别。 + * 拼音工具类,用于快速获取拼音 * * @author looly */ public class PinyinUtil { - private static final String CHINESE_REGEX = "[\\u4e00-\\u9fa5]"; - /** * 获得全局单例的拼音引擎 * * @return 全局单例的拼音引擎 */ - public static PinyinEngine getEngine(){ - return PinyinFactory.get(); + public static PinyinEngine getEngine() { + return PinyinEngineFactory.getEngine(); } /** @@ -92,6 +93,6 @@ public class PinyinUtil { * @return 是否为中文字符 */ public static boolean isChinese(final char c) { - return '〇' == c || String.valueOf(c).matches(CHINESE_REGEX); + return '〇' == c || ReUtil.isMatch(PatternPool.CHINESE, String.valueOf(c)); } } diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/PinyinEngine.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/PinyinEngine.java similarity index 97% rename from hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/PinyinEngine.java rename to hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/PinyinEngine.java index 186085cf0..ab0c71e45 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/PinyinEngine.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/PinyinEngine.java @@ -10,7 +10,7 @@ * See the Mulan PSL v2 for more details. */ -package org.dromara.hutool.extra.pinyin; +package org.dromara.hutool.extra.pinyin.engine; import org.dromara.hutool.core.collection.CollUtil; import org.dromara.hutool.core.text.StrUtil; diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/PinyinFactory.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/PinyinEngineFactory.java similarity index 81% rename from hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/PinyinFactory.java rename to hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/PinyinEngineFactory.java index 5293d0596..3e1cebd56 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/PinyinFactory.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/PinyinEngineFactory.java @@ -15,24 +15,24 @@ package org.dromara.hutool.extra.pinyin.engine; import org.dromara.hutool.core.lang.Singleton; import org.dromara.hutool.core.spi.SpiUtil; import org.dromara.hutool.core.text.StrUtil; -import org.dromara.hutool.extra.pinyin.PinyinEngine; import org.dromara.hutool.extra.pinyin.PinyinException; import org.dromara.hutool.log.StaticLog; /** - * 简单拼音引擎工厂,用于根据用户引入的拼音库jar,自动创建对应的拼音引擎对象 + * 简单拼音引擎工厂,用于根据用户引入的拼音库jar,自动创建对应的拼音引擎对象
    + * 使用简单工厂(Simple Factory)模式 * * @author looly */ -public class PinyinFactory { +public class PinyinEngineFactory { /** * 获得单例的PinyinEngine * * @return 单例的PinyinEngine */ - public static PinyinEngine get(){ - return Singleton.get(PinyinEngine.class.getName(), PinyinFactory::of); + public static PinyinEngine getEngine(){ + return Singleton.get(PinyinEngine.class.getName(), PinyinEngineFactory::createEngine); } /** @@ -41,8 +41,8 @@ public class PinyinFactory { * * @return {@link PinyinEngine} */ - public static PinyinEngine of() { - final PinyinEngine engine = doCreate(); + public static PinyinEngine createEngine() { + final PinyinEngine engine = doCreateEngine(); StaticLog.debug("Use [{}] Engine As Default.", StrUtil.removeSuffix(engine.getClass().getSimpleName(), "Engine")); return engine; } @@ -53,7 +53,7 @@ public class PinyinFactory { * * @return {@link PinyinEngine} */ - private static PinyinEngine doCreate() { + private static PinyinEngine doCreateEngine() { final PinyinEngine engine = SpiUtil.loadFirstAvailable(PinyinEngine.class); if(null != engine){ return engine; diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/bopomofo4j/Bopomofo4jEngine.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/bopomofo4j/Bopomofo4jEngine.java index 15505f14f..1d58ea54d 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/bopomofo4j/Bopomofo4jEngine.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/bopomofo4j/Bopomofo4jEngine.java @@ -13,7 +13,7 @@ package org.dromara.hutool.extra.pinyin.engine.bopomofo4j; import org.dromara.hutool.core.text.StrUtil; -import org.dromara.hutool.extra.pinyin.PinyinEngine; +import org.dromara.hutool.extra.pinyin.engine.PinyinEngine; import com.rnkrsoft.bopomofo4j.Bopomofo4j; import com.rnkrsoft.bopomofo4j.ToneType; @@ -39,6 +39,9 @@ import com.rnkrsoft.bopomofo4j.ToneType; */ public class Bopomofo4jEngine implements PinyinEngine { + /** + * 构造 + */ public Bopomofo4jEngine(){ Bopomofo4j.local(); } diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/houbbpinyin/HoubbPinyinEngine.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/houbbpinyin/HoubbPinyinEngine.java index 41e2e47fc..1eb82461d 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/houbbpinyin/HoubbPinyinEngine.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/houbbpinyin/HoubbPinyinEngine.java @@ -12,7 +12,7 @@ package org.dromara.hutool.extra.pinyin.engine.houbbpinyin; -import org.dromara.hutool.extra.pinyin.PinyinEngine; +import org.dromara.hutool.extra.pinyin.engine.PinyinEngine; import com.github.houbb.pinyin.constant.enums.PinyinStyleEnum; import com.github.houbb.pinyin.util.PinyinHelper; diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/jpinyin/JPinyinEngine.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/jpinyin/JPinyinEngine.java index d3d17e00c..c2e63006e 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/jpinyin/JPinyinEngine.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/jpinyin/JPinyinEngine.java @@ -13,7 +13,7 @@ package org.dromara.hutool.extra.pinyin.engine.jpinyin; import org.dromara.hutool.core.array.ArrayUtil; -import org.dromara.hutool.extra.pinyin.PinyinEngine; +import org.dromara.hutool.extra.pinyin.engine.PinyinEngine; import com.github.stuxuhai.jpinyin.PinyinException; import com.github.stuxuhai.jpinyin.PinyinFormat; import com.github.stuxuhai.jpinyin.PinyinHelper; diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/pinyin4j/Pinyin4jEngine.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/pinyin4j/Pinyin4jEngine.java index 7ed714223..3ec3325d9 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/pinyin4j/Pinyin4jEngine.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/pinyin4j/Pinyin4jEngine.java @@ -13,7 +13,7 @@ package org.dromara.hutool.extra.pinyin.engine.pinyin4j; import org.dromara.hutool.core.array.ArrayUtil; -import org.dromara.hutool.extra.pinyin.PinyinEngine; +import org.dromara.hutool.extra.pinyin.engine.PinyinEngine; import org.dromara.hutool.extra.pinyin.PinyinException; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/tinypinyin/TinyPinyinEngine.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/tinypinyin/TinyPinyinEngine.java index 3c7176f6c..b2143da66 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/tinypinyin/TinyPinyinEngine.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/engine/tinypinyin/TinyPinyinEngine.java @@ -12,7 +12,7 @@ package org.dromara.hutool.extra.pinyin.engine.tinypinyin; -import org.dromara.hutool.extra.pinyin.PinyinEngine; +import org.dromara.hutool.extra.pinyin.engine.PinyinEngine; import com.github.promeg.pinyinhelper.Pinyin; /** diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/package-info.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/package-info.java index 74caac57b..50ba8d38c 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/package-info.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/pinyin/package-info.java @@ -11,7 +11,11 @@ */ /** - * 拼音工具封装,入口为PinyinUtil + * 拼音相关封装 + *
    + *                            createEngine                getPinyin
    + *       PinyinEngineFactory       =》      PinyinEngine      =》     拼音
    + * 
    * * @author looly * diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/servlet/package-info.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/servlet/package-info.java deleted file mode 100644 index b93640888..000000000 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/servlet/package-info.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (c) 2023 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: - * http://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. - */ - -/** - * Servlet封装,包括Servlet参数获取、文件上传、Response写出等,入口为ServletUtil - * - * @author looly - * - */ -package org.dromara.hutool.extra.servlet; diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/template/TemplateConfig.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/template/TemplateConfig.java index 7c913db24..c08732de6 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/template/TemplateConfig.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/template/TemplateConfig.java @@ -28,6 +28,9 @@ import org.dromara.hutool.extra.template.engine.TemplateEngine; public class TemplateConfig implements Serializable { private static final long serialVersionUID = 2933113779920339523L; + /** + * 默认配置 + */ public static final TemplateConfig DEFAULT = new TemplateConfig(); /** @@ -206,17 +209,17 @@ public class TemplateConfig implements Serializable { @Override public boolean equals(final Object o) { - if (this == o){ + if (this == o) { return true; } - if (o == null || getClass() != o.getClass()){ + if (o == null || getClass() != o.getClass()) { return false; } final TemplateConfig that = (TemplateConfig) o; return Objects.equals(charset, that.charset) && - Objects.equals(path, that.path) && - resourceMode == that.resourceMode && - Objects.equals(customEngine, that.customEngine); + Objects.equals(path, that.path) && + resourceMode == that.resourceMode && + Objects.equals(customEngine, that.customEngine); } @Override diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/template/TemplateException.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/template/TemplateException.java index 71dbff557..8be1cf5e3 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/template/TemplateException.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/template/TemplateException.java @@ -12,38 +12,74 @@ package org.dromara.hutool.extra.template; -import org.dromara.hutool.core.exception.ExceptionUtil; -import org.dromara.hutool.core.text.StrUtil; +import org.dromara.hutool.core.exception.HutoolException; /** * 模板异常 * * @author xiaoleilu */ -public class TemplateException extends RuntimeException { +public class TemplateException extends HutoolException { private static final long serialVersionUID = 8247610319171014183L; + /** + * 构造 + * + * @param e 异常 + */ public TemplateException(final Throwable e) { - super(ExceptionUtil.getMessage(e), e); + super(e); } + /** + * 构造 + * + * @param message 消息 + */ public TemplateException(final String message) { super(message); } + /** + * 构造 + * + * @param messageTemplate 消息模板 + * @param params 参数 + */ public TemplateException(final String messageTemplate, final Object... params) { - super(StrUtil.format(messageTemplate, params)); + super(messageTemplate, params); } - public TemplateException(final String message, final Throwable throwable) { - super(message, throwable); + /** + * 构造 + * + * @param message 消息 + * @param cause 被包装的子异常 + */ + public TemplateException(final String message, final Throwable cause) { + super(message, cause); } - public TemplateException(final String message, final Throwable throwable, final boolean enableSuppression, final boolean writableStackTrace) { - super(message, throwable, enableSuppression, writableStackTrace); + /** + * 构造 + * + * @param message 消息 + * @param cause 被包装的子异常 + * @param enableSuppression 是否启用抑制 + * @param writableStackTrace 堆栈跟踪是否应该是可写的 + */ + public TemplateException(final String message, final Throwable cause, final boolean enableSuppression, final boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); } - public TemplateException(final Throwable throwable, final String messageTemplate, final Object... params) { - super(StrUtil.format(messageTemplate, params), throwable); + /** + * 构造 + * + * @param cause 被包装的子异常 + * @param messageTemplate 消息模板 + * @param params 参数 + */ + public TemplateException(final Throwable cause, final String messageTemplate, final Object... params) { + super(cause, messageTemplate, params); } } diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/template/TemplateUtil.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/template/TemplateUtil.java new file mode 100755 index 000000000..c6505ac83 --- /dev/null +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/template/TemplateUtil.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2023 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: + * http://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.extra.template; + +import org.dromara.hutool.extra.template.engine.TemplateEngine; +import org.dromara.hutool.extra.template.engine.TemplateEngineFactory; + +import java.io.Writer; +import java.util.Map; + +/** + * 提供模板工具类,用于快捷模板融合 + * + * @author looly + */ +public class TemplateUtil { + + /** + * 获取单例的模板引擎 + * + * @return {@link TemplateEngine} + */ + public static TemplateEngine getEngine() { + return TemplateEngineFactory.getEngine(); + } + + /** + * 融合模板和参数,返回融合后的内容 + * + * @param templateContent 模板内容 + * @param bindingMap 参数 + * @return 内容 + */ + public static String render(final String templateContent, final Map bindingMap) { + return getEngine().getTemplate(templateContent).render(bindingMap); + } + + /** + * 融合模板和参数,返回融合后的内容 + * + * @param templateContent 模板内容 + * @param bindingMap 参数 + * @param writer 融合内容输出的位置 + */ + public static void render(final String templateContent, final Map bindingMap, final Writer writer) { + getEngine().getTemplate(templateContent).render(bindingMap, writer); + } +} diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/template/TemplateFactory.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/template/engine/TemplateEngineFactory.java similarity index 81% rename from hutool-extra/src/main/java/org/dromara/hutool/extra/template/TemplateFactory.java rename to hutool-extra/src/main/java/org/dromara/hutool/extra/template/engine/TemplateEngineFactory.java index 172e6fac8..8ecc27ebb 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/template/TemplateFactory.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/template/engine/TemplateEngineFactory.java @@ -10,21 +10,23 @@ * See the Mulan PSL v2 for more details. */ -package org.dromara.hutool.extra.template; +package org.dromara.hutool.extra.template.engine; import org.dromara.hutool.core.lang.Singleton; import org.dromara.hutool.core.reflect.ConstructorUtil; import org.dromara.hutool.core.spi.SpiUtil; import org.dromara.hutool.core.text.StrUtil; -import org.dromara.hutool.extra.template.engine.TemplateEngine; +import org.dromara.hutool.extra.template.TemplateConfig; +import org.dromara.hutool.extra.template.TemplateException; import org.dromara.hutool.log.StaticLog; /** - * 简单模板殷勤工厂,用于根据用户引入的模板引擎jar,自动创建对应的模板引擎对象 + * 简单模板引擎工厂,用于根据用户引入的模板引擎jar,自动创建对应的模板引擎对象
    + * 使用简单工厂(Simple Factory)模式 * * @author looly */ -public class TemplateFactory { +public class TemplateEngineFactory { /** * 根据用户引入的模板引擎jar,自动创建对应的模板引擎对象
    @@ -33,7 +35,7 @@ public class TemplateFactory { * @return 单例的TemplateEngine */ public static TemplateEngine getEngine() { - return Singleton.get(TemplateEngine.class.getName(), TemplateFactory::createEngine); + return Singleton.get(TemplateEngine.class.getName(), TemplateEngineFactory::createEngine); } /** @@ -55,7 +57,7 @@ public class TemplateFactory { * @return {@link TemplateEngine} */ public static TemplateEngine createEngine(final TemplateConfig config) { - final TemplateEngine engine = doCreate(config); + final TemplateEngine engine = doCreateEngine(config); StaticLog.debug("Use [{}] Engine As Default.", StrUtil.removeSuffix(engine.getClass().getSimpleName(), "Engine")); return engine; } @@ -67,7 +69,7 @@ public class TemplateFactory { * @param config 模板配置,包括编码、模板文件path等信息 * @return {@link TemplateEngine} */ - private static TemplateEngine doCreate(final TemplateConfig config) { + private static TemplateEngine doCreateEngine(final TemplateConfig config) { final Class customEngineClass = config.getCustomEngine(); final TemplateEngine engine; if (null != customEngineClass) { diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/template/package-info.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/template/package-info.java index f201125ff..bc07ff176 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/template/package-info.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/template/package-info.java @@ -11,10 +11,15 @@ */ /** - * 第三方模板引擎封装,提供统一的接口用于适配第三方模板引擎 + * 第三方模板引擎封装,提供统一的接口用于适配第三方模板引擎,提供: + *
      + *
    • TemplateEngine:模板引擎接口,用于不同引擎的实现。
    • + *
    • Template: 模板接口,用于不同引擎模板对象包装。
    • + *
    • TemplateConfig:模板配置,用于提供公共配置项。
    • + *
    *
    - *
    - *     TemplateFactory   =》   TemplateEngine   =》   Template   =》   内容
    + *                            createEngine                  getTemplate            render
    + *     TemplateEngineFactory       =》      TemplateEngine        =》     Template    =》   内容
      * 
    * * @author looly diff --git a/hutool-extra/src/main/resources/META-INF/services/org.dromara.hutool.extra.aop.ProxyFactory b/hutool-extra/src/main/resources/META-INF/services/org.dromara.hutool.extra.aop.engine.ProxyEngine similarity index 80% rename from hutool-extra/src/main/resources/META-INF/services/org.dromara.hutool.extra.aop.ProxyFactory rename to hutool-extra/src/main/resources/META-INF/services/org.dromara.hutool.extra.aop.engine.ProxyEngine index 830440e23..bf301136b 100644 --- a/hutool-extra/src/main/resources/META-INF/services/org.dromara.hutool.extra.aop.ProxyFactory +++ b/hutool-extra/src/main/resources/META-INF/services/org.dromara.hutool.extra.aop.engine.ProxyEngine @@ -10,5 +10,5 @@ # See the Mulan PSL v2 for more details. # -org.dromara.hutool.extra.aop.engine.spring.SpringCglibProxyFactory -org.dromara.hutool.extra.aop.engine.jdk.JdkProxyFactory +org.dromara.hutool.extra.aop.engine.spring.SpringCglibProxyEngine +org.dromara.hutool.extra.aop.engine.jdk.JdkProxyEngine diff --git a/hutool-extra/src/main/resources/META-INF/services/org.dromara.hutool.extra.pinyin.PinyinEngine b/hutool-extra/src/main/resources/META-INF/services/org.dromara.hutool.extra.pinyin.engine.PinyinEngine similarity index 100% rename from hutool-extra/src/main/resources/META-INF/services/org.dromara.hutool.extra.pinyin.PinyinEngine rename to hutool-extra/src/main/resources/META-INF/services/org.dromara.hutool.extra.pinyin.engine.PinyinEngine diff --git a/hutool-extra/src/test/java/org/dromara/hutool/extra/template/JetbrickTest.java b/hutool-extra/src/test/java/org/dromara/hutool/extra/template/JetbrickTest.java index c681fcc5b..348cf4f6e 100644 --- a/hutool-extra/src/test/java/org/dromara/hutool/extra/template/JetbrickTest.java +++ b/hutool-extra/src/test/java/org/dromara/hutool/extra/template/JetbrickTest.java @@ -3,6 +3,7 @@ package org.dromara.hutool.extra.template; import org.dromara.hutool.core.map.Dict; import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.extra.template.engine.TemplateEngine; +import org.dromara.hutool.extra.template.engine.TemplateEngineFactory; import org.dromara.hutool.extra.template.engine.jetbrick.JetbrickEngine; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -14,7 +15,7 @@ public class JetbrickTest { //classpath模板 final TemplateConfig config = new TemplateConfig("templates", TemplateConfig.ResourceMode.CLASSPATH) .setCustomEngine(JetbrickEngine.class); - final TemplateEngine engine = TemplateFactory.createEngine(config); + final TemplateEngine engine = TemplateEngineFactory.createEngine(config); final Template template = engine.getTemplate("jetbrick_test.jetx"); final String result = template.render(Dict.of().set("name", "hutool")); Assertions.assertEquals("你好,hutool", StrUtil.trim(result)); @@ -25,7 +26,7 @@ public class JetbrickTest { // 字符串模板 final TemplateConfig config = new TemplateConfig("templates", TemplateConfig.ResourceMode.STRING) .setCustomEngine(JetbrickEngine.class); - final TemplateEngine engine = TemplateFactory.createEngine(config); + final TemplateEngine engine = TemplateEngineFactory.createEngine(config); final Template template = engine.getTemplate("hello,${name}"); final String result = template.render(Dict.of().set("name", "hutool")); Assertions.assertEquals("hello,hutool", StrUtil.trim(result)); diff --git a/hutool-extra/src/test/java/org/dromara/hutool/extra/template/TemplateFactoryTest.java b/hutool-extra/src/test/java/org/dromara/hutool/extra/template/TemplateFactoryTest.java index d026a2d56..5ca602084 100644 --- a/hutool-extra/src/test/java/org/dromara/hutool/extra/template/TemplateFactoryTest.java +++ b/hutool-extra/src/test/java/org/dromara/hutool/extra/template/TemplateFactoryTest.java @@ -4,6 +4,7 @@ import org.dromara.hutool.core.map.Dict; import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.extra.template.TemplateConfig.ResourceMode; import org.dromara.hutool.extra.template.engine.TemplateEngine; +import org.dromara.hutool.extra.template.engine.TemplateEngineFactory; import org.dromara.hutool.extra.template.engine.beetl.BeetlEngine; import org.dromara.hutool.extra.template.engine.enjoy.EnjoyEngine; import org.dromara.hutool.extra.template.engine.freemarker.FreemarkerEngine; @@ -31,13 +32,13 @@ public class TemplateFactoryTest { @Test public void createEngineTest() { // 字符串模板, 默认模板引擎,此处为Beetl - TemplateEngine engine = TemplateFactory.createEngine(new TemplateConfig()); + TemplateEngine engine = TemplateEngineFactory.createEngine(new TemplateConfig()); final Template template = engine.getTemplate("hello,${name}"); final String result = template.render(Dict.of().set("name", "hutool")); Assertions.assertEquals("hello,hutool", result); // classpath中获取模板 - engine = TemplateFactory.createEngine(new TemplateConfig("templates", ResourceMode.CLASSPATH)); + engine = TemplateEngineFactory.createEngine(new TemplateConfig("templates", ResourceMode.CLASSPATH)); final Template template2 = engine.getTemplate("beetl_test.btl"); final String result2 = template2.render(Dict.of().set("name", "hutool")); Assertions.assertEquals("hello,hutool", result2); @@ -61,7 +62,7 @@ public class TemplateFactoryTest { @Test public void rythmEngineTest() { // 字符串模板 - final TemplateEngine engine = TemplateFactory.createEngine( + final TemplateEngine engine = TemplateEngineFactory.createEngine( new TemplateConfig("templates").setCustomEngine(RythmEngine.class)); final Template template = engine.getTemplate("hello,@name"); final String result = template.render(Dict.of().set("name", "hutool")); @@ -76,14 +77,14 @@ public class TemplateFactoryTest { @Test public void freemarkerEngineTest() { // 字符串模板 - TemplateEngine engine = TemplateFactory.createEngine( + TemplateEngine engine = TemplateEngineFactory.createEngine( new TemplateConfig("templates", ResourceMode.STRING).setCustomEngine(FreemarkerEngine.class)); Template template = engine.getTemplate("hello,${name}"); String result = template.render(Dict.of().set("name", "hutool")); Assertions.assertEquals("hello,hutool", result); //ClassPath模板 - engine = TemplateFactory.createEngine( + engine = TemplateEngineFactory.createEngine( new TemplateConfig("templates", ResourceMode.CLASSPATH).setCustomEngine(FreemarkerEngine.class)); template = engine.getTemplate("freemarker_test.ftl"); result = template.render(Dict.of().set("name", "hutool")); @@ -93,14 +94,14 @@ public class TemplateFactoryTest { @Test public void velocityEngineTest() { // 字符串模板 - TemplateEngine engine = TemplateFactory.createEngine( + TemplateEngine engine = TemplateEngineFactory.createEngine( new TemplateConfig("templates", ResourceMode.STRING).setCustomEngine(VelocityEngine.class)); Template template = engine.getTemplate("你好,$name"); String result = template.render(Dict.of().set("name", "hutool")); Assertions.assertEquals("你好,hutool", result); //ClassPath模板 - engine = TemplateFactory.createEngine( + engine = TemplateEngineFactory.createEngine( new TemplateConfig("templates", ResourceMode.CLASSPATH).setCustomEngine(VelocityEngine.class)); template = engine.getTemplate("velocity_test.vtl"); result = template.render(Dict.of().set("name", "hutool")); @@ -114,7 +115,7 @@ public class TemplateFactoryTest { @Test public void enjoyEngineTest() { // 字符串模板 - TemplateEngine engine = TemplateFactory.createEngine( + TemplateEngine engine = TemplateEngineFactory.createEngine( new TemplateConfig("templates").setCustomEngine(EnjoyEngine.class)); Template template = engine.getTemplate("#(x + 123)"); String result = template.render(Dict.of().set("x", 1)); @@ -131,14 +132,14 @@ public class TemplateFactoryTest { @Test public void thymeleafEngineTest() { // 字符串模板 - TemplateEngine engine = TemplateFactory.createEngine( + TemplateEngine engine = TemplateEngineFactory.createEngine( new TemplateConfig("templates").setCustomEngine(ThymeleafEngine.class)); Template template = engine.getTemplate("

    "); String result = template.render(Dict.of().set("message", "Hutool")); Assertions.assertEquals("

    Hutool

    ", result); //ClassPath模板 - engine = TemplateFactory.createEngine( + engine = TemplateEngineFactory.createEngine( new TemplateConfig("templates", ResourceMode.CLASSPATH).setCustomEngine(ThymeleafEngine.class)); template = engine.getTemplate("thymeleaf_test.ttl"); result = template.render(Dict.of().set("message", "Hutool")); @@ -151,13 +152,13 @@ public class TemplateFactoryTest { @Test public void pebbleEngineTest() { // 字符串模板 - TemplateEngine engine = TemplateFactory.createEngine(new TemplateConfig("templates").setCustomEngine(PebbleTemplateEngine.class)); + TemplateEngine engine = TemplateEngineFactory.createEngine(new TemplateConfig("templates").setCustomEngine(PebbleTemplateEngine.class)); Template template = engine.getTemplate("

    {{ message }}

    "); String result = template.render(Dict.of().set("message", "Hutool")); Assertions.assertEquals("

    Hutool

    ", result); //ClassPath模板 - engine = TemplateFactory.createEngine(new TemplateConfig("templates", ResourceMode.CLASSPATH).setCustomEngine(PebbleTemplateEngine.class)); + engine = TemplateEngineFactory.createEngine(new TemplateConfig("templates", ResourceMode.CLASSPATH).setCustomEngine(PebbleTemplateEngine.class)); template = engine.getTemplate("pebble_test.peb"); result = template.render(Dict.of().set("name", "Hutool")); Assertions.assertEquals("hello, Hutool", result); @@ -180,7 +181,7 @@ public class TemplateFactoryTest { //classpath模板 TemplateConfig config = new TemplateConfig("templates", ResourceMode.CLASSPATH) .setCustomEngine(WitEngine.class); - TemplateEngine engine = TemplateFactory.createEngine(config); + TemplateEngine engine = TemplateEngineFactory.createEngine(config); Template template = engine.getTemplate("/wit_test.wit"); String result = template.render(Dict.of().set("name", "hutool")); Assertions.assertEquals("hello,hutool", StrUtil.trim(result)); @@ -188,7 +189,7 @@ public class TemplateFactoryTest { // 字符串模板 config = new TemplateConfig("templates", ResourceMode.STRING) .setCustomEngine(WitEngine.class); - engine = TemplateFactory.createEngine(config); + engine = TemplateEngineFactory.createEngine(config); template = engine.getTemplate("<%var name;%>hello,${name}"); result = template.render(Dict.of().set("name", "hutool")); Assertions.assertEquals("hello,hutool", StrUtil.trim(result)); diff --git a/hutool-extra/src/test/java/org/dromara/hutool/extra/template/ThymeleafTest.java b/hutool-extra/src/test/java/org/dromara/hutool/extra/template/ThymeleafTest.java index 61d86f2f2..73c0451dd 100644 --- a/hutool-extra/src/test/java/org/dromara/hutool/extra/template/ThymeleafTest.java +++ b/hutool-extra/src/test/java/org/dromara/hutool/extra/template/ThymeleafTest.java @@ -3,6 +3,7 @@ package org.dromara.hutool.extra.template; import org.dromara.hutool.core.date.DateUtil; import org.dromara.hutool.core.map.Dict; import org.dromara.hutool.extra.template.engine.TemplateEngine; +import org.dromara.hutool.extra.template.engine.TemplateEngineFactory; import org.dromara.hutool.extra.template.engine.thymeleaf.ThymeleafEngine; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Disabled; @@ -29,7 +30,7 @@ public class ThymeleafTest { @Test @Disabled public void addDialectTest(){ - final TemplateEngine engine = TemplateFactory.createEngine(); + final TemplateEngine engine = TemplateEngineFactory.createEngine(); if(engine instanceof ThymeleafEngine){ final org.thymeleaf.TemplateEngine rawEngine = ((ThymeleafEngine) engine).getRawEngine(); rawEngine.addDialect(new StandardDialect()); diff --git a/hutool-extra/src/test/java/org/dromara/hutool/extra/template/VelocityTest.java b/hutool-extra/src/test/java/org/dromara/hutool/extra/template/VelocityTest.java index 39118381f..667c5b63f 100644 --- a/hutool-extra/src/test/java/org/dromara/hutool/extra/template/VelocityTest.java +++ b/hutool-extra/src/test/java/org/dromara/hutool/extra/template/VelocityTest.java @@ -3,6 +3,7 @@ package org.dromara.hutool.extra.template; import org.dromara.hutool.core.map.Dict; import org.dromara.hutool.core.util.CharsetUtil; import org.dromara.hutool.extra.template.engine.TemplateEngine; +import org.dromara.hutool.extra.template.engine.TemplateEngineFactory; import org.dromara.hutool.extra.template.engine.velocity.VelocityEngine; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -14,7 +15,7 @@ public class VelocityTest { final TemplateConfig config = new TemplateConfig("templates", TemplateConfig.ResourceMode.CLASSPATH); config.setCustomEngine(VelocityEngine.class); config.setCharset(CharsetUtil.GBK); - final TemplateEngine engine = TemplateFactory.createEngine(config); + final TemplateEngine engine = TemplateEngineFactory.createEngine(config); final Template template = engine.getTemplate("velocity_test_gbk.vtl"); final String result = template.render(Dict.of().set("name", "hutool")); Assertions.assertEquals("你好,hutool", result);