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);
}
}
/**
* 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) {
if (executor == null || executor.getClass().equals(Object.class)) {
return false;
} else if (Objects.equals(MATCH_CLASS_NAME, executor.getClass().getName())) {
if (Objects.equals(MATCH_CLASS_NAME, executor.getClass().getName())) {
return true;
} else
} else {
return Objects.equals(MATCH_CLASS_NAME, executor.getClass().getSuperclass().getName());
}
}
@Override
@ -62,14 +61,14 @@ public class ZipkinExecutorAdapter implements DynamicThreadPoolAdapter {
@Override
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);
}
private Object doUnwrap(Object executor) {
Object unwrap = ReflectUtil.getFieldValue(executor, FIELD_NAME);
if (unwrap == null) {
Field field = findTarField(executor, FIELD_NAME, TYPE_NAME);
Field field = ReflectUtil.findField(executor, FIELD_NAME, TYPE_NAME);
if (field != null) {
return ReflectUtil.getFieldValue(executor, field);
}
@ -77,14 +76,5 @@ public class ZipkinExecutorAdapter implements DynamicThreadPoolAdapter {
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