Support convert string similar to FE87-9640 to UUID
Root Cause:
Package installer will crash when cover string "FE87-9640" to UUID because
UUID.fromString() only support the components format 8-4-4-4-12 that length
is 5 after split("-").
Solution:
Extend to support the length of string is 2 after split("-") that is
similar to FE87-9640.
Test steps:
1. Install WhatsApp
2. Format SD card as FAT
3. Insert SD card
4. Uninstall WhatsApp
Change-Id: I7a938d82b41d6eb86c6e09c8c3dab710331cfa69
Reviewed-on: https://gerrit.mot.com/1446378
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Tested-by: Jira Key
Reviewed-by: Maoyuan Wu <wumy@motorola.com>
Submit-Approved: Jira Key
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
diff --git a/ojluni/src/main/java/java/util/UUID.java b/ojluni/src/main/java/java/util/UUID.java
index b4ea41f..72652bc 100644
--- a/ojluni/src/main/java/java/util/UUID.java
+++ b/ojluni/src/main/java/java/util/UUID.java
@@ -189,9 +189,22 @@
*
*/
public static UUID fromString(String name) {
+ // BEGIN Motorola, linzj1, 2019-10-30, IKSWQ-24229
+ // Support convert string similar to FE87-9640 to UUID
String[] components = name.split("-");
- if (components.length != 5)
+ if (components.length != 5 && components.length != 2)
throw new IllegalArgumentException("Invalid UUID string: "+name);
+
+ if (components.length == 2) {
+ for (int i=0; i<2; i++)
+ components[i] = "0x"+components[i];
+
+ long mostSigBits = Long.decode(components[0]).longValue();
+ long leastSigBits = Long.decode(components[1]).longValue();
+ return new UUID(mostSigBits, leastSigBits);
+ }
+ // END IKSWQ-24229
+
for (int i=0; i<5; i++)
components[i] = "0x"+components[i];
@@ -373,6 +386,13 @@
* @return A string representation of this {@code UUID}
*/
public String toString() {
+ // BEGIN Motorola, linzj1, 2019-10-30, IKSWQ-24229
+ // Support convert string similar to FE87-9640 to UUID
+ if ((mostSigBits >> 16) == 0 && (leastSigBits >> 16) == 0) {
+ return (digits(mostSigBits, 4) + "-" +
+ digits(leastSigBits, 4));
+ }
+ // END IKSWQ-24229
return (digits(mostSigBits >> 32, 8) + "-" +
digits(mostSigBits >> 16, 4) + "-" +
digits(mostSigBits, 4) + "-" +