return lazyStackTraceIsLazy() ? jlaStackTrace(throwable) : unmodifiableList(asList(throwable.getStackTrace()));
return lazyStackTraceIsLazy() ? jlaStackTrace(throwable) : unmodifiableList(asList(throwable.getStackTrace()));
return lazyStackTraceIsLazy() ? jlaStackTrace(throwable) : unmodifiableList(asList(throwable.getStackTrace()));
@GwtIncompatible // lazyStackTrace private void doTestLazyStackTraceFallback() { assertFalse(lazyStackTraceIsLazy()); Exception e = new Exception(); assertThat(lazyStackTrace(e)).containsExactly((Object[]) e.getStackTrace()).inOrder(); try { lazyStackTrace(e).set(0, null); fail(); } catch (UnsupportedOperationException expected) { } e.setStackTrace(new StackTraceElement[0]); assertThat(lazyStackTrace(e)).isEmpty(); }
@GwtIncompatible // lazyStackTrace(Throwable) public void testLazyStackTrace() { Exception e = new Exception(); StackTraceElement[] originalStackTrace = e.getStackTrace(); assertThat(lazyStackTrace(e)).containsExactly((Object[]) originalStackTrace).inOrder(); try { lazyStackTrace(e).set(0, null); fail(); } catch (UnsupportedOperationException expected) { } // Now we test a property that holds only for the lazy implementation. if (!lazyStackTraceIsLazy()) { return; } e.setStackTrace(new StackTraceElement[0]); assertThat(lazyStackTrace(e)).containsExactly((Object[]) originalStackTrace).inOrder(); }
@AndroidIncompatible // No getJavaLangAccess in Android (at least not in the version we use). @GwtIncompatible // lazyStackTraceIsLazy() public void testLazyStackTraceWorksInProd() { // TODO(b/64442212): Remove this guard once lazyStackTrace() works in Java 9+. Integer javaVersion = Ints.tryParse(JAVA_SPECIFICATION_VERSION.value()); if (javaVersion != null && javaVersion >= 9) { return; } // Obviously this isn't guaranteed in every environment, but it works well enough for now: assertTrue(lazyStackTraceIsLazy()); }
@CheckReturnValue public static List<StackTraceElement> lazyStackTrace(Throwable throwable) { return lazyStackTraceIsLazy() ? jlaStackTrace(throwable) : unmodifiableList(asList(throwable.getStackTrace()));
return lazyStackTraceIsLazy() ? jlaStackTrace(throwable) : unmodifiableList(asList(throwable.getStackTrace()));
return lazyStackTraceIsLazy() ? jlaStackTrace(throwable) : unmodifiableList(asList(throwable.getStackTrace()));
@AndroidIncompatible // No getJavaLangAccess in Android (at least not in the version we use). @GwtIncompatible // lazyStackTraceIsLazy() public void testLazyStackTraceWorksInProd() { // TODO(b/64442212): Remove this guard once lazyStackTrace() works in Java 9. if (JAVA_SPECIFICATION_VERSION.value().equals("9")) { return; } // Obviously this isn't guaranteed in every environment, but it works well enough for now: assertTrue(lazyStackTraceIsLazy()); }
@GwtIncompatible // lazyStackTrace private void doTestLazyStackTraceFallback() { assertFalse(lazyStackTraceIsLazy()); Exception e = new Exception(); assertThat(lazyStackTrace(e)).containsExactly((Object[]) e.getStackTrace()).inOrder(); try { lazyStackTrace(e).set(0, null); fail(); } catch (UnsupportedOperationException expected) { } e.setStackTrace(new StackTraceElement[0]); assertThat(lazyStackTrace(e)).isEmpty(); }
@GwtIncompatible // lazyStackTrace(Throwable) public void testLazyStackTrace() { Exception e = new Exception(); StackTraceElement[] originalStackTrace = e.getStackTrace(); assertThat(lazyStackTrace(e)).containsExactly((Object[]) originalStackTrace).inOrder(); try { lazyStackTrace(e).set(0, null); fail(); } catch (UnsupportedOperationException expected) { } // Now we test a property that holds only for the lazy implementation. if (!lazyStackTraceIsLazy()) { return; } e.setStackTrace(new StackTraceElement[0]); assertThat(lazyStackTrace(e)).containsExactly((Object[]) originalStackTrace).inOrder(); }