package org.gridkit.jvmtool.stacktrace; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.StringReader; import java.util.ArrayList; import java.util.List; public class TraceLoader { public static StackFrame[] loadFrames(String res) { return loadFrames(res); } public static StackFrame[] loadFrames(String res, int multiplier) { try { List<StackFrame> frames = new ArrayList<StackFrame>(); for(int i = 0; i != multiplier; ++i) { InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(res); BufferedReader br = new BufferedReader(new InputStreamReader(is)); while(true) { String line = br.readLine(); if (line == null) { break; } if (line.trim().length() > 0) frames.add(StackFrame.parseFrame(line.trim())); } } return frames.toArray(new StackFrame[frames.size()]); } catch (IOException e) { throw new RuntimeException(e); } }; public static StackFrame[] parseFrames(String trace) { try { List<StackFrame> frames = new ArrayList<StackFrame>(); BufferedReader br = new BufferedReader(new StringReader(trace)); while(true) { String line = br.readLine(); if (line == null) { break; } if (line.trim().length() > 0) frames.add(StackFrame.parseFrame(line.trim())); } return frames.toArray(new StackFrame[frames.size()]); } catch (IOException e) { throw new RuntimeException(e); } }; }