diff --git a/common-base/src/main/java/com/gitee/l0km/com4j/base/MiscellaneousUtils.java b/common-base/src/main/java/com/gitee/l0km/com4j/base/MiscellaneousUtils.java index 1e74d37187956e4a8c99e2ef3e72417f648ef1eb..98247af81075a343475a016f068c3bc79969cf9c 100644 --- a/common-base/src/main/java/com/gitee/l0km/com4j/base/MiscellaneousUtils.java +++ b/common-base/src/main/java/com/gitee/l0km/com4j/base/MiscellaneousUtils.java @@ -66,7 +66,7 @@ public class MiscellaneousUtils { if(null==lineSeparator){ bw.newLine(); }else{ - bw.write("\n"); + bw.write(lineSeparator); } } bw.flush(); diff --git a/common-base2/pom.xml b/common-base2/pom.xml index ec645a4a39fcdbae8520473b399e73b859dbbf62..ea528a9365122a7aa19335669d67f4f335c2d769 100644 --- a/common-base2/pom.xml +++ b/common-base2/pom.xml @@ -128,6 +128,10 @@ 1.7 true true + ignore diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/BaseTypeTransformer.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/BaseTypeTransformer.java index f797d484dc7a3fcbf775560be8b54f2b9bd48159..4581b4335383cb1348d24cff12a6fdf23663e0f7 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/BaseTypeTransformer.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/BaseTypeTransformer.java @@ -41,6 +41,7 @@ import java.util.SortedSet; import java.util.TreeMap; import java.util.TreeSet; import java.util.UUID; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; @@ -769,7 +770,7 @@ public class BaseTypeTransformer{ * @since 4.4.0 */ @SuppressWarnings({ "rawtypes", "unchecked" }) - @AoWeakCacheable + @AoWeakCacheable(expireAfterAccess = 16, expireAfterAccessTimeUnit = TimeUnit.SECONDS) protected Function getTransformer(final TypeToken left, final TypeToken right) { checkArgument(null != left && null != right, "left, right must not be null"); Function result = getTransformer0(left, right, true); diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/BaseBeanPropertySupport.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/BaseBeanPropertySupport.java index 4f2a1ce2e77755588bfb5a95b5399af6d0445260..7971c1c9b8650c74d4db6b5b48b4f7fb322b0496 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/BaseBeanPropertySupport.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/BaseBeanPropertySupport.java @@ -92,10 +92,12 @@ public abstract class BaseBeanPropertySupport { * 获取beanClass中所有具有指定读写类型(rw)的属性名集合 * @param beanClass * @param rw 属性类型标记
+ * * @param lenient 是否为宽容模式---允许返回类型不为void的setter方法 * @return 属性名与PropertyDescriptor映射的Map对象 * @since 2.8.0 @@ -950,6 +952,11 @@ public abstract class BaseBeanPropertySupport { private void supplementNullPropertiesFrom(Object dest, Object orig, BaseTypeTransformer typeTransformer, ContextProvider... features) { if (null != dest && null != orig && features.length != 0) { + /** + * 遍历目标对象所有可写入字段, + * 当目标字段为 null,且源对象不存在该属性的读取方法, + * 对 null 执行转换,如果转换结果不为 null,则设置到属性中 + */ for (String name : getPropertyNames(dest, 2, true)) { Object value = getProperty(dest, name); if (value == null && !isReadable(orig, name)) { diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/MultiCaseMatcher.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/MultiCaseMatcher.java index c7ad4da4773c620e49c80906ad147ea9aa58d796..c5f949822364a912be2492bb14cc48f261b5bfcd 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/MultiCaseMatcher.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/MultiCaseMatcher.java @@ -167,7 +167,6 @@ public class MultiCaseMatcher { * @param collection * @param name */ - @AoWeakCacheable(expireAfterAccess = 2, expireAfterAccessTimeUnit = TimeUnit.MINUTES) public static String matchedNameOf(Collection collection, String name) { return COLLECTION_MATCHER.matchedNameOf(collection, name); } diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/NameResolver.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/NameResolver.java index 70665f5107c0548a1df119f113d79c40adb36d9d..955b0c53ec3adcace081b51521aabe4daa9bfcf1 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/NameResolver.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/NameResolver.java @@ -1,8 +1,11 @@ package com.gitee.l0km.com4j.basex.bean; +import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; +import com.gitee.l0km.aocache.annotations.AoWeakCacheable; + /** * base on org.apache.commons.beanutils.expression.DefaultResolver
* Default Property Name Expression {@code Resolver} Implementation. @@ -186,6 +189,7 @@ public class NameResolver { * @param expression The property expression * @return The property name */ + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 8, expireAfterAccessTimeUnit = TimeUnit.SECONDS) public String getProperty(String expression) { if (expression == null || expression.length() == 0) { return expression; @@ -226,6 +230,7 @@ public class NameResolver { * @return true if the expresion is indexed, * otherwise false */ + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 8, expireAfterAccessTimeUnit = TimeUnit.SECONDS) public boolean isIndexed(String expression) { if (expression == null || expression.length() == 0) { return false; @@ -239,6 +244,7 @@ public class NameResolver { * @return true if the expresion is indexed, * otherwise false */ + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 8, expireAfterAccessTimeUnit = TimeUnit.SECONDS) public boolean isSearched(String expression) { if (expression == null || expression.length() == 0) { return false; @@ -253,6 +259,7 @@ public class NameResolver { * @return true if the expresion is mapped, * otherwise false */ + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 8, expireAfterAccessTimeUnit = TimeUnit.SECONDS) public boolean isMapped(String expression) { if (expression == null || expression.length() == 0) { return false; @@ -356,6 +363,7 @@ public class NameResolver { * @return The new expression value, with first property * expression removed - null if there are no more expressions */ + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 8, expireAfterAccessTimeUnit = TimeUnit.SECONDS) public String remove(String expression) { if (expression == null || expression.length() == 0) { return null; diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/BeanPropertySupportImpl.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/BeanPropertySupportImpl.java index 03d82e0b8a4aad7b5e56a0ff4951d0db547e59eb..c53fcbd83c7a01b1af19dbad103dc41380901d8b 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/BeanPropertySupportImpl.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/BeanPropertySupportImpl.java @@ -16,7 +16,6 @@ import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; @@ -72,7 +71,8 @@ public class BeanPropertySupportImpl extends BaseBeanPropertySupport { protected BeanPropertySupportImpl(BaseTypeTransformer typeTransformer, ContextProvider[] transformerFeatures) { super(typeTransformer, transformerFeatures); } - @AoWeakCacheable + + @Override public BaseBeanPropertySupport withTransformer(BaseTypeTransformer typeTransformer, ContextProvider... transformerFeatures) { if( null == typeTransformer){ @@ -88,7 +88,7 @@ public class BeanPropertySupportImpl extends BaseBeanPropertySupport { return new BeanPropertySupportImpl(typeTransformer, transformerFeatures); } - @AoWeakCacheable(maximumSize = 1000, expireAfterAccess = 2, expireAfterAccessTimeUnit = TimeUnit.MINUTES) + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 60, expireAfterAccessTimeUnit = TimeUnit.SECONDS) private static BeanIntrospectionData getIntrospectionData0(Class beanClass) throws IntrospectionException { BeanInfo beanInfo = Introspector.getBeanInfo(beanClass); @@ -146,15 +146,17 @@ public class BeanPropertySupportImpl extends BaseBeanPropertySupport { * 获取beanClass中所有具有指定读写类型(rw)的属性 * @param beanClass * @param rw 属性类型标记
+ * * @param lenient 是否为宽容模式---允许返回类型不为void的setter方法 - * @return 属性名与PropertyDescriptor映射的Map对象 + * @return 属性名与PropertyDescriptor映射的LinkedHashMap对象(不可修改) */ - @AoWeakCacheable - public HashMap getProperties(Class beanClass, int rw, boolean lenient) { + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 8, expireAfterAccessTimeUnit = TimeUnit.SECONDS) + public Map getProperties(Class beanClass, int rw, boolean lenient) { LinkedHashMap properties = new LinkedHashMap(); if (beanClass != null) { PropertyDescriptor[] origDescriptors = getPropertyDescriptors(beanClass); @@ -181,7 +183,7 @@ public class BeanPropertySupportImpl extends BaseBeanPropertySupport { } } } - return properties; + return Collections.unmodifiableMap(properties); } /** * 获取beanClass中所有具有指定读写类型(rw)的属性 @@ -833,7 +835,6 @@ public class BeanPropertySupportImpl extends BaseBeanPropertySupport { * @param descriptor * @since 4.4.0 */ - @AoWeakCacheable(maximumSize = 1000, expireAfterAccess = 2, expireAfterAccessTimeUnit = TimeUnit.MINUTES) private static Type propertyGenericTypeForWriteOf(PropertyDescriptor descriptor) { if(descriptor instanceof NoStandardPropertyDescriptor){ return ((NoStandardPropertyDescriptor)descriptor).getPropertyGenericType(); diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/descriptor/FieldPropertyDescriptor.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/descriptor/FieldPropertyDescriptor.java index ab4f19811914ceaf63c0d885081195c7a0ee920b..3156bd7691f6bd893a798d1da00260c727edb8ae 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/descriptor/FieldPropertyDescriptor.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/descriptor/FieldPropertyDescriptor.java @@ -101,6 +101,7 @@ public class FieldPropertyDescriptor extends BaseNoStandardPropertyDescriptor{ public Field getField() { return field; } + @AoWeakCacheable(maximumSize = 100, expireAfterAccess = 60, expireAfterAccessTimeUnit = TimeUnit.SECONDS) public static FieldPropertyDescriptor create(Class beanClass,String name){ if(null != beanClass && null != name){ Field field = MultiCaseMatcher.matchedFieldOf(beanClass, name); @@ -154,7 +155,7 @@ public class FieldPropertyDescriptor extends BaseNoStandardPropertyDescriptor{ * @return 返回不可变的字段名称集合,如果类为空则返回空集合 * */ - @AoWeakCacheable(maximumSize = 100, expireAfterAccess = 2, expireAfterAccessTimeUnit = TimeUnit.MINUTES) + @AoWeakCacheable(maximumSize = 100, expireAfterAccess = 60, expireAfterAccessTimeUnit = TimeUnit.SECONDS) private static ImmutableSet allFieldNamesOf(Class clazz, boolean withFinal) { if (null != clazz) { ImmutableSet.Builder builder = ImmutableSet.builder(); diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/descriptor/MappedPropertyDescriptor.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/descriptor/MappedPropertyDescriptor.java index 1b768a69bf835e94a4cf7f06366957f7f3b12834..55444f3ea583a0f6a4d9fb091632956a0f30b3b6 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/descriptor/MappedPropertyDescriptor.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/descriptor/MappedPropertyDescriptor.java @@ -7,7 +7,9 @@ import java.lang.ref.SoftReference; import java.lang.ref.WeakReference; import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.util.concurrent.TimeUnit; +import com.gitee.l0km.aocache.annotations.AoWeakCacheable; import com.gitee.l0km.com4j.basex.reflection.MethodUtils; @@ -362,6 +364,7 @@ public class MappedPropertyDescriptor extends PropertyDescriptor { /** * Find a method on a class with a specified number of parameters. */ + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 8, expireAfterAccessTimeUnit = TimeUnit.SECONDS) private static Method getMethod(Class clazz, String methodName, int parameterCount) throws IntrospectionException { if (methodName == null) { diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/factory/FieldDescriptorFactory.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/factory/FieldDescriptorFactory.java index adc697c8f8867ea4da2a4a936c90aac81f8f6673..5aacbb607e1edb5341dbe2b04dc07073e1cf534b 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/factory/FieldDescriptorFactory.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/factory/FieldDescriptorFactory.java @@ -2,45 +2,16 @@ package com.gitee.l0km.com4j.basex.bean.jdk.factory; import java.beans.IntrospectionException; import java.beans.PropertyDescriptor; -import java.util.Arrays; -import java.util.List; - -import com.gitee.l0km.com4j.basex.bean.exception.BeanPropertyRuntimeException; import com.gitee.l0km.com4j.basex.bean.jdk.descriptor.FieldPropertyDescriptor; -import com.gitee.l0km.com4j.basex.cache.FunctionCached; -import com.google.common.base.Function; -import com.google.common.base.Optional; /** * @author guyadong * @since 2.7.0 */ public class FieldDescriptorFactory implements PropertyDescriptorFactory { - private static final FunctionCached, Optional> descriptorCached = FunctionCached.of(new Function,Optional>(){ - - @Override - public Optional apply(List input) { - if(input.get(0) instanceof Class && input.get(1) instanceof String){ - PropertyDescriptor descriptor = FieldPropertyDescriptor.create(((Class)input.get(0)), (String)input.get(1)); - if(null!= descriptor) { - return Optional.of(descriptor); - } - } - return Optional.absent(); - }}); @Override public PropertyDescriptor descriptorOf(Object bean, String name) throws IntrospectionException { - try { - if(bean != null ){ - return descriptorCached.get(Arrays.asList(bean.getClass(),name)).orNull(); - } - return null; - } catch (BeanPropertyRuntimeException e) { - if(e.getCause() instanceof IntrospectionException) { - throw (IntrospectionException)e.getCause(); - } - throw e; - } + return FieldPropertyDescriptor.create(bean, name); } } diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/BeanPropertySupportImpl.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/BeanPropertySupportImpl.java index f5352e95552952fd8787332461fc6d397738b187..9b1eacc73eff38f0880fd5ed3418067b2e75c39f 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/BeanPropertySupportImpl.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/BeanPropertySupportImpl.java @@ -16,7 +16,6 @@ import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; @@ -72,7 +71,8 @@ public class BeanPropertySupportImpl extends BaseBeanPropertySupport { protected BeanPropertySupportImpl(BaseTypeTransformer typeTransformer, ContextProvider[] transformerFeatures) { super(typeTransformer, transformerFeatures); } - @AoWeakCacheable + + @Override public BaseBeanPropertySupport withTransformer(BaseTypeTransformer typeTransformer, ContextProvider... transformerFeatures) { if( null == typeTransformer){ @@ -88,7 +88,7 @@ public class BeanPropertySupportImpl extends BaseBeanPropertySupport { return new BeanPropertySupportImpl(typeTransformer, transformerFeatures); } - @AoWeakCacheable(maximumSize = 1000, expireAfterAccess = 2, expireAfterAccessTimeUnit = TimeUnit.MINUTES) + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 60, expireAfterAccessTimeUnit = TimeUnit.SECONDS) private static BeanIntrospectionData getIntrospectionData0(Class beanClass) throws IntrospectionException { BeanInfo beanInfo = Introspector.getBeanInfo(beanClass); @@ -146,15 +146,17 @@ public class BeanPropertySupportImpl extends BaseBeanPropertySupport { * 获取beanClass中所有具有指定读写类型(rw)的属性 * @param beanClass * @param rw 属性类型标记
+ *
    *
  • 0 所有属性
  • *
  • 1 读属性
  • *
  • 2 写属性
  • *
  • 3 读写属性
  • + *
* @param lenient 是否为宽容模式---允许返回类型不为void的setter方法 - * @return 属性名与PropertyDescriptor映射的Map对象 + * @return 属性名与PropertyDescriptor映射的LinkedHashMap对象(不可修改) */ - @AoWeakCacheable - public HashMap getProperties(Class beanClass, int rw, boolean lenient) { + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 8, expireAfterAccessTimeUnit = TimeUnit.SECONDS) + public Map getProperties(Class beanClass, int rw, boolean lenient) { LinkedHashMap properties = new LinkedHashMap(); if (beanClass != null) { PropertyDescriptor[] origDescriptors = getPropertyDescriptors(beanClass); @@ -181,7 +183,7 @@ public class BeanPropertySupportImpl extends BaseBeanPropertySupport { } } } - return properties; + return Collections.unmodifiableMap(properties); } /** * 获取beanClass中所有具有指定读写类型(rw)的属性 @@ -833,7 +835,6 @@ public class BeanPropertySupportImpl extends BaseBeanPropertySupport { * @param descriptor * @since 4.4.0 */ - @AoWeakCacheable(maximumSize = 1000, expireAfterAccess = 2, expireAfterAccessTimeUnit = TimeUnit.MINUTES) private static Type propertyGenericTypeForWriteOf(PropertyDescriptor descriptor) { if(descriptor instanceof NoStandardPropertyDescriptor){ return ((NoStandardPropertyDescriptor)descriptor).getPropertyGenericType(); diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/descriptor/FieldPropertyDescriptor.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/descriptor/FieldPropertyDescriptor.java index 01b68c73ae1a2372385f9fc55e6f22265a2c555e..594bb0409e8d76cc92d631686ddec457b29d8d87 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/descriptor/FieldPropertyDescriptor.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/descriptor/FieldPropertyDescriptor.java @@ -101,6 +101,7 @@ public class FieldPropertyDescriptor extends BaseNoStandardPropertyDescriptor{ public Field getField() { return field; } + @AoWeakCacheable(maximumSize = 100, expireAfterAccess = 60, expireAfterAccessTimeUnit = TimeUnit.SECONDS) public static FieldPropertyDescriptor create(Class beanClass,String name){ if(null != beanClass && null != name){ Field field = MultiCaseMatcher.matchedFieldOf(beanClass, name); @@ -154,7 +155,7 @@ public class FieldPropertyDescriptor extends BaseNoStandardPropertyDescriptor{ * @return 返回不可变的字段名称集合,如果类为空则返回空集合 * */ - @AoWeakCacheable(maximumSize = 100, expireAfterAccess = 2, expireAfterAccessTimeUnit = TimeUnit.MINUTES) + @AoWeakCacheable(maximumSize = 100, expireAfterAccess = 60, expireAfterAccessTimeUnit = TimeUnit.SECONDS) private static ImmutableSet allFieldNamesOf(Class clazz, boolean withFinal) { if (null != clazz) { ImmutableSet.Builder builder = ImmutableSet.builder(); diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/descriptor/MappedPropertyDescriptor.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/descriptor/MappedPropertyDescriptor.java index 12425257b4c381e739d25d0396de97ecab346d15..cdc3ce86b5148263085e59bf1bc643e22ad6841c 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/descriptor/MappedPropertyDescriptor.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/descriptor/MappedPropertyDescriptor.java @@ -7,7 +7,9 @@ import java.lang.ref.SoftReference; import java.lang.ref.WeakReference; import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.util.concurrent.TimeUnit; +import com.gitee.l0km.aocache.annotations.AoWeakCacheable; import com.gitee.l0km.com4j.basex.reflection.MethodUtils; @@ -362,6 +364,7 @@ public class MappedPropertyDescriptor extends PropertyDescriptor { /** * Find a method on a class with a specified number of parameters. */ + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 8, expireAfterAccessTimeUnit = TimeUnit.SECONDS) private static Method getMethod(Class clazz, String methodName, int parameterCount) throws IntrospectionException { if (methodName == null) { diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/factory/FieldDescriptorFactory.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/factory/FieldDescriptorFactory.java index 772a9d97ccc474e87251dddb5b5fdf5b4b41e13f..5e73066bfd529a1875c382dae5933d489b0abf12 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/factory/FieldDescriptorFactory.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/factory/FieldDescriptorFactory.java @@ -2,45 +2,16 @@ package com.gitee.l0km.com4j.basex.bean.openbeans.factory; import com.googlecode.openbeans.IntrospectionException; import com.googlecode.openbeans.PropertyDescriptor; -import java.util.Arrays; -import java.util.List; - -import com.gitee.l0km.com4j.basex.bean.exception.BeanPropertyRuntimeException; import com.gitee.l0km.com4j.basex.bean.openbeans.descriptor.FieldPropertyDescriptor; -import com.gitee.l0km.com4j.basex.cache.FunctionCached; -import com.google.common.base.Function; -import com.google.common.base.Optional; /** * @author guyadong * @since 2.7.0 */ public class FieldDescriptorFactory implements PropertyDescriptorFactory { - private static final FunctionCached, Optional> descriptorCached = FunctionCached.of(new Function,Optional>(){ - - @Override - public Optional apply(List input) { - if(input.get(0) instanceof Class && input.get(1) instanceof String){ - PropertyDescriptor descriptor = FieldPropertyDescriptor.create(((Class)input.get(0)), (String)input.get(1)); - if(null!= descriptor) { - return Optional.of(descriptor); - } - } - return Optional.absent(); - }}); @Override public PropertyDescriptor descriptorOf(Object bean, String name) throws IntrospectionException { - try { - if(bean != null ){ - return descriptorCached.get(Arrays.asList(bean.getClass(),name)).orNull(); - } - return null; - } catch (BeanPropertyRuntimeException e) { - if(e.getCause() instanceof IntrospectionException) { - throw (IntrospectionException)e.getCause(); - } - throw e; - } + return FieldPropertyDescriptor.create(bean, name); } } diff --git a/common-base2/src/test/java/com/gitee/l0km/com4j/basex/BaseTypeTransformerTest.java b/common-base2/src/test/java/com/gitee/l0km/com4j/basex/BaseTypeTransformerTest.java index 3430e23bc3fc321e1fec9379b7e053356439f5ed..80c2b88c862677871caad1b789abd2f1583c8374 100644 --- a/common-base2/src/test/java/com/gitee/l0km/com4j/basex/BaseTypeTransformerTest.java +++ b/common-base2/src/test/java/com/gitee/l0km/com4j/basex/BaseTypeTransformerTest.java @@ -47,10 +47,14 @@ import static com.gitee.l0km.com4j.basex.BaseTypeTransformer.isContainerType; import static com.gitee.l0km.com4j.basex.BaseTypeTransformer.elementTypeOf; import static com.gitee.l0km.com4j.basex.BaseTypeTransformer.isEmpty; +import org.junit.BeforeClass; import org.junit.FixMethodOrder; import org.junit.Test; import org.junit.runners.MethodSorters; +import com.gitee.l0km.aocache.AocacheLogger; +import com.gitee.l0km.aocache.MemberCache; +import com.gitee.l0km.aocache.PerformanceProfiler; import com.gitee.l0km.com4j.basex.transformer.Feature; import com.google.common.base.Function; import com.google.common.collect.BiMap; @@ -71,7 +75,12 @@ import com.google.common.util.concurrent.AtomicDouble; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class BaseTypeTransformerTest { - + @BeforeClass + public static void setUpBeforeClass() throws Exception { + MemberCache.INSTANCE.setLogger(AocacheLogger.DEFAULT, false, true, true); + /** PerformanceProfiler 测试 */ +// PerformanceProfiler.setEnableLog(true); + } @Test public void test01ToArray() { BaseTypeTransformer transformer = new BaseTypeTransformer(); diff --git a/common-base2/src/test/java/com/gitee/l0km/com4j/basex/bean/BeanPropertySupportTest.java b/common-base2/src/test/java/com/gitee/l0km/com4j/basex/bean/BeanPropertySupportTest.java index cfcc0d107cc55049da1dc5749752a5fe847bd3a4..1470ecb1355b18858412f1a3b9f1925952a1e230 100644 --- a/common-base2/src/test/java/com/gitee/l0km/com4j/basex/bean/BeanPropertySupportTest.java +++ b/common-base2/src/test/java/com/gitee/l0km/com4j/basex/bean/BeanPropertySupportTest.java @@ -15,6 +15,9 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; +import com.gitee.l0km.aocache.AocacheLogger; +import com.gitee.l0km.aocache.MemberCache; +import com.gitee.l0km.aocache.PerformanceProfiler; import com.gitee.l0km.com4j.basex.DateSupport; import com.gitee.l0km.com4j.basex.bean.BaseBeanPropertySupport.DiffNode; import com.gitee.l0km.com4j.basex.bean.exception.CycleReferenceException; @@ -33,6 +36,9 @@ public class BeanPropertySupportTest { @BeforeClass public static void setUpBeforeClass() throws Exception { BeanPropertySupport.setTraceEnabled(true); + MemberCache.INSTANCE.setLogger(AocacheLogger.DEFAULT, false, true, true); + /** PerformanceProfiler 测试 */ +// PerformanceProfiler.setEnableLog(true); } @Test public void test02PublicFieldBean() { diff --git a/pom.xml b/pom.xml index 4c8fdf29d07a76507e4b1814dc1e820e7c62da0c..cf716e7ab75429d7cc8ac751bad37054d133bed8 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ common java library UTF-8 - 0.5.0 + 0.5.1-SNAPSHOT 1.9.7 true