public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if (method.getName().equals("toString")) { return proxyToString(); } if (method.getName().equals("equals") && args.length == 1) { return proxyEquals(proxy, args[0]); } final String className = method.getDeclaringClass().getName(); final String methodName = method.getName(); logger.entering(className, methodName, args); Object ret = method.invoke(target, args); logger.exiting(className, methodName, ret); return ret; }
/** * Return a proxy that log method invocations through the provided logger. * * @param <T> the target object type * @param target the target object method invocations should be forwarded to * @param logger the logger to use for logging * @return a proxy that log method invocations through the provided logger. * @see LoggingInvocationHandler * @see InvocationHandler * @see Proxy */ @SuppressWarnings("unchecked") public static <T> T getLoggerProxyFor(final T target, final Logger logger) { final Set<Class< ? >> classes = Misc.findAllInterfaces(target.getClass()); return (T) Proxy.newProxyInstance(Misc.class.getClassLoader(), classes.toArray(new Class[classes.size()]), new LoggingInvocationHandler<T>(target, logger)); }
/** * Return a proxy that log method invocations through the provided logger. * * @param <T> * the target object type * @param target * the target object method invocations should be forwarded to * @param logger * the logger to use for logging * @return a proxy that log method invocations through the provided logger. * @see LoggingInvocationHandler * @see InvocationHandler * @see Proxy */ @SuppressWarnings("unchecked") public static <T> T getLoggerProxyFor(final T target, final Logger logger) { final Set<Class<?>> classes = Misc.findAllInterfaces(target.getClass()); return (T) Proxy.newProxyInstance(Misc.class.getClassLoader(), classes.toArray(new Class[classes.size()]), new LoggingInvocationHandler<T>(target, logger)); }
@Override public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable { if (method.getName().equals("toString")) { return proxyToString(); } if (method.getName().equals("equals") && args.length == 1) { return proxyEquals(proxy, args[0]); } final String className = method.getDeclaringClass().getName(); final String methodName = method.getName(); logger.entering(className, methodName, args); final Object ret = method.invoke(target, args); logger.exiting(className, methodName, ret); return ret; }
/** * Return a proxy that log method invocations through the provided logger. * * @param <T> * the target object type * @param target * the target object method invocations should be forwarded to * @param logger * the logger to use for logging * @return a proxy that log method invocations through the provided logger. * @see LoggingInvocationHandler * @see InvocationHandler * @see Proxy */ @SuppressWarnings("unchecked") public static <T> T getLoggerProxyFor(final T target, final Logger logger) { final Set<Class<?>> classes = Misc.findAllInterfaces(target.getClass()); return (T) Proxy.newProxyInstance(Misc.class.getClassLoader(), classes.toArray(new Class[classes.size()]), new LoggingInvocationHandler<T>(target, logger)); }
@Override public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable { if (method.getName().equals("toString")) { return proxyToString(); } if (method.getName().equals("equals") && args.length == 1) { return proxyEquals(proxy, args[0]); } final String className = method.getDeclaringClass().getName(); final String methodName = method.getName(); logger.entering(className, methodName, args); final Object ret = method.invoke(target, args); logger.exiting(className, methodName, ret); return ret; }