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:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to