From 857d83128de786d4878eaca5b9fab1eb56de7171 Mon Sep 17 00:00:00 2001 From: Shubham Goyal Date: Fri, 6 Jul 2018 15:26:15 +0530 Subject: [PATCH 1/3] Add log for duplicate form id issue --- .../commcare/models/AndroidSessionWrapper.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/app/src/org/commcare/models/AndroidSessionWrapper.java b/app/src/org/commcare/models/AndroidSessionWrapper.java index cebc9854c8..022c07a22f 100755 --- a/app/src/org/commcare/models/AndroidSessionWrapper.java +++ b/app/src/org/commcare/models/AndroidSessionWrapper.java @@ -18,9 +18,12 @@ import org.commcare.suite.model.SessionDatum; import org.commcare.suite.model.StackOperation; import org.commcare.util.CommCarePlatform; +import org.commcare.util.LogTypes; import org.commcare.utils.AndroidInstanceInitializer; import org.commcare.utils.CommCareUtil; +import org.commcare.utils.CrashUtil; import org.javarosa.core.model.condition.EvaluationContext; +import org.javarosa.core.services.Logger; import java.util.Date; import java.util.Hashtable; @@ -198,7 +201,12 @@ public void commitStub() { setFormRecordId(r.getID()); SessionStateDescriptor ssd = SessionStateDescriptor.buildFromSessionWrapper(this); - sessionStorage.write(ssd); + try { + sessionStorage.write(ssd); + } catch (Exception e) { + CrashUtil.log("SessionStateDescriptor form id: " + ssd.getFormRecordId()); + throw e; + } sessionStateRecordId = ssd.getID(); } @@ -226,13 +234,13 @@ public EvaluationContext getRestrictedEvaluationContext(String commandId, public EvaluationContext getEvaluationContext(String commandId) { return session.getEvaluationContext(getIIF(), commandId, null); } - + private AndroidInstanceInitializer initializer; public AndroidInstanceInitializer getIIF() { if (initializer == null) { initializer = new AndroidInstanceInitializer(session); - } + } return initializer; } @@ -265,7 +273,7 @@ public static AndroidSessionWrapper mockEasiestRoute(CommCarePlatform platform, if (datum instanceof ComputedDatum) { // Allow mocking of routes that need computed data, useful for case creation forms wrapper = new AndroidSessionWrapper(platform); - wrapper.session.setCommand(platform.getModuleNameForEntry((FormEntry) e)); + wrapper.session.setCommand(platform.getModuleNameForEntry((FormEntry)e)); wrapper.session.setCommand(e.getCommandId()); wrapper.session.setComputedDatum(wrapper.getEvaluationContext()); } else if (datum instanceof EntityDatum) { @@ -287,7 +295,7 @@ public static AndroidSessionWrapper mockEasiestRoute(CommCarePlatform platform, } wrapper = new AndroidSessionWrapper(platform); - wrapper.session.setCommand(platform.getModuleNameForEntry((FormEntry) e)); + wrapper.session.setCommand(platform.getModuleNameForEntry((FormEntry)e)); wrapper.session.setCommand(e.getCommandId()); wrapper.session.setDatum(entityDatum.getDataId(), selectedValue); } From 488a92a9d1b6ef28cb430e2f83eb50699ab6c109 Mon Sep 17 00:00:00 2001 From: Shubham Goyal Date: Fri, 6 Jul 2018 15:28:34 +0530 Subject: [PATCH 2/3] imports --- app/src/org/commcare/models/AndroidSessionWrapper.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/src/org/commcare/models/AndroidSessionWrapper.java b/app/src/org/commcare/models/AndroidSessionWrapper.java index 022c07a22f..1ae75b9ea7 100755 --- a/app/src/org/commcare/models/AndroidSessionWrapper.java +++ b/app/src/org/commcare/models/AndroidSessionWrapper.java @@ -3,9 +3,9 @@ import android.util.Log; import org.commcare.CommCareApplication; -import org.commcare.models.database.SqlStorage; import org.commcare.android.database.user.models.FormRecord; import org.commcare.android.database.user.models.SessionStateDescriptor; +import org.commcare.models.database.SqlStorage; import org.commcare.modern.session.SessionWrapperInterface; import org.commcare.preferences.HiddenPreferences; import org.commcare.session.CommCareSession; @@ -18,12 +18,10 @@ import org.commcare.suite.model.SessionDatum; import org.commcare.suite.model.StackOperation; import org.commcare.util.CommCarePlatform; -import org.commcare.util.LogTypes; import org.commcare.utils.AndroidInstanceInitializer; import org.commcare.utils.CommCareUtil; import org.commcare.utils.CrashUtil; import org.javarosa.core.model.condition.EvaluationContext; -import org.javarosa.core.services.Logger; import java.util.Date; import java.util.Hashtable; From fbef2cd77cc3f0fea41525edb0372868c66c853c Mon Sep 17 00:00:00 2001 From: Shubham Goyal Date: Fri, 6 Jul 2018 20:37:07 +0530 Subject: [PATCH 3/3] Null check --- app/src/org/commcare/models/AndroidSessionWrapper.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/org/commcare/models/AndroidSessionWrapper.java b/app/src/org/commcare/models/AndroidSessionWrapper.java index 1ae75b9ea7..6f15dc09b9 100755 --- a/app/src/org/commcare/models/AndroidSessionWrapper.java +++ b/app/src/org/commcare/models/AndroidSessionWrapper.java @@ -202,7 +202,9 @@ public void commitStub() { try { sessionStorage.write(ssd); } catch (Exception e) { - CrashUtil.log("SessionStateDescriptor form id: " + ssd.getFormRecordId()); + if (ssd != null) { + CrashUtil.log("SessionStateDescriptor form id: " + ssd.getFormRecordId()); + } throw e; } sessionStateRecordId = ssd.getID();