package com.performizeit.mjprof.plugins.comparators; import com.performizeit.mjprof.api.ThreadInfoComparator; import com.performizeit.mjprof.parser.ThreadDump; import com.performizeit.mjprof.parser.ThreadInfo; import com.performizeit.plumbing.PipeHandler; import java.util.ArrayList; import java.util.Collections; public abstract class SortMapper implements ThreadInfoComparator, PipeHandler<ThreadDump, ThreadDump> { public ThreadDump map(ThreadDump jsd) { ThreadDump that = new ThreadDump(); that.setHeader(jsd.getHeader()); that.setJNIglobalReferences(jsd.getJNIglobalReferences()); ArrayList<ThreadInfo> stacks = jsd.cloneStacks(); Collections.sort(stacks, this); that.setStacks(stacks); return that; } @Override abstract public int compare(ThreadInfo o1, ThreadInfo o2); @Override public ThreadDump handleMsg(ThreadDump msg) { return map(msg); } @Override public ThreadDump handleDone() { return null; } }