/* * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package com.sun.tools.visualvm.profiling.snapshot; import com.sun.tools.visualvm.core.datasource.DataSource; import java.awt.Image; import java.io.File; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import javax.swing.JComponent; import org.netbeans.modules.profiler.LoadedSnapshot; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; import org.openide.util.Exceptions; import org.openide.util.ImageUtilities; import org.openide.util.NbBundle; /** * This is prototype to handle npss files. It uses reflection till the proper API is * available in snaptracer module. * * @author Tomas Hurka */ @NbBundle.Messages("MSG_SnapshotLoadFailedMsg=Error while loading snapshot: {0}") class ProfilerSnapshotNPSS extends ProfilerSnapshot { private Object loadedSnapshot; ProfilerSnapshotNPSS(File file, DataSource master) { super(file, master); try { FileObject primary = FileUtil.toFileObject(file); FileObject uigestureFO = primary.getParent().getFileObject(primary.getName(), "log"); // NOI18N Class ideSnapshotClass = Class.forName("org.netbeans.modules.profiler.snaptracer.impl.IdeSnapshot"); // NOI18N Constructor c = ideSnapshotClass.getDeclaredConstructor(FileObject.class, FileObject.class); c.setAccessible(true); loadedSnapshot = c.newInstance(primary, uigestureFO); } catch (ClassNotFoundException ex) { Exceptions.printStackTrace(ex); } catch (InstantiationException ex) { Exceptions.printStackTrace(ex); } catch (IllegalAccessException ex) { Exceptions.printStackTrace(ex); } catch (IllegalArgumentException ex) { Exceptions.printStackTrace(ex); } catch (InvocationTargetException ex) { Exceptions.printStackTrace(ex); } catch (NoSuchMethodException ex) { Exceptions.printStackTrace(ex); } catch (SecurityException ex) { Exceptions.printStackTrace(ex); } } @Override public LoadedSnapshot getLoadedSnapshot() { throw new UnsupportedOperationException("Not supported yet."); // NOI18N } @Override Image resolveIcon() { return ImageUtilities.mergeImages(CPU_ICON, NODE_BADGE, 0, 0); } @Override protected void remove() { super.remove(); loadedSnapshot = null; } @Override JComponent getUIComponent() { try { // TracerModel model = new TracerModel(loadedSnapshot); Class tracerModelClass = Class.forName("org.netbeans.modules.profiler.snaptracer.impl.TracerModel"); // NOI18N Class ideSnapshotClass = Class.forName("org.netbeans.modules.profiler.snaptracer.impl.IdeSnapshot"); // NOI18N Constructor c = tracerModelClass.getDeclaredConstructor(ideSnapshotClass); c.setAccessible(true); Object tracerModel = c.newInstance(loadedSnapshot); //TracerController controller = new TracerController(model); Class tracerControllerClass = Class.forName("org.netbeans.modules.profiler.snaptracer.impl.TracerController"); // NOI18N Constructor cc = tracerControllerClass.getDeclaredConstructor(tracerModelClass); cc.setAccessible(true); Object tracerController = cc.newInstance(tracerModel); //TracerView tracer = new TracerView(model, controller); Class tracerViewClass = Class.forName("org.netbeans.modules.profiler.snaptracer.impl.TracerView"); // NOI18N Constructor tvc = tracerViewClass.getDeclaredConstructor(tracerModelClass, tracerControllerClass); tvc.setAccessible(true); Object tracerView = tvc.newInstance(tracerModel, tracerController); // tracer.createComponent(); Method tvm = tracerViewClass.getDeclaredMethod("createComponent"); // NOI18N tvm.setAccessible(true); JComponent tracerViewComponent = (JComponent) tvm.invoke(tracerView); return tracerViewComponent; } catch (InstantiationException ex) { Exceptions.printStackTrace(ex); } catch (IllegalAccessException ex) { Exceptions.printStackTrace(ex); } catch (IllegalArgumentException ex) { Exceptions.printStackTrace(ex); } catch (InvocationTargetException ex) { Exceptions.printStackTrace(ex); } catch (NoSuchMethodException ex) { Exceptions.printStackTrace(ex); } catch (SecurityException ex) { Exceptions.printStackTrace(ex); } catch (ClassNotFoundException ex) { Exceptions.printStackTrace(ex); } return null; } @Override void closeComponent() { // no op } }