Updated the exception handler to work with redmine

you can now specify the app and tracker you want in the prop file

Change-Id: Iee3c36865e395f7f3491fb8b2d82d8fe9e0c4297
Signed-off-by: Ricky Barrette <rickbarrette@gmail.com>
This commit is contained in:
2012-02-19 15:47:16 -05:00
parent b2d89ba22f
commit c9da00f0cb
5 changed files with 29 additions and 20 deletions

2
ExceptionHandlerLib/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
/gen
/bin

View File

@@ -1,19 +1,22 @@
# exceptionhandler.properties
# This is the default Twenty Codes, LLC Exception Handler properties file
#
# This file must be included in the main project's assets folder
#
# @author Twenty Codes, LLC
# @author ricky barrette
# @author ricky barrette <rickbarrette@gmail.com>
# @author twenty codes <twentycodes@gmail.com>
# The following is for using our custom server based exception handler web application
# This file is used to tell the Exception Handler LIbrary how to file
# new exception reports
# HTTP ONLY
#
# Place this file in you project's assets folder and edit as needed
#
# server is the physical web address for your server
# file is the path to your filing script
# get is the path to your json retrieval script
server = http://powers.doesntexist.com:666/testing
file = /index.php?post=1
#get = /index.php?get=1
# app is the redmine project name
# tracker is the redmine tracker
server = http://rickbarrette.dyndns.org:8080/
file = redmine/exceptionhandler
app = test
tracker = Bug
# uncomment the following if you want your application to use email to file reports.
# if this is uncommented, email will always be used.

View File

@@ -49,6 +49,8 @@ public class ExceptionHandler implements UncaughtExceptionHandler, Runnable {
private static final String TAG = "ExceptionHandler";
private String mURL = null;
private String mEmail;
private String mAppName;
private String mTracker;
/**
* Creates a new ExceptionHandler
@@ -143,6 +145,8 @@ public class ExceptionHandler implements UncaughtExceptionHandler, Runnable {
properties.load(inputStream);
this.mURL = properties.getProperty("server") + properties.getProperty("file");
this.mEmail = properties.getProperty("email");
this.mAppName = properties.getProperty("app");
this.mTracker = properties.getProperty("tracker");
} catch (IOException e) {
Log.e(TAG, "Failed to open exceptionhandler.properties");
e.printStackTrace();
@@ -166,8 +170,8 @@ public class ExceptionHandler implements UncaughtExceptionHandler, Runnable {
public void uncaughtException(Thread t, Throwable e) {
Log.d(TAG, "uncaughtException()");
Log.d(TAG,"mURL = "+ this.mURL);
Log.d(TAG,"mEmail = "+ this.mEmail);
// Log.d(TAG,"mURL = "+ this.mURL);
// Log.d(TAG,"mEmail = "+ this.mEmail);
Date theDate = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd_HH.mm.ss_zzz");
@@ -197,7 +201,7 @@ public class ExceptionHandler implements UncaughtExceptionHandler, Runnable {
}
//generate the report
this.mReport = new Report(mURL).generateReport(e.toString(), report.toString(), causereport.toString(), sdf.format(theDate), Build.FINGERPRINT, pi.versionName+"b"+pi.versionCode, mContext.getPackageName());
this.mReport = new Report(mURL).generateReport(e.toString(), report.toString(), causereport.toString(), sdf.format(theDate), Build.FINGERPRINT, pi.versionName+"b"+pi.versionCode, mAppName != null ? mAppName : mContext.getPackageName(), this.mTracker);
//try to send file contents via email (need to do so via the UI thread)
if(this.mApp != null){

View File

@@ -34,7 +34,7 @@ import android.os.Parcelable;
*/
public class Report implements Parcelable{
private String mUrl;
private final String mUrl;
private ArrayList<ReportItem> mReport;
public static final Parcelable.Creator<Report> CREATOR = new Parcelable.Creator<Report>() {
@@ -82,7 +82,6 @@ public class Report implements Parcelable{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(mUrl);
httppost.setEntity(new UrlEncodedFormEntity(getNameValuePairs()));
//return the results
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
@@ -128,7 +127,7 @@ public class Report implements Parcelable{
* @return this
* @author ricky barrette
*/
public Report generateReport(String msg, String stackTrace, String cause, String date, String device, String appVersion, String app){
public Report generateReport(String msg, String stackTrace, String cause, String date, String device, String appVersion, String app, String tracker){
this.mReport = new ArrayList<ReportItem>();
this.mReport.add(new ReportItem("app",app));
this.mReport.add(new ReportItem("version",appVersion));
@@ -137,6 +136,7 @@ public class Report implements Parcelable{
this.mReport.add(new ReportItem("stackTrace",stackTrace));
this.mReport.add(new ReportItem("cause",cause));
this.mReport.add(new ReportItem("device",device));
this.mReport.add(new ReportItem("tracker",tracker));
return this;
}

View File

@@ -14,7 +14,7 @@ import android.os.Parcelable;
* This will allow for our report items to stay in the proper order.
* @author ricky
*/
public class ReportItem implements Parcelable {
public final class ReportItem implements Parcelable {
public static final Parcelable.Creator<ReportItem> CREATOR = new Parcelable.Creator<ReportItem>() {
public ReportItem createFromParcel(Parcel in) {
@@ -26,8 +26,8 @@ public class ReportItem implements Parcelable {
}
};
private String mKey;
private String mValue;
private final String mKey;
private final String mValue;
/**
* Creates a new ReportItem