Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 173983

Summary: Error while viewing the log parsers list in categorized hierarchial view
Product: z_Archived Reporter: Ajay Garga Rengasayee <ajay_garga>
Component: TPTP.monitoringAssignee: Liz Dancy <lizdancy>
Status: CLOSED FIXED QA Contact:
Severity: major    
Priority: P1 CC: apnan, ewchan
Version: unspecifiedKeywords: plan
Target Milestone: ---   
Hardware: PC   
OS: Windows Vista   
Whiteboard: closed460

Description Ajay Garga Rengasayee CLA 2007-02-13 05:42:02 EST
Build ID: Build id: I20070123-1715

Steps To Reproduce:
TPTP Build id : TPTP-4.4.0-200702050100
IBM JDK  :  1.5 SR1
Pltaform : Windows Vista (reproducible in Windows XP SP2 also)

Steps: 
1. In the plugin.xml of the plugin org.eclipse.hyades.logging.parsers plugin replace all the parser set and parser contributions with the following:

<!-- Log Parser sets -->
   <extension
         point="org.eclipse.hyades.logging.parsers.logParserSet">
      <logParserSet
            id="org.eclipse.hyades.logging.parsers.tptpLogParserSet"
            label="TPTP"            
            icon="./icons/full/obj16/apache_parser_obj.gif"
            description="TPTP Log Parsers"/>

   </extension>
   
   <extension
         point="org.eclipse.hyades.logging.parsers.logParserSet">
      <logParserSet
            id="org.eclipse.hyades.logging.parsers.apacheLogParserSet"
            label="Apache"
            parentId="org.eclipse.hyades.logging.parsers.tptpLogParserSet"
            icon="./icons/full/obj16/apache_parser_obj.gif"
            description="Parsers for Apache logs"/>

   </extension>
   <extension
         point="org.eclipse.hyades.logging.parsers.logParserSet">
      <logParserSet
            id="org.eclipse.hyades.logging.parsers.microsoftLogParserSet"
            label="Microsoft"
            parentId="org.eclipse.hyades.logging.parsers.tptpLogParserSet"
            icon="./icons/full/obj16/apache_parser_obj.gif"
            description="Parsers for Microsoft log types"/>

   </extension>

<!-- Apache Access Log Parser extension point -->
   <extension
         point="org.eclipse.hyades.logging.parsers.logParser">
      <parser
            name="%STR_APACHE_ACCESS_LOG_IMPORT_NAME"
            icon="./icons/full/obj16/apache_parser_obj.gif"
            description="%STR_APACHE_ACCESS_LOG_IMPORT_DESCRIPTION"
            class="org.eclipse.hyades.logging.adapter.config.StaticParserWrapper"
            ui_name="%STR_APACHE_ACCESS_LOG_IMPORT_NAME"
            id="org.eclipse.hyades.logging.parsers.ApacheAccessLogParser"
            parserSetId="org.eclipse.hyades.logging.parsers.apacheLogParserSet">
         <field
               useBrowse="true"
               defaultValue=""
               name="%STR_APACHE_ACCESS_LOG_IMPORT_FILE_PATH"
               helpContextId=""
               tooltip="%STR_APACHE_ACCESS_LOG_IMPORT_FILE_PATH_TOOLTIP"
               id="file_path"
               browseType="*.log">
         </field>
         <field
               useBrowse="false"
               defaultValue="1.3.20(static),1.3.26(static),2.0(static),1.3.x(rules),2.0.x(rules)"
               name="%STR_APACHE_ACCESS_LOG_IMPORT_APACHE_VERSION"
               helpContextId=""
               tooltip="%STR_APACHE_ACCESS_LOG_IMPORT_APACHE_VERSION_TOOLTIP"
               ui_type="combobox"
               id="version">
         </field>
<!-- Config file lookup based on the selected version above -->
         <parserParameter
               name="1.3.x(rules)"
               value="./Apache/access/v1.3.26/regex.adapter">
         </parserParameter>
         <parserParameter
               name="2.0.x(rules)"
               value="./Apache/access/v1.3.26/regex.adapter">
         </parserParameter>
<!-- Default should be defined in case a match cannot be found  -->
         <parserParameter
               name="Default"
               value="./Apache/access/v1.3.26/static.adapter">
         </parserParameter>
      </parser>
   </extension>
