1 14 package org.jmanage.core.management.data.jdk; 15 16 import org.jmanage.core.management.data.DataFormat; 17 18 import javax.management.openmbean.CompositeData ; 19 20 34 public class ThreadInfoFormat implements DataFormat { 35 36 private static final DataFormat stackTraceFormatter = 37 new StackTraceElementFormat(); 38 39 public String format(Object data) { 40 41 CompositeData compositeData = (CompositeData )data; 42 if(!compositeData.getCompositeType().getTypeName(). 43 equals("java.lang.management.ThreadInfo")){ 44 throw new RuntimeException ("Invalid typeName:" + 45 compositeData.getCompositeType().getTypeName()); 46 } 47 48 StringBuffer threadInfo = new StringBuffer (); 49 threadInfo.append("Name: "); 50 threadInfo.append(compositeData.get("threadName")); 51 threadInfo.append(" (id="); 52 threadInfo.append(compositeData.get("threadId")); 53 threadInfo.append(")\n"); 54 threadInfo.append("State: "); 55 String threadState = (String )compositeData.get("threadState"); 56 threadInfo.append(threadState); 57 if(threadState.equals("WAITING")){ 58 threadInfo.append(" on "); 59 threadInfo.append(compositeData.get("lockName")); 60 } 61 threadInfo.append("\n"); 62 threadInfo.append("Total blocked: "); 63 threadInfo.append(compositeData.get("blockedCount")); 64 threadInfo.append(" Total waited: "); 65 threadInfo.append(compositeData.get("waitedCount")); 66 threadInfo.append("\n"); 67 CompositeData [] stackTrace = 68 (CompositeData [])compositeData.get("stackTrace"); 69 70 threadInfo.append("Strack trace:\n"); 71 threadInfo.append(stackTraceFormatter.format(stackTrace)); 72 threadInfo.append("\n\n"); 73 return threadInfo.toString(); 74 } 75 } 76 | Popular Tags |