@Override public MethodDelegation run() { return MethodDelegation.to( ProxyConfiguration.InterceptorDispatcher.class ); } };
@Override public <T> T newProxy(Class<T> interfaceType, Object handler) { Class<? extends T> cls = new ByteBuddy() .subclass(interfaceType) .method(ElementMatchers.isDeclaredBy(interfaceType)) .intercept(MethodDelegation.to(handler, "handler")) .make() .load(interfaceType.getClassLoader(), ClassLoadingStrategy.Default.INJECTION) .getLoaded(); try { return cls.newInstance(); } catch (Throwable t) { ThrowUtil.throwException(t); } return null; // never get here } });
@Override public <T> T newProxy(Class<T> interfaceType, Object handler) { Class<? extends T> cls = new ByteBuddy() .subclass(interfaceType) .method(ElementMatchers.isDeclaredBy(interfaceType)) .intercept(MethodDelegation.to(handler, "handler")) .make() .load(interfaceType.getClassLoader(), ClassLoadingStrategy.Default.INJECTION) .getLoaded(); try { return cls.newInstance(); } catch (Throwable t) { ThrowUtil.throwException(t); } return null; // never get here } });
private static Object crateForParameters(Class<?> effectiveTargetClass, Set<Class<?>> interfacesToImplement, ClassLoader classLoader, Class<?> interceptorClass) { List<Type> interfacesToImplementAsList = new ArrayList<Type>(interfacesToImplement); Class<?> proxyType = new ByteBuddy() .subclass(effectiveTargetClass) .implement(interfacesToImplementAsList) .method(not(isFinalizer())) .intercept(MethodDelegation.to(interceptorClass)) .make() .load(classLoader) .getLoaded(); return instantiate(proxyType); }
.and(ElementMatchers.named("get") .or(ElementMatchers.named("set")))) .intercept(MethodDelegation.to(FieldAccessorInterceptor.class)) .intercept(MethodDelegation.to(RObjectInterceptor.class)) .implement(RObject.class) .intercept(MethodDelegation.to(RExpirableInterceptor.class)) .implement(RExpirable.class) .or(ElementMatchers.isDeclaredBy(RMapAsync.class)) .or(ElementMatchers.isDeclaredBy(RMap.class))) .intercept(MethodDelegation.to(RMapInterceptor.class)) .implement(RMap.class) .or(ElementMatchers.isProtected())) .intercept(MethodDelegation.to(new AccessorInterceptor(redisson, commandExecutor.getObjectBuilder())))
.and(ElementMatchers.named("get") .or(ElementMatchers.named("set")))) .intercept(MethodDelegation.to(FieldAccessorInterceptor.class)) .intercept(MethodDelegation.to(RObjectInterceptor.class)) .implement(RObject.class) .intercept(MethodDelegation.to(RExpirableInterceptor.class)) .implement(RExpirable.class) .or(ElementMatchers.isDeclaredBy(RMapAsync.class)) .or(ElementMatchers.isDeclaredBy(RMap.class))) .intercept(MethodDelegation.to(RMapInterceptor.class)) .implement(RMap.class) .or(ElementMatchers.isProtected())) .intercept(MethodDelegation.to(new AccessorInterceptor(redisson, commandExecutor.getObjectBuilder())))
@Override public MethodDelegation run() { return MethodDelegation.to( ProxyConfiguration.InterceptorDispatcher.class ); } };
private <E> DynamicType.Builder<E> createInterceptor(final DynamicType.Builder<E> builder, final Method method) { // return builder.method(ElementMatchers.is(method)) // .intercept(MethodDelegation.to(JavaHandlerHandler.JavaHandlerInterceptor.class)); return builder.define(method).intercept(MethodDelegation.to(JavaHandlerHandler.JavaHandlerInterceptor.class)) .annotateMethod(method.getAnnotations()); }
private <E> DynamicType.Builder<E> createInterceptor(final DynamicType.Builder<E> builder, final Method method) { // return builder.method(ElementMatchers.is(method)) // .intercept(MethodDelegation.to(JavaHandlerHandler.JavaHandlerInterceptor.class)); return builder.define(method).intercept(MethodDelegation.to(JavaHandlerHandler.JavaHandlerInterceptor.class)) .annotateMethod(method.getAnnotations()); }
private <E> DynamicType.Builder<E> createInterceptor(final DynamicType.Builder<E> builder, final Method method) { return builder.method(ElementMatchers.is(method)) .intercept(MethodDelegation.to(MapInAdjacentPropertiesHandler.MapInAdjacentPropertiesInterceptor.class)); }
private <E> DynamicType.Builder<E> createInterceptor(final DynamicType.Builder<E> builder, final Method method) { return builder.method(ElementMatchers.is(method)) .intercept(MethodDelegation.to(MapInAdjacentVerticesHandler.MapInAdjacentVerticesInterceptor.class)); }
private <E> DynamicType.Builder<E> createInterceptor(final DynamicType.Builder<E> builder, final Method method) { return builder.method(ElementMatchers.is(method)) .intercept(MethodDelegation.to(MapInAdjacentPropertiesHandler.MapInAdjacentPropertiesInterceptor.class)); }
private <E> DynamicType.Builder<E> createInterceptor(final DynamicType.Builder<E> builder, final Method method) { return builder.method(ElementMatchers.is(method)) .intercept(MethodDelegation.to(MapInAdjacentVerticesHandler.MapInAdjacentVerticesInterceptor.class)); }
private <E> DynamicType.Builder<E> createInterceptor(final DynamicType.Builder<E> builder, final Method method) { return builder.method(ElementMatchers.is(method)).intercept(MethodDelegation.to(MapInPropertiesHandler.MapInPropertiesInterceptor.class)); }
private <E> DynamicType.Builder<E> createInterceptor(final DynamicType.Builder<E> builder, final Method method) { return builder.method(ElementMatchers.is(method)).intercept(MethodDelegation.to(SetInPropertiesHandler.SetInPropertiesMethodInterceptor.class)); }
private <E> DynamicType.Builder<E> removeProperty(final DynamicType.Builder<E> builder, final Method method, final Annotation annotation) { return builder.method(ElementMatchers.is(method)).intercept(MethodDelegation.to(WindupPropertyMethodHandler.RemovePropertyInterceptor.class)); }
private <E> DynamicType.Builder<E> removeAll(final DynamicType.Builder<E> builder, final Method method, final Annotation annotation) { return builder.method(ElementMatchers.is(method)).intercept(MethodDelegation.to(RemoveAllInterceptor.class)); }
private static Object crateForParameters(Class<?> effectiveTargetClass, Set<Class<?>> interfacesToImplement, ClassLoader classLoader, Class<?> interceptorClass) { List<Type> interfacesToImplementAsList = new ArrayList<Type>(interfacesToImplement); Class<?> proxyType = new ByteBuddy() .subclass(effectiveTargetClass) .implement(interfacesToImplementAsList) .method(not(isFinalizer())) .intercept(MethodDelegation.to(interceptorClass)) .make() .load(classLoader) .getLoaded(); return instantiate(proxyType); }
@Override public <T> T newProxy(Class<T> interfaceType, Object handler) { Class<? extends T> cls = new ByteBuddy() .subclass(interfaceType) .method(isDeclaredBy(interfaceType)) .intercept(to(handler, "handler").filter(not(isDeclaredBy(Object.class)))) .make() .load(interfaceType.getClassLoader(), INJECTION) .getLoaded(); return Reflects.newInstance(cls); } });