From f0ace2e0da1cbfd971264d8f3b83eee0d9bbd944 Mon Sep 17 00:00:00 2001 From: mchr3k Date: Sun, 8 May 2011 22:45:18 +0100 Subject: [PATCH] Finish support for initial features --- intrace.ecl.plugin/META-INF/MANIFEST.MF | 4 +- intrace.ecl.plugin/icons/java_launch.gif | Bin 0 -> 376 bytes intrace.ecl.plugin/icons/junit_launch.gif | Bin 0 -> 207 bytes intrace.ecl.plugin/icons/runcoverage.gif | Bin 881 -> 0 bytes intrace.ecl.plugin/icons/runintrace.gif | Bin 0 -> 982 bytes intrace.ecl.plugin/lib/intrace-agent.jar | Bin 360742 -> 361240 bytes intrace.ecl.plugin/lib/intrace-ui-helper.jar | Bin 98835 -> 103830 bytes intrace.ecl.plugin/plugin.xml | 53 ++- .../ecl/plugin/ui/output/InTraceEditor.java | 50 ++- .../ui/launching/ConfigurationDelegate.java | 1 + .../ecl/ui/launching/JavaAppShortcut.java | 9 + .../ecl/ui/launching/JunitTestShortcut.java | 9 + .../intrace/ecl/ui/launching/Shortcut.java | 10 +- org.intrace/src/org/intrace/agent/Agent.java | 15 + .../src/org/intrace/agent/AgentSettings.java | 28 +- .../org/intrace/agent/ClassTransformer.java | 22 +- .../agent/server/AgentClientConnection.java | 19 +- .../org/intrace/agent/server/AgentServer.java | 17 + .../client/gui/InTraceStandaloneUI.java | 30 +- .../client/gui/helper/ClientStrings.java | 4 - .../intrace/client/gui/helper/Connection.java | 10 +- .../gui/helper/ControlConnectionThread.java | 8 +- .../intrace/client/gui/helper/InTraceUI.java | 412 +++++++++++++----- .../client/gui/helper/ParsedSettingsData.java | 17 +- .../client/gui/helper/TraceFilterThread.java | 24 +- .../intrace/output/trace/TraceHandler.java | 2 +- .../intrace/shared/AgentConfigConstants.java | 16 +- 27 files changed, 568 insertions(+), 192 deletions(-) create mode 100644 intrace.ecl.plugin/icons/java_launch.gif create mode 100644 intrace.ecl.plugin/icons/junit_launch.gif delete mode 100644 intrace.ecl.plugin/icons/runcoverage.gif create mode 100644 intrace.ecl.plugin/icons/runintrace.gif create mode 100644 intrace.ecl.plugin/src/intrace/ecl/ui/launching/JavaAppShortcut.java create mode 100644 intrace.ecl.plugin/src/intrace/ecl/ui/launching/JunitTestShortcut.java diff --git a/intrace.ecl.plugin/META-INF/MANIFEST.MF b/intrace.ecl.plugin/META-INF/MANIFEST.MF index 8c7c35d..9b2ccfa 100644 --- a/intrace.ecl.plugin/META-INF/MANIFEST.MF +++ b/intrace.ecl.plugin/META-INF/MANIFEST.MF @@ -10,7 +10,9 @@ Require-Bundle: org.eclipse.ui, org.eclipse.debug.ui, org.eclipse.jdt.debug.ui;bundle-version="3.5.2", org.eclipse.jdt.launching;bundle-version="3.5.200", - org.eclipse.ui.ide;bundle-version="3.6.2" + org.eclipse.ui.ide;bundle-version="3.6.2", + org.eclipse.jdt.junit;bundle-version="3.6.1", + org.eclipse.jdt.core;bundle-version="3.6.2" Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-ClassPath: lib/miglayout-3.7.3.1-swt.jar, diff --git a/intrace.ecl.plugin/icons/java_launch.gif b/intrace.ecl.plugin/icons/java_launch.gif new file mode 100644 index 0000000000000000000000000000000000000000..a42a7c83c4e544fceb03923250f7e046eec9695c GIT binary patch literal 376 zcmV-;0f+uaNk%w1VGsZi0M!5h`uhL-`~Uj;|M>d<_xk^Bj=gV?zgU2@Uxl}0iMnHm zxo3;JX^p*Vjl6A-zHgDgNOr7Ie6Uo0vQ&PtT!Xb=hPP&my3gP9)Z+B?`Tsz1s77_G zNO!DCc&$x(t}9`e$K3Mq`2V!i@4ndZ?)U#(n$7F>|M2+#l*Q?WvC^K(>#EP}?f3t1 zwBmQSi7TE@c)B$0ic)i{L literal 0 HcmV?d00001 diff --git a/intrace.ecl.plugin/icons/junit_launch.gif b/intrace.ecl.plugin/icons/junit_launch.gif new file mode 100644 index 0000000000000000000000000000000000000000..ec4885d77560c1be3aeed8ed7cace444bb57b29e GIT binary patch literal 207 zcmZ?wbhEHb6krfwIKsei!^!`aZ{+>d{6~dVPiosfA35>$!sV~G?mX|9_;Sh|#TI|P z?#Q%NZ6%u~Htm`-;o$PQCpWFWxOeA`6UQH1wwas~v8d|*|NjiQf#OdVMg|5k1|5(R zkev*yJ_}U)QZnadRJnylTds=G4A!~4&D7tyUZuGuGo6t`w@LV-hF6zFe{^rBh^vUm lMJL5YR=V9?EQ=Zx8K*Hdv8*&vP-a$auz2$BM=%G2H2{5vOZ@-< literal 0 HcmV?d00001 diff --git a/intrace.ecl.plugin/icons/runcoverage.gif b/intrace.ecl.plugin/icons/runcoverage.gif deleted file mode 100644 index 502ef3885d8b0103ecdd50448b15ee47581c658c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 881 zcmZ?wbhEHb6krfw_|57hW~%L9X2drXygzSi}5g6=)lCvZ=mzw!U851 z9&NFZ1quh9dRZ*BBmx9d82TiI^+FC9G&nQsCYw!>{H%DkpDTaYnabd$e)DZ*xqKxA G7_0$D;5mc< diff --git a/intrace.ecl.plugin/icons/runintrace.gif b/intrace.ecl.plugin/icons/runintrace.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2c20b02160795d6eb3a1ff4935edceec1ef1633 GIT binary patch literal 982 zcmZ?wbhEHb6krfw_|5a+1x-Bk7 zEuMD$E;hX$R$Y-cll|6 z%!u}y9O64Y%yVL_@3dIo>G9rkLj322dCZFRnjP&oBPyidKVV)!;H>DN8F5jQLSpAe zgiT5gSr8MtBszLYa_o|f)Wse-iz9Ou#}_S&%U_a^vm`fRc|qZ_^pb5kMH}i%wlp_x ziD=uBH)DV9q@5M5=k(@Xjh}lpVcor=b$7}dcl0*w=xg6Qb=t1R#pl+pJ+*e}`3)P+ zZQONZ+4c+DH(%Pb?b41Nm$vV?ymRmS9s6z_J#h8Vv0JB)-8p^w&e7{nZryx#`{%z8 zzyE*x_y5P=zkmPz`}hCXGcyw%7_0%TL+u>^ literal 0 HcmV?d00001 diff --git a/intrace.ecl.plugin/lib/intrace-agent.jar b/intrace.ecl.plugin/lib/intrace-agent.jar index 685fd3f6e115e5b0e381efce7503b46eea09eaea..b6fabbcb42e42bca4718e87a80b05f7eb55193a2 100644 GIT binary patch delta 23664 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 d&BsIu=#6pZ!;f7$da5tMh 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

    uB=TP@Dq%*hj9iawv7 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

    `v|~5^xwKt9JGfg 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 Z;Pk4gjC_1C3^5EpRTvmpVu3a=008SA>XZNg diff --git a/intrace.ecl.plugin/plugin.xml b/intrace.ecl.plugin/plugin.xml index fc87fac..dd374db 100644 --- a/intrace.ecl.plugin/plugin.xml +++ b/intrace.ecl.plugin/plugin.xml @@ -13,18 +13,25 @@ point="org.eclipse.debug.core.launchDelegates"> + + @@ -37,9 +44,9 @@ visible="false"> @@ -81,6 +88,27 @@ + + + + + + + + + + + + + + + + @@ -89,15 +117,20 @@ id="intrace.ecl.JavaAppTabGroup" type="org.eclipse.jdt.launching.localJavaApplication"> + + + name="InTrace"> diff --git a/intrace.ecl.plugin/src/intrace/ecl/plugin/ui/output/InTraceEditor.java b/intrace.ecl.plugin/src/intrace/ecl/plugin/ui/output/InTraceEditor.java index 7bb07c6..c1e7597 100644 --- a/intrace.ecl.plugin/src/intrace/ecl/plugin/ui/output/InTraceEditor.java +++ b/intrace.ecl.plugin/src/intrace/ecl/plugin/ui/output/InTraceEditor.java @@ -13,6 +13,8 @@ import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.EditorPart; import org.intrace.client.gui.helper.InTraceUI; +import org.intrace.client.gui.helper.Connection.ConnectState; +import org.intrace.client.gui.helper.InTraceUI.IConnectionStateCallback; public class InTraceEditor extends EditorPart { @@ -24,29 +26,38 @@ public class InTraceEditor extends EditorPart } @Override - public void createPartControl(Composite parent) + public void createPartControl(final Composite parent) { IWorkbench workbench = PlatformUI.getWorkbench(); - Display display = workbench.getDisplay(); + final Display display = workbench.getDisplay(); Shell window = display.getActiveShell(); - inTraceUI = new InTraceUI(window, parent); - } - - @Override - public void init(IEditorSite site, - IEditorInput input) - throws PartInitException - { - setSite(site); - setInput(input); - final EditorInput intraceInput = (EditorInput)input; + inTraceUI = new InTraceUI(window, parent, false); + inTraceUI.setConnCallback(new IConnectionStateCallback() + { + @Override + public void setConnectionState(final ConnectState state) + { + if (!parent.isDisposed()) + { + display.syncExec(new Runnable() + { + @Override + public void run() + { + setPartName("InTrace: " + state.str); + } + }); + } + } + }); + final EditorInput intraceInput = (EditorInput)getEditorInput(); new Thread(new Runnable() { @Override public void run() { try - { + { Socket connection = intraceInput.callback.getClientConnection(); inTraceUI.setFixedLocalConnection(connection); } @@ -55,7 +66,16 @@ public class InTraceEditor extends EditorPart e.printStackTrace(); } } - }).start(); + }).start(); + } + + @Override + public void init(IEditorSite site, + IEditorInput input) + throws PartInitException + { + setSite(site); + setInput(input); } @Override diff --git a/intrace.ecl.plugin/src/intrace/ecl/ui/launching/ConfigurationDelegate.java b/intrace.ecl.plugin/src/intrace/ecl/ui/launching/ConfigurationDelegate.java index 09c6619..9013fc4 100644 --- a/intrace.ecl.plugin/src/intrace/ecl/ui/launching/ConfigurationDelegate.java +++ b/intrace.ecl.plugin/src/intrace/ecl/ui/launching/ConfigurationDelegate.java @@ -78,6 +78,7 @@ public class ConfigurationDelegate extends AbstractJavaLaunchConfigurationDelega vmArgs += Activator.getDefault().agentArg; vmArgs += "=[callbackport-"; vmArgs += Integer.toString(callbackServer.getLocalPort()); + vmArgs += "[startwait"; } wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS, vmArgs); diff --git a/intrace.ecl.plugin/src/intrace/ecl/ui/launching/JavaAppShortcut.java b/intrace.ecl.plugin/src/intrace/ecl/ui/launching/JavaAppShortcut.java new file mode 100644 index 0000000..7104aaa --- /dev/null +++ b/intrace.ecl.plugin/src/intrace/ecl/ui/launching/JavaAppShortcut.java @@ -0,0 +1,9 @@ +package intrace.ecl.ui.launching; + +public class JavaAppShortcut extends Shortcut +{ + public JavaAppShortcut() + { + super("org.eclipse.jdt.debug.ui.localJavaShortcut"); + } +} diff --git a/intrace.ecl.plugin/src/intrace/ecl/ui/launching/JunitTestShortcut.java b/intrace.ecl.plugin/src/intrace/ecl/ui/launching/JunitTestShortcut.java new file mode 100644 index 0000000..1c56d81 --- /dev/null +++ b/intrace.ecl.plugin/src/intrace/ecl/ui/launching/JunitTestShortcut.java @@ -0,0 +1,9 @@ +package intrace.ecl.ui.launching; + +public class JunitTestShortcut extends Shortcut +{ + public JunitTestShortcut() + { + super("org.eclipse.jdt.junit.junitShortcut"); + } +} diff --git a/intrace.ecl.plugin/src/intrace/ecl/ui/launching/Shortcut.java b/intrace.ecl.plugin/src/intrace/ecl/ui/launching/Shortcut.java index f2a762e..d6c310c 100644 --- a/intrace.ecl.plugin/src/intrace/ecl/ui/launching/Shortcut.java +++ b/intrace.ecl.plugin/src/intrace/ecl/ui/launching/Shortcut.java @@ -12,9 +12,15 @@ import org.eclipse.debug.ui.ILaunchShortcut; import org.eclipse.jface.viewers.ISelection; import org.eclipse.ui.IEditorPart; -public class Shortcut implements ILaunchShortcut +public abstract class Shortcut implements ILaunchShortcut { - private final String delegateId = "org.eclipse.jdt.debug.ui.localJavaShortcut"; + private final String delegateId; + + public Shortcut(String xiDelegateId) + { + delegateId = xiDelegateId; + } + private ILaunchShortcut delegate; private ILaunchShortcut getDelegate() diff --git a/org.intrace/src/org/intrace/agent/Agent.java b/org.intrace/src/org/intrace/agent/Agent.java index 97122cb..bdf29f6 100644 --- a/org.intrace/src/org/intrace/agent/Agent.java +++ b/org.intrace/src/org/intrace/agent/Agent.java @@ -84,6 +84,7 @@ public class Agent waitForServerPort(); args.setActualServerPort(serverPort); + // Return updated settings try { Map settingsMap = new HashMap(); @@ -95,6 +96,20 @@ public class Agent { e.printStackTrace(); } + + // Wait for startup + if (args.isWaitStart()) + { + try + { + System.out.println("## Waiting to continue"); + AgentServer.waitForStartSignal(); + } + catch (InterruptedException e) + { + e.printStackTrace(); + } + } } private static int serverPort = -1; diff --git a/org.intrace/src/org/intrace/agent/AgentSettings.java b/org.intrace/src/org/intrace/agent/AgentSettings.java index 0299de8..e18c46f 100644 --- a/org.intrace/src/org/intrace/agent/AgentSettings.java +++ b/org.intrace/src/org/intrace/agent/AgentSettings.java @@ -13,14 +13,21 @@ import org.intrace.shared.AgentConfigConstants; */ public class AgentSettings { - private Pattern classRegex = Pattern.compile(".*"); + private Pattern classRegex = Pattern.compile("^$"); private Pattern excludeClassRegex = Pattern.compile("^$"); - private boolean instruEnabled = false; + private boolean instruEnabled = true; private boolean saveTracedClassfiles = false; private boolean verboseMode = false; private int serverPort = 9123; private int callbackPort = -1; private int actualServerPort = -1; + + private boolean waitStart = false; + + public boolean isWaitStart() + { + return waitStart; + } public int getActualServerPort() { @@ -54,6 +61,7 @@ public class AgentSettings instruEnabled = oldInstance.isInstrumentationEnabled(); saveTracedClassfiles = oldInstance.saveTracedClassfiles(); verboseMode = oldInstance.isVerboseMode(); + waitStart = oldInstance.isWaitStart(); } public void parseArgs(String args) @@ -77,9 +85,9 @@ public class AgentSettings { verboseMode = false; } - else if (arg.toLowerCase().startsWith(AgentConfigConstants.SERVER_PORT)) + else if (arg.toLowerCase().startsWith(AgentConfigConstants.OPT_SERVER_PORT)) { - String serverPortStr = arg.replace(AgentConfigConstants.SERVER_PORT, ""); + String serverPortStr = arg.replace(AgentConfigConstants.OPT_SERVER_PORT, ""); serverPort = Integer.parseInt(serverPortStr); } else if (arg.toLowerCase().startsWith(AgentConfigConstants.CALLBACK_PORT)) @@ -109,6 +117,15 @@ public class AgentSettings { saveTracedClassfiles = false; } + else if (arg.toLowerCase() + .equals(AgentConfigConstants.START_WAIT)) + { + waitStart = true; + } + else if (arg.toLowerCase().equals(AgentConfigConstants.START_ACTIVATE)) + { + waitStart = false; + } else if (arg.startsWith(AgentConfigConstants.CLASS_REGEX)) { String classRegexStr = arg.replace(AgentConfigConstants.CLASS_REGEX, ""); @@ -172,7 +189,8 @@ public class AgentSettings Boolean.toString(verboseMode)); settingsMap.put(AgentConfigConstants.SAVE_TRACED_CLASSFILES, Boolean.toString(saveTracedClassfiles)); - settingsMap.put(AgentConfigConstants.ACTUAL_SERVER_PORT, Integer.toString(actualServerPort)); + settingsMap.put(AgentConfigConstants.SERVER_PORT, Integer.toString(actualServerPort)); + settingsMap.put(AgentConfigConstants.START_WAIT, Boolean.toString(waitStart)); return settingsMap; } } diff --git a/org.intrace/src/org/intrace/agent/ClassTransformer.java b/org.intrace/src/org/intrace/agent/ClassTransformer.java index 472d8b4..135e5bb 100644 --- a/org.intrace/src/org/intrace/agent/ClassTransformer.java +++ b/org.intrace/src/org/intrace/agent/ClassTransformer.java @@ -134,12 +134,15 @@ public class ClassTransformer implements ClassFileTransformer ComparableClassName compklass = new ComparableClassName(className, klassloader); + // Record all class names which get this far + allClasses.add(compklass); + // Don't modify anything if tracing is disabled if (!settings.isInstrumentationEnabled()) { return false; } - + // Don't sensitive classes if (isSensitiveClass(className)) { @@ -159,10 +162,7 @@ public class ClassTransformer implements ClassFileTransformer } return false; } - - // Record all class names which get this far - allClasses.add(compklass); - + // Don't modify classes which match the exclude regex if ((settings.getExcludeClassRegex() == null) || settings.getExcludeClassRegex().matcher(className).matches()) @@ -350,9 +350,9 @@ public class ClassTransformer implements ClassFileTransformer public Map getSettings() { Map settingsMap = settings.getSettingsMap(); - settingsMap.put(AgentConfigConstants.NUM_TOTAL_CLASSES, + settingsMap.put(AgentConfigConstants.STCLS, Integer.toString(allClasses.size())); - settingsMap.put(AgentConfigConstants.NUM_INSTR_CLASSES, + settingsMap.put(AgentConfigConstants.STINST, Integer.toString(modifiedClasses.size())); return settingsMap; } @@ -559,11 +559,11 @@ public class ClassTransformer implements ClassFileTransformer private void broadcastStatus(int count, int total) { Map progressMap = new HashMap(); - progressMap.put(AgentConfigConstants.NUM_STATUS_ID, - AgentConfigConstants.NUM_STATUS_ID); - progressMap.put(AgentConfigConstants.NUM_INSTR_CLASSES, + progressMap.put(AgentConfigConstants.STID, + AgentConfigConstants.STID); + progressMap.put(AgentConfigConstants.STINST, Integer.toString(count)); - progressMap.put(AgentConfigConstants.NUM_TOTAL_CLASSES, + progressMap.put(AgentConfigConstants.STCLS, Integer.toString(total)); try { diff --git a/org.intrace/src/org/intrace/agent/server/AgentClientConnection.java b/org.intrace/src/org/intrace/agent/server/AgentClientConnection.java index 172e14a..137a475 100644 --- a/org.intrace/src/org/intrace/agent/server/AgentClientConnection.java +++ b/org.intrace/src/org/intrace/agent/server/AgentClientConnection.java @@ -88,7 +88,6 @@ public class AgentClientConnection implements Runnable { while (true) { - String message = receiveMessage(); if (message.equals("getsettings")) { @@ -104,6 +103,11 @@ public class AgentClientConnection implements Runnable commandSet.addAll(TraceConfigConstants.COMMANDS); sendMessage(commandSet); } + else if (message.equalsIgnoreCase(AgentConfigConstants.START_ACTIVATE)) + { + transformer.getResponse(this, message); + AgentServer.setStartSignalled(); + } else { List responses = transformer.getResponse(this, message); @@ -151,7 +155,7 @@ public class AgentClientConnection implements Runnable try { String lRet = (String) objIn.readObject(); - System.out.println("Received Message: " + lRet); + System.out.println("## Received Message: " + lRet); return lRet; } catch (ClassNotFoundException e) @@ -168,10 +172,13 @@ public class AgentClientConnection implements Runnable */ public void sendMessage(Object xiObject) throws IOException { - OutputStream out = connectedClient.getOutputStream(); - ObjectOutputStream objOut = new ObjectOutputStream(out); - objOut.writeObject(xiObject); - objOut.flush(); + synchronized (connectedClient) + { + OutputStream out = connectedClient.getOutputStream(); + ObjectOutputStream objOut = new ObjectOutputStream(out); + objOut.writeObject(xiObject); + objOut.flush(); + } } /** diff --git a/org.intrace/src/org/intrace/agent/server/AgentServer.java b/org.intrace/src/org/intrace/agent/server/AgentServer.java index 047a2dc..f00518a 100644 --- a/org.intrace/src/org/intrace/agent/server/AgentServer.java +++ b/org.intrace/src/org/intrace/agent/server/AgentServer.java @@ -23,7 +23,24 @@ public class AgentServer implements Runnable // Target server port private final int serverPort; + + // Start signalled + private static boolean startSignaled = false; + public static synchronized void setStartSignalled() + { + startSignaled = true; + AgentServer.class.notifyAll(); + } + + public static synchronized void waitForStartSignal() throws InterruptedException + { + if (!startSignaled) + { + AgentServer.class.wait(); + } + } + /** * cTor * diff --git a/org.intrace/src/org/intrace/client/gui/InTraceStandaloneUI.java b/org.intrace/src/org/intrace/client/gui/InTraceStandaloneUI.java index 075ef88..24cdb1d 100644 --- a/org.intrace/src/org/intrace/client/gui/InTraceStandaloneUI.java +++ b/org.intrace/src/org/intrace/client/gui/InTraceStandaloneUI.java @@ -3,6 +3,8 @@ package org.intrace.client.gui; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Shell; import org.intrace.client.gui.helper.InTraceUI; +import org.intrace.client.gui.helper.Connection.ConnectState; +import org.intrace.client.gui.helper.InTraceUI.IConnectionStateCallback; public class InTraceStandaloneUI { @@ -12,13 +14,35 @@ public class InTraceStandaloneUI public static void main(String[] args) { // Prepare window - Shell window = new Shell(); - window.setText("InTrace UI"); + final Shell window = new Shell(); window.setSize(new Point(800, 800)); window.setMinimumSize(new Point(800, 480)); // Fill in UI - new InTraceUI(window, window).open(); + InTraceUI ui = new InTraceUI(window, window, true); + + // Register title callback + ui.setConnCallback(new IConnectionStateCallback() + { + @Override + public void setConnectionState(final ConnectState state) + { + if (!window.isDisposed()) + { + window.getDisplay().syncExec(new Runnable() + { + @Override + public void run() + { + window.setText("InTrace UI: " + state.str); + } + }); + } + } + }); + + // Open UI + ui.open(); } } diff --git a/org.intrace/src/org/intrace/client/gui/helper/ClientStrings.java b/org.intrace/src/org/intrace/client/gui/helper/ClientStrings.java index ca59d30..2e76635 100644 --- a/org.intrace/src/org/intrace/client/gui/helper/ClientStrings.java +++ b/org.intrace/src/org/intrace/client/gui/helper/ClientStrings.java @@ -2,10 +2,6 @@ package org.intrace.client.gui.helper; public class ClientStrings { - public static final String ENABLE_INSTR = "Add Instrumentation"; - public static final String ENABLING_INSTR = "Adding Instrumenting..."; - public static final String DISABLING_INSTR = "Removing Instrumentation..."; - public static final String DISABLE_INSTR = "Remove Instrumentation"; public static final String SET_CLASSREGEX = "Select Classes ..."; public static final String ENABLE_ALLOWJARS = "Instru JARs"; public static final String ENABLE_SAVECLASSES = "Save Instrumented Classes"; diff --git a/org.intrace/src/org/intrace/client/gui/helper/Connection.java b/org.intrace/src/org/intrace/client/gui/helper/Connection.java index 4fed017..89360e6 100644 --- a/org.intrace/src/org/intrace/client/gui/helper/Connection.java +++ b/org.intrace/src/org/intrace/client/gui/helper/Connection.java @@ -12,7 +12,15 @@ public class Connection // State public enum ConnectState { - DISCONNECTED_ERR, DISCONNECTED, CONNECTING, CONNECTED + DISCONNECTED_ERR("Disconnected"), + DISCONNECTED("Disconnected"), + CONNECTING("Connecting"), + CONNECTED("Connected"); + public final String str; + private ConnectState(String xiStr) + { + str = xiStr; + } } public static interface ISocketCallback diff --git a/org.intrace/src/org/intrace/client/gui/helper/ControlConnectionThread.java b/org.intrace/src/org/intrace/client/gui/helper/ControlConnectionThread.java index 3f8dedb..d013692 100644 --- a/org.intrace/src/org/intrace/client/gui/helper/ControlConnectionThread.java +++ b/org.intrace/src/org/intrace/client/gui/helper/ControlConnectionThread.java @@ -76,7 +76,7 @@ public class ControlConnectionThread implements Runnable { listener.setProgress(map); } - else if (map.containsKey(AgentConfigConstants.NUM_STATUS_ID)) + else if (map.containsKey(AgentConfigConstants.STID)) { listener.setStatus(map); } @@ -97,7 +97,11 @@ public class ControlConnectionThread implements Runnable } catch (Exception ex) { - ex.printStackTrace(); + if (!ex.getMessage().contains("socket closed") && + !ex.getMessage().contains("onnection reset")) + { + ex.printStackTrace(); + } listener.disconnect(); } } diff --git a/org.intrace/src/org/intrace/client/gui/helper/InTraceUI.java b/org.intrace/src/org/intrace/client/gui/helper/InTraceUI.java index 2f720f0..d2ba412 100644 --- a/org.intrace/src/org/intrace/client/gui/helper/InTraceUI.java +++ b/org.intrace/src/org/intrace/client/gui/helper/InTraceUI.java @@ -14,6 +14,8 @@ import java.util.regex.Pattern; import net.miginfocom.swt.MigLayout; import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.CTabFolder; +import org.eclipse.swt.custom.CTabItem; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.events.MenuDetectEvent; import org.eclipse.swt.events.MenuDetectListener; @@ -22,6 +24,7 @@ import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.program.Program; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; @@ -29,6 +32,7 @@ import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Link; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; @@ -49,6 +53,11 @@ import org.intrace.shared.AgentConfigConstants; public class InTraceUI implements ISocketCallback, IControlConnectionListener { + public static interface IConnectionStateCallback + { + public void setConnectionState(ConnectState state); + } + public static String NEWLINE = System.getProperty("line.separator"); public void open() @@ -65,27 +74,69 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener display.dispose(); } - private Shell sWindow = null; - final TabFolder outputTabs; - private TabFolder buttonTabs; + private final Shell sWindow; private final Composite sRoot; + + private final TabFolder outputTabs; + private final TabFolder buttonTabs; + private final CTabFolder buttonCTabs; + private final CTabFolder outputCTabs; + private final boolean standalone; + + private IConnectionStateCallback connCallback = null; + private MigLayout rootLayout; - public InTraceUI(Shell xiWindow, Composite xiRoot) + public void setConnCallback(IConnectionStateCallback connCallback) + { + this.connCallback = connCallback; + if (connCallback != null) + { + connCallback.setConnectionState(connectionState); + } + } + + public InTraceUI(Shell xiWindow, Composite xiRoot, boolean xiStandalone) { sWindow = xiWindow; sRoot = xiRoot; + standalone = xiStandalone; - MigLayout rootLayout = new MigLayout("fill", "", "[][grow]"); + rootLayout = new MigLayout("fill", "[]", "[][][grow]"); xiRoot.setLayout(rootLayout); - buttonTabs = new TabFolder(xiRoot, SWT.NONE); - buttonTabs.setLayoutData("grow,wrap,wmin 0"); - - outputTabs = new TabFolder(xiRoot, SWT.NONE); - outputTabs.setLayoutData("grow,wmin 0,hmin 0"); - - fillButtonTabs(buttonTabs); - fillOutputTabs(outputTabs); + if (xiStandalone) + { + buttonCTabs = null; + buttonTabs = new TabFolder(xiRoot, SWT.NONE); + buttonTabs.setLayoutData("grow,wrap,wmin 0"); + fillButtonTabs(buttonTabs); + } + else + { + buttonTabs = null; + buttonCTabs = new CTabFolder(xiRoot, SWT.TOP | SWT.BORDER); + buttonCTabs.setSimple(false); + buttonCTabs.setLayoutData("grow,wrap,wmin 0"); + fillButtonCTabs(buttonCTabs); + buttonCTabs.setSelection(0); + } + + if (xiStandalone) + { + outputCTabs = null; + outputTabs = new TabFolder(xiRoot, SWT.NONE); + outputTabs.setLayoutData("grow,wmin 0,hmin 0,cell 0 2"); + fillOutputTabs(outputTabs); + } + else + { + outputTabs = null; + outputCTabs = new CTabFolder(xiRoot, SWT.TOP | SWT.BORDER); + outputCTabs.setSimple(false); + outputCTabs.setLayoutData("grow,wmin 0,hmin 0,cell 0 2"); + fillOutputCTabs(outputCTabs); + outputCTabs.setSelection(0); + } updateUIStateSameThread(); @@ -115,9 +166,20 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener @Override public void run() { + if (standalone) + { + buttonTabs.getItem(0).dispose(); + } + else + { + buttonCTabs.getItem(0).dispose(); + } connTab.addressInput.setText("localhost"); connTab.portInput.setText("detecting..."); - buttonTabs.setSelection(instruTab.tabItem); + textOutputTab.filterThread.addSystemTraceLine("Instructions"); + textOutputTab.filterThread.addSystemTraceLine(" - Select Classes you want to Trace"); + textOutputTab.filterThread.addSystemTraceLine("Full help available on the Help tab"); + textOutputTab.filterThread.addSystemTraceLine(""); } }); } @@ -128,24 +190,99 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener private InstruTab instruTab; private TraceTab traceTab; private ExtrasTab extraTab; + private Composite startPanel; private void fillButtonTabs(TabFolder tabFolder) { TabItem connTabItem = new TabItem(tabFolder, SWT.NONE); connTabItem.setText("Connection"); - connTab = new ConnectionTab(tabFolder, connTabItem); + connTab = new ConnectionTab(tabFolder); + connTabItem.setControl(connTab.composite); TabItem instrTabItem = new TabItem(tabFolder, SWT.NONE); instrTabItem.setText("Instrumentation"); - instruTab = new InstruTab(tabFolder, instrTabItem); + instruTab = new InstruTab(tabFolder); + instrTabItem.setControl(instruTab.composite); TabItem traceTabItem = new TabItem(tabFolder, SWT.NONE); traceTabItem.setText("Trace"); - traceTab = new TraceTab(tabFolder, traceTabItem); + traceTab = new TraceTab(tabFolder); + traceTabItem.setControl(traceTab.composite); TabItem extraTabItem = new TabItem(tabFolder, SWT.NONE); extraTabItem.setText("Advanced"); - extraTab = new ExtrasTab(tabFolder, extraTabItem); + extraTab = new ExtrasTab(tabFolder); + extraTabItem.setControl(extraTab.composite); + } + + private void fillButtonCTabs(CTabFolder tabFolder) + { + CTabItem connTabItem = new CTabItem(tabFolder, SWT.NONE); + connTabItem.setText("Connection"); + connTab = new ConnectionTab(tabFolder); + connTabItem.setControl(connTab.composite); + + CTabItem instrTabItem = new CTabItem(tabFolder, SWT.NONE); + instrTabItem.setText("Instrumentation"); + instruTab = new InstruTab(tabFolder); + instrTabItem.setControl(instruTab.composite); + + CTabItem traceTabItem = new CTabItem(tabFolder, SWT.NONE); + traceTabItem.setText("Trace"); + traceTab = new TraceTab(tabFolder); + traceTabItem.setControl(traceTab.composite); + + CTabItem extraTabItem = new CTabItem(tabFolder, SWT.NONE); + extraTabItem.setText("Advanced"); + extraTab = new ExtrasTab(tabFolder); + extraTabItem.setControl(extraTab.composite); + } + + private boolean waitStartUIShown = false; + + private void addWaitStartUI() + { + if (!waitStartUIShown) + { + startPanel = new Composite(sRoot, SWT.NONE); + startPanel.setLayoutData("grow,wrap,cell 0 1"); + MigLayout startLayout = new MigLayout("fillx", "[align center]", "[]"); + startPanel.setLayout(startLayout); + + Label startLabel = new Label(startPanel, SWT.NONE); + startLabel.setText("Program has been paused."); + startLabel.setLayoutData("split"); + + final Button startButton = new Button(startPanel, SWT.PUSH); + startButton.setText("Start Program"); + + startButton.addSelectionListener(new SelectionAdapter() + { + @Override + public void widgetSelected(SelectionEvent arg0) + { + controlThread.sendMessage(AgentConfigConstants.START_ACTIVATE); + controlThread.sendMessage("getsettings"); + startButton.setEnabled(false); + } + }); + + sRoot.layout(); + + waitStartUIShown = true; + } + } + + private void removeWaitStartUI() + { + if (waitStartUIShown) + { + startPanel.dispose(); + + sRoot.layout(); + + waitStartUIShown = false; + } } private class ConnectionTab @@ -153,15 +290,15 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener final Button connectButton; final Text addressInput; final Text portInput; - private Label statusLabel; + final Label statusLabel; + final Composite composite; - private ConnectionTab(TabFolder tabFolder, TabItem connTab) + private ConnectionTab(Composite parent) { MigLayout windowLayout = new MigLayout("fill", "[380][grow]"); - Composite composite = new Composite(tabFolder, SWT.NONE); + composite = new Composite(parent, SWT.NONE); composite.setLayout(windowLayout); - connTab.setControl(composite); Group connectionGroup = new Group(composite, SWT.SHADOW_ETCHED_IN); MigLayout connGroupLayout = new MigLayout("fill", "[40][200][grow]"); @@ -217,7 +354,7 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener if ((connectionState == ConnectState.DISCONNECTED) || (connectionState == ConnectState.DISCONNECTED_ERR)) { - connectionState = ConnectState.CONNECTING; + setConnectionState(ConnectState.CONNECTING); updateUIStateSameThread(); Connection.connectToAgent(thisWindow, sWindow, addressInput .getText(), portInput.getText()); @@ -236,24 +373,21 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener private class InstruTab { - final Button togInstru; final Button classRegex; final Button listClasses; final Label instrStatusLabel; - private final TabItem tabItem; + final Composite composite; - private InstruTab(TabFolder tabFolder, TabItem instrTab) + private InstruTab(Composite parent) { - this.tabItem = instrTab; MigLayout windowLayout = new MigLayout("fill", "[][300][grow]", "[]"); - Composite composite = new Composite(tabFolder, SWT.NONE); + composite = new Composite(parent, SWT.NONE); composite.setLayout(windowLayout); - instrTab.setControl(composite); composite.setLayoutData("hmin 0"); Group mainControlGroup = new Group(composite, SWT.SHADOW_ETCHED_IN); - MigLayout mainControlGroupLayout = new MigLayout("filly", "[150][150]"); + MigLayout mainControlGroupLayout = new MigLayout("filly", "[150]"); mainControlGroup.setLayout(mainControlGroupLayout); mainControlGroup.setLayoutData("hmin 0, grow"); mainControlGroup.setText("Instrumentation Settings"); @@ -262,11 +396,6 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener classRegex.setText(ClientStrings.SET_CLASSREGEX); classRegex.setLayoutData("grow"); - togInstru = new Button(mainControlGroup, SWT.PUSH); - togInstru.setText(ClientStrings.ENABLE_INSTR); - togInstru.setAlignment(SWT.CENTER); - togInstru.setLayoutData("grow"); - Group statusGroup = new Group(composite, SWT.SHADOW_IN); MigLayout statusGroupLayout = new MigLayout("fillx", "[][]"); statusGroup.setLayout(statusGroupLayout); @@ -283,27 +412,6 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener listClasses.setAlignment(SWT.CENTER); listClasses.setLayoutData("gapy 5px"); - togInstru - .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() - { - @Override - public void widgetSelected(SelectionEvent arg0) - { - if (!settingsData.instrEnabled) - { - togInstru.setText(ClientStrings.ENABLING_INSTR); - } - else - { - togInstru.setText(ClientStrings.DISABLE_INSTR); - } - togInstru.setEnabled(false); - toggleSetting(settingsData.instrEnabled, "[instru-true", - "[instru-false"); - settingsData.instrEnabled = !settingsData.instrEnabled; - } - }); - final String helpText = "Enter pattern in the form " + "\"mypack.mysubpack.MyClass\" or using wildcards " + "\"mypack.*.MyClass\" or \"*MyClass\" etc"; @@ -366,17 +474,6 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener { instrStatusLabel.setText("Progress: " + progressClasses + "/" + totalClasses); - if (done) - { - if (settingsData.instrEnabled) - { - togInstru.setText(ClientStrings.DISABLE_INSTR); - } else - { - togInstru.setText(ClientStrings.ENABLE_INSTR); - } - togInstru.setEnabled(true); - } } } @@ -388,14 +485,14 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener final Button stdOutOutput; final Button fileOutput; + final Composite composite; - private TraceTab(TabFolder tabFolder, TabItem traceTab) + private TraceTab(Composite parent) { MigLayout windowLayout = new MigLayout("fill", "[][][grow]"); - Composite composite = new Composite(tabFolder, SWT.NONE); + composite = new Composite(parent, SWT.NONE); composite.setLayout(windowLayout); - traceTab.setControl(composite); Group traceTypesGroup = new Group(composite, SWT.SHADOW_ETCHED_IN); MigLayout traceTypesGroupLayout = new MigLayout("fill", "[150]"); @@ -492,17 +589,17 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener private class ExtrasTab { - private Button togSaveClasses; - private Button togVerbose; - private Button printSettings; + final Button togSaveClasses; + final Button togVerbose; + final Button printSettings; + final Composite composite; - private ExtrasTab(TabFolder tabFolder, TabItem traceTab) + private ExtrasTab(Composite parent) { MigLayout windowLayout = new MigLayout("fill", "[200][grow]"); - Composite composite = new Composite(tabFolder, SWT.NONE); + composite = new Composite(parent, SWT.NONE); composite.setLayout(windowLayout); - traceTab.setControl(composite); togSaveClasses = new Button(composite, SWT.CHECK); togSaveClasses.setText(ClientStrings.ENABLE_SAVECLASSES); @@ -555,12 +652,32 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener } TextOutputTab textOutputTab; + HelpOutputTab helpOutputTab; private void fillOutputTabs(TabFolder tabFolder) { TabItem textOutputTabItem = new TabItem(tabFolder, SWT.NONE); textOutputTabItem.setText("Output"); - textOutputTab = new TextOutputTab(tabFolder, textOutputTabItem); + textOutputTab = new TextOutputTab(tabFolder); + textOutputTabItem.setControl(textOutputTab.composite); + + TabItem helpOutputTabItem = new TabItem(tabFolder, SWT.NONE); + helpOutputTabItem.setText("Help"); + helpOutputTab = new HelpOutputTab(tabFolder); + helpOutputTabItem.setControl(helpOutputTab.composite); + } + + private void fillOutputCTabs(CTabFolder tabFolder) + { + CTabItem textOutputTabItem = new CTabItem(tabFolder, SWT.NONE); + textOutputTabItem.setText("Output"); + textOutputTab = new TextOutputTab(tabFolder); + textOutputTabItem.setControl(textOutputTab.composite); + + CTabItem helpOutputTabItem = new CTabItem(tabFolder, SWT.NONE); + helpOutputTabItem.setText("Help"); + helpOutputTab = new HelpOutputTab(tabFolder); + helpOutputTabItem.setControl(helpOutputTab.composite); } private class TextOutputTab @@ -576,15 +693,15 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener final Button downButton; final Button upButton; final Text findInput; + final Composite composite; - private TextOutputTab(TabFolder tabFolder, TabItem textOutputTab) + private TextOutputTab(Composite parent) { MigLayout windowLayout = new MigLayout("fill,wmin 0,hmin 0", "[100][100][100][150][100][grow]", "[20][20][grow][]"); - final Composite composite = new Composite(tabFolder, SWT.NONE); + composite = new Composite(parent, SWT.NONE); composite.setLayout(windowLayout); - textOutputTab.setControl(composite); Button saveText = new Button(composite, SWT.PUSH); saveText.setText(ClientStrings.SAVE_TEXT); @@ -890,7 +1007,8 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener } }); - filterThread = new TraceFilterThread(new TraceTextHandler() + filterThread = new TraceFilterThread(standalone, + new TraceTextHandler() { // Re-usable class to avoid object allocations class SetTextRunnable implements Runnable @@ -956,26 +1074,15 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener setOutputStatus(displayed, total); } }); - filterThread.addSystemTraceLine("Help is available online: https://github.com/mchr3k/org.intrace/wiki"); - filterThread.addSystemTraceLine("Here is some example trace:"); - filterThread.addTraceLine("[10/05/27 14:14:30]:[1]:example.ExampleClass:multiplyMethod: {:100"); - filterThread.addTraceLine("[10/05/27 14:14:30]:[1]:example.ExampleClass:multiplyMethod: Arg: 2"); - filterThread.addTraceLine("[10/05/27 14:14:30]:[1]:example.ExampleClass:multiplyMethod: Arg: 4"); - filterThread.addTraceLine("[10/05/27 14:14:30]:[1]:example.ExampleClass:multiplyMethod: /:101"); - filterThread.addTraceLine("[10/05/27 14:14:30]:[1]:example.ExampleClass:multiplyMethod: Return: 8"); - filterThread.addTraceLine("[10/05/27 14:14:30]:[1]:example.ExampleClass:multiplyMethod: }:105"); - filterThread.addSystemTraceLine(""); - filterThread.addSystemTraceLine("This means the following:"); - filterThread.addSystemTraceLine("[10/05/27 14:14:30] is a date/timestamp - the date is in the format yy/mm/dd"); - filterThread.addSystemTraceLine("[1] - the thread ID"); - filterThread.addSystemTraceLine("example.ExampleClass:multiplyMethod - the Class and Method being traced"); - filterThread.addSystemTraceLine("{:100 - The method was entered on source line 100"); - filterThread.addSystemTraceLine("Arg: 2 - The first argument had value 2"); - filterThread.addSystemTraceLine("Arg: 2 - The second argument had value 4"); - filterThread.addSystemTraceLine("/:101 - An optional block of code was executed starting at source line 101 (e.g. an if statement)"); - filterThread.addSystemTraceLine("Return: 8 - The method returned value 8"); - filterThread.addSystemTraceLine("}:105 - The method returned on source line 105"); - filterThread.addSystemTraceLine(""); + + if (standalone) + { + filterThread.addSystemTraceLine("Instructions"); + filterThread.addSystemTraceLine("(1) Connect to Agent"); + filterThread.addSystemTraceLine("(2) Select Classes you want to Trace"); + filterThread.addSystemTraceLine("Full help available on the Help tab"); + filterThread.addSystemTraceLine(""); + } } private String getDisplayPatternFromText(String text) @@ -1173,12 +1280,79 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener }); } } + + private class HelpOutputTab + { + final StyledText textOutput; + final Composite composite; + final Link helpLink; + + private HelpOutputTab(Composite parent) + { + MigLayout windowLayout = new MigLayout("fill,wmin 0,hmin 0", + "[grow]", "[20][grow]"); + + composite = new Composite(parent, SWT.NONE); + composite.setLayout(windowLayout); + + helpLink = new Link(composite, SWT.NONE); + helpLink.setLayoutData("growx,wrap"); + helpLink.setText("Online Help"); + + textOutput = new StyledText(composite, SWT.MULTI | SWT.V_SCROLL + | SWT.H_SCROLL | SWT.BORDER); + textOutput.setEditable(false); + textOutput.setLayoutData("spanx,grow,wmin 0,hmin 0"); + textOutput.setBackground(Display.getCurrent().getSystemColor( + SWT.COLOR_WHITE)); + + helpLink.addSelectionListener(new SelectionAdapter() + { + @Override + public void widgetSelected(SelectionEvent event) + { + Program.launch(event.text); + } + }); + + StringBuilder helpStr = new StringBuilder(); + helpStr.append("Here is some example trace:\n"); + helpStr.append("[14:14:30]:[1]:example.ExampleClass:multiplyMethod: {:100\n"); + helpStr.append("[14:14:30]:[1]:example.ExampleClass:multiplyMethod: Arg: 2\n"); + helpStr.append("[14:14:30]:[1]:example.ExampleClass:multiplyMethod: Arg: 4\n"); + helpStr.append("[14:14:30]:[1]:example.ExampleClass:multiplyMethod: /:101\n"); + helpStr.append("[14:14:30]:[1]:example.ExampleClass:multiplyMethod: Return: 8\n"); + helpStr.append("[14:14:30]:[1]:example.ExampleClass:multiplyMethod: }:105\n"); + helpStr.append("\n"); + helpStr.append("This means the following:\n"); + helpStr.append("[14:14:30] is a timestamp"); + helpStr.append("[1] - the thread ID\n"); + helpStr.append("example.ExampleClass:multiplyMethod - the Class and Method being traced\n"); + helpStr.append("{:100 - The method was entered on source line 100\n"); + helpStr.append("Arg: 2 - The first argument had value 2\n"); + helpStr.append("Arg: 2 - The second argument had value 4\n"); + helpStr.append("/:101 - An optional block of code was executed starting at source line 101 (e.g. an if statement)\n"); + helpStr.append("Return: 8 - The method returned value 8\n"); + helpStr.append("}:105 - The method returned on source line 105\n"); + textOutput.setText(helpStr.toString()); + } + } // Window ref private final InTraceUI thisWindow = this; private ConnectState connectionState = ConnectState.DISCONNECTED; + public void setConnectionState(ConnectState connectionState) + { + this.connectionState = connectionState; + IConnectionStateCallback callback = connCallback; + if (callback != null) + { + callback.setConnectionState(connectionState); + } + } + // Network details private InetAddress remoteAddress; @@ -1189,12 +1363,15 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener // Settings private ParsedSettingsData settingsData = new ParsedSettingsData( new HashMap()); - private Pattern lastEnteredIncludeFilterPattern = TraceFilterThread.MATCH_ALL; + + private Pattern lastEnteredIncludeFilterPattern = TraceFilterThread.MATCH_NONE; + private Pattern activeIncludeFilterPattern = TraceFilterThread.MATCH_NONE; + private Pattern oldIncludeFilterPattern = TraceFilterThread.MATCH_NONE; + private Pattern lastEnteredExcludeFilterPattern = TraceFilterThread.MATCH_NONE; - private Pattern activeIncludeFilterPattern = TraceFilterThread.MATCH_ALL; - private Pattern oldIncludeFilterPattern = TraceFilterThread.MATCH_ALL; private Pattern activeExcludeFilterPattern = TraceFilterThread.MATCH_NONE; private Pattern oldExcludeFilterPattern = TraceFilterThread.MATCH_NONE; + private boolean autoScroll = true; private boolean fixedConnection = false; @@ -1207,7 +1384,7 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener controlThread = new ControlConnectionThread(socket, this); controlThread.start(); controlThread.sendMessage("getsettings"); - connectionState = ConnectState.CONNECTED; + setConnectionState(ConnectState.CONNECTED); controlThread.sendMessage("[out-network"); String networkTracePortStr = controlThread.getMessage(); @@ -1233,7 +1410,7 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener } } else { - connectionState = ConnectState.DISCONNECTED_ERR; + setConnectionState(ConnectState.DISCONNECTED_ERR); } updateUIState(); } @@ -1248,7 +1425,7 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener { networkTraceThread.disconnect(); } - connectionState = ConnectState.DISCONNECTED; + setConnectionState(ConnectState.DISCONNECTED); updateUIState(); } @@ -1361,6 +1538,15 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener connTab.portInput.setText(Integer.toString(settingsData.actualServerPort)); } + if (settingsData.waitStart) + { + addWaitStartUI(); + } + else + { + removeWaitStartUI(); + } + if (connectionState == ConnectState.CONNECTING) { connTab.connectButton.setText(ClientStrings.CONNECTING); @@ -1372,9 +1558,6 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener chooseText(connTab.connectButton, (connectionState == ConnectState.CONNECTED), ClientStrings.CONNECT, ClientStrings.DISCONNECT); - chooseText(instruTab.togInstru, - settingsData.instrEnabled, ClientStrings.ENABLE_INSTR, - ClientStrings.DISABLE_INSTR); if (connectionState == ConnectState.CONNECTED) { @@ -1385,7 +1568,6 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener // Enable all buttons instruTab.classRegex.setEnabled(true); instruTab.listClasses.setEnabled(true); - instruTab.togInstru.setEnabled(true); traceTab.argsTrace.setEnabled(true); traceTab.branchTrace.setEnabled(true); @@ -1400,7 +1582,6 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener textOutputTab.networkOutput.setEnabled(true); // Update the button pressed/unpressed state - instruTab.togInstru.setSelection(settingsData.instrEnabled); traceTab.argsTrace.setSelection(settingsData.argsEnabled); traceTab.branchTrace.setSelection(settingsData.branchEnabled); traceTab.entryExitTrace.setSelection(settingsData.entryExitEnabled); @@ -1435,7 +1616,6 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener instruTab.classRegex.setEnabled(false); instruTab.listClasses.setEnabled(false); - instruTab.togInstru.setEnabled(false); traceTab.argsTrace.setEnabled(false); traceTab.branchTrace.setEnabled(false); @@ -1498,9 +1678,9 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener public void run() { int numInstr = Integer.parseInt(statusMap - .get(AgentConfigConstants.NUM_INSTR_CLASSES)); + .get(AgentConfigConstants.STINST)); int numTotal = Integer.parseInt(statusMap - .get(AgentConfigConstants.NUM_TOTAL_CLASSES)); + .get(AgentConfigConstants.STCLS)); instruTab.setStatus(numInstr, numTotal); } }); @@ -1519,7 +1699,7 @@ public class InTraceUI implements ISocketCallback, IControlConnectionListener textOutputTab.filterThread .addSystemTraceLine("Latest Settings Received"); settingsData = new ParsedSettingsData(settingsMap); - connectionState = ConnectState.CONNECTED; + setConnectionState(ConnectState.CONNECTED); updateUIStateSameThread(); } }); diff --git a/org.intrace/src/org/intrace/client/gui/helper/ParsedSettingsData.java b/org.intrace/src/org/intrace/client/gui/helper/ParsedSettingsData.java index 4cd3286..aeddb32 100644 --- a/org.intrace/src/org/intrace/client/gui/helper/ParsedSettingsData.java +++ b/org.intrace/src/org/intrace/client/gui/helper/ParsedSettingsData.java @@ -25,6 +25,8 @@ public class ParsedSettingsData public final int totalClasses; public final int actualServerPort; + + public final boolean waitStart; private final Map settingsMap; @@ -120,7 +122,7 @@ public class ParsedSettingsData } String numInstrStr = settingsMap - .get(AgentConfigConstants.NUM_INSTR_CLASSES); + .get(AgentConfigConstants.STINST); if (numInstrStr != null) { instruClasses = Integer.parseInt(numInstrStr); @@ -131,7 +133,7 @@ public class ParsedSettingsData } String numTotalStr = settingsMap - .get(AgentConfigConstants.NUM_TOTAL_CLASSES); + .get(AgentConfigConstants.STCLS); if (numTotalStr != null) { totalClasses = Integer.parseInt(numTotalStr); @@ -141,7 +143,7 @@ public class ParsedSettingsData totalClasses = 0; } - String actualServerPortStr = settingsMap.get(AgentConfigConstants.ACTUAL_SERVER_PORT); + String actualServerPortStr = settingsMap.get(AgentConfigConstants.SERVER_PORT); if (actualServerPortStr != null) { actualServerPort = Integer.parseInt(actualServerPortStr); @@ -150,6 +152,15 @@ public class ParsedSettingsData { actualServerPort = 9123; } + + if ("true".equals(settingsMap.get(AgentConfigConstants.START_WAIT))) + { + waitStart = true; + } + else + { + waitStart = false; + } } @Override diff --git a/org.intrace/src/org/intrace/client/gui/helper/TraceFilterThread.java b/org.intrace/src/org/intrace/client/gui/helper/TraceFilterThread.java index 2164879..8a094e9 100644 --- a/org.intrace/src/org/intrace/client/gui/helper/TraceFilterThread.java +++ b/org.intrace/src/org/intrace/client/gui/helper/TraceFilterThread.java @@ -107,14 +107,18 @@ public class TraceFilterThread implements Runnable */ private boolean clearTrace = false; + private final boolean standalone; + /** * cTor + * @param standalone * * @param callback * @param progressCallback */ - public TraceFilterThread(TraceTextHandler callback) + public TraceFilterThread(boolean standalone, TraceTextHandler callback) { + this.standalone = standalone; this.callback = callback; thisThread = new Thread(this); @@ -219,11 +223,19 @@ public class TraceFilterThread implements Runnable { lowMemorySignalled = false; - // I expected a factor of 2 due to trace strings being held by this - // thread along with another copy held by the UI. However, profiling - // shows a factor of 18 is necessary. This is because we need to be able - // to handle entire copies of the active data when adding new strings. - numChars += (18 * newTraceLine.length()); + if (standalone) + { + // I expected a factor of 2 due to trace strings being held by this + // thread along with another copy held by the UI. However, profiling + // shows a factor of 18 is necessary. This is because we need to be able + // to handle entire copies of the active data when adding new strings. + numChars += (18 * newTraceLine.length()); + } + else + { + // Running within eclipse so better be really conservative + numChars += (40 * newTraceLine.length()); + } traceLines.add(newTraceLine); totalLines.incrementAndGet(); diff --git a/org.intrace/src/org/intrace/output/trace/TraceHandler.java b/org.intrace/src/org/intrace/output/trace/TraceHandler.java index 7a49281..a35e2b5 100644 --- a/org.intrace/src/org/intrace/output/trace/TraceHandler.java +++ b/org.intrace/src/org/intrace/output/trace/TraceHandler.java @@ -372,7 +372,7 @@ public class TraceHandler implements IInstrumentationHandler */ public void writeTraceOutput(String xiOutput) { - SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd HH:mm:ss.SSS"); + SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss.SSS"); long threadID = Thread.currentThread().getId(); String traceString = "[" + dateFormat.format(new Date()) + "]:[" + threadID + "]:" + xiOutput; diff --git a/org.intrace/src/org/intrace/shared/AgentConfigConstants.java b/org.intrace/src/org/intrace/shared/AgentConfigConstants.java index 74521fb..bea1b1e 100644 --- a/org.intrace/src/org/intrace/shared/AgentConfigConstants.java +++ b/org.intrace/src/org/intrace/shared/AgentConfigConstants.java @@ -5,24 +5,28 @@ import java.util.Set; public class AgentConfigConstants { - public static final String NUM_STATUS_ID = "NUM_STATUS_ID"; - public static final String NUM_TOTAL_CLASSES = "NUM_TOTAL_CLASSES"; - public static final String NUM_INSTR_CLASSES = "NUM_INSTR_CLASSES"; + public static final String STID = "STID"; + public static final String STCLS = "STCLS"; + public static final String STINST = "STINST"; public static final String NUM_PROGRESS_ID = "NUM_PROGRESS_ID"; public static final String NUM_PROGRESS_COUNT = "NUM_PROGRESS_COUNT"; public static final String NUM_PROGRESS_TOTAL = "NUM_PROGRESS_TOTAL"; public static final String NUM_PROGRESS_DONE = "NUM_PROGRESS_DONE"; - public static final String ACTUAL_SERVER_PORT = "ACTUAL_SERVER_PORT"; + public static final String SERVER_PORT = "SERVER_PORT"; public static final String CLASS_REGEX = "[regex-"; public static final String EXCLUDE_CLASS_REGEX = "[exclude-regex-"; public static final String INSTRU_ENABLED = "[instru-"; public static final String SAVE_TRACED_CLASSFILES = "[saveinstru-"; public static final String VERBOSE_MODE = "[verbose-"; - public static final String SERVER_PORT = "[serverport-"; + public static final String OPT_SERVER_PORT = "[serverport-"; public static final String CALLBACK_PORT = "[callbackport-"; + + public static final String START_WAIT = "[startwait"; + public static final String START_ACTIVATE = "[startactivate"; + public static final Set COMMANDS = new HashSet(); static { @@ -31,7 +35,7 @@ public class AgentConfigConstants COMMANDS.add(INSTRU_ENABLED + ""); COMMANDS.add(SAVE_TRACED_CLASSFILES + ""); COMMANDS.add(VERBOSE_MODE + ""); - COMMANDS.add(SERVER_PORT + ""); + COMMANDS.add(OPT_SERVER_PORT + ""); COMMANDS.add(CALLBACK_PORT + ""); } }