添加模拟BuriedPointSender

This commit is contained in:
zhangxin10 2015-11-10 16:03:55 +08:00
parent 971942d6ce
commit c496b893ed
2 changed files with 24 additions and 5 deletions

View File

@ -0,0 +1,20 @@
package com.ai.cloud.skywalking.plugin.spring;
import com.ai.cloud.skywalking.api.IBuriedPointSender;
import com.ai.cloud.skywalking.model.ContextData;
import com.ai.cloud.skywalking.model.SendData;
public class BuriedPointSender implements IBuriedPointSender {
public ContextData beforeSend(SendData data) {
System.out.println("before Send");
return null;
}
public void afterSend() {
System.out.println("after Send");
}
public void handleException(Throwable th) {
System.out.println("handle Exception");
}
}

View File

@ -1,6 +1,5 @@
package com.ai.cloud.skywalking.plugin.spring;
import com.ai.cloud.skywalking.buriedpoint.LocalBuriedPointSender;
import com.ai.cloud.skywalking.model.SendData;
import javassist.*;
import org.springframework.beans.BeansException;
@ -32,7 +31,7 @@ public class TracingEnhanceProcessor implements BeanPostProcessor {
//
mCtc.setSuperclass(mPool.get(bean.getClass().getName()));
//添加字段
mCtc.addField(CtField.make("private " + LocalBuriedPointSender.class.getName() + " buriedPoint;", mCtc));
mCtc.addField(CtField.make("private " + BuriedPointSender.class.getName() + " buriedPoint;", mCtc));
mCtc.addField(CtField.make("private " + bean.getClass().getName() + " realBean;", mCtc));
// 校验方法
for (Method method : methods) {
@ -49,13 +48,13 @@ public class TracingEnhanceProcessor implements BeanPostProcessor {
// TODO 参数注解
mCtc.addMethod(CtMethod.make(result.toString(), mCtc));
}
mCtc.addConstructor(CtNewConstructor.make("public " + bean.getClass().getSimpleName() + "Proxy(" + LocalBuriedPointSender.class
mCtc.addConstructor(CtNewConstructor.make("public " + bean.getClass().getSimpleName() + "Proxy(" + BuriedPointSender.class
.getName() + " buriedPoint, " + bean.getClass().getName() + " realBean){" +
"this.buriedPoint = buriedPoint;this.realBean = realBean;}", mCtc));
mCtc.addConstructor(CtNewConstructor.defaultConstructor(mCtc));
Class classes = mCtc.toClass();
Constructor constructor = classes.getConstructor(LocalBuriedPointSender.class, bean.getClass());
return constructor.newInstance(new LocalBuriedPointSender(), bean);
Constructor constructor = classes.getConstructor(BuriedPointSender.class, bean.getClass());
return constructor.newInstance(new BuriedPointSender(), bean);
} catch (CannotCompileException e) {
e.printStackTrace();
} catch (InstantiationException e) {