123 String caller = walker.walk(s -> 124 s.map(StackFrame::getClassName) 125 .filter(cn -> !cn.startsWith("jdk.internal.reflect.") && !cn.startsWith("java.lang.invoke")) 126 .skip(2).findFirst() 127 ).get(); 128 assertEquals(caller, C2.class.getName()); 129 130 verify(walker, C1.class, "call"); 131 verify(walker, C2.class, "call"); 132 verify(walker, C2.class, "run"); 133 verify(walker, C2.class, "walk"); 134 verify(walker, C2.class, "testEmbeddedWalker"); 135 } // here is the end line number of approximate range, L136. 136 137 static void verify(StackWalker walker, Class<?> c, String mn) { 138 final String fileName = "EmbeddedStackWalkTest.java"; 139 walker.walk(s -> { 140 s.limit(BIG_LOOP) 141 .filter(f -> c.getName().equals(f.getClassName()) && mn.equals(f.getMethodName())) 142 .forEach(f -> { 143 assertEquals(f.getFileName().get(), fileName); 144 int line = f.getLineNumber().getAsInt(); 145 assertTrue(line >= BEGIN_LINE && line <= END_LINE); 146 147 StackTraceElement st = f.toStackTraceElement(); 148 assertEquals(c.getName(), st.getClassName()); 149 assertEquals(mn, st.getMethodName()); 150 assertEquals(st.getFileName(), fileName); 151 line = st.getLineNumber(); 152 assertTrue(line >= BEGIN_LINE && line <= END_LINE); 153 }); 154 return null; 155 }); 156 } 157 } 158 } | 123 String caller = walker.walk(s -> 124 s.map(StackFrame::getClassName) 125 .filter(cn -> !cn.startsWith("jdk.internal.reflect.") && !cn.startsWith("java.lang.invoke")) 126 .skip(2).findFirst() 127 ).get(); 128 assertEquals(caller, C2.class.getName()); 129 130 verify(walker, C1.class, "call"); 131 verify(walker, C2.class, "call"); 132 verify(walker, C2.class, "run"); 133 verify(walker, C2.class, "walk"); 134 verify(walker, C2.class, "testEmbeddedWalker"); 135 } // here is the end line number of approximate range, L136. 136 137 static void verify(StackWalker walker, Class<?> c, String mn) { 138 final String fileName = "EmbeddedStackWalkTest.java"; 139 walker.walk(s -> { 140 s.limit(BIG_LOOP) 141 .filter(f -> c.getName().equals(f.getClassName()) && mn.equals(f.getMethodName())) 142 .forEach(f -> { 143 assertEquals(f.getFileName(), fileName); 144 int line = f.getLineNumber(); 145 assertTrue(line >= BEGIN_LINE && line <= END_LINE); 146 147 StackTraceElement st = f.toStackTraceElement(); 148 assertEquals(c.getName(), st.getClassName()); 149 assertEquals(mn, st.getMethodName()); 150 assertEquals(st.getFileName(), fileName); 151 line = st.getLineNumber(); 152 assertTrue(line >= BEGIN_LINE && line <= END_LINE); 153 }); 154 return null; 155 }); 156 } 157 } 158 } |