You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cactus-dev@jakarta.apache.org by jr...@apache.org on 2003/01/02 16:38:48 UTC

cvs commit: jakarta-cactus/Eclipse-Plugin JUnit2.1.0Patch.txt

jruaux      2003/01/02 07:38:48

  Added:       Eclipse-Plugin JUnit2.1.0Patch.txt
  Log:
  Patch for the JUnit plugin with extension points.
  
  Revision  Changes    Path
  1.1                  jakarta-cactus/Eclipse-Plugin/JUnit2.1.0Patch.txt
  
  Index: JUnit2.1.0Patch.txt
  ===================================================================
  Index: plugin.properties
  ===================================================================
  RCS file: /home/eclipse/org.eclipse.jdt.junit/plugin.properties,v
  retrieving revision 1.11
  diff -u -r1.11 plugin.properties
  --- plugin.properties	28 May 2002 08:36:22 -0000	1.11
  +++ plugin.properties	2 Jan 2003 15:12:05 -0000
  @@ -15,3 +15,4 @@
   TestSuiteWizard.name= TestSuite
   
   JUnitShortcut.label=JUnit Test
  +TestRunListener.name= TestRun Listeners
  \ No newline at end of file
  Index: plugin.xml
  ===================================================================
  RCS file: /home/eclipse/org.eclipse.jdt.junit/plugin.xml,v
  retrieving revision 1.35
  diff -u -r1.35 plugin.xml
  --- plugin.xml	12 Dec 2002 11:46:25 -0000	1.35
  +++ plugin.xml	2 Jan 2003 15:12:05 -0000
  @@ -1,185 +1,210 @@
   <?xml version="1.0" encoding="UTF-8"?>
  -
   <plugin
  -	id="org.eclipse.jdt.junit"
  -	name="%pluginName"
  -	version="2.1.0"
  -	class="org.eclipse.jdt.internal.junit.ui.JUnitPlugin"
  -	provider-name="%providerName">
  -
  -	<requires>
  -		<import plugin="org.eclipse.ui"/>
  -		<import plugin="org.eclipse.core.resources"/>
  -		<import plugin="org.eclipse.core.boot"/>
  -		<import plugin="org.eclipse.debug.core"/>
  -		<import plugin="org.eclipse.debug.ui"/>
  -		<import plugin="org.eclipse.jdt.core"/>
  -		<import plugin="org.eclipse.jdt.ui"/>
  -		<import plugin="org.eclipse.jdt.debug"/>
  -		<import plugin="org.eclipse.swt"/>
  -		<import plugin="org.eclipse.core.runtime"/>
  -		<import plugin="org.eclipse.jdt.launching"/>
  -		<import plugin="org.eclipse.jdt.debug.ui"/>
  -		<import plugin="org.junit"/>     
  -	</requires>
  -	
  -	<runtime>
  -		<library name="junitsupport.jar">
  -			<export name="*"/>
  -			<packages prefixes="org.eclipse.jdt.internal.junit"/>
  -		</library>
  -	</runtime>
  -
  -	<extension
  -		point="org.eclipse.ui.views">
  -		<view
  -			name="%View.label"
  -			icon="icons/full/cview16/junit.gif"
  -			category="org.eclipse.jdt.ui.java"
  -			class="org.eclipse.jdt.internal.junit.ui.TestRunnerViewPart"
  -			id="org.eclipse.jdt.junit.ResultView"
  -			fastViewWidthRatio="0.40">	
  -		</view>
  -	</extension>
  -	
  -    <extension 
  -    	point="org.eclipse.ui.perspectiveExtensions">
  -        <perspectiveExtension 
  -           targetID="org.eclipse.jdt.ui.JavaPerspective"> 
  -           <view id="org.eclipse.jdt.junit.ResultView" 
  -                relative="org.eclipse.jdt.ui.PackageExplorer"
  -                visible="false" 
  -                relationship="stack"/> 
  -        </perspectiveExtension> 
  -        <perspectiveExtension 
  -			targetID="org.eclipse.jdt.ui.JavaPerspective">
  -			<actionSet id="org.eclipse.jdt.junit.JUnitActionSet"/>
  -		</perspectiveExtension>
  -		<perspectiveExtension 
  -			targetID="org.eclipse.jdt.ui.JavaBrowsingPerspective">
  -			<actionSet id="org.eclipse.jdt.junit.JUnitActionSet"/>
  -		</perspectiveExtension>
  -    </extension> 
  -
  -	<extension
  -		point="org.eclipse.ui.preferencePages">
  -		<page name="%PreferencePage.label"
  -			id="org.eclipse.jdt.junit.preferences"
  -			class="org.eclipse.jdt.internal.junit.ui.JUnitPreferencePage"
  -			category= "org.eclipse.jdt.ui.preferences.JavaBasePreferencePage"> 
  -		</page>
  -	</extension>
  -	
  -	<extension point = "org.eclipse.debug.core.launchConfigurationTypes">
  -   		<launchConfigurationType
  -   	   		id="org.eclipse.jdt.junit.launchconfig"
  -	   		name="%Launch.label"
  -	   		delegate="org.eclipse.jdt.internal.junit.launcher.JUnitLaunchConfiguration"
  -	   		modes= "run, debug">
  -	   <fileExtension
  -	   		extension="java"
  -	   		default="false"/>
  -	   <fileExtension
  -	   		extension="class"
  -	   		default="false"/>
  -   		</launchConfigurationType>
  -	</extension>
  -	
  -	<extension point = "org.eclipse.debug.core.launchConfigurationComparators">
  -		<launchConfigurationComparator
  -			id = "org.eclipse.jdt.junit.containerComparator"
  -			class = "org.eclipse.jdt.internal.junit.launcher.ContainerComparator"
  -			attribute = "org.eclipse.jdt.junit.CONTAINER"/>
  -	</extension>
  -	
  -	<extension point="org.eclipse.debug.ui.launchConfigurationTypeImages">
  -		<launchConfigurationTypeImage
  -			id="org.eclipse.jdt.junit.launchimage"
  -			configTypeID="org.eclipse.jdt.junit.launchconfig"
  -			icon="icons/full/obj16/julaunch.gif">
  -		</launchConfigurationTypeImage>	
  -	</extension>
  -		
  -	<extension point = "org.eclipse.debug.ui.launchConfigurationTabGroups">
  -		<launchConfigurationTabGroup
  -			id="org.eclipse.jdt.junit.launchConfigurationTabGroup.junit"
  -			type ="org.eclipse.jdt.junit.launchconfig"
  -			class="org.eclipse.jdt.internal.junit.launcher.JUnitTabGroup">
  -		</launchConfigurationTabGroup>
  -	</extension>
  -
  -	<extension point="org.eclipse.ui.newWizards">
  -		<category
  -		   id = "org.eclipse.jdt.junit"
  -		   parentCategory="org.eclipse.jdt.ui.java"
  -		   name="%WizardCategory.name">
  -		</category>
  -		<wizard 
  -			id="org.eclipse.jdt.junit.wizards.NewTestCaseCreationWizard"
  -			name="%TestCaseWizard.name"
  -			class="org.eclipse.jdt.internal.junit.wizards.NewTestCaseCreationWizard"
  -			category="org.eclipse.jdt.ui.java/org.eclipse.jdt.junit"
  -			icon="icons/full/ctool16/new_testcase.gif">
  -			<description>%TestWizard.description</description>
  -	    </wizard>
  -		<wizard 
  -			id="org.eclipse.jdt.junit.wizards.NewTestSuiteCreationWizard"
  -			name="%TestSuiteWizard.name"
  -			class="org.eclipse.jdt.internal.junit.wizards.NewTestSuiteCreationWizard"
  -			category="org.eclipse.jdt.ui.java/org.eclipse.jdt.junit"
  -			icon="icons/full/ctool16/new_testsuite.gif">
  -			<description>%SuiteWizard.description</description>
  -	    </wizard>
  -	</extension>
  -	
  -	<extension point="org.eclipse.ui.popupMenus">
  -		<objectContribution
  -			id="org.eclipse.jdt.junit.wizards.UpdateTestSuite"
  -			objectClass="org.eclipse.jdt.core.ICompilationUnit"
  -			nameFilter="AllTests.java">
  -			<action
  -				id="updateTestSuite"
  -				label="%UpdateSuiteAction.label"
  -				tooltip="%UpdateSuiteAction.tooltip"
  -				enablesFor="1"
  -				class="org.eclipse.jdt.internal.junit.wizards.UpdateTestSuite">
  -			</action>
  -		</objectContribution>
  -	</extension>
  -
  -   <extension point="org.eclipse.ui.actionSets">
  -		<actionSet
  +   id="org.eclipse.jdt.junit"
  +   name="%pluginName"
  +   version="2.1.0.1"
  +   provider-name="%providerName"
  +   class="org.eclipse.jdt.internal.junit.ui.JUnitPlugin">
  +
  +   <runtime>
  +      <library name="junitsupport.jar">
  +         <export name="*"/>
  +      </library>
  +   </runtime>
  +   <requires>
  +      <import plugin="org.eclipse.ui"/>
  +      <import plugin="org.eclipse.core.resources"/>
  +      <import plugin="org.eclipse.core.boot"/>
  +      <import plugin="org.eclipse.debug.core"/>
  +      <import plugin="org.eclipse.debug.ui"/>
  +      <import plugin="org.eclipse.jdt.core"/>
  +      <import plugin="org.eclipse.jdt.ui"/>
  +      <import plugin="org.eclipse.jdt.debug"/>
  +      <import plugin="org.eclipse.swt"/>
  +      <import plugin="org.eclipse.core.runtime"/>
  +      <import plugin="org.eclipse.jdt.launching"/>
  +      <import plugin="org.eclipse.jdt.debug.ui"/>
  +      <import plugin="org.junit"/>
  +   </requires>
  +
  +
  +   <extension-point id="testRunListeners" name="%TestRunListener.name" schema="schema/org.eclipse.jdt.junit.testRunListeners.exsd"/>
  +
  +   <extension
  +         point="org.eclipse.ui.views">
  +      <view
  +            name="%View.label"
  +            icon="icons/full/cview16/junit.gif"
  +            fastViewWidthRatio="0.40"
  +            category="org.eclipse.jdt.ui.java"
  +            class="org.eclipse.jdt.internal.junit.ui.TestRunnerViewPart"
  +            id="org.eclipse.jdt.junit.ResultView">
  +      </view>
  +   </extension>
  +   <extension
  +         point="org.eclipse.ui.perspectiveExtensions">
  +      <perspectiveExtension
  +            targetID="org.eclipse.jdt.ui.JavaPerspective">
  +         <view
  +               relative="org.eclipse.jdt.ui.PackageExplorer"
  +               visible="false"
  +               relationship="stack"
  +               id="org.eclipse.jdt.junit.ResultView">
  +         </view>
  +      </perspectiveExtension>
  +      <perspectiveExtension
  +            targetID="org.eclipse.jdt.ui.JavaPerspective">
  +         <actionSet
  +               id="org.eclipse.jdt.junit.JUnitActionSet">
  +         </actionSet>
  +      </perspectiveExtension>
  +      <perspectiveExtension
  +            targetID="org.eclipse.jdt.ui.JavaBrowsingPerspective">
  +         <actionSet
  +               id="org.eclipse.jdt.junit.JUnitActionSet">
  +         </actionSet>
  +      </perspectiveExtension>
  +   </extension>
  +   <extension
  +         point="org.eclipse.ui.preferencePages">
  +      <page
  +            name="%PreferencePage.label"
  +            category="org.eclipse.jdt.ui.preferences.JavaBasePreferencePage"
  +            class="org.eclipse.jdt.internal.junit.ui.JUnitPreferencePage"
  +            id="org.eclipse.jdt.junit.preferences">
  +      </page>
  +   </extension>
  +   <extension
  +         point="org.eclipse.debug.core.launchConfigurationTypes">
  +      <launchConfigurationType
  +            name="%Launch.label"
  +            delegate="org.eclipse.jdt.internal.junit.launcher.JUnitLaunchConfiguration"
  +            modes="run, debug"
  +            id="org.eclipse.jdt.junit.launchconfig">
  +         <fileExtension
  +               default="false"
  +               extension="java">
  +         </fileExtension>
  +         <fileExtension
  +               default="false"
  +               extension="class">
  +         </fileExtension>
  +      </launchConfigurationType>
  +   </extension>
  +   <extension
  +         point="org.eclipse.debug.core.launchConfigurationComparators">
  +      <launchConfigurationComparator
  +            attribute="org.eclipse.jdt.junit.CONTAINER"
  +            class="org.eclipse.jdt.internal.junit.launcher.ContainerComparator"
  +            id="org.eclipse.jdt.junit.containerComparator">
  +      </launchConfigurationComparator>
  +   </extension>
  +   <extension
  +         point="org.eclipse.debug.ui.launchConfigurationTypeImages">
  +      <launchConfigurationTypeImage
  +            icon="icons/full/obj16/julaunch.gif"
  +            configTypeID="org.eclipse.jdt.junit.launchconfig"
  +            id="org.eclipse.jdt.junit.launchimage">
  +      </launchConfigurationTypeImage>
  +   </extension>
  +   <extension
  +         point="org.eclipse.debug.ui.launchConfigurationTabGroups">
  +      <launchConfigurationTabGroup
  +            type="org.eclipse.jdt.junit.launchconfig"
  +            class="org.eclipse.jdt.internal.junit.launcher.JUnitTabGroup"
  +            id="org.eclipse.jdt.junit.launchConfigurationTabGroup.junit">
  +      </launchConfigurationTabGroup>
  +   </extension>
  +   <extension
  +         point="org.eclipse.ui.newWizards">
  +      <category
  +            name="%WizardCategory.name"
  +            parentCategory="org.eclipse.jdt.ui.java"
  +            id="org.eclipse.jdt.junit">
  +      </category>
  +      <wizard
  +            name="%TestCaseWizard.name"
  +            icon="icons/full/ctool16/new_testcase.gif"
  +            category="org.eclipse.jdt.ui.java/org.eclipse.jdt.junit"
  +            class="org.eclipse.jdt.internal.junit.wizards.NewTestCaseCreationWizard"
  +            id="org.eclipse.jdt.junit.wizards.NewTestCaseCreationWizard">
  +         <description>
  +            %TestWizard.description
  +         </description>
  +      </wizard>
  +      <wizard
  +            name="%TestSuiteWizard.name"
  +            icon="icons/full/ctool16/new_testsuite.gif"
  +            category="org.eclipse.jdt.ui.java/org.eclipse.jdt.junit"
  +            class="org.eclipse.jdt.internal.junit.wizards.NewTestSuiteCreationWizard"
  +            id="org.eclipse.jdt.junit.wizards.NewTestSuiteCreationWizard">
  +         <description>
  +            %SuiteWizard.description
  +         </description>
  +      </wizard>
  +   </extension>
  +   <extension
  +         point="org.eclipse.ui.popupMenus">
  +      <objectContribution
  +            objectClass="org.eclipse.jdt.core.ICompilationUnit"
  +            nameFilter="AllTests.java"
  +            id="org.eclipse.jdt.junit.wizards.UpdateTestSuite">
  +         <action
  +               label="%UpdateSuiteAction.label"
  +               tooltip="%UpdateSuiteAction.tooltip"
  +               class="org.eclipse.jdt.internal.junit.wizards.UpdateTestSuite"
  +               enablesFor="1"
  +               id="updateTestSuite">
  +         </action>
  +      </objectContribution>
  +   </extension>
  +   <extension
  +         point="org.eclipse.ui.actionSets">
  +      <actionSet
               label="JUnit"
               visible="false"
               id="org.eclipse.jdt.junit.JUnitActionSet">
  -			<action
  -				label="Referring Tests..."
  -				tooltip="Go to Test Referring to Selection"
  -				class="org.eclipse.jdt.internal.junit.ui.GotoReferencedTestAction"
  -				menubarPath="navigate/goTo/"
  -				id="junit.actions.GotoTestAction">
  -			</action>
  -		</actionSet>
  -   </extension>	
  -	
  -	
  -	<extension id="junit_task" point="org.eclipse.core.resources.markers" name="%Task.name">
  -		<super type="org.eclipse.core.resources.taskmarker"/>
  -		<persistent value="true"/>
  -	</extension>
  -	
  -	<extension point = "org.eclipse.debug.ui.launchShortcuts">
  -		<shortcut
  -			id="org.eclipse.jdt.junit.junitShortcut"
  -			class="org.eclipse.jdt.internal.junit.launcher.JUnitLaunchShortcut"
  -			label="%JUnitShortcut.label"
  -			icon="icons/full/obj16/julaunch.gif"
  -			modes="run, debug">
  -			<perspective id="org.eclipse.jdt.ui.JavaPerspective"/>
  -			<perspective id="org.eclipse.jdt.ui.JavaHierarchyPerspective"/>
  -			<perspective id="org.eclipse.jdt.ui.JavaBrowsingPerspective"/>
  -			<perspective id="org.eclipse.debug.ui.DebugPerspective"/>
  -		</shortcut>
  -	</extension>
  +         <action
  +               label="Referring Tests..."
  +               tooltip="Go to Test Referring to Selection"
  +               class="org.eclipse.jdt.internal.junit.ui.GotoReferencedTestAction"
  +               menubarPath="navigate/goTo/"
  +               id="junit.actions.GotoTestAction">
  +         </action>
  +      </actionSet>
  +   </extension>
  +   <extension
  +         id="junit_task"
  +         name="%Task.name"
  +         point="org.eclipse.core.resources.markers">
  +      <super
  +            type="org.eclipse.core.resources.taskmarker">
  +      </super>
  +      <persistent
  +            value="true">
  +      </persistent>
  +   </extension>
  +   <extension
  +         point="org.eclipse.debug.ui.launchShortcuts">
  +      <shortcut
  +            label="%JUnitShortcut.label"
  +            icon="icons/full/obj16/julaunch.gif"
  +            modes="run, debug"
  +            class="org.eclipse.jdt.internal.junit.launcher.JUnitLaunchShortcut"
  +            id="org.eclipse.jdt.junit.junitShortcut">
  +         <perspective
  +               id="org.eclipse.jdt.ui.JavaPerspective">
  +         </perspective>
  +         <perspective
  +               id="org.eclipse.jdt.ui.JavaHierarchyPerspective">
  +         </perspective>
  +         <perspective
  +               id="org.eclipse.jdt.ui.JavaBrowsingPerspective">
  +         </perspective>
  +         <perspective
  +               id="org.eclipse.debug.ui.DebugPerspective">
  +         </perspective>
  +      </shortcut>
  +   </extension>
   
  -</plugin>
  \ No newline at end of file
  +</plugin>
  Index: doc/org.eclipse.jdt.junit.testRunListeners.html
  ===================================================================
  RCS file: doc/org.eclipse.jdt.junit.testRunListeners.html
  diff -N doc/org.eclipse.jdt.junit.testRunListeners.html
  --- /dev/null	1 Jan 1970 00:00:00 -0000
  +++ doc/org.eclipse.jdt.junit.testRunListeners.html	2 Jan 2003 15:12:06 -0000
  @@ -0,0 +1,36 @@
  +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  +<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  +</HEAD>
  +<HTML>
  +<BODY>
  +<H1><CENTER>TestRun Listeners</CENTER></H1>
  +<H2>Identifier</H2>
  +org.eclipse.jdt.junit.org.eclipse.jdt.junit.testRunListeners<H2>Description</H2>
  +This extension point is used to plug in TestRun listeners.<H2>Markup</H2>
  +<p><samp>&nbsp;&nbsp; &lt;!ELEMENT extension (testRunListener*)&gt;</samp>
  +<br><samp>&nbsp;&nbsp; &lt;!ATTLIST extension</samp>
  +<br><samp>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;point&nbsp;CDATA #REQUIRED</samp>
  +<br><samp>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED</samp>
  +<br><samp>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;&nbsp;CDATA #IMPLIED</samp>
  +<br><samp>&nbsp;&nbsp; &gt;</samp>
  +<ul>
  +<li><b>point</b> - </li><li><b>id</b> - </li><li><b>name</b> - </li></ul>
  +<p><samp>&nbsp;&nbsp; &lt;!ELEMENT testRunListener EMPTY&gt;</samp>
  +<br><samp>&nbsp;&nbsp; &lt;!ATTLIST testRunListener</samp>
  +<br><samp>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class&nbsp;CDATA #REQUIRED</samp>
  +<br><samp>&nbsp;&nbsp; &gt;</samp>
  +<ul>
  +<li><b>class</b> - a fully qualified name of the Java class that implements <samp>org.eclipse.jdt.internal.junit.runner.ITestRunListener</samp> interface</li></ul>
  +<H2>Example</H2>
  +The following is an example of the extension point usage:
  +
  +<p>
  +<pre>
  +      &lt;extension point="org.eclipse.jdt.junit.testRunListeners"&gt;
  +         &lt;testRunListener class="com.example.SampleTestRunListener"/&gt;
  +      &lt;/extension&gt;
  +   </pre>
  +</p><H2>API Information</H2>
  +Plug-ins that want to extend this extension point must implement <samp>org.eclipse.jdt.internal.junit.runner.ITestRunListener</samp> interface<H2>Supplied Implementation</H2>
  +[Enter information about supplied implementation of this extension point.]</BODY>
  +</HTML>
  Index: src/org/eclipse/jdt/internal/junit/ui/JUnitPlugin.java
  ===================================================================
  RCS file: /home/eclipse/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/JUnitPlugin.java,v
  retrieving revision 1.15
  diff -u -r1.15 JUnitPlugin.java
  --- src/org/eclipse/jdt/internal/junit/ui/JUnitPlugin.java	15 Dec 2002 19:57:32 -0000	1.15
  +++ src/org/eclipse/jdt/internal/junit/ui/JUnitPlugin.java	2 Jan 2003 15:12:06 -0000
  @@ -12,13 +12,18 @@
   import java.util.HashSet;
   import java.util.List;
   import java.util.Set;
  +import java.util.Vector;
   
   import org.eclipse.core.resources.IWorkspaceRoot;
   import org.eclipse.core.resources.ResourcesPlugin;
   import org.eclipse.core.runtime.CoreException;
  +import org.eclipse.core.runtime.IConfigurationElement;
  +import org.eclipse.core.runtime.IExtensionPoint;
   import org.eclipse.core.runtime.IPluginDescriptor;
   import org.eclipse.core.runtime.IProgressMonitor;
   import org.eclipse.core.runtime.IStatus;
  +import org.eclipse.core.runtime.MultiStatus;
  +import org.eclipse.core.runtime.Platform;
   import org.eclipse.core.runtime.Status;
   import org.eclipse.debug.core.DebugPlugin;
   import org.eclipse.debug.core.ILaunch;
  @@ -33,6 +38,7 @@
   import org.eclipse.jdt.core.JavaCore;
   import org.eclipse.jdt.core.JavaModelException;
   import org.eclipse.jdt.internal.junit.launcher.JUnitBaseLaunchConfiguration;
  +import org.eclipse.jdt.internal.junit.runner.ITestRunListener;
   import org.eclipse.jdt.ui.JavaElementLabelProvider;
   import org.eclipse.jface.dialogs.ProgressMonitorDialog;
   import org.eclipse.jface.operation.IRunnableWithProgress;
  @@ -70,7 +76,19 @@
   	 * Once a test runner is connected it is removed from the set.
   	 */
   	private AbstractSet fTrackedLaunches= new HashSet(20);
  -	
  +
  +
  +	/**
  +	 * Identifier for 'testRunListeners' extension point
  +	 */
  +	public static final String ID_EXTENSION_POINT_TESTRUN_LISTENERS =
  +		PLUGIN_ID + "." + "testRunListeners";
  +
  +	/**
  +	 * Vector containing the TestRun listeners
  +	 */
  +	private Vector testRunListeners = null;
  +		
   	public JUnitPlugin(IPluginDescriptor desc) {
   		super(desc);
   		fgPlugin= this;
  @@ -308,5 +326,61 @@
   		dialog.setIgnoreCase(false);
   		dialog.setElements(packageList.toArray()); // XXX inefficient
   		return dialog;
  +	}
  +	
  +	/**
  +	 * Initializes TestRun Listener extensions
  +	 */
  +	private void loadTestRunListeners() {
  +		testRunListeners = new Vector();
  +		IExtensionPoint extensionPoint =
  +			Platform.getPluginRegistry().getExtensionPoint(
  +				ID_EXTENSION_POINT_TESTRUN_LISTENERS);
  +		if (extensionPoint == null) {
  +			return;
  +		}
  +		IConfigurationElement[] configs =
  +			extensionPoint.getConfigurationElements();
  +		MultiStatus status =
  +			new MultiStatus(
  +				PLUGIN_ID,
  +				IStatus.OK,
  +				JUnitMessages.getString(
  +					"JUnitPlugin.Exception_occurred_reading_testRunListener_extensions"),
  +				null);	
  +		for (int i = 0; i < configs.length; i++) {
  +			try {
  +				ITestRunListener testRunListener =
  +					(ITestRunListener) configs[i].createExecutableExtension(
  +						"class");
  +				testRunListeners.add(testRunListener);
  +			} catch (CoreException e) {
  +				status.add(e.getStatus());
  +			}
  +		}
  +		if (!status.isOK()) {
  +			JUnitPlugin.log(status);
  +		}
  +	}
  +
  +	/**
  +	 * Returns an array of all TestRun listeners
  +	 */
  +	public Vector getTestRunListeners() {
  +		if (testRunListeners == null) {
  +			loadTestRunListeners();
  +		}
  +		return testRunListeners;
  +	}
  +
  +	/**
  +	 * Adds a TestRun listener to the collection of listeners
  +	 */
  +	public void addTestRunListener(ITestRunListener newListener) {
  +		// load TestRun listeners from the extension point registry
  +		if (testRunListeners == null) {
  +			loadTestRunListeners();
  +		}
  +		testRunListeners.add(newListener);
   	}	
   }
  Index: src/org/eclipse/jdt/internal/junit/ui/RemoteTestRunnerClient.java
  ===================================================================
  RCS file: /home/eclipse/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/RemoteTestRunnerClient.java,v
  retrieving revision 1.3
  diff -u -r1.3 RemoteTestRunnerClient.java
  --- src/org/eclipse/jdt/internal/junit/ui/RemoteTestRunnerClient.java	13 Apr 2002 23:43:08 -0000	1.3
  +++ src/org/eclipse/jdt/internal/junit/ui/RemoteTestRunnerClient.java	2 Jan 2003 15:12:06 -0000
  @@ -21,9 +21,10 @@
    */
   public class RemoteTestRunnerClient {
   	/**
  -	 * A listener that is informed about test events.
  +	 * An array of listeners that are informed about test events.
   	 */
  -	private ITestRunListener fListener;
  +	private ITestRunListener[] fListeners;
  +
   	/**
   	 * The server socket
   	 */
  @@ -91,7 +92,9 @@
   				while(fBufferedReader != null && (message= readMessage(fBufferedReader)) != null)
   					receiveMessage(message);
   			} catch (SocketException e) {
  -				fListener.testRunTerminated();
  +				for (int i = 0; i < fListeners.length; i++) {
  +					fListeners[i].testRunTerminated();
  +				}
   			} catch (IOException e) {
   				System.out.println(e);
   				// fall through
  @@ -104,11 +107,13 @@
   	 * Start listening to a test run. Start a server connection that
   	 * the RemoteTestRunner can connect to.
   	 */
  -	public synchronized void startListening(ITestRunListener listener, int port) {
  -		fListener= listener;
  -		fPort= port;
  -		ServerConnection connection= new ServerConnection(port);
  -		connection.start();		
  +	public synchronized void startListening(
  +		ITestRunListener[] listeners,
  +		int port) {
  +		fListeners = listeners;
  +		fPort = port;
  +		ServerConnection connection = new ServerConnection(port);
  +		connection.start();
   	}
   	
   	/**
  @@ -177,9 +182,16 @@
   			return;
   		}
   		if (message.startsWith(MessageIds.TRACE_END)) {
  -			fInReadTrace= false;
  -			fListener.testFailed(fFailureKind, fFailedTest, fFailedTrace);
  -			fFailedTrace= ""; //$NON-NLS-1$
  +			fInReadTrace = false;
  +
  +			for (int i = 0; i < fListeners.length; i++) {
  +				fListeners[i].testFailed(
  +					fFailureKind,
  +					fFailedTest,
  +					fFailedTrace);
  +			}
  +
  +			fFailedTrace = ""; //$NON-NLS-1$
   			return;
   		}
   		if (fInReadTrace) {
  @@ -203,16 +215,22 @@
   
   		String arg= message.substring(MessageIds.MSG_HEADER_LENGTH);
   		if (message.startsWith(MessageIds.TEST_RUN_START)) {
  -			int count= Integer.parseInt(arg);
  -			fListener.testRunStarted(count);
  +			int count = Integer.parseInt(arg);
  +			for (int i = 0; i < fListeners.length; i++) {
  +				fListeners[i].testRunStarted(count);
  +			}
   			return;
   		}
   		if (message.startsWith(MessageIds.TEST_START)) {
  -			fListener.testStarted(arg);
  +			for (int i = 0; i < fListeners.length; i++) {
  +				fListeners[i].testStarted(arg);
  +			}
   			return;
   		}
   		if (message.startsWith(MessageIds.TEST_END)) {
  -			fListener.testEnded(arg);
  +			for (int i = 0; i < fListeners.length; i++) {
  +				fListeners[i].testEnded(arg);
  +			}
   			return;
   		}
   		if (message.startsWith(MessageIds.TEST_ERROR)) {
  @@ -226,18 +244,25 @@
   			return;
   		}
   		if (message.startsWith(MessageIds.TEST_RUN_END)) {
  -			long elapsedTime= Long.parseLong(arg);
  -			fListener.testRunEnded(elapsedTime);
  +			long elapsedTime = Long.parseLong(arg);
  +			for (int i = 0; i < fListeners.length; i++) {
  +				fListeners[i].testRunEnded(elapsedTime);
  +			}
   			return;
   		}
   		if (message.startsWith(MessageIds.TEST_STOPPED)) {
  -			long elapsedTime= Long.parseLong(arg);
  -			fListener.testRunStopped(elapsedTime);
  +			long elapsedTime = Long.parseLong(arg);
  +			for (int i = 0; i < fListeners.length; i++) {
  +				fListeners[i].testRunStopped(elapsedTime);
  +			}
  +
   			shutDown();
   			return;
   		}
   		if (message.startsWith(MessageIds.TEST_TREE)) {
  -			fListener.testTreeEntry(arg);
  +			for (int i = 0; i < fListeners.length; i++) {
  +				fListeners[i].testTreeEntry(arg);
  +			}
   			return;
   		}
   		if (message.startsWith(MessageIds.TEST_RERAN)) {
  @@ -256,8 +281,11 @@
   				
   			String trace= ""; //$NON-NLS-1$
   			if (statusCode != ITestRunListener.STATUS_OK)
  -				trace= fFailedRerunTrace; // assumption a rerun trace was sent before
  -			fListener.testReran(className, testName, statusCode, trace);
  +				trace = fFailedRerunTrace;
  +			// assumption a rerun trace was sent before
  +			for (int i = 0; i < fListeners.length; i++) {
  +				fListeners[i].testReran(className, testName, statusCode, trace);
  +			}
   		}
   	}
   }
  Index: src/org/eclipse/jdt/internal/junit/ui/TestRunnerViewPart.java
  ===================================================================
  RCS file: /home/eclipse/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/TestRunnerViewPart.java,v
  retrieving revision 1.23
  diff -u -r1.23 TestRunnerViewPart.java
  --- src/org/eclipse/jdt/internal/junit/ui/TestRunnerViewPart.java	17 Dec 2002 20:48:21 -0000	1.23
  +++ src/org/eclipse/jdt/internal/junit/ui/TestRunnerViewPart.java	2 Jan 2003 15:12:06 -0000
  @@ -459,7 +459,13 @@
   			stopTest();
   		}
   		fTestRunnerClient= new RemoteTestRunnerClient();
  -		fTestRunnerClient.startListening(this, port);
  +		Vector listeners = JUnitPlugin.getDefault().getTestRunListeners();
  +		// Construct an array containing the listeners, plus TestRunnerViewPart (this)
  +		ITestRunListener[] listenerArray = new ITestRunListener[listeners.size()+1];
  +		listeners.copyInto(listenerArray);
  +		int lastElementIndex = listenerArray.length-1;
  +		listenerArray[lastElementIndex] = this;
  +		fTestRunnerClient.startListening(listenerArray, port);
   		fLastLaunch= launch;
   		String title= JUnitMessages.getFormattedString("TestRunnerViewPart.title", type.getElementName()); //$NON-NLS-1$
   		setTitle(title);
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>