crashanalysis/crashanalyser/com.nokia.s60tools.crashanalyser/src/com/nokia/s60tools/crashanalyser/model/TraceListener.java
author Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
Tue, 24 Aug 2010 14:01:48 +0300
changeset 16 72f198be1c1d
parent 4 615035072f7e
permissions -rw-r--r--
Crash Analyser Carbide Extension 1.4.0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     1
/*
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). 
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     8
*
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    11
*
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    12
* Contributors:
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    13
*
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    14
* Description:
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    15
*
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    16
*/
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    17
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    18
package com.nokia.s60tools.crashanalyser.model;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    19
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    20
import java.io.*;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    21
import java.text.SimpleDateFormat;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    22
import java.util.Calendar;
16
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    23
import java.util.Timer;
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    24
import java.util.TimerTask;
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    25
0
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    26
import org.eclipse.core.runtime.IConfigurationElement;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    27
import org.eclipse.core.runtime.IExtension;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    28
import org.eclipse.core.runtime.IExtensionPoint;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    29
import org.eclipse.core.runtime.IExtensionRegistry;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    30
import org.eclipse.core.runtime.Platform;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    31
import org.eclipse.swt.widgets.Display;
16
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    32
0
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    33
import com.nokia.s60tools.crashanalyser.data.*;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    34
import com.nokia.s60tools.crashanalyser.interfaces.IErrorLibraryObserver;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    35
import com.nokia.s60tools.crashanalyser.files.*;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    36
import com.nokia.s60tools.crashanalyser.export.*;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    37
import com.nokia.s60tools.crashanalyser.plugin.*;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    38
16
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    39
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    40
0
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    41
/**
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    42
 * This class listens MobileCrash files via TraceViewer 
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    43
 *
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    44
 */
4
615035072f7e Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 0
diff changeset
    45
