diff options
-rw-r--r-- | robolectric/src/main/java/org/robolectric/android/AndroidInterceptors.java | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/robolectric/src/main/java/org/robolectric/android/AndroidInterceptors.java b/robolectric/src/main/java/org/robolectric/android/AndroidInterceptors.java index 8a2159efa..51ea2a779 100644 --- a/robolectric/src/main/java/org/robolectric/android/AndroidInterceptors.java +++ b/robolectric/src/main/java/org/robolectric/android/AndroidInterceptors.java @@ -31,7 +31,7 @@ public class AndroidInterceptors { new SystemTimeInterceptor(), new SystemArrayCopyInterceptor(), new LocaleAdjustLanguageCodeInterceptor(), - new SystemLogEInterceptor(), + new SystemLogInterceptor(), new NoOpInterceptor() ); } @@ -196,34 +196,45 @@ public class AndroidInterceptors { } } - public static class SystemLogEInterceptor extends Interceptor { - public SystemLogEInterceptor() { - super(new MethodRef(System.class.getName(), "logE")); + /** AndroidInterceptor for System.logE and System.logW. */ + public static class SystemLogInterceptor extends Interceptor { + public SystemLogInterceptor() { + super( + new MethodRef(System.class.getName(), "logE"), + new MethodRef(System.class.getName(), "logW")); } static void logE(Object... params) { - String message = "System.logE: "; + log("System.logE: ", params); + } + + static void logW(Object... params) { + log("System.logW: ", params); + } + + static void log(String prefix, Object... params) { + StringBuilder message = new StringBuilder(prefix); for (Object param : params) { - message += param.toString(); + message.append(param.toString()); } System.err.println(message); } @Override public Function<Object, Object> handle(MethodSignature methodSignature) { - return new Function<Object, Object>() { - @Override - public Object call(Class<?> theClass, Object value, Object[] params) { + return (theClass, value, params) -> { + if ("logE".equals(methodSignature.methodName)) { logE(params); - return null; + } else if ("logW".equals(methodSignature.methodName)) { + logW(params); } + return null; }; } @Override public MethodHandle getMethodHandle(String methodName, MethodType type) throws NoSuchMethodException, IllegalAccessException { - return lookup.findStatic(getClass(), "logE", - methodType(void.class, Object[].class)); + return lookup.findStatic(getClass(), methodName, methodType(void.class, Object[].class)); } } |