<!-- Apache Error Log Parser extension point -->
   <extension
         point="org.eclipse.hyades.logging.parsers.logParser">
      <parser
            name="%STR_APACHE_ERR_LOG_IMPORT_NAME"
            icon="./icons/full/obj16/apache_parser_obj.gif"
            description="%STR_APACHE_ERR_LOG_IMPORT_DESCRIPTION"
            class="org.eclipse.hyades.logging.adapter.config.StaticParserWrapper"
            ui_name="%STR_APACHE_ERR_LOG_IMPORT_NAME"
            id="org.eclipse.hyades.logging.parsers.ApacheErrorLogParser"
            parserSetId="org.eclipse.hyades.logging.parsers.apacheLogParserSet">
         <field
               useBrowse="true"
               defaultValue=""
               name="%STR_APACHE_ERR_LOG_IMPORT_FILE_PATH"
               helpContextId=""
               tooltip="%STR_APACHE_ERR_LOG_IMPORT_FILE_PATH_TOOLTIP"
               id="file_path"
               browseType="*.log">
         </field>
         <field
               useBrowse="false"
               defaultValue="1.3.20(static),1.3.26(static),2.0(static),1.3.x(rules),2.0.x(rules)"
               name="%STR_APACHE_ERR_LOG_IMPORT_APACHE_VERSION"
               helpContextId=""
               tooltip="%STR_APACHE_ERR_LOG_IMPORT_APACHE_VERSION_TOOLTIP"
               ui_type="combobox"
               id="version">
         </field>
<!-- Config file lookup based on the selected version above -->
         <parserParameter
               name="1.3.x(rules)"
               value="./Apache/error/v1.3.26/regex.adapter">
         </parserParameter>
         <parserParameter
               name="2.0.x(rules)"
               value="./Apache/error/v1.3.26/regex.adapter">
         </parserParameter>
<!-- Default should be defined in case a match cannot be found  -->
         <parserParameter
               name="Default"
               value="./Apache/error/v1.3.26/static.adapter">
         </parserParameter>
      </parser>
   </extension>

<!-- Common Base Event XML Log Parser extension point -->
   <extension
         point="org.eclipse.hyades.logging.parsers.logParser">
      <parser
            name="%STR_CBE_XML_LOG_IMPORT_NAME"
            icon="./icons/full/obj16/cbe_xml_parser_obj.gif"
            description="%STR_CBE_XML_LOG_IMPORT_DESCRIPTION"
            class="org.eclipse.hyades.logging.adapter.config.StaticParserWrapper"
            ui_name="%STR_CBE_XML_LOG_IMPORT_NAME"
            id="org.eclipse.hyades.logging.parsers.CommonBaseEventXMLLogParser"
            parserSetId="org.eclipse.hyades.logging.parsers.tptpLogParserSet">
         <field
               useBrowse="true"
               defaultValue=""
               name="%STR_CBE_XML_LOG_IMPORT_FILE_PATH"
               helpContextId=""
               tooltip="%STR_CBE_XML_LOG_IMPORT_FILE_PATH_TOOLTIP"
               id="file_path"
               browseType="*">
         </field>
         <field
               useBrowse="false"
               defaultValue="1.0.1(rules)"
               name="%STR_CBE_XML_LOG_IMPORT_APACHE_VERSION"
               helpContextId=""
               tooltip="%STR_CBE_XML_LOG_IMPORT_APACHE_VERSION_TOOLTIP"
               ui_type="combobox"
               id="version">
         </field>
<!-- Default should be defined in case a match cannot be found  -->
<!-- Config file lookup based on the selected version above -->
         <parserParameter
               name="Default"
               value="./XML/CommonBaseEvent/v1.0.1/regex.adapter">
         </parserParameter>
      </parser>
   </extension>
<!-- Microsoft Windows application log parser extension point -->
   <extension
         point="org.eclipse.hyades.logging.parsers.logParser">
      <parser
            name="%STR_WINDOWS_APPLICATION_LOG_IMPORT_NAME"
            icon="./icons/full/obj16/log_parser_obj.gif"
            description="%STR_WINDOWS_APPLICATION_LOG_IMPORT_DESCRIPTION"
            class="org.eclipse.hyades.logging.adapter.config.StaticParserWrapper"
            ui_name="%STR_WINDOWS_APPLICATION_LOG_IMPORT_NAME"
            id="org.eclipse.hyades.logging.parsers.WindowsApplicationLogParser"
            parserSetId="org.eclipse.hyades.logging.parsers.microsoftLogParserSet">
         <field
               useBrowse="false"
               defaultValue="%STR_WINDOWS_ALL"
               name="%STR_WINDOWS_OPERATING_SYSTEM_VERSION"
               helpContextId=""
               tooltip="%STR_WINDOWS_APPLICATION_LOG_IMPORT_VERSION_TOOLTIP"
               ui_type="combobox"
               id="version">
         </field>
