feature:add zipkin pool adapter

pull/1047/head
wangzhuo 3 years ago
parent c44026ef8c
commit 8ed6a398d1

@ -264,4 +264,22 @@ public class ReflectUtil {
throw new IllegalException(e); throw new IllegalException(e);
} }
} }
/**
* find field by fieldName and fieldType
* @param obj target obj
* @param filedName filedName
* @param fieldType fieldType
* @return target field or null
*/
public static Field findField(Object obj, String filedName, String fieldType) {
Field[] fields = ReflectUtil.getFields(obj.getClass());
for (Field field : fields) {
if (field.getName().contains(filedName) &&
(field.getType().getName().contains(fieldType))) {
return field;
}
}
return null;
}
} }

@ -40,12 +40,11 @@ public class ZipkinExecutorAdapter implements DynamicThreadPoolAdapter {
} }
public boolean matchSuper(Object executor) { public boolean matchSuper(Object executor) {
if (executor == null || executor.getClass().equals(Object.class)) { if (Objects.equals(MATCH_CLASS_NAME, executor.getClass().getName())) {
return false;
} else if (Objects.equals(MATCH_CLASS_NAME, executor.getClass().getName())) {
return true; return true;
} else } else {
return Objects.equals(MATCH_CLASS_NAME, executor.getClass().getSuperclass().getName()); return Objects.equals(MATCH_CLASS_NAME, executor.getClass().getSuperclass().getName());
}
} }
@Override @Override
@ -62,14 +61,14 @@ public class ZipkinExecutorAdapter implements DynamicThreadPoolAdapter {
@Override @Override
public void replace(Object executor, Executor dynamicThreadPoolExecutor) { public void replace(Object executor, Executor dynamicThreadPoolExecutor) {
Field field = findTarField(executor, FIELD_NAME, TYPE_NAME); Field field = ReflectUtil.findField(executor, FIELD_NAME, TYPE_NAME);
ReflectUtil.setFieldValue(executor, field, dynamicThreadPoolExecutor); ReflectUtil.setFieldValue(executor, field, dynamicThreadPoolExecutor);
} }
private Object doUnwrap(Object executor) { private Object doUnwrap(Object executor) {
Object unwrap = ReflectUtil.getFieldValue(executor, FIELD_NAME); Object unwrap = ReflectUtil.getFieldValue(executor, FIELD_NAME);
if (unwrap == null) { if (unwrap == null) {
Field field = findTarField(executor, FIELD_NAME, TYPE_NAME); Field field = ReflectUtil.findField(executor, FIELD_NAME, TYPE_NAME);
if (field != null) { if (field != null) {
return ReflectUtil.getFieldValue(executor, field); return ReflectUtil.getFieldValue(executor, field);
} }
@ -77,14 +76,5 @@ public class ZipkinExecutorAdapter implements DynamicThreadPoolAdapter {
return null; return null;
} }
private Field findTarField(Object obj, String filedName, String fieldType) {
Field[] fields = ReflectUtil.getFields(obj.getClass());
for (Field field : fields) {
if (field.getName().contains(filedName) &&
(field.getType().getName().contains(fieldType))) {
return field;
}
}
return null;
}
} }

Loading…
Cancel
Save