From 57c645a291d04438c5c370ebe47f73fe6e8cfdc5 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Thu, 27 Dec 2018 23:48:12 -0800 Subject: [PATCH] Change uuid field to String type due to new format UUIDs that fail to parse on GFE 3.16 --- app/src/main/java/com/limelight/AppView.java | 8 +++----- app/src/main/java/com/limelight/PcView.java | 6 +++--- .../java/com/limelight/ShortcutTrampoline.java | 4 ++-- .../binding/crypto/AndroidCryptoProvider.java | 1 - .../computers/ComputerDatabaseManager.java | 18 ++++-------------- .../computers/ComputerManagerService.java | 8 ++++---- .../computers/LegacyDatabaseReader.java | 10 +--------- .../limelight/grid/assets/DiskAssetLoader.java | 8 ++++---- .../grid/assets/MemoryAssetLoader.java | 2 +- .../ConfirmDeleteOscPreference.java | 1 - .../java/com/limelight/utils/ServerHelper.java | 2 +- .../com/limelight/utils/ShortcutHelper.java | 4 ++-- moonlight-common | 2 +- 13 files changed, 26 insertions(+), 48 deletions(-) diff --git a/app/src/main/java/com/limelight/AppView.java b/app/src/main/java/com/limelight/AppView.java index ba5a2787..931e5b34 100644 --- a/app/src/main/java/com/limelight/AppView.java +++ b/app/src/main/java/com/limelight/AppView.java @@ -2,7 +2,6 @@ package com.limelight; import java.io.StringReader; import java.util.List; -import java.util.UUID; import com.limelight.computers.ComputerManagerListener; import com.limelight.computers.ComputerManagerService; @@ -28,7 +27,6 @@ import android.content.Intent; import android.content.ServiceConnection; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; import android.os.IBinder; @@ -82,7 +80,7 @@ public class AppView extends Activity implements AdapterFragmentCallbacks { localBinder.waitForReady(); // Get the computer object - computer = localBinder.getComputer(UUID.fromString(uuidString)); + computer = localBinder.getComputer(uuidString); if (computer == null) { finish(); return; @@ -156,7 +154,7 @@ public class AppView extends Activity implements AdapterFragmentCallbacks { } // Don't care about other computers - if (!details.uuid.toString().equalsIgnoreCase(uuidString)) { + if (!details.uuid.equalsIgnoreCase(uuidString)) { return; } @@ -180,7 +178,7 @@ public class AppView extends Activity implements AdapterFragmentCallbacks { @Override public void run() { // Disable shortcuts referencing this PC for now - shortcutHelper.disableShortcut(details.uuid.toString(), + shortcutHelper.disableShortcut(details.uuid, getResources().getString(R.string.scut_not_paired)); // Display a toast to the user and quit the activity diff --git a/app/src/main/java/com/limelight/PcView.java b/app/src/main/java/com/limelight/PcView.java index 13c4b06e..8d276920 100644 --- a/app/src/main/java/com/limelight/PcView.java +++ b/app/src/main/java/com/limelight/PcView.java @@ -548,7 +548,7 @@ public class PcView extends Activity implements AdapterFragmentCallbacks { Intent i = new Intent(this, AppView.class); i.putExtra(AppView.NAME_EXTRA, computer.name); - i.putExtra(AppView.UUID_EXTRA, computer.uuid.toString()); + i.putExtra(AppView.UUID_EXTRA, computer.uuid); startActivity(i); } @@ -631,7 +631,7 @@ public class PcView extends Activity implements AdapterFragmentCallbacks { if (details.equals(computer.details)) { // Disable or delete shortcuts referencing this PC - shortcutHelper.disableShortcut(details.uuid.toString(), + shortcutHelper.disableShortcut(details.uuid, getResources().getString(R.string.scut_deleted_pc)); pcGridAdapter.removeComputer(computer); @@ -662,7 +662,7 @@ public class PcView extends Activity implements AdapterFragmentCallbacks { // Add a launcher shortcut for this PC if (details.pairState == PairState.PAIRED) { - shortcutHelper.createAppViewShortcut(details.uuid.toString(), details, false); + shortcutHelper.createAppViewShortcut(details.uuid, details, false); } if (existingEntry != null) { diff --git a/app/src/main/java/com/limelight/ShortcutTrampoline.java b/app/src/main/java/com/limelight/ShortcutTrampoline.java index 0f6b30f3..e8e849b0 100644 --- a/app/src/main/java/com/limelight/ShortcutTrampoline.java +++ b/app/src/main/java/com/limelight/ShortcutTrampoline.java @@ -48,7 +48,7 @@ public class ShortcutTrampoline extends Activity { managerBinder = localBinder; // Get the computer object - computer = managerBinder.getComputer(UUID.fromString(uuidString)); + computer = managerBinder.getComputer(uuidString); if (computer == null) { Dialog.displayDialog(ShortcutTrampoline.this, @@ -77,7 +77,7 @@ public class ShortcutTrampoline extends Activity { @Override public void notifyComputerUpdated(final ComputerDetails details) { // Don't care about other computers - if (!details.uuid.toString().equalsIgnoreCase(uuidString)) { + if (!details.uuid.equalsIgnoreCase(uuidString)) { return; } diff --git a/app/src/main/java/com/limelight/binding/crypto/AndroidCryptoProvider.java b/app/src/main/java/com/limelight/binding/crypto/AndroidCryptoProvider.java index 68b56ba1..eb9352f7 100644 --- a/app/src/main/java/com/limelight/binding/crypto/AndroidCryptoProvider.java +++ b/app/src/main/java/com/limelight/binding/crypto/AndroidCryptoProvider.java @@ -12,7 +12,6 @@ import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; import java.security.Provider; import java.security.SecureRandom; import java.security.cert.CertificateException; diff --git a/app/src/main/java/com/limelight/computers/ComputerDatabaseManager.java b/app/src/main/java/com/limelight/computers/ComputerDatabaseManager.java index 8488ad0a..d2456bda 100644 --- a/app/src/main/java/com/limelight/computers/ComputerDatabaseManager.java +++ b/app/src/main/java/com/limelight/computers/ComputerDatabaseManager.java @@ -1,7 +1,6 @@ package com.limelight.computers; import java.io.ByteArrayInputStream; -import java.io.DataInputStream; import java.security.cert.CertificateEncodingException; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; @@ -9,9 +8,7 @@ import java.security.cert.X509Certificate; import java.util.LinkedList; import java.util.List; import java.util.Locale; -import java.util.UUID; -import com.limelight.LimeLog; import com.limelight.nvstream.http.ComputerDetails; import android.content.ContentValues; @@ -79,7 +76,7 @@ public class ComputerDatabaseManager { public boolean updateComputer(ComputerDetails details) { ContentValues values = new ContentValues(); - values.put(COMPUTER_UUID_COLUMN_NAME, details.uuid.toString()); + values.put(COMPUTER_UUID_COLUMN_NAME, details.uuid); values.put(COMPUTER_NAME_COLUMN_NAME, details.name); values.put(LOCAL_ADDRESS_COLUMN_NAME, details.localAddress); values.put(REMOTE_ADDRESS_COLUMN_NAME, details.remoteAddress); @@ -102,14 +99,7 @@ public class ComputerDatabaseManager { private ComputerDetails getComputerFromCursor(Cursor c) { ComputerDetails details = new ComputerDetails(); - String uuidStr = c.getString(0); - try { - details.uuid = UUID.fromString(uuidStr); - } catch (IllegalArgumentException e) { - // We'll delete this entry - LimeLog.severe("DB: Corrupted UUID for "+details.name); - } - + details.uuid = c.getString(0); details.name = c.getString(1); details.localAddress = c.getString(2); details.remoteAddress = c.getString(3); @@ -152,8 +142,8 @@ public class ComputerDatabaseManager { return computerList; } - public ComputerDetails getComputerByUUID(UUID uuid) { - Cursor c = computerDb.query(COMPUTER_TABLE_NAME, null, COMPUTER_UUID_COLUMN_NAME+"=?", new String[]{ uuid.toString() }, null, null, null); + public ComputerDetails getComputerByUUID(String uuid) { + Cursor c = computerDb.query(COMPUTER_TABLE_NAME, null, COMPUTER_UUID_COLUMN_NAME+"=?", new String[]{ uuid }, null, null, null); if (!c.moveToFirst()) { // No matching computer c.close(); diff --git a/app/src/main/java/com/limelight/computers/ComputerManagerService.java b/app/src/main/java/com/limelight/computers/ComputerManagerService.java index 641d1fde..0f9b4741 100644 --- a/app/src/main/java/com/limelight/computers/ComputerManagerService.java +++ b/app/src/main/java/com/limelight/computers/ComputerManagerService.java @@ -8,7 +8,6 @@ import java.net.Socket; import java.util.HashSet; import java.util.LinkedList; import java.util.List; -import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; import com.limelight.LimeLog; @@ -241,7 +240,7 @@ public class ComputerManagerService extends Service { return idManager.getUniqueId(); } - public ComputerDetails getComputer(UUID uuid) { + public ComputerDetails getComputer(String uuid) { synchronized (pollingTuples) { for (PollingTuple tuple : pollingTuples) { if (uuid.equals(tuple.computer.uuid)) { @@ -253,7 +252,7 @@ public class ComputerManagerService extends Service { return null; } - public void invalidateStateForComputer(UUID uuid) { + public void invalidateStateForComputer(String uuid) { synchronized (pollingTuples) { for (PollingTuple tuple : pollingTuples) { if (uuid.equals(tuple.computer.uuid)) { @@ -469,6 +468,7 @@ public class ComputerManagerService extends Service { return newDetails; } catch (Exception e) { + e.printStackTrace(); return null; } } @@ -743,7 +743,7 @@ public class ComputerManagerService extends Service { // Open the cache file OutputStream cacheOut = null; try { - cacheOut = CacheHelper.openCacheFileForOutput(getCacheDir(), "applist", computer.uuid.toString()); + cacheOut = CacheHelper.openCacheFileForOutput(getCacheDir(), "applist", computer.uuid); CacheHelper.writeStringToOutputStream(cacheOut, appList); } catch (IOException e) { e.printStackTrace(); diff --git a/app/src/main/java/com/limelight/computers/LegacyDatabaseReader.java b/app/src/main/java/com/limelight/computers/LegacyDatabaseReader.java index 98af3556..7c8793c6 100644 --- a/app/src/main/java/com/limelight/computers/LegacyDatabaseReader.java +++ b/app/src/main/java/com/limelight/computers/LegacyDatabaseReader.java @@ -12,7 +12,6 @@ import java.net.InetAddress; import java.net.UnknownHostException; import java.util.LinkedList; import java.util.List; -import java.util.UUID; public class LegacyDatabaseReader { private static final String COMPUTER_DB_NAME = "computers.db"; @@ -24,14 +23,7 @@ public class LegacyDatabaseReader { ComputerDetails details = new ComputerDetails(); details.name = c.getString(0); - - String uuidStr = c.getString(1); - try { - details.uuid = UUID.fromString(uuidStr); - } catch (IllegalArgumentException e) { - // We'll delete this entry - LimeLog.severe("DB: Corrupted UUID for " + details.name); - } + details.uuid = c.getString(1); // An earlier schema defined addresses as byte blobs. We'll // gracefully migrate those to strings so we can store DNS names diff --git a/app/src/main/java/com/limelight/grid/assets/DiskAssetLoader.java b/app/src/main/java/com/limelight/grid/assets/DiskAssetLoader.java index d17bc327..1a26e59e 100644 --- a/app/src/main/java/com/limelight/grid/assets/DiskAssetLoader.java +++ b/app/src/main/java/com/limelight/grid/assets/DiskAssetLoader.java @@ -39,7 +39,7 @@ public class DiskAssetLoader { } public boolean checkCacheExists(CachedAppAssetLoader.LoaderTuple tuple) { - return CacheHelper.cacheFileExists(cacheDir, "boxart", tuple.computer.uuid.toString(), tuple.app.getAppId() + ".png"); + return CacheHelper.cacheFileExists(cacheDir, "boxart", tuple.computer.uuid, tuple.app.getAppId() + ".png"); } // https://developer.android.com/topic/performance/graphics/load-bitmap.html @@ -65,7 +65,7 @@ public class DiskAssetLoader { } public Bitmap loadBitmapFromCache(CachedAppAssetLoader.LoaderTuple tuple, int sampleSize) { - File file = CacheHelper.openPath(false, cacheDir, "boxart", tuple.computer.uuid.toString(), tuple.app.getAppId() + ".png"); + File file = CacheHelper.openPath(false, cacheDir, "boxart", tuple.computer.uuid, tuple.app.getAppId() + ".png"); // Don't bother with anything if it doesn't exist if (!file.exists()) { @@ -137,7 +137,7 @@ public class DiskAssetLoader { OutputStream out = null; boolean success = false; try { - out = CacheHelper.openCacheFileForOutput(cacheDir, "boxart", tuple.computer.uuid.toString(), tuple.app.getAppId() + ".png"); + out = CacheHelper.openCacheFileForOutput(cacheDir, "boxart", tuple.computer.uuid, tuple.app.getAppId() + ".png"); CacheHelper.writeInputStreamToOutputStream(input, out, MAX_ASSET_SIZE); success = true; } catch (IOException e) { @@ -151,7 +151,7 @@ public class DiskAssetLoader { if (!success) { LimeLog.warning("Unable to populate cache with tuple: "+tuple); - CacheHelper.deleteCacheFile(cacheDir, "boxart", tuple.computer.uuid.toString(), tuple.app.getAppId() + ".png"); + CacheHelper.deleteCacheFile(cacheDir, "boxart", tuple.computer.uuid, tuple.app.getAppId() + ".png"); } } } diff --git a/app/src/main/java/com/limelight/grid/assets/MemoryAssetLoader.java b/app/src/main/java/com/limelight/grid/assets/MemoryAssetLoader.java index 29063fa8..8763c5a1 100644 --- a/app/src/main/java/com/limelight/grid/assets/MemoryAssetLoader.java +++ b/app/src/main/java/com/limelight/grid/assets/MemoryAssetLoader.java @@ -16,7 +16,7 @@ public class MemoryAssetLoader { }; private static String constructKey(CachedAppAssetLoader.LoaderTuple tuple) { - return tuple.computer.uuid.toString()+"-"+tuple.app.getAppId(); + return tuple.computer.uuid+"-"+tuple.app.getAppId(); } public Bitmap loadBitmapFromCache(CachedAppAssetLoader.LoaderTuple tuple) { diff --git a/app/src/main/java/com/limelight/preferences/ConfirmDeleteOscPreference.java b/app/src/main/java/com/limelight/preferences/ConfirmDeleteOscPreference.java index fecc5b29..8c83457f 100644 --- a/app/src/main/java/com/limelight/preferences/ConfirmDeleteOscPreference.java +++ b/app/src/main/java/com/limelight/preferences/ConfirmDeleteOscPreference.java @@ -3,7 +3,6 @@ package com.limelight.preferences; import android.annotation.TargetApi; import android.content.Context; import android.content.DialogInterface; -import android.content.SharedPreferences; import android.os.Build; import android.preference.DialogPreference; import android.util.AttributeSet; diff --git a/app/src/main/java/com/limelight/utils/ServerHelper.java b/app/src/main/java/com/limelight/utils/ServerHelper.java index f1b976d8..21d01ebd 100644 --- a/app/src/main/java/com/limelight/utils/ServerHelper.java +++ b/app/src/main/java/com/limelight/utils/ServerHelper.java @@ -30,7 +30,7 @@ public class ServerHelper { intent.putExtra(Game.EXTRA_APP_ID, app.getAppId()); intent.putExtra(Game.EXTRA_APP_HDR, app.isHdrSupported()); intent.putExtra(Game.EXTRA_UNIQUEID, managerBinder.getUniqueId()); - intent.putExtra(Game.EXTRA_PC_UUID, computer.uuid.toString()); + intent.putExtra(Game.EXTRA_PC_UUID, computer.uuid); intent.putExtra(Game.EXTRA_PC_NAME, computer.name); try { if (computer.serverCert != null) { diff --git a/app/src/main/java/com/limelight/utils/ShortcutHelper.java b/app/src/main/java/com/limelight/utils/ShortcutHelper.java index e47509a5..376a58c6 100644 --- a/app/src/main/java/com/limelight/utils/ShortcutHelper.java +++ b/app/src/main/java/com/limelight/utils/ShortcutHelper.java @@ -125,7 +125,7 @@ public class ShortcutHelper { } public void createAppViewShortcut(String id, ComputerDetails details, boolean forceAdd) { - createAppViewShortcut(id, details.name, details.uuid.toString(), forceAdd); + createAppViewShortcut(id, details.name, details.uuid, forceAdd); } @TargetApi(Build.VERSION_CODES.O) @@ -158,7 +158,7 @@ public class ShortcutHelper { } public boolean createPinnedGameShortcut(String id, Bitmap iconBits, ComputerDetails cDetails, NvApp app) { - return createPinnedGameShortcut(id, iconBits, cDetails.name, cDetails.uuid.toString(), app.getAppName(), Integer.valueOf(app.getAppId()).toString()); + return createPinnedGameShortcut(id, iconBits, cDetails.name, cDetails.uuid, app.getAppName(), Integer.valueOf(app.getAppId()).toString()); } public void disableShortcut(String id, CharSequence reason) { diff --git a/moonlight-common b/moonlight-common index ee6fd706..15bdc325 160000 --- a/moonlight-common +++ b/moonlight-common @@ -1 +1 @@ -Subproject commit ee6fd706426760554bf1e3e29da37e457fc4ce7e +Subproject commit 15bdc325f93db7d57d742f3a044da71d1536f47e