提交 9037f139 编写于 作者: wu-sheng's avatar wu-sheng

Remove the field binders.

上级 5bcc6fbf
......@@ -104,9 +104,6 @@ public abstract class ClassEnhancePluginDefine extends AbstractClassEnhancePlugi
for (ConstructorInterceptPoint constructorInterceptPoint : constructorInterceptPoints) {
newClassBuilder = newClassBuilder.constructor(ElementMatchers.<MethodDescription>any()).intercept(SuperMethodCall.INSTANCE
.andThen(MethodDelegation.withDefaultConfiguration()
.withBinders(
FieldProxy.Binder.install(FieldGetter.class, FieldSetter.class)
)
.to(new ConstructorInter(constructorInterceptPoint.getConstructorInterceptor()))
)
);
......@@ -129,7 +126,6 @@ public abstract class ClassEnhancePluginDefine extends AbstractClassEnhancePlugi
.intercept(
MethodDelegation.withDefaultConfiguration()
.withBinders(
FieldProxy.Binder.install(FieldGetter.class, FieldSetter.class),
Morph.Binder.install(OverrideCallable.class)
)
.to(new InstMethodsInterWithOverrideArgs(interceptor))
......@@ -139,9 +135,6 @@ public abstract class ClassEnhancePluginDefine extends AbstractClassEnhancePlugi
newClassBuilder.method(not(isStatic()).and(instanceMethodsInterceptPoint.getMethodsMatcher()))
.intercept(
MethodDelegation.withDefaultConfiguration()
.withBinders(
FieldProxy.Binder.install(FieldGetter.class, FieldSetter.class)
)
.to(new InstMethodsInter(interceptor))
);
}
......
......@@ -37,19 +37,16 @@ public class ConstructorInter {
* Intercept the target constructor.
*
* @param obj target class instance.
* @param dynamicFieldGetter a proxy to set the dynamic field
* @param dynamicFieldSetter a proxy to get the dynamic field
* @param allArguments all constructor arguments
*/
@RuntimeType
public void intercept(@This Object obj,
@FieldProxy(ClassEnhancePluginDefine.CONTEXT_ATTR_NAME) FieldSetter dynamicFieldSetter,
@FieldProxy(ClassEnhancePluginDefine.CONTEXT_ATTR_NAME) FieldGetter dynamicFieldGetter,
@AllArguments Object[] allArguments) {
try {
InstanceConstructorInterceptor interceptor = InterceptorInstanceLoader.load(constructorInterceptorClassName, obj.getClass().getClassLoader());
EnhancedInstance targetObject = (EnhancedInstance)obj;
interceptor.onConstruct(obj, allArguments, dynamicFieldSetter, dynamicFieldGetter);
interceptor.onConstruct(targetObject, allArguments);
} catch (Throwable t) {
logger.error("ConstructorInter failure.", t);
}
......
......@@ -4,5 +4,7 @@ package org.skywalking.apm.agent.core.plugin.interceptor.enhance;
* @author wusheng
*/
public interface EnhancedInstance {
Object _getSkyWalkingDynamicFiled();
Object getSkyWalkingDynamicField();
void setSkyWalkingDynamicField();
}
package org.skywalking.apm.agent.core.plugin.interceptor.enhance;
public interface FieldGetter {
Object getValue();
}
package org.skywalking.apm.agent.core.plugin.interceptor.enhance;
public interface FieldSetter {
void setValue(Object value);
}
......@@ -42,8 +42,6 @@ public class InstMethodsInterWithOverrideArgs {
* @param obj target class instance.
* @param allArguments all method arguments
* @param method method description.
* @param dynamicFieldGetter a proxy to set the dynamic field
* @param dynamicFieldSetter a proxy to get the dynamic field
* @param zuper the origin call ref.
* @return the return value of target instance method.
* @throws Exception only throw exception because of zuper.call() or unexpected exception in sky-walking ( This is a
......@@ -53,18 +51,15 @@ public class InstMethodsInterWithOverrideArgs {
public Object intercept(@This Object obj,
@AllArguments Object[] allArguments,
@Origin Method method,
@FieldProxy(ClassEnhancePluginDefine.CONTEXT_ATTR_NAME) FieldSetter dynamicFieldSetter,
@FieldProxy(ClassEnhancePluginDefine.CONTEXT_ATTR_NAME) FieldGetter dynamicFieldGetter,
@Morph(defaultMethod = true) OverrideCallable zuper
) throws Throwable {
InstanceMethodsAroundInterceptor interceptor = InterceptorInstanceLoader
.load(instanceMethodsAroundInterceptorClassName, obj.getClass().getClassLoader());
EnhancedInstance targetObject = (EnhancedInstance)obj;
MethodInterceptResult result = new MethodInterceptResult();
try {
interceptor.beforeMethod(obj, method.getName(), allArguments, method.getParameterTypes(),
dynamicFieldSetter,
dynamicFieldGetter,
interceptor.beforeMethod(targetObject, method.getName(), allArguments, method.getParameterTypes(),
result);
} catch (Throwable t) {
logger.error(t, "class[{}] before method[{}] intercept failure", obj.getClass(), method.getName());
......@@ -79,9 +74,7 @@ public class InstMethodsInterWithOverrideArgs {
}
} catch (Throwable t) {
try {
interceptor.handleMethodException(obj, method.getName(), allArguments, method.getParameterTypes(),
dynamicFieldSetter,
dynamicFieldGetter,
interceptor.handleMethodException(targetObject, method.getName(), allArguments, method.getParameterTypes(),
t);
} catch (Throwable t2) {
logger.error(t2, "class[{}] handle method[{}] exception failure", obj.getClass(), method.getName());
......@@ -89,9 +82,7 @@ public class InstMethodsInterWithOverrideArgs {
throw t;
} finally {
try {
ret = interceptor.afterMethod(obj, method.getName(), allArguments, method.getParameterTypes(),
dynamicFieldSetter,
dynamicFieldGetter,
ret = interceptor.afterMethod(targetObject, method.getName(), allArguments, method.getParameterTypes(),
ret);
} catch (Throwable t) {
logger.error(t, "class[{}] after method[{}] intercept failure", obj.getClass(), method.getName());
......
......@@ -11,8 +11,5 @@ public interface InstanceConstructorInterceptor {
/**
* Called before the origin constructor invocation.
*/
void onConstruct(Object objInst,
Object[] allArguments,
FieldSetter dynamicFieldSetter,
FieldGetter dynamicFieldGetter);
void onConstruct(Object objInst, Object[] allArguments);
}
......@@ -13,9 +13,7 @@ public interface InstanceMethodsAroundInterceptor {
* @param result change this result, if you want to truncate the method.
* @throws Throwable
*/
void beforeMethod(Object objInst, String methodName, Object[] allArguments, Class<?>[] argumentsTypes,
FieldSetter dynamicFieldSetter,
FieldGetter dynamicFieldGetter,
void beforeMethod(EnhancedInstance objInst, String methodName, Object[] allArguments, Class<?>[] argumentsTypes,
MethodInterceptResult result) throws Throwable;
/**
......@@ -25,9 +23,7 @@ public interface InstanceMethodsAroundInterceptor {
* @return the method's actual return value.
* @throws Throwable
*/
Object afterMethod(Object objInst, String methodName, Object[] allArguments, Class<?>[] argumentsTypes,
FieldSetter dynamicFieldSetter,
FieldGetter dynamicFieldGetter,
Object afterMethod(EnhancedInstance objInst, String methodName, Object[] allArguments, Class<?>[] argumentsTypes,
Object ret) throws Throwable;
/**
......@@ -35,8 +31,6 @@ public interface InstanceMethodsAroundInterceptor {
*
* @param t the exception occur.
*/
void handleMethodException(Object objInst, String methodName, Object[] allArguments, Class<?>[] argumentsTypes,
FieldSetter dynamicFieldSetter,
FieldGetter dynamicFieldGetter,
void handleMethodException(EnhancedInstance objInst, String methodName, Object[] allArguments, Class<?>[] argumentsTypes,
Throwable t);
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册