diff --git a/InTrace-VisualVM-Plugin/build.xml b/InTrace-VisualVM-Plugin/build.xml new file mode 100644 index 0000000..7517c1d --- /dev/null +++ b/InTrace-VisualVM-Plugin/build.xml @@ -0,0 +1,23 @@ + + + + + + Builds, tests, and runs the project org.intrace.visualvm. + + + + + + + + + + + + + + + + + diff --git a/InTrace-VisualVM-Plugin/manifest.mf b/InTrace-VisualVM-Plugin/manifest.mf new file mode 100644 index 0000000..6f92147 --- /dev/null +++ b/InTrace-VisualVM-Plugin/manifest.mf @@ -0,0 +1,7 @@ +Manifest-Version: 1.0 +OpenIDE-Module: org.intrace.visualvm +OpenIDE-Module-Install: org/intrace/visualvm/Installer.class +OpenIDE-Module-Layer: org/intrace/visualvm/layer.xml +OpenIDE-Module-Localizing-Bundle: org/intrace/visualvm/Bundle.properties +OpenIDE-Module-Specification-Version: 1.0 + diff --git a/InTrace-VisualVM-Plugin/nbproject/build-impl.xml b/InTrace-VisualVM-Plugin/nbproject/build-impl.xml new file mode 100644 index 0000000..65a9e86 --- /dev/null +++ b/InTrace-VisualVM-Plugin/nbproject/build-impl.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/InTrace-VisualVM-Plugin/nbproject/genfiles.properties b/InTrace-VisualVM-Plugin/nbproject/genfiles.properties new file mode 100644 index 0000000..470de0b --- /dev/null +++ b/InTrace-VisualVM-Plugin/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=bb7a3013 +build.xml.script.CRC32=6b6e80f6 +build.xml.stylesheet.CRC32=a56c6a5b@1.42.1 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=c6db8612 +nbproject/build-impl.xml.script.CRC32=7cbc4f92 +nbproject/build-impl.xml.stylesheet.CRC32=238281d1@1.42.1 diff --git a/InTrace-VisualVM-Plugin/nbproject/platform.properties b/InTrace-VisualVM-Plugin/nbproject/platform.properties new file mode 100644 index 0000000..6221694 --- /dev/null +++ b/InTrace-VisualVM-Plugin/nbproject/platform.properties @@ -0,0 +1,5 @@ +cluster.path=\ + ${nbplatform.active.dir}/platform:\ + ${nbplatform.active.dir}/profiler:\ + ${nbplatform.active.dir}/visualvm +nbplatform.active=VisualVM_1.2.2 diff --git a/InTrace-VisualVM-Plugin/nbproject/private/platform-private.properties b/InTrace-VisualVM-Plugin/nbproject/private/platform-private.properties new file mode 100644 index 0000000..faa696e --- /dev/null +++ b/InTrace-VisualVM-Plugin/nbproject/private/platform-private.properties @@ -0,0 +1 @@ +user.properties.file=C:\\Documents and Settings\\mch50\\.netbeans\\6.9\\build.properties diff --git a/InTrace-VisualVM-Plugin/nbproject/private/private.xml b/InTrace-VisualVM-Plugin/nbproject/private/private.xml new file mode 100644 index 0000000..cc2c0e5 --- /dev/null +++ b/InTrace-VisualVM-Plugin/nbproject/private/private.xml @@ -0,0 +1,4 @@ + + + + diff --git a/InTrace-VisualVM-Plugin/nbproject/project.properties b/InTrace-VisualVM-Plugin/nbproject/project.properties new file mode 100644 index 0000000..9fc050a --- /dev/null +++ b/InTrace-VisualVM-Plugin/nbproject/project.properties @@ -0,0 +1,3 @@ +cp.extra=${tools.jar} +javac.source=1.6 +javac.compilerargs=-Xlint -Xlint:-serial diff --git a/InTrace-VisualVM-Plugin/nbproject/project.xml b/InTrace-VisualVM-Plugin/nbproject/project.xml new file mode 100644 index 0000000..acd7dd1 --- /dev/null +++ b/InTrace-VisualVM-Plugin/nbproject/project.xml @@ -0,0 +1,72 @@ + + + org.netbeans.modules.apisupport.project + + + org.intrace.visualvm + + + + com.sun.tools.visualvm.application + + + + 0-1 + 1.2 + + + + com.sun.tools.visualvm.attach + + 0-1 + 1.1 + + + + com.sun.tools.visualvm.core + + + + 0-1 + 1.3 + + + + com.sun.tools.visualvm.host + + + + 0-1 + 1.0 + + + + com.sun.tools.visualvm.tools + + + + 0-1 + 1.1 + + + + org.openide.modules + + + + 7.13.1 + + + + org.openide.util + + + + 7.31.1.1 + + + + + + + diff --git a/binaries/jars/latest_development/guitraceclient-linux.jar b/InTrace-VisualVM-Plugin/release/modules/ext/guitraceclient-linux.jar similarity index 89% rename from binaries/jars/latest_development/guitraceclient-linux.jar rename to InTrace-VisualVM-Plugin/release/modules/ext/guitraceclient-linux.jar index ae43e48..a6fe322 100644 Binary files a/binaries/jars/latest_development/guitraceclient-linux.jar and b/InTrace-VisualVM-Plugin/release/modules/ext/guitraceclient-linux.jar differ diff --git a/binaries/jars/latest_development/guitraceclient-win.jar b/InTrace-VisualVM-Plugin/release/modules/ext/guitraceclient-win.jar similarity index 89% rename from binaries/jars/latest_development/guitraceclient-win.jar rename to InTrace-VisualVM-Plugin/release/modules/ext/guitraceclient-win.jar index dc8eb4f..cdeebe9 100644 Binary files a/binaries/jars/latest_development/guitraceclient-win.jar and b/InTrace-VisualVM-Plugin/release/modules/ext/guitraceclient-win.jar differ diff --git a/InTrace-VisualVM-Plugin/release/modules/ext/intrace-agent.jar b/InTrace-VisualVM-Plugin/release/modules/ext/intrace-agent.jar new file mode 100644 index 0000000..411f591 Binary files /dev/null and b/InTrace-VisualVM-Plugin/release/modules/ext/intrace-agent.jar differ diff --git a/InTrace-VisualVM-Plugin/release/modules/ext/intrace-client-gui-linux.jar b/InTrace-VisualVM-Plugin/release/modules/ext/intrace-client-gui-linux.jar new file mode 100644 index 0000000..842d137 Binary files /dev/null and b/InTrace-VisualVM-Plugin/release/modules/ext/intrace-client-gui-linux.jar differ diff --git a/InTrace-VisualVM-Plugin/release/modules/ext/intrace-client-gui-win.jar b/InTrace-VisualVM-Plugin/release/modules/ext/intrace-client-gui-win.jar new file mode 100644 index 0000000..7b0d5ff Binary files /dev/null and b/InTrace-VisualVM-Plugin/release/modules/ext/intrace-client-gui-win.jar differ diff --git a/binaries/jars/latest_development/traceagent.jar b/InTrace-VisualVM-Plugin/release/modules/ext/traceagent.jar similarity index 96% rename from binaries/jars/latest_development/traceagent.jar rename to InTrace-VisualVM-Plugin/release/modules/ext/traceagent.jar index fcad30c..dfe9352 100644 Binary files a/binaries/jars/latest_development/traceagent.jar and b/InTrace-VisualVM-Plugin/release/modules/ext/traceagent.jar differ diff --git a/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/Bundle.properties b/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/Bundle.properties new file mode 100644 index 0000000..e69de29 diff --git a/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/Installer.java b/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/Installer.java new file mode 100644 index 0000000..9437afe --- /dev/null +++ b/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/Installer.java @@ -0,0 +1,23 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.intrace.visualvm; + +import org.intrace.visualvm.view.InTraceViewProvider; +import org.openide.modules.ModuleInstall; + +/** + * Manages a module's lifecycle. Remember that an installer is optional and + * often not needed at all. + */ +public class Installer extends ModuleInstall { + + @Override + public void restored() { + InTraceViewProvider.initialize(); + System.out.println(Locator.agentPath); + System.out.println(Locator.winClientPath); + System.out.println(Locator.linuxClientPath); + } +} diff --git a/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/Locator.java b/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/Locator.java new file mode 100644 index 0000000..b64a750 --- /dev/null +++ b/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/Locator.java @@ -0,0 +1,64 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.intrace.visualvm; + +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; +import org.openide.modules.InstalledFileLocator; + +/** + * + * @author mch50 + */ +public class Locator { + + public static final String agentPath; + public static final URL linuxClientPath; + public static final URL winClientPath; + + static { + File locatedFile = InstalledFileLocator.getDefault().locate("modules/ext/intrace-agent.jar", "com.sun.btrace", false); // NOI18N + if (locatedFile != null) { + agentPath = locatedFile.getAbsolutePath(); + } else { + agentPath = null; + } + + locatedFile = InstalledFileLocator.getDefault().locate("modules/ext/intrace-client-gui-win.jar", "com.sun.btrace", false); // NOI18N + if (locatedFile != null) { + URL lWinClientPath = null; + try { + lWinClientPath = locatedFile.toURI().toURL(); + } catch (MalformedURLException ex) { + // + } + if (lWinClientPath != null) { + winClientPath = lWinClientPath; + } else { + winClientPath = null; + } + } else { + winClientPath = null; + } + + locatedFile = InstalledFileLocator.getDefault().locate("modules/ext/intrace-client-gui-linux.jar", "com.sun.btrace", false); // NOI18N + if (locatedFile != null) { + URL lLinuxClientPath = null; + try { + lLinuxClientPath = locatedFile.toURI().toURL(); + } catch (MalformedURLException ex) { + // + } + if (lLinuxClientPath != null) { + linuxClientPath = lLinuxClientPath; + } else { + linuxClientPath = null; + } + } else { + linuxClientPath = null; + } + } +} diff --git a/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/actions/Bundle.properties b/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/actions/Bundle.properties new file mode 100644 index 0000000..eea8ea3 --- /dev/null +++ b/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/actions/Bundle.properties @@ -0,0 +1 @@ +InTraceApplicationAction.title=InTrace Application... \ No newline at end of file diff --git a/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/actions/InTraceApplicationAction.java b/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/actions/InTraceApplicationAction.java new file mode 100644 index 0000000..32edbd4 --- /dev/null +++ b/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/actions/InTraceApplicationAction.java @@ -0,0 +1,43 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.intrace.visualvm.actions; + +import com.sun.tools.visualvm.application.Application; +import com.sun.tools.visualvm.application.jvm.Jvm; +import com.sun.tools.visualvm.application.jvm.JvmFactory; +import com.sun.tools.visualvm.core.ui.DataSourceWindowManager; +import com.sun.tools.visualvm.core.ui.actions.SingleDataSourceAction; +import java.awt.event.ActionEvent; +import org.intrace.visualvm.impl.InTraceDataSource; +import org.openide.util.NbBundle; + +/** + * + * @author mch50 + */ +public class InTraceApplicationAction extends SingleDataSourceAction { + + @Override + protected void actionPerformed(Application app, ActionEvent actionEvent) { + InTraceDataSource dataSource = new InTraceDataSource(app); + DataSourceWindowManager.sharedInstance().openDataSource(dataSource); + } + + @Override + protected boolean isEnabled(Application app) { + Jvm jvm = JvmFactory.getJVMFor(app); + return app.isLocalApplication() && jvm.isAttachable() && jvm.isGetSystemPropertiesSupported(); + } + + public static synchronized InTraceApplicationAction newInstance() { + return new InTraceApplicationAction(); + } + + private InTraceApplicationAction() { + super(Application.class); + putValue(NAME, NbBundle.getMessage(InTraceApplicationAction.class, "InTraceApplicationAction.title")); // NOI18N + } +} diff --git a/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/impl/InTraceDataSource.java b/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/impl/InTraceDataSource.java new file mode 100644 index 0000000..e51f683 --- /dev/null +++ b/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/impl/InTraceDataSource.java @@ -0,0 +1,23 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.intrace.visualvm.impl; + +import com.sun.tools.visualvm.application.Application; +import com.sun.tools.visualvm.core.datasource.DataSource; + +/** + * + * @author mch50 + */ +public class InTraceDataSource extends DataSource { + + public final Application app; + + public InTraceDataSource(Application app) { + super(app); + this.app = app; + } +} diff --git a/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/impl/InTraceLoader.java b/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/impl/InTraceLoader.java new file mode 100644 index 0000000..a19cbf6 --- /dev/null +++ b/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/impl/InTraceLoader.java @@ -0,0 +1,52 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.intrace.visualvm.impl; + +import com.sun.tools.attach.VirtualMachine; +import com.sun.tools.visualvm.application.Application; +import com.sun.tools.visualvm.application.jvm.Jvm; +import com.sun.tools.visualvm.application.jvm.JvmFactory; +import java.lang.reflect.Method; +import java.net.URL; +import java.net.URLClassLoader; +import org.intrace.visualvm.Locator; +import org.openide.util.Exceptions; + +/** + * + * @author mch50 + */ +public class InTraceLoader { + + public static void loadAgent(Application app) { + Jvm jvm = JvmFactory.getJVMFor(app); + if (app.isLocalApplication() && jvm.isAttachable() && jvm.isGetSystemPropertiesSupported()) { + try { + VirtualMachine vm = VirtualMachine.attach(String.valueOf(app.getPid())); + vm.loadAgent(Locator.agentPath, ""); + } catch (Exception ex) { + Exceptions.printStackTrace(ex); + } + } + } + + public static void launchClient() { + Runnable launchClientThread = new Runnable() { + @Override + public void run() { + URLClassLoader classLoader = new URLClassLoader(new URL[]{Locator.winClientPath}); + try { + Class guiClass = classLoader.loadClass("org.intrace.client.gui.TraceWindow"); + Object guiObj = guiClass.newInstance(); + Method guiOpen = guiClass.getMethod("open"); + guiOpen.invoke(guiObj, new Object[0]); + } catch (Exception ex) { + Exceptions.printStackTrace(ex); + } + } + }; + new Thread(launchClientThread).start(); + } +} diff --git a/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/layer.xml b/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/layer.xml new file mode 100644 index 0000000..035037b --- /dev/null +++ b/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/layer.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/view/InTraceView.java b/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/view/InTraceView.java new file mode 100644 index 0000000..f332bfd --- /dev/null +++ b/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/view/InTraceView.java @@ -0,0 +1,80 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.intrace.visualvm.view; + +import com.sun.tools.visualvm.core.ui.DataSourceView; +import com.sun.tools.visualvm.core.ui.components.DataViewComponent; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.BorderFactory; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JPanel; +import org.intrace.visualvm.impl.InTraceLoader; +import org.intrace.visualvm.impl.InTraceDataSource; +import org.openide.util.Utilities; + +/** + * + * @author mch50 + */ +public class InTraceView extends DataSourceView { + + private final InTraceDataSource application; + + private DataViewComponent dvc; + + //Reusing an image from the sources: + private static final String IMAGE_PATH = "com/sun/tools/visualvm/coredump/resources/coredump.png"; // NOI18N + + public InTraceView(InTraceDataSource application) { + super(application, "InTrace", new ImageIcon(Utilities.loadImage(IMAGE_PATH, true)).getImage(), 60, false); + this.application = application; + } + + @Override + protected DataViewComponent createComponent() { + + //Data area for master view: + JPanel generalDataArea = new JPanel(); + generalDataArea.setBorder(BorderFactory.createEmptyBorder(14, 8, 14, 8)); + generalDataArea.setOpaque(false); + + JButton loadAgentButton = new JButton("Load InTrace Agent"); + loadAgentButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + InTraceLoader.loadAgent(application.app); + } + }); + + JButton launchClient = new JButton("Launch InTrace Client"); + launchClient.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + InTraceLoader.launchClient(); + } + }); + + generalDataArea.add(loadAgentButton); + generalDataArea.add(launchClient); + + //Master view: + DataViewComponent.MasterView masterView = new DataViewComponent.MasterView + ("InTrace", null, generalDataArea); + + //Configuration of master view: + DataViewComponent.MasterViewConfiguration masterConfiguration = + new DataViewComponent.MasterViewConfiguration(false); + + //Add the master view and configuration view to the component: + dvc = new DataViewComponent(masterView, masterConfiguration); + + return dvc; + + } + +} diff --git a/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/view/InTraceViewProvider.java b/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/view/InTraceViewProvider.java new file mode 100644 index 0000000..648543a --- /dev/null +++ b/InTrace-VisualVM-Plugin/src/org/intrace/visualvm/view/InTraceViewProvider.java @@ -0,0 +1,39 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.intrace.visualvm.view; + +import com.sun.tools.visualvm.core.ui.DataSourceView; +import com.sun.tools.visualvm.core.ui.DataSourceViewProvider; +import com.sun.tools.visualvm.core.ui.DataSourceViewsManager; +import org.intrace.visualvm.impl.InTraceDataSource; + +/** + * + * @author mch50 + */ +public class InTraceViewProvider extends DataSourceViewProvider { + + private static DataSourceViewProvider instance = new InTraceViewProvider(); + + @Override + public boolean supportsViewFor(InTraceDataSource application) { + //Always shown: + return true; + } + + @Override + public synchronized DataSourceView createView(final InTraceDataSource application) { + return new InTraceView(application); + } + + public static void initialize() { + DataSourceViewsManager.sharedInstance().addViewProvider(instance, InTraceDataSource.class); + } + + static void unregister() { + DataSourceViewsManager.sharedInstance().removeViewProvider(instance); + } +} diff --git a/binaries/jars/latest_development/cuiagentloader.jar b/binaries/jars/latest_development/agentloader-cui.jar similarity index 81% rename from binaries/jars/latest_development/cuiagentloader.jar rename to binaries/jars/latest_development/agentloader-cui.jar index d1414ed..498e2ab 100644 Binary files a/binaries/jars/latest_development/cuiagentloader.jar and b/binaries/jars/latest_development/agentloader-cui.jar differ diff --git a/binaries/jars/latest_development/intrace-agent.jar b/binaries/jars/latest_development/intrace-agent.jar new file mode 100644 index 0000000..3531c86 Binary files /dev/null and b/binaries/jars/latest_development/intrace-agent.jar differ diff --git a/binaries/jars/latest_development/cuitraceclient.jar b/binaries/jars/latest_development/intrace-client-cui.jar similarity index 88% rename from binaries/jars/latest_development/cuitraceclient.jar rename to binaries/jars/latest_development/intrace-client-cui.jar index c4c1484..8d9e3c7 100644 Binary files a/binaries/jars/latest_development/cuitraceclient.jar and b/binaries/jars/latest_development/intrace-client-cui.jar differ diff --git a/binaries/jars/latest_development/intrace-client-gui-linux.jar b/binaries/jars/latest_development/intrace-client-gui-linux.jar new file mode 100644 index 0000000..615c195 Binary files /dev/null and b/binaries/jars/latest_development/intrace-client-gui-linux.jar differ diff --git a/binaries/jars/latest_development/intrace-client-gui-win.jar b/binaries/jars/latest_development/intrace-client-gui-win.jar new file mode 100644 index 0000000..ee11b78 Binary files /dev/null and b/binaries/jars/latest_development/intrace-client-gui-win.jar differ diff --git a/org.intrace.agentloader/build.xml b/org.intrace.agentloader/build.xml index 948ab1d..a570bdd 100644 --- a/org.intrace.agentloader/build.xml +++ b/org.intrace.agentloader/build.xml @@ -38,7 +38,7 @@ - + diff --git a/org.intrace/build.xml b/org.intrace/build.xml index 8f43ea3..f59c21e 100644 --- a/org.intrace/build.xml +++ b/org.intrace/build.xml @@ -1,4 +1,4 @@ - + @@ -77,7 +77,7 @@ - + @@ -93,7 +93,7 @@ - + @@ -104,7 +104,7 @@ - + @@ -116,7 +116,7 @@ - + @@ -130,7 +130,7 @@ - + @@ -186,7 +186,7 @@ - + @@ -223,7 +223,7 @@ - + @@ -231,14 +231,14 @@ - + @@ -263,7 +263,7 @@ - + @@ -273,7 +273,7 @@ - + diff --git a/org.intrace/lib/intrace-agent-test.jar b/org.intrace/lib/intrace-agent-test.jar new file mode 100644 index 0000000..d846ba5 Binary files /dev/null and b/org.intrace/lib/intrace-agent-test.jar differ diff --git a/org.intrace/lib/traceagent_test.jar b/org.intrace/lib/traceagent_test.jar deleted file mode 100644 index 4b7bea1..0000000 Binary files a/org.intrace/lib/traceagent_test.jar and /dev/null differ diff --git a/org.intrace/src/org/intrace/agent/ClassTransformer.java b/org.intrace/src/org/intrace/agent/ClassTransformer.java index 0382ae9..1b4860a 100644 --- a/org.intrace/src/org/intrace/agent/ClassTransformer.java +++ b/org.intrace/src/org/intrace/agent/ClassTransformer.java @@ -133,15 +133,12 @@ public class ClassTransformer implements ClassFileTransformer return false; } - // Don't modify self - if (className.startsWith("org.intrace") - || className.contains("objectweb.asm")) + // Don't sensitive classes + if (isSensitiveClass(className)) { if (settings.isVerboseMode()) { - System.out - .println("Ignoring class in org.intrace or objectweb.asm package: " - + className); + System.out.println("Ignoring sensitive class: " + className); } return false; } @@ -170,6 +167,8 @@ public class ClassTransformer implements ClassFileTransformer // Don't modify a class from a JAR file unless this is allowed CodeSource codeSource = protectionDomain.getCodeSource(); if (!settings.allowJarsToBeTraced() && (codeSource != null) + && (codeSource.getLocation() != null) + && (codeSource.getLocation().getPath() != null) && codeSource.getLocation().getPath().endsWith(".jar")) { if (settings.isVerboseMode()) @@ -210,6 +209,14 @@ public class ClassTransformer implements ClassFileTransformer return true; } + private boolean isSensitiveClass(String className) + { + return className.contains("intrace") || className.contains("objectweb.asm") + || className.startsWith("sun") + || className.startsWith("org.openide") + || className.startsWith("com.sun") || className.startsWith("java"); + } + /** * java.lang.instrument Entry Point *

@@ -230,10 +237,7 @@ public class ClassTransformer implements ClassFileTransformer if (isToBeConsideredForInstrumentation(classBeingRedefined, loader, className, protectionDomain)) { - if (settings.isVerboseMode()) - { - System.out.println("!! Instrumenting class: " + compclass); - } + System.out.println("!! Instrumenting class: " + compclass); if (settings.saveTracedClassfiles()) {