package com.performizeit.mjprof.plugins.dataSource;
import com.performizeit.mjprof.plugin.types.DataSource;
import com.performizeit.mjprof.api.Plugin;
import com.performizeit.mjprof.api.Param;
import com.performizeit.mjprof.parser.ThreadDump;
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import com.performizeit.plumbing.GeneratorHandler;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Element;
import java.io.File;
@Plugin(name = "visualvm", params = {@Param("path")}, description = "Read profiling session from xml export of VisualVM(not implemented yet)")
public class VisualVMDataSourcePlugin implements DataSource, GeneratorHandler<ThreadDump> {
String fileName;
public VisualVMDataSourcePlugin(String fileName) {
this.fileName = fileName;
}
public ArrayList<ThreadDump> getThreadDumps() {
File fXmlFile = new File(fileName);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
//ExportedView tree node
Element e = doc.getDocumentElement();
NodeList nl = e.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
System.out.println("aa[" + nl.item(i).getNodeName() + "]");
}
//doc.getDocumentElement()
} catch (Exception e) {
throw new RuntimeException(e);
}
return new ArrayList<>();
}
@Override
public ThreadDump generate() {
return null;
}
@Override
public boolean isDone() {
return true;
}
@Override
public void sleepBetweenIteration() {
}
}