From 05b6b99ae5f0c7781cbb1b630e026189418d8ce4 Mon Sep 17 00:00:00 2001 From: vend Date: Wed, 2 Nov 2022 16:50:57 +0500 Subject: [PATCH 1/8] did vunerability upgrade --- opensrp-anc/build.gradle | 12 ++++++------ .../org/smartregister/anc/library/util/Utils.java | 4 ++-- reference-app/build.gradle | 12 ++++++------ 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/opensrp-anc/build.gradle b/opensrp-anc/build.gradle index a39690d6f..3878d7f6e 100644 --- a/opensrp-anc/build.gradle +++ b/opensrp-anc/build.gradle @@ -226,13 +226,13 @@ dependencies { exclude group: 'com.android.support', module: 'cardview-v7' exclude group: 'com.android.support', module: 'support-v4' } - implementation group: 'org.apache.commons', name: 'commons-text', version: '1.9' + implementation group: 'org.apache.commons', name: 'commons-text', version: '1.10.0' implementation 'junit:junit:4.12' implementation 'androidx.test:core:1.4.0' annotationProcessor 'com.jakewharton:butterknife:10.2.3' implementation 'net.zetetic:android-database-sqlcipher:4.4.0@aar' implementation 'commons-validator:commons-validator:1.7' - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.8.9' implementation 'org.greenrobot:eventbus:3.2.0' annotationProcessor 'org.greenrobot:eventbus-annotation-processor:3.2.0' implementation 'com.google.guava:guava:30.0-jre' @@ -251,11 +251,11 @@ dependencies { implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.0' - implementation group: 'org.yaml', name: 'snakeyaml', version: '1.27' + implementation group: 'org.yaml', name: 'snakeyaml', version: '1.31' implementation 'de.hdodenhof:circleimageview:3.1.0' - implementation 'org.jeasy:easy-rules-core:3.3.0' - implementation 'org.jeasy:easy-rules-mvel:3.3.0' - implementation("com.itextpdf:itext7-core:7.1.12") + implementation 'org.jeasy:easy-rules-core:3.4.0' + implementation 'org.jeasy:easy-rules-mvel:3.4.0' + implementation("com.itextpdf:itext7-core:7.2.4") implementation 'org.jacoco:org.jacoco.agent:0.7.9:runtime' testImplementation 'org.jacoco:org.jacoco.agent:0.7.9:runtime' implementation 'com.android.volley:volley:1.2.1' diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/util/Utils.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/util/Utils.java index b60836396..f3bcdd7b3 100644 --- a/opensrp-anc/src/main/java/org/smartregister/anc/library/util/Utils.java +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/util/Utils.java @@ -24,8 +24,8 @@ import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.layout.Document; import com.itextpdf.layout.element.Paragraph; -import com.itextpdf.layout.property.HorizontalAlignment; -import com.itextpdf.layout.property.TextAlignment; +import com.itextpdf.layout.properties.HorizontalAlignment; +import com.itextpdf.layout.properties.TextAlignment; import com.vijay.jsonwizard.activities.JsonFormActivity; import com.vijay.jsonwizard.constants.JsonFormConstants; import com.vijay.jsonwizard.rules.RuleConstant; diff --git a/reference-app/build.gradle b/reference-app/build.gradle index 6614ae712..2fc2a4fc5 100644 --- a/reference-app/build.gradle +++ b/reference-app/build.gradle @@ -28,7 +28,7 @@ jacoco { // This variables are used by the version code & name generators ext.versionMajor = 1 ext.versionMinor = 6 -ext.versionPatch = 15 +ext.versionPatch = 16 ext.versionClassifier = null ext.isSnapshot = false ext.minimumSdkVersion = androidMinSdkVersion @@ -281,11 +281,11 @@ dependencies { exclude group: 'com.android.support', module: 'cardview-v7' exclude group: 'com.android.support', module: 'support-v4' } - implementation group: 'org.apache.commons', name: 'commons-text', version: '1.9' + implementation group: 'org.apache.commons', name: 'commons-text', version: '1.10.0' annotationProcessor 'com.jakewharton:butterknife:10.2.3' implementation 'net.zetetic:android-database-sqlcipher:4.4.0@aar' implementation 'commons-validator:commons-validator:1.7' - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.8.9' implementation 'org.greenrobot:eventbus:3.2.0' annotationProcessor 'org.greenrobot:eventbus-annotation-processor:3.2.0' implementation 'com.google.guava:guava:30.0-jre' @@ -301,10 +301,10 @@ dependencies { implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.0' - implementation group: 'org.yaml', name: 'snakeyaml', version: '1.27' + implementation group: 'org.yaml', name: 'snakeyaml', version: '1.31' implementation 'de.hdodenhof:circleimageview:3.1.0' - implementation 'org.jeasy:easy-rules-core:3.3.0' - implementation 'org.jeasy:easy-rules-mvel:3.3.0' + implementation 'org.jeasy:easy-rules-core:3.4.0' + implementation 'org.jeasy:easy-rules-mvel:3.4.0' implementation 'com.flurry.android:analytics:11.6.0@aar' implementation 'com.flurry.android:analytics:11.6.0@aar' implementation 'androidx.multidex:multidex:2.0.1' From 2487a63060184d0176b62adf89e50413bee73b4b Mon Sep 17 00:00:00 2001 From: vend Date: Tue, 8 Nov 2022 12:49:04 +0500 Subject: [PATCH 2/8] jeasy rules updated --- opensrp-anc/build.gradle | 6 +++--- .../anc/library/helper/AncRulesEngineHelper.java | 6 ++++-- reference-app/build.gradle | 6 +++--- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/opensrp-anc/build.gradle b/opensrp-anc/build.gradle index 3878d7f6e..cb776529d 100644 --- a/opensrp-anc/build.gradle +++ b/opensrp-anc/build.gradle @@ -181,7 +181,7 @@ tasks.withType(Test) { dependencies { implementation 'androidx.appcompat:appcompat:1.3.1' - implementation('org.smartregister:opensrp-client-native-form:3.1.1-SNAPSHOT@aar') { + implementation('org.smartregister:opensrp-client-native-form:3.1.2-SNAPSHOT@aar') { transitive = true exclude group: 'com.android.support', module: 'recyclerview-v7' exclude group: 'com.android.support', module: 'appcompat-v7' @@ -253,8 +253,8 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:2.1.0' implementation group: 'org.yaml', name: 'snakeyaml', version: '1.31' implementation 'de.hdodenhof:circleimageview:3.1.0' - implementation 'org.jeasy:easy-rules-core:3.4.0' - implementation 'org.jeasy:easy-rules-mvel:3.4.0' + implementation 'org.jeasy:easy-rules-core:4.1.0' + implementation 'org.jeasy:easy-rules-mvel:4.1.0' implementation("com.itextpdf:itext7-core:7.2.4") implementation 'org.jacoco:org.jacoco.agent:0.7.9:runtime' testImplementation 'org.jacoco:org.jacoco.agent:0.7.9:runtime' diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineHelper.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineHelper.java index b39cd5b15..79df5f742 100644 --- a/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineHelper.java +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineHelper.java @@ -12,12 +12,14 @@ import org.jeasy.rules.api.Rule; import org.jeasy.rules.api.Rules; import org.jeasy.rules.api.RulesEngine; +import org.jeasy.rules.api.RulesEngineParameters; import org.jeasy.rules.core.DefaultRulesEngine; import org.jeasy.rules.core.InferenceRulesEngine; -import org.jeasy.rules.core.RulesEngineParameters; + import org.jeasy.rules.mvel.MVELRule; import org.jeasy.rules.mvel.MVELRuleFactory; -import org.jeasy.rules.support.YamlRuleDefinitionReader; + +import org.jeasy.rules.support.reader.YamlRuleDefinitionReader; import org.joda.time.LocalDate; import org.json.JSONArray; import org.json.JSONException; diff --git a/reference-app/build.gradle b/reference-app/build.gradle index 2fc2a4fc5..67e944a5e 100644 --- a/reference-app/build.gradle +++ b/reference-app/build.gradle @@ -233,7 +233,7 @@ dependencies { coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5' def powerMockVersion = '2.0.7' implementation project(":opensrp-anc") - implementation('org.smartregister:opensrp-client-native-form:3.1.1-SNAPSHOT@aar') { + implementation('org.smartregister:opensrp-client-native-form:3.1.2-SNAPSHOT@aar') { transitive = true exclude group: 'com.android.support', module: 'recyclerview-v7' exclude group: 'com.android.support', module: 'appcompat-v7' @@ -303,8 +303,8 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:2.1.0' implementation group: 'org.yaml', name: 'snakeyaml', version: '1.31' implementation 'de.hdodenhof:circleimageview:3.1.0' - implementation 'org.jeasy:easy-rules-core:3.4.0' - implementation 'org.jeasy:easy-rules-mvel:3.4.0' + implementation 'org.jeasy:easy-rules-core:4.1.0' + implementation 'org.jeasy:easy-rules-mvel:4.1.0' implementation 'com.flurry.android:analytics:11.6.0@aar' implementation 'com.flurry.android:analytics:11.6.0@aar' implementation 'androidx.multidex:multidex:2.0.1' From 787a4aeee0930033283f735dcd47a5c002539a39 Mon Sep 17 00:00:00 2001 From: Ephraim Kigamba Date: Tue, 22 Nov 2022 15:18:33 +0300 Subject: [PATCH 3/8] Fix MVEL rules not working with jeasy-mvel 4.1.0 - Update jackson-dataformat-yaml to 2.14.0 to fix security vulnerabilities - Update native-form to fix MVEL rules not working for some forms such as registration forms --- opensrp-anc/build.gradle | 5 ++- .../library/YamlRuleDefinitionReaderExt.java | 32 ++++++++++++++++ .../library/helper/AncRulesEngineFactory.java | 38 ++++++++++++++++++- .../library/helper/AncRulesEngineHelper.java | 23 ++++++++++- reference-app/build.gradle | 3 +- .../anc/application/AncApplication.java | 8 ++++ 6 files changed, 105 insertions(+), 4 deletions(-) create mode 100644 opensrp-anc/src/main/java/org/smartregister/anc/library/YamlRuleDefinitionReaderExt.java diff --git a/opensrp-anc/build.gradle b/opensrp-anc/build.gradle index d0ce52749..6e76316b2 100644 --- a/opensrp-anc/build.gradle +++ b/opensrp-anc/build.gradle @@ -181,7 +181,7 @@ tasks.withType(Test) { dependencies { implementation 'androidx.appcompat:appcompat:1.3.1' - implementation('org.smartregister:opensrp-client-native-form:3.1.2-SNAPSHOT@aar') { + implementation('org.smartregister:opensrp-client-native-form:3.1.5-LOCAL-SNAPSHOT@aar') { transitive = true exclude group: 'com.android.support', module: 'recyclerview-v7' exclude group: 'com.android.support', module: 'appcompat-v7' @@ -262,6 +262,9 @@ dependencies { implementation 'org.jacoco:org.jacoco.agent:0.8.7:runtime' testImplementation 'org.jacoco:org.jacoco.agent:0.8.7:runtime' + // FIX SECURITY VULNERABILITIES + implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.14.0' + testImplementation 'junit:junit:4.13.1' testImplementation 'org.apache.maven:maven-ant-tasks:2.1.3' testImplementation('com.squareup:fest-android:1.0.8') { diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/YamlRuleDefinitionReaderExt.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/YamlRuleDefinitionReaderExt.java new file mode 100644 index 000000000..22955eff2 --- /dev/null +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/YamlRuleDefinitionReaderExt.java @@ -0,0 +1,32 @@ +package org.smartregister.anc.library; + +import org.jeasy.rules.support.RuleDefinition; +import org.jeasy.rules.support.reader.YamlRuleDefinitionReader; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Created by Ephraim Kigamba - nek.eam@gmail.com on 22-11-2022. + */ +public class YamlRuleDefinitionReaderExt extends YamlRuleDefinitionReader { + + + @Override + protected RuleDefinition createRuleDefinition(Map map) { + RuleDefinition ruleDefinition = super.createRuleDefinition(map); + + List actionList = ruleDefinition.getActions(); + List newActionList = new ArrayList<>(); + + for (int i = 0; i < actionList.size(); i++) { + newActionList.add("facts." + actionList.get(i)); + } + + actionList.clear(); + actionList.addAll(newActionList); + + return ruleDefinition; + } +} diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineFactory.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineFactory.java index 704c55a5f..e316de34a 100644 --- a/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineFactory.java +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineFactory.java @@ -7,10 +7,15 @@ import org.jeasy.rules.api.Facts; import org.jeasy.rules.api.Rule; +import org.jeasy.rules.mvel.MVELAction; +import org.jeasy.rules.mvel.MVELRule; import org.json.JSONObject; +import java.util.HashMap; import java.util.Map; +import timber.log.Timber; + public class AncRulesEngineFactory extends RulesEngineFactory { private Map globalValues; private AncRulesEngineHelper ancRulesEngineHelper; @@ -22,7 +27,6 @@ public AncRulesEngineFactory(Context context, Map globalValues, this.ancRulesEngineHelper = new AncRulesEngineHelper(context); this.ancRulesEngineHelper.setJsonObject(mJSONObject); this.globalValues = globalValues; - } @Override @@ -45,4 +49,36 @@ protected Facts initializeFacts(Facts facts) { public boolean beforeEvaluate(Rule rule, Facts facts) { return selectedRuleName != null && selectedRuleName.equals(rule.getName()); } + + @Override + public void beforeExecute(Rule rule, Facts facts) { + super.beforeExecute(rule, facts); + + Timber.e("Putting facts in beforeExecute"); + HashMap myMap = new HashMap<>(); + facts.put("facts", myMap); + } + + @Override + public void onSuccess(Rule rule, Facts facts) { + super.onSuccess(rule, facts); + + Timber.e("Putting facts in onSuccess"); + HashMap myMap = facts.get("facts"); + + for (String key : + myMap.keySet()) { + facts.put(key, myMap.get(key)); + } + + facts.remove("facts"); + } + + @Override + public void onFailure(Rule rule, Facts facts, Exception exception) { + super.onFailure(rule, facts, exception); + + Timber.e("Putting facts in onFailure"); + facts.remove("facts"); + } } diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineHelper.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineHelper.java index 79df5f742..38191c10a 100644 --- a/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineHelper.java +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineHelper.java @@ -10,6 +10,7 @@ import org.jeasy.rules.api.Facts; import org.jeasy.rules.api.Rule; +import org.jeasy.rules.api.RuleListener; import org.jeasy.rules.api.Rules; import org.jeasy.rules.api.RulesEngine; import org.jeasy.rules.api.RulesEngineParameters; @@ -24,6 +25,7 @@ import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import org.smartregister.anc.library.YamlRuleDefinitionReaderExt; import org.smartregister.anc.library.rule.AlertRule; import org.smartregister.anc.library.rule.ContactRule; import org.smartregister.anc.library.util.ANCFormUtils; @@ -53,7 +55,7 @@ public class AncRulesEngineHelper extends RulesEngineHelper { private final RulesEngine defaultRulesEngine; private final Map ruleMap; private JSONObject mJsonObject = new JSONObject(); - private final YamlRuleDefinitionReader yamlRuleDefinitionReader = new YamlRuleDefinitionReader(); + private final YamlRuleDefinitionReaderExt yamlRuleDefinitionReader = new YamlRuleDefinitionReaderExt(); private final MVELRuleFactory mvelRuleFactory = new MVELRuleFactory(yamlRuleDefinitionReader); public AncRulesEngineHelper(Context context) { @@ -61,6 +63,25 @@ public AncRulesEngineHelper(Context context) { this.inferentialRulesEngine = new InferenceRulesEngine(); RulesEngineParameters parameters = new RulesEngineParameters().skipOnFirstAppliedRule(true); this.defaultRulesEngine = new DefaultRulesEngine(parameters); + /* ((DefaultRulesEngine) this.defaultRulesEngine).registerRuleListener(new RuleListener() { + @Override + public void beforeExecute(Rule rule, Facts facts) { + Timber.e("Putting facts in beforeExecute"); + facts.put("facts", facts); + } + + @Override + public void onSuccess(Rule rule, Facts facts) { + Timber.e("Putting facts in onSuccess"); + facts.remove("facts"); + } + + @Override + public void onFailure(Rule rule, Facts facts, Exception exception) { + Timber.e("Putting facts in onFailure"); + facts.remove("facts"); + } + });*/ this.ruleMap = new HashMap<>(); } diff --git a/reference-app/build.gradle b/reference-app/build.gradle index 1d6e28031..febc6fe46 100644 --- a/reference-app/build.gradle +++ b/reference-app/build.gradle @@ -233,7 +233,8 @@ dependencies { coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5' def powerMockVersion = '2.0.7' implementation project(":opensrp-anc") - implementation('org.smartregister:opensrp-client-native-form:3.1.2-SNAPSHOT@aar') { + implementation 'com.jakewharton.timber:timber:4.7.1' + implementation('org.smartregister:opensrp-client-native-form:3.1.5-LOCAL-SNAPSHOT@aar') { transitive = true exclude group: 'com.android.support', module: 'recyclerview-v7' exclude group: 'com.android.support', module: 'appcompat-v7' diff --git a/reference-app/src/main/java/org/smartregister/anc/application/AncApplication.java b/reference-app/src/main/java/org/smartregister/anc/application/AncApplication.java index 85dd5281c..14e17df24 100644 --- a/reference-app/src/main/java/org/smartregister/anc/application/AncApplication.java +++ b/reference-app/src/main/java/org/smartregister/anc/application/AncApplication.java @@ -13,6 +13,7 @@ import com.google.firebase.crashlytics.FirebaseCrashlytics; import com.vijay.jsonwizard.NativeFormLibrary; +import org.slf4j.LoggerFactory; import org.smartregister.Context; import org.smartregister.CoreLibrary; import org.smartregister.P2POptions; @@ -37,6 +38,8 @@ import org.smartregister.view.activity.DrishtiApplication; import org.smartregister.view.receiver.TimeChangedBroadcastReceiver; +import java.util.logging.Logger; + import timber.log.Timber; /** @@ -128,6 +131,11 @@ public void onCreate() { } + @Override + public void initializeCrashLyticsTree() { + Timber.plant((timber.log.Timber.Tree) new Timber.DebugTree()); + } + private void setDefaultLanguage() { try { Utils.saveLanguage("en"); From bf1c17220ef5b119d3aa3939e3d997903fd6f280 Mon Sep 17 00:00:00 2001 From: vend Date: Fri, 23 Dec 2022 15:03:35 +0500 Subject: [PATCH 4/8] uptadated the facts population in rulesEnginehelper --- .../library/helper/AncRulesEngineHelper.java | 62 +++++++++++++++++-- 1 file changed, 58 insertions(+), 4 deletions(-) diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineHelper.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineHelper.java index 38191c10a..41cafcd63 100644 --- a/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineHelper.java +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineHelper.java @@ -60,19 +60,73 @@ public class AncRulesEngineHelper extends RulesEngineHelper { public AncRulesEngineHelper(Context context) { this.context = context; - this.inferentialRulesEngine = new InferenceRulesEngine(); + + InferenceRulesEngine rulesEngine = new InferenceRulesEngine(); + rulesEngine.registerRuleListener(new RuleListener() { + @Override + public boolean beforeEvaluate(Rule rule, Facts facts) { + Timber.e("Putting facts in beforeExecute"); + HashMap myMap = new HashMap<>(); + Map iterationFacts = facts.asMap(); + for(String key: iterationFacts.keySet() ) + { + myMap.put(key, iterationFacts.get(key)); + } + + facts.put("facts", myMap); + return true; + } + + @Override + public void onSuccess(Rule rule, Facts facts) { + Timber.e("Putting facts in onSuccess"); + HashMap myMap = facts.get("facts"); + + for (String key : + myMap.keySet()) { + facts.put(key, myMap.get(key)); + } + + facts.remove("facts"); + + + } + + @Override + public void onFailure(Rule rule, Facts facts, Exception exception) { + + Timber.e("Putting facts in onFailure"); + facts.remove("facts"); + + } + }); + + this.inferentialRulesEngine = rulesEngine; RulesEngineParameters parameters = new RulesEngineParameters().skipOnFirstAppliedRule(true); this.defaultRulesEngine = new DefaultRulesEngine(parameters); - /* ((DefaultRulesEngine) this.defaultRulesEngine).registerRuleListener(new RuleListener() { + + ((DefaultRulesEngine) this.defaultRulesEngine).registerRuleListener(new RuleListener() { @Override public void beforeExecute(Rule rule, Facts facts) { +// Timber.e("Putting facts in beforeExecute"); +// facts.put("facts", facts); + Timber.e("Putting facts in beforeExecute"); - facts.put("facts", facts); + HashMap myMap = new HashMap<>(); + facts.put("facts", myMap); } @Override public void onSuccess(Rule rule, Facts facts) { + Timber.e("Putting facts in onSuccess"); + HashMap myMap = facts.get("facts"); + + for (String key : + myMap.keySet()) { + facts.put(key, myMap.get(key)); + } + facts.remove("facts"); } @@ -81,7 +135,7 @@ public void onFailure(Rule rule, Facts facts, Exception exception) { Timber.e("Putting facts in onFailure"); facts.remove("facts"); } - });*/ + }); this.ruleMap = new HashMap<>(); } From 1ed864ae03ac0316a75cb908e57e72326c8edb52 Mon Sep 17 00:00:00 2001 From: vend Date: Wed, 28 Dec 2022 18:08:41 +0500 Subject: [PATCH 5/8] fixed the AncRulesEngineFactory and AncRulesEngineHelper for the not showing the overview and previous contacts in the contacts sections --- .../anc/library/helper/AncRulesEngineFactory.java | 2 +- .../anc/library/helper/AncRulesEngineHelper.java | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineFactory.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineFactory.java index e316de34a..7d705c183 100644 --- a/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineFactory.java +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineFactory.java @@ -63,7 +63,7 @@ public void beforeExecute(Rule rule, Facts facts) { public void onSuccess(Rule rule, Facts facts) { super.onSuccess(rule, facts); - Timber.e("Putting facts in onSuccess"); + Timber.e("Putting facts in onSuccess "); HashMap myMap = facts.get("facts"); for (String key : diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineHelper.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineHelper.java index 41cafcd63..9ba3a0ecd 100644 --- a/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineHelper.java +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineHelper.java @@ -113,13 +113,18 @@ public void beforeExecute(Rule rule, Facts facts) { Timber.e("Putting facts in beforeExecute"); HashMap myMap = new HashMap<>(); + Map iterationFacts = facts.asMap(); + for(String key: iterationFacts.keySet() ) + { + myMap.put(key, iterationFacts.get(key)); + } + facts.put("facts", myMap); } @Override public void onSuccess(Rule rule, Facts facts) { - - Timber.e("Putting facts in onSuccess"); + Timber.e("Putting facts in onSuccess yo"); HashMap myMap = facts.get("facts"); for (String key : @@ -206,7 +211,8 @@ public boolean getRelevance(Facts relevanceFacts, String rule) { relevanceFacts.put(RuleConstant.IS_RELEVANT, false); Rules rules = new Rules(); - Rule mvelRule = new MVELRule().name(UUID.randomUUID().toString()).when(rule).then("isRelevant = true;"); + Rule mvelRule = new MVELRule().name(UUID.randomUUID().toString()).when(rule) + .then("facts.isRelevant = true;"); rules.register(mvelRule); processDefaultRules(rules, relevanceFacts); From 5c0a8c78072dd189fb3df2910d09f0f7ebd235a9 Mon Sep 17 00:00:00 2001 From: vend Date: Wed, 28 Dec 2022 18:39:03 +0500 Subject: [PATCH 6/8] fixed the AncRulesEngineFactory and AncRulesEngineHelper for the not showing the overview and previous contacts in the contacts sections --- .../smartregister/anc/library/helper/AncRulesEngineHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineHelper.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineHelper.java index 9ba3a0ecd..6d42a6acc 100644 --- a/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineHelper.java +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineHelper.java @@ -124,7 +124,7 @@ public void beforeExecute(Rule rule, Facts facts) { @Override public void onSuccess(Rule rule, Facts facts) { - Timber.e("Putting facts in onSuccess yo"); + Timber.e("Putting facts in onSuccess"); HashMap myMap = facts.get("facts"); for (String key : From 0e3bc0520dc267dd63a35b6d0aea14d86780bc1d Mon Sep 17 00:00:00 2001 From: vend Date: Fri, 6 Jan 2023 05:33:52 +0500 Subject: [PATCH 7/8] updated the vunerability changes --- opensrp-anc/build.gradle | 4 ++-- .../anc/library/helper/AncRulesEngineFactory.java | 2 -- reference-app/build.gradle | 4 ++-- reference-app/src/main/assets/app.properties | 1 + 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/opensrp-anc/build.gradle b/opensrp-anc/build.gradle index 6e76316b2..a3a3f8799 100644 --- a/opensrp-anc/build.gradle +++ b/opensrp-anc/build.gradle @@ -253,8 +253,8 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:2.1.0' implementation group: 'org.yaml', name: 'snakeyaml', version: '1.31' implementation 'de.hdodenhof:circleimageview:3.1.0' - implementation 'org.jeasy:easy-rules-core:4.1.0' - implementation 'org.jeasy:easy-rules-mvel:4.1.0' + implementation 'org.jeasy:easy-rules-core:4.1.1-SNAPSHOT' + implementation 'org.jeasy:easy-rules-mvel:4.1.1-SNAPSHOT' implementation("com.itextpdf:itext7-core:7.2.4") implementation 'org.jacoco:org.jacoco.agent:0.7.9:runtime' testImplementation 'org.jacoco:org.jacoco.agent:0.7.9:runtime' diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineFactory.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineFactory.java index 7d705c183..c95ff3c48 100644 --- a/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineFactory.java +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/helper/AncRulesEngineFactory.java @@ -7,8 +7,6 @@ import org.jeasy.rules.api.Facts; import org.jeasy.rules.api.Rule; -import org.jeasy.rules.mvel.MVELAction; -import org.jeasy.rules.mvel.MVELRule; import org.json.JSONObject; import java.util.HashMap; diff --git a/reference-app/build.gradle b/reference-app/build.gradle index febc6fe46..15d49d8ac 100644 --- a/reference-app/build.gradle +++ b/reference-app/build.gradle @@ -304,8 +304,8 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:2.1.0' implementation group: 'org.yaml', name: 'snakeyaml', version: '1.31' implementation 'de.hdodenhof:circleimageview:3.1.0' - implementation 'org.jeasy:easy-rules-core:4.1.0' - implementation 'org.jeasy:easy-rules-mvel:4.1.0' + implementation 'org.jeasy:easy-rules-core:4.1.1-SNAPSHOT' + implementation 'org.jeasy:easy-rules-mvel:4.1.1-SNAPSHOT' implementation 'com.flurry.android:analytics:11.6.0@aar' implementation 'com.flurry.android:analytics:11.6.0@aar' implementation 'androidx.multidex:multidex:2.0.1' diff --git a/reference-app/src/main/assets/app.properties b/reference-app/src/main/assets/app.properties index e523b6aaa..4187ec63e 100644 --- a/reference-app/src/main/assets/app.properties +++ b/reference-app/src/main/assets/app.properties @@ -6,4 +6,5 @@ CAN_SAVE_INITIAL_SITE_SETTING=true MAX_CONTACT_SCHEDULE_DISPLAYED=5 language.switching.enabled=true widget.value.translated=true +easy_rule.v3.compatibility=true DEFAULT_COUNTRY_ID=02ebbc84-5e29-4cd5-9b79-c594058923e9 From 4518badf9e3328dddfd4a490a0af2a0dd5269c1e Mon Sep 17 00:00:00 2001 From: vend Date: Mon, 6 Mar 2023 13:30:16 +0500 Subject: [PATCH 8/8] removed dependencies that were already included in native forms --- opensrp-anc/build.gradle | 2 -- reference-app/build.gradle | 2 -- 2 files changed, 4 deletions(-) diff --git a/opensrp-anc/build.gradle b/opensrp-anc/build.gradle index a3a3f8799..61c724c4a 100644 --- a/opensrp-anc/build.gradle +++ b/opensrp-anc/build.gradle @@ -253,8 +253,6 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:2.1.0' implementation group: 'org.yaml', name: 'snakeyaml', version: '1.31' implementation 'de.hdodenhof:circleimageview:3.1.0' - implementation 'org.jeasy:easy-rules-core:4.1.1-SNAPSHOT' - implementation 'org.jeasy:easy-rules-mvel:4.1.1-SNAPSHOT' implementation("com.itextpdf:itext7-core:7.2.4") implementation 'org.jacoco:org.jacoco.agent:0.7.9:runtime' testImplementation 'org.jacoco:org.jacoco.agent:0.7.9:runtime' diff --git a/reference-app/build.gradle b/reference-app/build.gradle index 15d49d8ac..a5c01dc37 100644 --- a/reference-app/build.gradle +++ b/reference-app/build.gradle @@ -304,8 +304,6 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:2.1.0' implementation group: 'org.yaml', name: 'snakeyaml', version: '1.31' implementation 'de.hdodenhof:circleimageview:3.1.0' - implementation 'org.jeasy:easy-rules-core:4.1.1-SNAPSHOT' - implementation 'org.jeasy:easy-rules-mvel:4.1.1-SNAPSHOT' implementation 'com.flurry.android:analytics:11.6.0@aar' implementation 'com.flurry.android:analytics:11.6.0@aar' implementation 'androidx.multidex:multidex:2.0.1'