From 1ba4f4a86b99e41444ba5f334fcc0ed36cf5f2ac Mon Sep 17 00:00:00 2001 From: Looly Date: Tue, 18 Apr 2023 23:12:29 +0800 Subject: [PATCH] fix code --- .../hutool/core/reflect/ReflectUtil.java | 9 +--- .../hutool/core/spi/AbsServiceLoader.java | 4 -- .../hutool/core/spi/ListServiceLoader.java | 27 ++++-------- .../hutool/core/spi/MapServiceLoader.java | 26 ++++-------- .../hutool/core/stream/EasyStream.java | 2 +- .../dromara/hutool/core/util/AccessUtil.java | 41 ------------------- 6 files changed, 17 insertions(+), 92 deletions(-) delete mode 100644 hutool-core/src/main/java/org/dromara/hutool/core/util/AccessUtil.java diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/reflect/ReflectUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/reflect/ReflectUtil.java index 2809023ac..3edc14af5 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/reflect/ReflectUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/reflect/ReflectUtil.java @@ -13,8 +13,6 @@ package org.dromara.hutool.core.reflect; import java.lang.reflect.*; -import java.security.AccessController; -import java.security.PrivilegedAction; /** * 反射工具类 @@ -51,11 +49,8 @@ public class ReflectUtil { */ public static T setAccessible(final T accessibleObject) throws SecurityException { if (null != accessibleObject && !accessibleObject.isAccessible()) { - return AccessController.doPrivileged((PrivilegedAction) () -> { - // 特权访问 - accessibleObject.setAccessible(true); - return accessibleObject; - }); + accessibleObject.setAccessible(true); + return accessibleObject; } return accessibleObject; } diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/spi/AbsServiceLoader.java b/hutool-core/src/main/java/org/dromara/hutool/core/spi/AbsServiceLoader.java index c756a78bd..cd1b17843 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/spi/AbsServiceLoader.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/spi/AbsServiceLoader.java @@ -15,8 +15,6 @@ package org.dromara.hutool.core.spi; import org.dromara.hutool.core.text.StrUtil; import java.nio.charset.Charset; -import java.security.AccessControlContext; -import java.security.AccessController; /** * 抽象服务加载器,提供包括路径前缀、服务类、类加载器、编码、安全相关持有 @@ -31,7 +29,6 @@ public abstract class AbsServiceLoader implements ServiceLoader { protected final Class serviceClass; protected final ClassLoader classLoader; protected final Charset charset; - protected final AccessControlContext acc; /** * 构造 @@ -47,6 +44,5 @@ public abstract class AbsServiceLoader implements ServiceLoader { this.serviceClass = serviceClass; this.classLoader = classLoader; this.charset = charset; - this.acc = (System.getSecurityManager() != null) ? AccessController.getContext() : null; } } diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/spi/ListServiceLoader.java b/hutool-core/src/main/java/org/dromara/hutool/core/spi/ListServiceLoader.java index f80a4f63c..54ddc23a7 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/spi/ListServiceLoader.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/spi/ListServiceLoader.java @@ -20,7 +20,6 @@ import org.dromara.hutool.core.io.resource.Resource; import org.dromara.hutool.core.io.resource.ResourceUtil; import org.dromara.hutool.core.reflect.ConstructorUtil; import org.dromara.hutool.core.text.StrUtil; -import org.dromara.hutool.core.util.AccessUtil; import java.io.BufferedReader; import java.io.IOException; @@ -144,7 +143,12 @@ public class ListServiceLoader extends AbsServiceLoader { * @return 服务名称对应的实现类 */ public Class getServiceClass(final int index) { - return AccessUtil.doPrivileged(() -> getServiceClassUnsafe(index), this.acc); + final String serviceClassName = this.serviceNames.get(index); + if (StrUtil.isBlank(serviceClassName)) { + return null; + } + + return ClassLoaderUtil.loadClass(serviceClassName); } /** @@ -285,24 +289,7 @@ public class ListServiceLoader extends AbsServiceLoader { * @return 服务对象 */ private S createService(final String serviceClassName) { - return AccessUtil.doPrivileged(() -> - ConstructorUtil.newInstance(ClassLoaderUtil.loadClass(serviceClassName)), - this.acc); - } - - /** - * 获取指定服务的实现类 - * - * @param index 服务索引号 - * @return 服务名称对应的实现类 - */ - private Class getServiceClassUnsafe(final int index) { - final String serviceClassName = this.serviceNames.get(index); - if (StrUtil.isBlank(serviceClassName)) { - return null; - } - - return ClassLoaderUtil.loadClass(serviceClassName); + return ConstructorUtil.newInstance(ClassLoaderUtil.loadClass(serviceClassName)); } // endregion } diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/spi/MapServiceLoader.java b/hutool-core/src/main/java/org/dromara/hutool/core/spi/MapServiceLoader.java index ec595dcf5..d884dcbb6 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/spi/MapServiceLoader.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/spi/MapServiceLoader.java @@ -17,7 +17,6 @@ import org.dromara.hutool.core.classloader.ClassLoaderUtil; import org.dromara.hutool.core.io.resource.ResourceUtil; import org.dromara.hutool.core.reflect.ConstructorUtil; import org.dromara.hutool.core.text.StrUtil; -import org.dromara.hutool.core.util.AccessUtil; import java.nio.charset.Charset; import java.util.HashMap; @@ -136,7 +135,12 @@ public class MapServiceLoader extends AbsServiceLoader { * @return 服务名称对应的实现类 */ public Class getServiceClass(final String serviceName) { - return AccessUtil.doPrivileged(() -> getServiceClassUnsafe(serviceName), this.acc); + final String serviceClassName = this.serviceProperties.getProperty(serviceName); + if (StrUtil.isBlank(serviceClassName)) { + return null; + } + + return ClassLoaderUtil.loadClass(serviceClassName); } /** @@ -176,23 +180,7 @@ public class MapServiceLoader extends AbsServiceLoader { * @return 服务对象 */ private S createService(final String serviceName) { - return AccessUtil.doPrivileged(() -> - ConstructorUtil.newInstance(getServiceClassUnsafe(serviceName)), this.acc); - } - - /** - * 获取指定服务的实现类 - * - * @param serviceName 服务名称 - * @return 服务名称对应的实现类 - */ - private Class getServiceClassUnsafe(final String serviceName) { - final String serviceClassName = this.serviceProperties.getProperty(serviceName); - if (StrUtil.isBlank(serviceClassName)) { - return null; - } - - return ClassLoaderUtil.loadClass(serviceClassName); + return ConstructorUtil.newInstance(getServiceClass(serviceName)); } // endregion } diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/stream/EasyStream.java b/hutool-core/src/main/java/org/dromara/hutool/core/stream/EasyStream.java index 5d88479e7..006616a5f 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/stream/EasyStream.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/stream/EasyStream.java @@ -370,7 +370,7 @@ public class EasyStream extends AbstractEnhancedWrappedStream avg(final Function mapper, final int scale, final RoundingMode roundingMode) { //元素列表 - List bigDecimalList = stream.map(mapper).collect(Collectors.toList()); + final List bigDecimalList = stream.map(mapper).collect(Collectors.toList()); if (CollUtil.isEmpty(bigDecimalList)) { return Opt.empty(); } diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/util/AccessUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/util/AccessUtil.java deleted file mode 100644 index a36f6ec53..000000000 --- a/hutool-core/src/main/java/org/dromara/hutool/core/util/AccessUtil.java +++ /dev/null @@ -1,41 +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.core.util; - -import java.security.AccessControlContext; -import java.security.AccessController; -import java.security.PrivilegedAction; - -/** - * {@link AccessController}相关封装 - * - * @author looly - * @since 6.0.0 - */ -public class AccessUtil { - - /** - * @param action 执行内容 - * @param context 上下文,当为{@code null}时直接执行内容,而不检查 - * @param 执行结果类型 - * @return 结果 - */ - public static T doPrivileged(final PrivilegedAction action, - final AccessControlContext context) { - if (null == context) { - return action.run(); - } - - return AccessController.doPrivileged(action, context); - } -}