public final class TraceListener implements ITraceDataProcessor, 
0
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    46
										IErrorLibraryObserver  {
16
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    47
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    48
	/**
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    49
	 * Private timer class. Takes care that we do not start crash
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    50
	 * decoding process too many times within the predefined time
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    51
	 * interval.
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    52
	 */
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    53
	private final class TraceTimerTask extends TimerTask
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    54
	{
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    55
		private final TraceListener traceListener;
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    56
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    57
		TraceTimerTask(final TraceListener listener) {
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    58
			traceListener = listener;
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    59
		}
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    60
		
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    61
		@Override
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    62
		public void run() {
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    63
			traceListener.timerExpired();
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    64
		}	
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    65
	}
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    66
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    67
	
0
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    68
	private final static String MOBILE_CRASH_STARTTAG = "<MB_CR_START>"; //$NON-NLS-1$
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    69
	private final static String MOBILE_CRASH_LINE_TAG = "<MB_CD>"; //$NON-NLS-1$
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    70
	private final static String MOBILE_CRASH_STOPTAG = "<MB_CR_STOP>"; //$NON-NLS-1$
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    71
	private final static String MOBILECRASH_START = "MobileCrash_"; //$NON-NLS-1$
16
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    72
	private final static String EXTENSION_TRACE_PROVIDER = "traceprovider"; //$NON-NLS-1$
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    73
	private final static int MAX_DECODER_COUNT = 3;
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    74
	private final static int DECODER_TIMER_DELAY = 10000; // 10 secs.
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    75
	
0
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    76
	boolean listening = false;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    77
	boolean mobileCrashStarted = false;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    78
	BufferedWriter mcFile = null;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    79
	String dumpFolder = ""; //$NON-NLS-1$
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    80
	File dumpFile;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    81
	ErrorLibrary errorLibrary = null;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    82
	boolean decode = false;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    83
	private static ITraceProvider traceProvider = null;
16
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    84
	private Timer timer;
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    85
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    86
	private int decoderCount = 0;
0
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    87
	
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    88
	/**
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    89
	 * Constructor
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    90
	 */
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    91
	public TraceListener() {
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    92
		readTraceProvider();
16
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
    93
		timer = new Timer();
0
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    94
	}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    95
	
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    96
	/**
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    97
	 * Starts trace listening asynchronously
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    98
	 */
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    99
	public void errorLibraryReady() {
16
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   100
		final Runnable refreshRunnable = new Runnable(){
0
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   101
			public void run(){
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   102
				startListening();
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   103
			}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   104
		};
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   105
		
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   106
		Display.getDefault().asyncExec(refreshRunnable);        		
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   107
	}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   108
	
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   109
	/**
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   110
	 * Activates MobileCrash file listening
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   111
	 */
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   112
	public void startListening() {
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   113
		if (errorLibrary == null) {
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   114
			errorLibrary = ErrorLibrary.getInstance(this);
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   115
			return;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   116
		}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   117
		
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   118
		if (listening || traceProvider == null)
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   119
			return;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   120
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   121
		if (traceProvider.start(this))
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   122
			listening = true;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   123
	}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   124
	
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   125
	/**
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   126
	 * Sets whether we should decode imported files or just import them as undecoded state.
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   127
	 * @param decodeFiles 
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   128
	 */
16
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   129
	public void setDecode(final boolean decodeFiles) {
0
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   130
		decode = decodeFiles;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   131
	}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   132
	
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   133
	/**
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   134
	 * De-activates MobileCrash file listening
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   135
	 */
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   136
	public void stopListening() {
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   137
		if (!listening)
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   138
			return;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   139
		
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   140
		if (traceProvider != null)
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   141
			traceProvider.stop();
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   142
		listening = false;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   143
	}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   144
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   145
	/**
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   146
	 * All lines in trace data will be passed to this method. This method
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   147
	 * pics up MobileCrash file content from trace data.
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   148
	 * @param line trace data line
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   149
	 */
16
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   150
	public void processDataLine(final String line) {
0
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   151
		int idx = line.indexOf(MOBILE_CRASH_STARTTAG);
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   152
		
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   153
		try {
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   154
			// Line contained <MC_CR_START>
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   155
			if (idx > -1) { 
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   156
				mobileCrashStarted = true;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   157
				dumpFolder = FileOperations.addSlashToEnd(DecoderEngine.getNewCrashFolder());
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   158
				
16
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   159
				final Calendar cal = Calendar.getInstance();
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   160
			    final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmssSSS"); //$NON-NLS-1$
0
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   161
			    dumpFile = new File(dumpFolder +
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   162
			    					MOBILECRASH_START + 
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   163
			    					sdf.format(cal.getTime()) + 
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   164
			    					"." + 
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   165
			    					CrashAnalyserFile.TRACE_EXTENSION);		
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   166
				
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   167
			    // create a file for this mobilecrash
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   168
			    mcFile = new BufferedWriter(new FileWriter(dumpFile));
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   169
			    mcFile.write(line);
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   170
				mcFile.newLine();
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   171
				
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   172
			// Line did not contain <MC_CR_START>, but <MB_CR_START> has been found previously (i.e we are reading a file) 
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   173
			} else if (mobileCrashStarted){ 
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   174
				
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   175
				idx = line.indexOf(MOBILE_CRASH_LINE_TAG);
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   176
				// Line contained <MB_CD>, add data to file
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   177
				if (idx > -1) { 
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   178
					mcFile.write(line);
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   179
					mcFile.newLine();
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   180
				// Line did not contain <MB_CD>
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   181
				} else { 
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   182
					idx = line.indexOf(MOBILE_CRASH_STOPTAG);
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   183
					// Line contained <MC_CR_STOP>, we can finish reading this mobile crash file
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   184
					if (idx > -1) {
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   185
						mcFile.write(line);
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   186
						mcFile.newLine();
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   187
						mcFile.close();
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   188
						mcFile = null;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   189
						mobileCrashStarted = false;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   190
						
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   191
						// give this mobilecrash file for further processing
16
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   192
						final MobileCrashImporter tc = new MobileCrashImporter();
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   193
						
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   194
						if (decoderCount < MAX_DECODER_COUNT) {
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   195
							decoderCount++;
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   196
							if (decoderCount == 1) {
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   197
								// Start timer when starting decoder at first time
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   198
								timer.schedule(new TraceTimerTask(this), DECODER_TIMER_DELAY);
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   199
							}
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   200
							tc.importFrom(dumpFolder, dumpFile.getName(), errorLibrary, decode);
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   201
						} else {
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   202
							// Too many crashes in the trace file, do not decode (last parameter is false).
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   203
							tc.importFrom(dumpFolder, dumpFile.getName(), errorLibrary, false);
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   204
						}
0
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   205
					}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   206
				}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   207
			}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   208
		} catch (Exception e) {
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   209
			if (mcFile != null) {
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   210
				try {mcFile.close();}catch (Exception E) {E.printStackTrace();}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   211
			}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   212
			mcFile = null;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   213
			mobileCrashStarted = false;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   214
			e.printStackTrace();
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   215
		}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   216
	}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   217
	
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   218
	/**
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   219
	 * Returns whether we have found trace provider plugins.
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   220
	 * @return true if trace providers were found, false if not
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   221
	 */
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   222
	public static boolean traceProviderAvailable() {
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   223
		if (traceProvider == null)
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   224
			return false;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   225
		return true;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   226
	}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   227
	
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   228
	/**
16
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   229
	 * This is called when the timer expires.
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   230
	 */
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   231
	public final void timerExpired()
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   232
	{
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   233
		decoderCount = 0;
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   234
	}
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   235
	
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   236
	/**
0
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   237
	 * Tries to find plugins which are Trace Providers. Selected the first found
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   238
	 * Trace provider plugin.
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   239
	 */
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   240
	void readTraceProvider() {
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   241
		try {
16
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   242
			final IExtensionRegistry er = Platform.getExtensionRegistry();
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   243
			final IExtensionPoint ep = 
0
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   244
				er.getExtensionPoint(CrashAnalyserPlugin.PLUGIN_ID, EXTENSION_TRACE_PROVIDER);
16
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   245
			final IExtension[] extensions = ep.getExtensions();
0
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   246
			
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   247
			// if plug-ins were found.
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   248
			if (extensions != null && extensions.length > 0) {
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   249
				
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   250
				// read all found trace providers
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   251
				for (int i = 0; i < extensions.length; i++) {
16
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   252
					final IConfigurationElement[] ce = extensions[i].getConfigurationElements();
0
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   253
					if (ce != null && ce.length > 0) {
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   254
						try {
16
72f198be1c1d Crash Analyser Carbide Extension 1.4.0
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents: 4
diff changeset
   255
							final ITraceProvider provider = (ITraceProvider)ce[0].createExecutableExtension("class");
0
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   256
							// we support only one trace provider
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   257
							if (provider != null) {
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   258
								traceProvider = provider;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   259
								break;
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   260
							}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   261
						} catch (Exception e) {
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   262
							e.printStackTrace();
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   263
						}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   264
					}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   265
				}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   266
			}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   267
		} catch (Exception e) {
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   268
			e.printStackTrace();
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   269
		}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   270
	}
5ad7ad99af01 Initial version of CrashAnalyser under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   271
}