aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenny Root <kenny@the-b.org>2015-09-11 10:57:30 -0700
committerKenny Root <kenny@the-b.org>2015-09-11 11:01:56 -0700
commit2baa56c2629532adad82d0f67abe9dd568a24760 (patch)
treea2389ad30251f44dfa9c388cf8c1cee18e5c1338
parent5d2ebeaa409fb2f74fe9eb799793cc004f9d9d29 (diff)
downloadconnectbot-2baa56c2629532adad82d0f67abe9dd568a24760.tar.gz
connectbot-2baa56c2629532adad82d0f67abe9dd568a24760.tar.bz2
connectbot-2baa56c2629532adad82d0f67abe9dd568a24760.zip
Revert "Never cache instances of the HostDatabase"
This reverts commit 57afa9bdc5b269a48bd27fc8455cab4cb956d02a. This won't work with injection and makes testing a bit harder, so revert it.
-rw-r--r--app/src/main/java/org/connectbot/ColorsActivity.java37
-rw-r--r--app/src/main/java/org/connectbot/HostEditorActivity.java17
-rw-r--r--app/src/main/java/org/connectbot/HostListActivity.java13
-rw-r--r--app/src/main/java/org/connectbot/PortForwardListActivity.java13
-rw-r--r--app/src/main/java/org/connectbot/service/TerminalBridge.java11
-rw-r--r--app/src/main/java/org/connectbot/service/TerminalManager.java15
-rw-r--r--app/src/main/java/org/connectbot/transport/SSH.java20
-rw-r--r--app/src/main/java/org/connectbot/util/HostDatabase.java2
8 files changed, 80 insertions, 48 deletions
diff --git a/app/src/main/java/org/connectbot/ColorsActivity.java b/app/src/main/java/org/connectbot/ColorsActivity.java
index 8725a51..55904c5 100644
--- a/app/src/main/java/org/connectbot/ColorsActivity.java
+++ b/app/src/main/java/org/connectbot/ColorsActivity.java
@@ -56,6 +56,7 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
private int mColorScheme;
private List<Integer> mColorList;
+ private HostDatabase mHostDb;
private int mCurrentColor = 0;
@@ -73,10 +74,10 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
mColorScheme = HostDatabase.DEFAULT_COLOR_SCHEME;
- HostDatabase hostDb = HostDatabase.get(this);
+ mHostDb = HostDatabase.get(this);
- mColorList = Arrays.asList(hostDb.getColorsForScheme(mColorScheme));
- mDefaultColors = hostDb.getDefaultColorsForScheme(mColorScheme);
+ mColorList = Arrays.asList(mHostDb.getColorsForScheme(mColorScheme));
+ mDefaultColors = mHostDb.getDefaultColorsForScheme(mColorScheme);
mColorGrid = (GridView) findViewById(R.id.color_grid);
mColorGrid.setAdapter(new ColorsAdapter(true));
@@ -94,6 +95,24 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
mBgSpinner.setOnItemSelectedListener(this);
}
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+
+ if (mHostDb != null) {
+ mHostDb = null;
+ }
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ if (mHostDb == null) {
+ mHostDb = HostDatabase.get(this);
+ }
+ }
+
private class ColorsAdapter extends BaseAdapter {
private final boolean mSquareViews;
private final int mResourceLabel;
@@ -285,8 +304,7 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
public void onNothingSelected(AdapterView<?> arg0) { }
public void colorChanged(int value) {
- HostDatabase hostDb = HostDatabase.get(this);
- hostDb.setGlobalColor(mCurrentColor, value);
+ mHostDb.setGlobalColor(mCurrentColor, value);
mColorList.set(mCurrentColor, value);
mColorGrid.invalidateViews();
}
@@ -307,8 +325,7 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
}
if (needUpdate) {
- HostDatabase hostDb = HostDatabase.get(this);
- hostDb.setDefaultColorsForScheme(mColorScheme, mDefaultColors[0], mDefaultColors[1]);
+ mHostDb.setDefaultColorsForScheme(mColorScheme, mDefaultColors[0], mDefaultColors[1]);
}
}
@@ -322,12 +339,10 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
reset.setIcon(android.R.drawable.ic_menu_revert);
reset.setOnMenuItemClickListener(new OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem arg0) {
- HostDatabase hostDb = HostDatabase.get(ColorsActivity.this);
-
// Reset each individual color to defaults.
for (int i = 0; i < Colors.defaults.length; i++) {
if (!mColorList.get(i).equals(Colors.defaults[i])) {
- hostDb.setGlobalColor(i, Colors.defaults[i]);
+ mHostDb.setGlobalColor(i, Colors.defaults[i]);
mColorList.set(i, Colors.defaults[i]);
}
}
@@ -336,7 +351,7 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
// Reset the default FG/BG colors as well.
mFgSpinner.setSelection(HostDatabase.DEFAULT_FG_COLOR);
mBgSpinner.setSelection(HostDatabase.DEFAULT_BG_COLOR);
- hostDb.setDefaultColorsForScheme(HostDatabase.DEFAULT_COLOR_SCHEME,
+ mHostDb.setDefaultColorsForScheme(HostDatabase.DEFAULT_COLOR_SCHEME,
HostDatabase.DEFAULT_FG_COLOR, HostDatabase.DEFAULT_BG_COLOR);
return true;
diff --git a/app/src/main/java/org/connectbot/HostEditorActivity.java b/app/src/main/java/org/connectbot/HostEditorActivity.java
index 7316775..f9dee45 100644
--- a/app/src/main/java/org/connectbot/HostEditorActivity.java
+++ b/app/src/main/java/org/connectbot/HostEditorActivity.java
@@ -68,7 +68,6 @@ public class HostEditorActivity extends PreferenceActivity implements OnSharedPr
// fill a cursor and cache the values locally
// this makes sure we don't have any floating cursor to dispose later
- HostDatabase hostdb = HostDatabase.get(HostEditorActivity.this);
SQLiteDatabase db = hostdb.getWritableDatabase();
Cursor cursor = db.query(table, null, "_id = ?",
new String[] { String.valueOf(id) }, null, null, null);
@@ -99,7 +98,6 @@ public class HostEditorActivity extends PreferenceActivity implements OnSharedPr
}
public boolean commit() {
- HostDatabase hostdb = HostDatabase.get(HostEditorActivity.this);
SQLiteDatabase db = hostdb.getWritableDatabase();
db.beginTransaction();
try {
@@ -215,6 +213,9 @@ public class HostEditorActivity extends PreferenceActivity implements OnSharedPr
protected static final String TAG = "CB.HostEditorActivity";
+ protected HostDatabase hostdb = null;
+ private PubkeyDatabase pubkeydb = null;
+
private CursorPreferenceHack pref;
private ServiceConnection connection;
@@ -230,7 +231,8 @@ public class HostEditorActivity extends PreferenceActivity implements OnSharedPr
// TODO: we could pass through a specific ContentProvider uri here
//this.getPreferenceManager().setSharedPreferencesName(uri);
- HostDatabase hostdb = HostDatabase.get(this);
+ this.hostdb = HostDatabase.get(this);
+ this.pubkeydb = PubkeyDatabase.get(this);
host = hostdb.findHostById(hostId);
@@ -256,7 +258,6 @@ public class HostEditorActivity extends PreferenceActivity implements OnSharedPr
// TODO: should consider moving into onStart, but we dont have a good way of resetting the listpref after filling once
ListPreference pubkeyPref = (ListPreference) findPreference(HostDatabase.FIELD_HOST_PUBKEYID);
- PubkeyDatabase pubkeydb = PubkeyDatabase.get(this);
List<CharSequence> pubkeyNicks = new LinkedList<CharSequence>(Arrays.asList(pubkeyPref.getEntries()));
pubkeyNicks.addAll(pubkeydb.allValues(PubkeyDatabase.FIELD_PUBKEY_NICKNAME));
pubkeyPref.setEntries(pubkeyNicks.toArray(new CharSequence[pubkeyNicks.size()]));
@@ -291,6 +292,9 @@ public class HostEditorActivity extends PreferenceActivity implements OnSharedPr
super.onStart();
bindService(new Intent(this, TerminalManager.class), connection, Context.BIND_AUTO_CREATE);
+
+ hostdb = HostDatabase.get(this);
+ pubkeydb = PubkeyDatabase.get(this);
}
@Override
@@ -298,11 +302,12 @@ public class HostEditorActivity extends PreferenceActivity implements OnSharedPr
super.onStop();
unbindService(connection);
+
+ hostdb = null;
+ pubkeydb = null;
}
private void updateSummaries() {
- PubkeyDatabase pubkeydb = PubkeyDatabase.get(this);
-
// for all text preferences, set hint as current database value
for (String key : this.pref.values.keySet()) {
if (key.equals(HostDatabase.FIELD_HOST_POSTLOGIN)) continue;
diff --git a/app/src/main/java/org/connectbot/HostListActivity.java b/app/src/main/java/org/connectbot/HostListActivity.java
index c95769c..67a0098 100644
--- a/app/src/main/java/org/connectbot/HostListActivity.java
+++ b/app/src/main/java/org/connectbot/HostListActivity.java
@@ -71,6 +71,7 @@ public class HostListActivity extends ListActivity implements OnHostStatusChange
protected TerminalManager bound = null;
+ protected HostDatabase hostdb;
private List<HostBean> hosts;
protected LayoutInflater inflater = null;
@@ -123,6 +124,8 @@ public class HostListActivity extends ListActivity implements OnHostStatusChange
// start the terminal manager service
this.bindService(new Intent(this, TerminalManager.class), connection, Context.BIND_AUTO_CREATE);
+
+ hostdb = HostDatabase.get(this);
}
@Override
@@ -130,6 +133,8 @@ public class HostListActivity extends ListActivity implements OnHostStatusChange
super.onStop();
this.unbindService(connection);
+ hostdb = null;
+
closeOnDisconnectAll = true;
}
@@ -200,6 +205,7 @@ public class HostListActivity extends ListActivity implements OnHostStatusChange
|| Intent.ACTION_PICK.equals(getIntent().getAction());
// connect with hosts database and populate list
+ this.hostdb = HostDatabase.get(this);
ListView list = this.getListView();
this.sortedByColor = prefs.getBoolean(PreferenceConstants.SORT_BY_COLOR, false);
@@ -392,7 +398,7 @@ public class HostListActivity extends ListActivity implements OnHostStatusChange
if (bridge != null)
bridge.dispatchDisconnect(true);
- HostDatabase.get(HostListActivity.this).deleteHost(host);
+ hostdb.deleteHost(host);
updateList();
}
})
@@ -453,7 +459,6 @@ public class HostListActivity extends ListActivity implements OnHostStatusChange
return false;
}
- HostDatabase hostdb = HostDatabase.get(this);
HostBean host = TransportFactory.findHost(hostdb, uri);
if (host == null) {
host = TransportFactory.getTransport(uri.getScheme()).createHost(uri);
@@ -479,7 +484,9 @@ public class HostListActivity extends ListActivity implements OnHostStatusChange
edit.commit();
}
- HostDatabase hostdb = HostDatabase.get(this);
+ if (hostdb == null)
+ hostdb = HostDatabase.get(this);
+
hosts = hostdb.getHosts(sortedByColor);
// Don't lose hosts that are connected via shortcuts but not in the database.
diff --git a/app/src/main/java/org/connectbot/PortForwardListActivity.java b/app/src/main/java/org/connectbot/PortForwardListActivity.java
index c3b3b8f..894eed4 100644
--- a/app/src/main/java/org/connectbot/PortForwardListActivity.java
+++ b/app/src/main/java/org/connectbot/PortForwardListActivity.java
@@ -68,6 +68,8 @@ public class PortForwardListActivity extends ListActivity {
private static final int LISTENER_CYCLE_TIME = 500;
+ protected HostDatabase hostdb;
+
private List<PortForwardBean> portForwards;
private ServiceConnection connection = null;
@@ -81,6 +83,8 @@ public class PortForwardListActivity extends ListActivity {
super.onStart();
this.bindService(new Intent(this, TerminalManager.class), connection, Context.BIND_AUTO_CREATE);
+
+ hostdb = HostDatabase.get(this);
}
@Override
@@ -88,6 +92,8 @@ public class PortForwardListActivity extends ListActivity {
super.onStop();
this.unbindService(connection);
+
+ hostdb = null;
}
@Override
@@ -99,7 +105,7 @@ public class PortForwardListActivity extends ListActivity {
setContentView(R.layout.act_portforwardlist);
// connect with hosts database and populate list
- HostDatabase hostdb = HostDatabase.get(this);
+ this.hostdb = HostDatabase.get(this);
host = hostdb.findHostById(hostId);
{
@@ -338,7 +344,6 @@ public class PortForwardListActivity extends ListActivity {
if (hostBridge != null)
hostBridge.removePortForward(pfb);
- HostDatabase hostdb = HostDatabase.get(PortForwardListActivity.this);
hostdb.deletePortForward(pfb);
} catch (Exception e) {
Log.e(TAG, "Could not delete port forward", e);
@@ -365,8 +370,8 @@ public class PortForwardListActivity extends ListActivity {
if (hostBridge != null) {
this.portForwards = hostBridge.getPortForwards();
} else {
- HostDatabase hostdb = HostDatabase.get(this);
- this.portForwards = hostdb.getPortForwardsForHost(host);
+ if (this.hostdb == null) return;
+ this.portForwards = this.hostdb.getPortForwardsForHost(host);
}
PortForwardAdapter adapter = new PortForwardAdapter(this, portForwards);
diff --git a/app/src/main/java/org/connectbot/service/TerminalBridge.java b/app/src/main/java/org/connectbot/service/TerminalBridge.java
index 6f76b02..6d47f96 100644
--- a/app/src/main/java/org/connectbot/service/TerminalBridge.java
+++ b/app/src/main/java/org/connectbot/service/TerminalBridge.java
@@ -273,8 +273,7 @@ public class TerminalBridge implements VDUDisplay {
transport.setEmulation(emulation);
if (transport.canForwardPorts()) {
- HostDatabase hostDb = HostDatabase.get(manager);
- for (PortForwardBean portForward : hostDb.getPortForwardsForHost(host))
+ for (PortForwardBean portForward : manager.hostdb.getPortForwardsForHost(host))
transport.addPortForward(portForward);
}
@@ -534,8 +533,7 @@ public class TerminalBridge implements VDUDisplay {
}
host.setFontSize((int) sizeDp);
- HostDatabase hostDb = HostDatabase.get(manager);
- hostDb.updateFontSize(host);
+ manager.hostdb.updateFontSize(host);
forcedSize = false;
}
@@ -952,12 +950,11 @@ public class TerminalBridge implements VDUDisplay {
}
public final void resetColors() {
- HostDatabase hostDb = HostDatabase.get(manager);
- int[] defaults = hostDb.getDefaultColorsForScheme(HostDatabase.DEFAULT_COLOR_SCHEME);
+ int[] defaults = manager.hostdb.getDefaultColorsForScheme(HostDatabase.DEFAULT_COLOR_SCHEME);
defaultFg = defaults[0];
defaultBg = defaults[1];
- color = hostDb.getColorsForScheme(HostDatabase.DEFAULT_COLOR_SCHEME);
+ color = manager.hostdb.getColorsForScheme(HostDatabase.DEFAULT_COLOR_SCHEME);
}
private static Pattern urlPattern = null;
diff --git a/app/src/main/java/org/connectbot/service/TerminalManager.java b/app/src/main/java/org/connectbot/service/TerminalManager.java
index 3a58c8a..1f0ee29 100644
--- a/app/src/main/java/org/connectbot/service/TerminalManager.java
+++ b/app/src/main/java/org/connectbot/service/TerminalManager.java
@@ -87,6 +87,9 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen
public Resources res;
+ public HostDatabase hostdb;
+ public PubkeyDatabase pubkeydb;
+
protected SharedPreferences prefs;
final private IBinder binder = new TerminalBinder();
@@ -126,9 +129,11 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen
pubkeyTimer = new Timer("pubkeyTimer", true);
+ hostdb = HostDatabase.get(this);
+ pubkeydb = PubkeyDatabase.get(this);
+
// load all marked pubkeys into memory
updateSavingKeys();
- PubkeyDatabase pubkeydb = PubkeyDatabase.get(this);
List<PubkeyBean> pubkeys = pubkeydb.getAllStartPubkeys();
for (PubkeyBean pubkey : pubkeys) {
@@ -168,6 +173,9 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen
disconnectAll(true, false);
+ hostdb = null;
+ pubkeydb = null;
+
synchronized (this) {
if (idleTimer != null)
idleTimer.cancel();
@@ -262,12 +270,10 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen
* format specified by an individual transport.
*/
public TerminalBridge openConnection(Uri uri) throws Exception {
- HostDatabase hostdb = HostDatabase.get(this);
HostBean host = TransportFactory.findHost(hostdb, uri);
- if (host == null) {
+ if (host == null)
host = TransportFactory.getTransport(uri.getScheme()).createHost(uri);
- }
return openConnection(host);
}
@@ -277,7 +283,6 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen
* to {@link HostDatabase}.
*/
private void touchHost(HostBean host) {
- HostDatabase hostdb = HostDatabase.get(this);
hostdb.touchHost(host);
}
diff --git a/app/src/main/java/org/connectbot/transport/SSH.java b/app/src/main/java/org/connectbot/transport/SSH.java
index f3b85a6..4bad2f1 100644
--- a/app/src/main/java/org/connectbot/transport/SSH.java
+++ b/app/src/main/java/org/connectbot/transport/SSH.java
@@ -141,8 +141,7 @@ public class SSH extends AbsTransport implements ConnectionMonitor, InteractiveC
String serverHostKeyAlgorithm, byte[] serverHostKey) throws IOException {
// read in all known hosts from hostdb
- HostDatabase hostDb = HostDatabase.get(manager);
- KnownHosts hosts = hostDb.getKnownHosts();
+ KnownHosts hosts = manager.hostdb.getKnownHosts();
Boolean result;
String matchName = String.format(Locale.US, "%s:%d", hostname, port);
@@ -173,7 +172,7 @@ public class SSH extends AbsTransport implements ConnectionMonitor, InteractiveC
if (result == null) return false;
if (result.booleanValue()) {
// save this key in known database
- hostDb.saveKnownHost(hostname, port, serverHostKeyAlgorithm, serverHostKey);
+ manager.hostdb.saveKnownHost(hostname, port, serverHostKeyAlgorithm, serverHostKey);
}
return result.booleanValue();
@@ -196,7 +195,7 @@ public class SSH extends AbsTransport implements ConnectionMonitor, InteractiveC
result = bridge.promptHelper.requestBooleanPrompt(null, manager.res.getString(R.string.prompt_continue_connecting));
if (result != null && result.booleanValue()) {
// save this key in known database
- hostDb.saveKnownHost(hostname, port, serverHostKeyAlgorithm, serverHostKey);
+ manager.hostdb.saveKnownHost(hostname, port, serverHostKeyAlgorithm, serverHostKey);
return true;
} else {
return false;
@@ -250,16 +249,13 @@ public class SSH extends AbsTransport implements ConnectionMonitor, InteractiveC
} else {
bridge.outputLine(manager.res.getString(R.string.terminal_auth_pubkey_specific));
// use a specific key for this host, as requested
- PubkeyDatabase pubkeyDb = PubkeyDatabase.get(manager);
- PubkeyBean pubkey = pubkeyDb.findPubkeyById(pubkeyId);
+ PubkeyBean pubkey = manager.pubkeydb.findPubkeyById(pubkeyId);
- if (pubkey == null) {
+ if (pubkey == null)
bridge.outputLine(manager.res.getString(R.string.terminal_auth_pubkey_invalid));
- } else {
- if (tryPublicKey(pubkey)) {
+ else
+ if (tryPublicKey(pubkey))
finishConnection();
- }
- }
}
pubkeysExhausted = true;
@@ -297,7 +293,7 @@ public class SSH extends AbsTransport implements ConnectionMonitor, InteractiveC
/**
* Attempt connection with database row pointed to by cursor.
- * @param pubkey
+ * @param cursor
* @return true for successful authentication
* @throws NoSuchAlgorithmException
* @throws InvalidKeySpecException
diff --git a/app/src/main/java/org/connectbot/util/HostDatabase.java b/app/src/main/java/org/connectbot/util/HostDatabase.java
index 7c52f79..2da9925 100644
--- a/app/src/main/java/org/connectbot/util/HostDatabase.java
+++ b/app/src/main/java/org/connectbot/util/HostDatabase.java
@@ -718,6 +718,8 @@ public class HostDatabase extends RobustSQLiteOpenHelper {
}
public void setColorForScheme(int scheme, int number, int value) {
+ final SQLiteDatabase db;
+
final String[] whereArgs = new String[] { String.valueOf(scheme), String.valueOf(number) };
if (value == Colors.defaults[number]) {