diff --git a/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/EasyormRepositoryRegistrar.java b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/EasyormRepositoryRegistrar.java index 8989e8c9b..d99a4d75e 100644 --- a/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/EasyormRepositoryRegistrar.java +++ b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/EasyormRepositoryRegistrar.java @@ -62,7 +62,7 @@ public class EasyormRepositoryRegistrar implements ImportBeanDefinitionRegistrar for (Resource resource : resourcePatternResolver.getResources(path)) { MetadataReader reader = metadataReaderFactory.getMetadataReader(resource); String className = reader.getClassMetadata().getClassName(); - Class entityType = Class.forName(className); + Class entityType = org.springframework.util.ClassUtils.forName(className,null); if (Arrays.stream(anno) .noneMatch(ann -> AnnotationUtils.findAnnotation(entityType, ann) != null)) { continue; diff --git a/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/entity/factory/MapperEntityFactory.java b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/entity/factory/MapperEntityFactory.java index b8e2374b0..ce327055b 100644 --- a/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/entity/factory/MapperEntityFactory.java +++ b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/entity/factory/MapperEntityFactory.java @@ -44,7 +44,7 @@ public class MapperEntityFactory implements EntityFactory, BeanFactory { private static final DefaultMapperFactory DEFAULT_MAPPER_FACTORY = clazz -> { String simpleClassName = clazz.getPackage().getName().concat(".Simple").concat(clazz.getSimpleName()); try { - return defaultMapper(Class.forName(simpleClassName)); + return defaultMapper(org.springframework.util.ClassUtils.forName(simpleClassName,null)); } catch (ClassNotFoundException ignore) { // throw new NotFoundException(e.getMessage()); } diff --git a/hsweb-core/src/main/java/org/hswebframework/web/bean/FastBeanCopier.java b/hsweb-core/src/main/java/org/hswebframework/web/bean/FastBeanCopier.java index 44f59310d..b9deebbed 100644 --- a/hsweb-core/src/main/java/org/hswebframework/web/bean/FastBeanCopier.java +++ b/hsweb-core/src/main/java/org/hswebframework/web/bean/FastBeanCopier.java @@ -33,7 +33,7 @@ public final class FastBeanCopier { private static final PropertyUtilsBean propertyUtils = BeanUtilsBean.getInstance().getPropertyUtils(); - private static final Map wrapperClassMapping = new HashMap<>(); + private static final Map, Class> wrapperClassMapping = new HashMap<>(); @SuppressWarnings("all") public static final Class[] EMPTY_CLASS_ARRAY = new Class[0]; @@ -63,6 +63,7 @@ public final class FastBeanCopier { BEAN_FACTORY = new BeanFactory() { @Override @SneakyThrows + @SuppressWarnings("all") public T newInstance(Class beanType) { return beanType == Map.class ? (T) new HashMap<>() : beanType.newInstance(); } @@ -114,14 +115,14 @@ public final class FastBeanCopier { return target; } - static Class getUserClass(Object object) { + static Class getUserClass(Object object) { if (object instanceof Map) { return Map.class; } - Class type = ClassUtils.getUserClass(object); + Class type = ClassUtils.getUserClass(object); if (java.lang.reflect.Proxy.isProxyClass(type)) { - Class[] interfaces= type.getInterfaces(); + Class[] interfaces= type.getInterfaces(); return interfaces[0]; } @@ -129,8 +130,8 @@ public final class FastBeanCopier { } public static Copier getCopier(Object source, Object target, boolean autoCreate) { - Class sourceType = getUserClass(source); - Class targetType = getUserClass(target); + Class sourceType = getUserClass(source); + Class targetType = getUserClass(target); CacheKey key = createCacheKey(sourceType, targetType); if (autoCreate) { return CACHE.computeIfAbsent(key, k -> createCopier(sourceType, targetType)); @@ -140,11 +141,11 @@ public final class FastBeanCopier { } - private static CacheKey createCacheKey(Class source, Class target) { + private static CacheKey createCacheKey(Class source, Class target) { return new CacheKey(source, target); } - public static Copier createCopier(Class source, Class target) { + public static Copier createCopier(Class source, Class target) { String sourceName = source.getName(); String tartName = target.getName(); if (sourceName.startsWith("package ")) { @@ -173,7 +174,7 @@ public final class FastBeanCopier { } } - private static Map createProperty(Class type) { + private static Map createProperty(Class type) { List fieldNames = Arrays.stream(type.getDeclaredFields()) .map(Field::getName).collect(Collectors.toList()); @@ -192,7 +193,7 @@ public final class FastBeanCopier { .collect(Collectors.toMap(ClassProperty::getName, Function.identity(), (k, k2) -> k, LinkedHashMap::new)); } - private static String createCopierCode(Class source, Class target) { + private static String createCopierCode(Class source, Class target) { Map sourceProperties = null; Map targetProperties = null; @@ -259,16 +260,16 @@ public final class FastBeanCopier { protected String writeMethodName; @Getter - protected BiFunction getter; + protected BiFunction, Class, String> getter; @Getter - protected BiFunction setter; + protected BiFunction, String, String> setter; @Getter - protected Class type; + protected Class type; @Getter - protected Class beanType; + protected Class beanType; public String getReadMethod() { return readMethodName + "()"; @@ -282,7 +283,7 @@ public final class FastBeanCopier { return getTypeName(type); } - public String getTypeName(Class type) { + public String getTypeName(Class type) { String targetTypeName = type.getName(); if (type.isArray()) { targetTypeName = type.getComponentType().getName() + "[]"; @@ -294,7 +295,7 @@ public final class FastBeanCopier { return isPrimitive(getType()); } - public boolean isPrimitive(Class type) { + public boolean isPrimitive(Class type) { return type.isPrimitive(); } @@ -302,11 +303,11 @@ public final class FastBeanCopier { return isWrapper(getType()); } - public boolean isWrapper(Class type) { - return wrapperClassMapping.values().contains(type); + public boolean isWrapper(Class type) { + return wrapperClassMapping.containsValue(type); } - protected Class getPrimitiveType(Class type) { + protected Class getPrimitiveType(Class type) { return wrapperClassMapping.entrySet().stream() .filter(entry -> entry.getValue() == type) .map(Map.Entry::getKey) @@ -314,7 +315,7 @@ public final class FastBeanCopier { .orElse(null); } - protected Class getWrapperType() { + protected Class getWrapperType() { return wrapperClassMapping.get(type); } @@ -322,7 +323,7 @@ public final class FastBeanCopier { return getWrapperType().getSimpleName().concat(".valueOf(").concat(getter).concat(")"); } - public BiFunction createGetterFunction() { + public BiFunction, Class, String> createGetterFunction() { return (targetBeanType, targetType) -> { String getterCode = "$$__source." + getReadMethod(); @@ -349,9 +350,9 @@ public final class FastBeanCopier { if (targetType != getType()) { if (isPrimitive(targetType)) { boolean sourceIsWrapper = isWrapper(); - Class targetWrapperClass = wrapperClassMapping.get(targetType); + Class targetWrapperClass = wrapperClassMapping.get(targetType); - Class sourcePrimitive = getPrimitiveType(getType()); + Class sourcePrimitive = getPrimitiveType(getType()); //目标字段是基本数据类型,源字段是包装器类型 // source.getField().intValue(); if (sourceIsWrapper) { @@ -416,15 +417,15 @@ public final class FastBeanCopier { }; } - public BiFunction createSetterFunction(Function settingNameSupplier) { + public BiFunction, String, String> createSetterFunction(Function settingNameSupplier) { return (sourceType, paramGetter) -> settingNameSupplier.apply(paramGetter); } - public String generateGetter(Class targetBeanType, Class targetType) { + public String generateGetter(Class targetBeanType, Class targetType) { return getGetter().apply(targetBeanType, targetType); } - public String generateSetter(Class targetType, String getter) { + public String generateSetter(Class targetType, String getter) { return getSetter().apply(targetType, getter); } } @@ -474,7 +475,7 @@ public final class FastBeanCopier { this.beanFactory = beanFactory; } - public Collection newCollection(Class targetClass) { + public Collection newCollection(Class targetClass) { if (targetClass == List.class) { return new ArrayList<>(); @@ -484,7 +485,7 @@ public final class FastBeanCopier { return new LinkedList<>(); } else { try { - return (Collection) targetClass.newInstance(); + return (Collection) targetClass.newInstance(); } catch (Exception e) { throw new UnsupportedOperationException("不支持的类型:" + targetClass, e); } @@ -602,9 +603,9 @@ public final class FastBeanCopier { @AllArgsConstructor public static class CacheKey { - private Class targetType; + private final Class targetType; - private Class sourceType; + private final Class sourceType; @Override public boolean equals(Object obj) { diff --git a/hsweb-core/src/main/java/org/hswebframework/web/proxy/Proxy.java b/hsweb-core/src/main/java/org/hswebframework/web/proxy/Proxy.java index ba53b7f33..cf6c1b3d0 100644 --- a/hsweb-core/src/main/java/org/hswebframework/web/proxy/Proxy.java +++ b/hsweb-core/src/main/java/org/hswebframework/web/proxy/Proxy.java @@ -45,10 +45,9 @@ public class Proxy { throw new NullPointerException("superClass can not be null"); } this.superClass = superClass; - ClassPool classPool = new ClassPool(true); + ClassPool classPool = ClassPool.getDefault(); - ClassPath classPath = new ClassClassPath(this.getClass()); - classPool.insertClassPath(classPath); + classPool.insertClassPath(new ClassClassPath(this.getClass())); classPool.insertClassPath(new LoaderClassPath(ClassUtils.getDefaultClassLoader())); if (classPathString != null) { diff --git a/hsweb-datasource/hsweb-datasource-jta/src/main/java/org/hswebframework/web/datasource/jta/AtomikosDataSourceConfig.java b/hsweb-datasource/hsweb-datasource-jta/src/main/java/org/hswebframework/web/datasource/jta/AtomikosDataSourceConfig.java index c91c36cf4..b1c9019f4 100644 --- a/hsweb-datasource/hsweb-datasource-jta/src/main/java/org/hswebframework/web/datasource/jta/AtomikosDataSourceConfig.java +++ b/hsweb-datasource/hsweb-datasource-jta/src/main/java/org/hswebframework/web/datasource/jta/AtomikosDataSourceConfig.java @@ -7,6 +7,7 @@ import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.hswebframework.web.bean.FastBeanCopier; import org.hswebframework.web.datasource.config.DynamicDataSourceConfig; +import org.springframework.util.ClassUtils; import javax.sql.XADataSource; import java.sql.SQLException; @@ -42,7 +43,7 @@ public class AtomikosDataSourceConfig extends DynamicDataSourceConfig { xaProperties.entrySet().forEach(entry -> entry.setValue(String.valueOf(entry.getValue()))); } //fix #87 - XADataSource dataSource = (XADataSource) Class.forName(getXaDataSourceClassName()).newInstance(); + XADataSource dataSource = (XADataSource) ClassUtils.forName(getXaDataSourceClassName(),null).newInstance(); FastBeanCopier.copy(xaProperties, dataSource); atomikosDataSourceBean.setXaDataSource(dataSource); diff --git a/hsweb-system/hsweb-system-dictionary/src/main/java/org/hswebframework/web/dictionary/configuration/DictionaryProperties.java b/hsweb-system/hsweb-system-dictionary/src/main/java/org/hswebframework/web/dictionary/configuration/DictionaryProperties.java index cbe04892c..53219ad47 100644 --- a/hsweb-system/hsweb-system-dictionary/src/main/java/org/hswebframework/web/dictionary/configuration/DictionaryProperties.java +++ b/hsweb-system/hsweb-system-dictionary/src/main/java/org/hswebframework/web/dictionary/configuration/DictionaryProperties.java @@ -41,7 +41,7 @@ public class DictionaryProperties { try { MetadataReader reader = metadataReaderFactory.getMetadataReader(resource); String name = reader.getClassMetadata().getClassName(); - Class clazz = Class.forName(name); + Class clazz = ClassUtils.forName(name,null); if (clazz.isEnum() && EnumDict.class.isAssignableFrom(clazz)) { classes.add(clazz); }