<!-- Default should be defined in case a match cannot be found  -->
<!-- Config file lookup based on the selected version above -->
         <parserParameter
               name="Default"
               value="./Windows/application/regex.adapter">
         </parserParameter>
      </parser>
   </extension>
<!-- Microsoft Windows security log parser extension point -->
   <extension
         point="org.eclipse.hyades.logging.parsers.logParser">
      <parser
            name="%STR_WINDOWS_SECURITY_LOG_IMPORT_NAME"
            icon="./icons/full/obj16/log_parser_obj.gif"
            description="%STR_WINDOWS_SECURITY_LOG_IMPORT_DESCRIPTION"
            class="org.eclipse.hyades.logging.adapter.config.StaticParserWrapper"
            ui_name="%STR_WINDOWS_SECURITY_LOG_IMPORT_NAME"
            id="org.eclipse.hyades.logging.parsers.WindowsSecurityLogParser"
            parserSetId="org.eclipse.hyades.logging.parsers.microsoftLogParserSet">
         <field
               useBrowse="false"
               defaultValue="%STR_WINDOWS_ALL"
               name="%STR_WINDOWS_OPERATING_SYSTEM_VERSION"
               helpContextId=""
               tooltip="%STR_WINDOWS_SECURITY_LOG_IMPORT_VERSION_TOOLTIP"
               ui_type="combobox"
               id="version">
         </field>
<!-- Default should be defined in case a match cannot be found  -->
<!-- Config file lookup based on the selected version above -->
         <parserParameter
               name="Default"
               value="./Windows/security/regex.adapter">
         </parserParameter>
      </parser>
   </extension>
<!-- Microsoft Windows system log parser extension point -->
   <extension
         point="org.eclipse.hyades.logging.parsers.logParser">
      <parser
            name="%STR_WINDOWS_SYSTEM_LOG_IMPORT_NAME"
            icon="./icons/full/obj16/log_parser_obj.gif"
            description="%STR_WINDOWS_SYSTEM_LOG_IMPORT_DESCRIPTION"
            class="org.eclipse.hyades.logging.adapter.config.StaticParserWrapper"
            ui_name="%STR_WINDOWS_SYSTEM_LOG_IMPORT_NAME"
            id="org.eclipse.hyades.logging.parsers.WindowsSystemLogParser"
            parserSetId="org.eclipse.hyades.logging.parsers.microsoftLogParserSet">
         <field
               useBrowse="false"
               defaultValue="%STR_WINDOWS_ALL"
               name="%STR_WINDOWS_OPERATING_SYSTEM_VERSION"
               helpContextId=""
               tooltip="%STR_WINDOWS_SYSTEM_LOG_IMPORT_VERSION_TOOLTIP"
               ui_type="combobox"
               id="version">
         </field>
<!-- Default should be defined in case a match cannot be found  -->
<!-- Config file lookup based on the selected version above -->
         <parserParameter
               name="Default"
               value="./Windows/system/regex.adapter">
         </parserParameter>
      </parser>
   </extension>

2. Launch the workbench with the  -clean option and and launch the Import Log wizard, i.e.File->Import->Log File.

3. In the wizard's main page click on "Add..." to add a new log element. The "Add Log File" dialog opens.

4. Click on the "Show categories" check box 

Actual result: Error occurs.

Excpected result : The following categories(log parser sets) and log types (log parsers) are displayed in the "Log types" tree:
TPTP - root category
     Apache - child of TPTP
     Microsoft - child of TPTP

CBE XML log type will be displayed as a child of TPTP
Apache access and errror log types are displayed as children of the Apache category
Microsoft log types are displayed as children of the Microsoft category.

