private void fetchTasks(TracksAction act) { final String server = _prefs.getString(PreferenceConstants.SERVER, null); final boolean badcert = _prefs.getBoolean(PreferenceConstants.BADCERT, false); final String username = _prefs.getString(PreferenceConstants.USERNAME, null); final String password = _prefs.getString(PreferenceConstants.PASSWORD, null); Log.d(TAG, "Fetching tasks"); Handler replyTo = act.notify; if (server == null || username == null || password == null) { Message.obtain(replyTo, PREFS_FAIL_CODE).sendToTarget(); return; } HttpResponse r; InputStream[] ret = new InputStream[3]; Message.obtain(replyTo, FETCH_CODE).sendToTarget(); try { r = HttpConnection.get( PreferenceUtils.getUri(_prefs, "contexts.xml"), username, password, badcert); ret[0] = r.getEntity().getContent(); r = HttpConnection.get( PreferenceUtils.getUri(_prefs, "projects.xml"), username, password, badcert); ret[1] = r.getEntity().getContent(); r = HttpConnection.get( PreferenceUtils.getUri(_prefs, "todos.xml"), username, password, badcert); ret[2] = r.getEntity().getContent(); } catch (Exception e) { Log.w(TAG, "Failed to fetch tasks!", e); Message.obtain(replyTo, FETCH_FAIL_CODE).sendToTarget(); return; } Message.obtain(replyTo, PARSE_CODE).sendToTarget(); try { Xml.parse(ret[0], Xml.Encoding.UTF_8, new ContextXmlHandler()); Xml.parse(ret[1], Xml.Encoding.UTF_8, new ProjectXmlHandler()); Xml.parse(ret[2], Xml.Encoding.UTF_8, new TaskXmlHandler()); } catch (IOException e) { Log.w(TAG, "Failed to read XML!", e); Message.obtain(replyTo, FETCH_FAIL_CODE).sendToTarget(); return; } catch (SAXException e) { Log.w(TAG, "Failed to parse XML!", e); Message.obtain(replyTo, PARSE_FAIL_CODE).sendToTarget(); return; } Message.obtain(replyTo, SUCCESS_CODE).sendToTarget(); }