ConvertDisabled增加ConvertType属性
This commit is contained in:
@@ -21,4 +21,27 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
|||||||
@Retention(RUNTIME)
|
@Retention(RUNTIME)
|
||||||
public @interface ConvertDisabled {
|
public @interface ConvertDisabled {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析/序列化定制化的TYPE
|
||||||
|
*
|
||||||
|
* @return JSON or BSON or ALL
|
||||||
|
*/
|
||||||
|
ConvertType type() default ConvertType.ALL;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ConvertDisabled 的多用类
|
||||||
|
*
|
||||||
|
* <p>
|
||||||
|
* 详情见: https://redkale.org
|
||||||
|
*
|
||||||
|
* @author zhangjx
|
||||||
|
*/
|
||||||
|
@Inherited
|
||||||
|
@Documented
|
||||||
|
@Target({METHOD, FIELD})
|
||||||
|
@Retention(RUNTIME)
|
||||||
|
public static @interface ConvertDisableds {
|
||||||
|
|
||||||
|
ConvertDisabled[] value();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -149,6 +149,25 @@ public abstract class ConvertFactory<R extends Reader, W extends Writer> {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isConvertDisabled(AccessibleObject element) {
|
||||||
|
ConvertDisabled[] ccs = element.getAnnotationsByType(ConvertDisabled.class);
|
||||||
|
if (ccs.length == 0 && element instanceof Method) {
|
||||||
|
final Method method = (Method) element;
|
||||||
|
String fieldName = readGetSetFieldName(method);
|
||||||
|
if (fieldName != null) {
|
||||||
|
try {
|
||||||
|
ccs = method.getDeclaringClass().getDeclaredField(fieldName).getAnnotationsByType(ConvertDisabled.class);
|
||||||
|
} catch (Exception e) { //说明没有该字段,忽略异常
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final ConvertType ct = this.getConvertType();
|
||||||
|
for (ConvertDisabled ref : ccs) {
|
||||||
|
if (ref.type().contains(ct)) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public ConvertColumnEntry findRef(AccessibleObject element) {
|
public ConvertColumnEntry findRef(AccessibleObject element) {
|
||||||
if (element == null) return null;
|
if (element == null) return null;
|
||||||
ConvertColumnEntry en = this.columnEntrys.get(element);
|
ConvertColumnEntry en = this.columnEntrys.get(element);
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ public final class ObjectDecoder<R extends Reader, T> implements Decodeable<R, T
|
|||||||
if (method.isSynthetic()) continue;
|
if (method.isSynthetic()) continue;
|
||||||
if (method.getName().length() < 4) continue;
|
if (method.getName().length() < 4) continue;
|
||||||
if (!method.getName().startsWith("set")) continue;
|
if (!method.getName().startsWith("set")) continue;
|
||||||
if (method.getAnnotation(ConvertDisabled.class) != null) continue;
|
if (factory.isConvertDisabled(method)) continue;
|
||||||
if (method.getParameterTypes().length != 1) continue;
|
if (method.getParameterTypes().length != 1) continue;
|
||||||
if (method.getReturnType() != void.class) continue;
|
if (method.getReturnType() != void.class) continue;
|
||||||
if (reversible && (cps == null || !ObjectEncoder.contains(cps, ConvertFactory.readGetSetFieldName(method)))) {
|
if (reversible && (cps == null || !ObjectEncoder.contains(cps, ConvertFactory.readGetSetFieldName(method)))) {
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ public final class ObjectEncoder<W extends Writer, T> implements Encodeable<W, T
|
|||||||
if (method.getName().length() < 3) continue;
|
if (method.getName().length() < 3) continue;
|
||||||
if (method.getName().equals("getClass")) continue;
|
if (method.getName().equals("getClass")) continue;
|
||||||
if (!method.getName().startsWith("is") && !method.getName().startsWith("get")) continue;
|
if (!method.getName().startsWith("is") && !method.getName().startsWith("get")) continue;
|
||||||
if (method.getAnnotation(ConvertDisabled.class) != null) continue;
|
if (factory.isConvertDisabled(method)) continue;
|
||||||
if (method.getParameterTypes().length != 0) continue;
|
if (method.getParameterTypes().length != 0) continue;
|
||||||
if (method.getReturnType() == void.class) continue;
|
if (method.getReturnType() == void.class) continue;
|
||||||
if (reversible && (cps == null || !contains(cps, ConvertFactory.readGetSetFieldName(method)))) {
|
if (reversible && (cps == null || !contains(cps, ConvertFactory.readGetSetFieldName(method)))) {
|
||||||
|
|||||||
Reference in New Issue
Block a user