More information:
Error logged in the Eclipse .log:
!ENTRY org.eclipse.ui 4 0 2007-02-13 15:40:56.705
!MESSAGE Unhandled event loop exception
!STACK 0
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.ArrayStoreException)
	at org.eclipse.swt.SWT.error(SWT.java:3450)
	at org.eclipse.swt.SWT.error(SWT.java:3373)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:126)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3442)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3082)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
	at org.eclipse.jface.window.Window.open(Window.java:796)
	at org.eclipse.tptp.monitoring.logui.internal.wizards.ImportLogWizardPage.widgetSelected(ImportLogWizardPage.java:805)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:215)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3465)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3079)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
	at org.eclipse.jface.window.Window.open(Window.java:796)
	at org.eclipse.ui.actions.ImportResourcesAction.run(ImportResourcesAction.java:159)
	at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:168)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:545)
	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3465)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3079)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2083)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2047)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:449)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:101)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:145)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:74)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:170)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:615)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:476)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:416)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1124)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1099)
Caused by: java.lang.ArrayStoreException
	at java.util.ArrayList.toArray(ArrayList.java:330)
	at org.eclipse.tptp.monitoring.logui.internal.wizards.LogParserUI$LogParserUIContentProvider.getChildren(LogParserUI.java:600)
	at org.eclipse.tptp.monitoring.logui.internal.wizards.LogParserUI$LogParserUIContentProvider.getElements(LogParserUI.java:678)
	at org.eclipse.jface.viewers.StructuredViewer.getRawChildren(StructuredViewer.java:936)
	at org.eclipse.jface.viewers.AbstractTreeViewer.getRawChildren(AbstractTreeViewer.java:1262)
	at org.eclipse.jface.viewers.TreeViewer.getRawChildren(TreeViewer.java:394)
	at org.eclipse.jface.viewers.AbstractTreeViewer.getFilteredChildren(AbstractTreeViewer.java:615)
	at org.eclipse.jface.viewers.AbstractTreeViewer.getSortedChildren(AbstractTreeViewer.java:581)
	at org.eclipse.jface.viewers.AbstractTreeViewer.updateChildren(AbstractTreeViewer.java:2489)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:1789)
	at org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:592)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1764)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1720)
	at org.eclipse.jface.viewers.StructuredViewer$8.run(StructuredViewer.java:1424)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1332)
	at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1422)
	at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1379)
	at org.eclipse.tptp.monitoring.logui.internal.wizards.LogParserUI$8.runInUIThread(LogParserUI.java:406)
	at org.eclipse.ui.progress.UIJob$1.run(UIJob.java:94)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:123)
	... 39 more
Comment 1 Alex Nan CLA 2007-02-13 16:13:47 EST
Liz, this is a regression that was introduced in the fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=153758. Please note that LogParserSets can also have log parser sets as children, not only log parser items. The code is failing in the test case Monitor.UI.ImportLog.ParserSets.Create_log_parser_sets at line:
Object items[] = sortedChildren.toArray(new LogParserItem[sortedChildren.size()]);
since the children are log parser sets.
Please look into this problem.
Thanks.
Comment 2 Liz Dancy CLA 2007-03-26 10:19:00 EDT
Need to re-target to i3 due to time and resource constraints. That said, I have a preliminary patch which I will attach once I have thoroughly tested it. Let me know if there are any concerns.
Comment 3 Alex Nan CLA 2007-03-26 12:10:03 EDT
Liz I also have a defect that is related to this one https://bugs.eclipse.org/bugs/show_bug.cgi?id=179008 and I'm gonna have to take a look at how the displaying and filtering in the parser types view are done. I'll try to look into it this week, but cannot promise. Since the two problems are related we can actually fix 179008 by providing a proper solution for the current defect. 179008 is unfortunaltely a regression too, the function used to work in 4.2.
Comment 4 Alex Nan CLA 2007-04-12 20:30:06 EDT
This problem was fixed as part of 179008, please mark the defect as fixed.
Comment 5 Liz Dancy CLA 2007-04-13 08:35:08 EDT
Thanks to Alex's fix for 179008 this has been resolved.
Comment 6 Paul Slauenwhite CLA 2009-06-30 13:16:38 EDT
As of TPTP 4.6.0, TPTP is in maintenance mode and focusing on improving quality by resolving relevant enhancements/defects and increasing test coverage through test creation, automation, Build Verification Tests (BVTs), and expanded run-time execution. As part of the TPTP Bugzilla housecleaning process (see http://wiki.eclipse.org/Bugzilla_Housecleaning_Processes), this enhancement/defect is verified/closed by the Project Lead since this enhancement/defect has been resolved and unverified for more than 1 year and considered to be fixed. If this enhancement/defect is still unresolved and reproducible in the latest TPTP release (http://www.eclipse.org/tptp/home/downloads/), please re-open.