Skip to content

Commit

Permalink
Merge branch 'vunerability-upgrades-backwards-conpatibility' into vun…
Browse files Browse the repository at this point in the history
…erability-upgrade
  • Loading branch information
junaidwarsivd committed Mar 2, 2023
2 parents cd25b4c + 39bddf6 commit 1191828
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 28 deletions.
3 changes: 2 additions & 1 deletion android-json-form-wizard/src/main/assets/app.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
widget.datepicker.is.numeric=true
widget.value.translated=true
widget.value.translated=true
easy_rule.v3.compatibility=true
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
package com.vijay.jsonwizard.activities;

import static android.view.inputmethod.InputMethodManager.HIDE_NOT_ALWAYS;
import static com.vijay.jsonwizard.utils.FormUtils.getCheckboxValueJsonArray;
import static com.vijay.jsonwizard.utils.FormUtils.getCurrentCheckboxValues;

import android.Manifest;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
Expand Down Expand Up @@ -108,6 +104,10 @@

import timber.log.Timber;

import static android.view.inputmethod.InputMethodManager.HIDE_NOT_ALWAYS;
import static com.vijay.jsonwizard.utils.FormUtils.getCheckboxValueJsonArray;
import static com.vijay.jsonwizard.utils.FormUtils.getCurrentCheckboxValues;

public class JsonFormActivity extends JsonFormBaseActivity implements JsonApi {

private final FormUtils formUtils = new FormUtils();
Expand Down Expand Up @@ -1427,11 +1427,12 @@ private Facts getEntries(String[] address, JSONObject object) throws JSONExcepti
formObject.put(RuleConstant.IS_RULE_CHECK, true);
formObject.put(RuleConstant.STEP, formObject.getString(RuleConstant.STEP));

if (Utils.enabledProperty(NativeFormsProperties.KEY.EASY_RULES_V3_COMPATIBILITY)) {
Facts resultFacts = getValueFromAddressCore(formObject);

Facts resultFacts = getValueFromAddressCore(formObject);

for (Map.Entry<String,Object> factEntry: resultFacts.asMap().entrySet()) {
result.put(factEntry.getKey(),factEntry.getValue());
for (Map.Entry<String, Object> factEntry : resultFacts.asMap().entrySet()) {
result.put(factEntry.getKey(), factEntry.getValue());
}
}

}
Expand Down Expand Up @@ -1938,6 +1939,7 @@ private List<String> getRules(String filename, String fieldKey, boolean readAllR

StringBuilder conditionString = new StringBuilder();
conditionString.append(map.get(RuleConstant.CONDITION).toString());
boolean backwardCompatibility = Utils.enabledProperty(NativeFormsProperties.KEY.EASY_RULES_V3_COMPATIBILITY);

List<String> fields = (List<String>) map.get(RuleConstant.ACTIONS);
List<String> newFields = new ArrayList<>();
Expand All @@ -1947,12 +1949,14 @@ private List<String> getRules(String filename, String fieldKey, boolean readAllR
field.trim().startsWith(RuleConstant.CONSTRAINT)) {
conditionString.append(" " + field);
}

if(backwardCompatibility)
newFields.add("facts." + field);
}

fields.clear();
fields.addAll(newFields);
if(backwardCompatibility) {
fields.clear();
fields.addAll(newFields);
}
}

actions.addAll(getConditionKeys(conditionString.toString()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.vijay.jsonwizard.constants.JsonFormConstants;
import com.vijay.jsonwizard.interfaces.FormFileSource;
import com.vijay.jsonwizard.rules.YamlRuleDefinitionReaderExt;
import com.vijay.jsonwizard.utils.NativeFormsProperties;
import com.vijay.jsonwizard.utils.Utils;

import org.jeasy.rules.api.Rules;
Expand All @@ -15,6 +16,8 @@
import java.io.InputStream;
import java.io.InputStreamReader;

import timber.log.Timber;

/***
* used to read files stored on the APP's asset folder
*
Expand All @@ -25,7 +28,18 @@ public class AssetsFileSource implements FormFileSource {
private MVELRuleFactory mvelRuleFactory;

private AssetsFileSource() {
this.mvelRuleFactory = new MVELRuleFactory(new YamlRuleDefinitionReaderExt());
if(Utils.enabledProperty(NativeFormsProperties.KEY.EASY_RULES_V3_COMPATIBILITY))
{
this.mvelRuleFactory = new MVELRuleFactory(new YamlRuleDefinitionReaderExt());
Timber.e("AssetsFileSource Engaged");
}
else
{
this.mvelRuleFactory = new MVELRuleFactory(new YamlRuleDefinitionReader());
Timber.e("AssetsFileSource not Engaged");
}


}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.vijay.jsonwizard.constants.JsonFormConstants;
import com.vijay.jsonwizard.interfaces.FormFileSource;
import com.vijay.jsonwizard.rules.YamlRuleDefinitionReaderExt;
import com.vijay.jsonwizard.utils.NativeFormsProperties;
import com.vijay.jsonwizard.utils.Utils;

import org.jeasy.rules.api.Rules;
Expand All @@ -20,6 +21,8 @@
import java.io.InputStream;
import java.io.InputStreamReader;

import timber.log.Timber;

/**
* Returns forms rules and other files stored on the devices
* hard disk
Expand All @@ -30,7 +33,15 @@ public class DiskFileSource implements FormFileSource {
private MVELRuleFactory mvelRuleFactory;

private DiskFileSource() {
this.mvelRuleFactory = new MVELRuleFactory(new YamlRuleDefinitionReaderExt());
if(Utils.enabledProperty(NativeFormsProperties.KEY.EASY_RULES_V3_COMPATIBILITY)){
this.mvelRuleFactory = new MVELRuleFactory(new YamlRuleDefinitionReaderExt());
Timber.e("Disk File source Mvel backward compat engaged");

}
else {
this.mvelRuleFactory = new MVELRuleFactory(new YamlRuleDefinitionReader());
Timber.e("Disk File source Mvel backward compat not engaged");
}
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.vijay.jsonwizard.activities.JsonFormBaseActivity;
import com.vijay.jsonwizard.constants.JsonFormConstants;
import com.vijay.jsonwizard.factory.FileSourceFactoryHelper;
import com.vijay.jsonwizard.utils.NativeFormsProperties;
import com.vijay.jsonwizard.utils.Utils;

import org.jeasy.rules.api.Facts;
Expand Down Expand Up @@ -43,16 +44,25 @@ public class RulesEngineFactory implements RuleListener {
private RulesEngineHelper rulesEngineHelper;
private Facts globalFacts;
private MVELRuleFactory mvelRuleFactory;

private boolean backwardCompatibility = false;
public RulesEngineFactory(Context context, Map<String, String> globalValues) {
this.context = context;
backwardCompatibility = Utils.getProperties(context).getPropertyBoolean(NativeFormsProperties.KEY.EASY_RULES_V3_COMPATIBILITY);
RulesEngineParameters parameters = new RulesEngineParameters().skipOnFirstAppliedRule(true);
this.defaultRulesEngine = new DefaultRulesEngine(parameters);
((DefaultRulesEngine) this.defaultRulesEngine).registerRuleListener(this);
this.ruleMap = new HashMap<>();
gson = new Gson();
this.rulesEngineHelper = new RulesEngineHelper();
this.mvelRuleFactory = new MVELRuleFactory(new YamlRuleDefinitionReaderExt());
if(backwardCompatibility) {
this.mvelRuleFactory = new MVELRuleFactory(new YamlRuleDefinitionReaderExt());
Timber.e("yaml ext Reader engaged : RulesEngineFactory");
}
else
{
this.mvelRuleFactory = new MVELRuleFactory(new YamlRuleDefinitionReader());
Timber.e("yaml ext Reader disengaged : RulesEngineFactory");
}


if (globalValues != null) {
Expand Down Expand Up @@ -269,28 +279,34 @@ public void afterEvaluate(Rule rule, Facts facts, boolean evaluationResult) {

@Override
public void beforeExecute(Rule rule, Facts facts) {
Timber.e("Putting facts in beforeExecute");
HashMap<String, Object> myMap = new HashMap<>();
facts.put("facts", myMap);
if(backwardCompatibility) {
Timber.e("Putting facts in beforeExecute");
HashMap<String, Object> myMap = new HashMap<>();
facts.put("facts", myMap);
}
}

@Override
public void onSuccess(Rule rule, Facts facts) {
Timber.e("Putting facts in onSuccess");
HashMap<String, Object> myMap = facts.get("facts");
if(backwardCompatibility) {
Timber.e("Putting facts in onSuccess");
HashMap<String, Object> myMap = facts.get("facts");

for (String key :
myMap.keySet()) {
facts.put(key, myMap.get(key));
}
for (String key :
myMap.keySet()) {
facts.put(key, myMap.get(key));
}

facts.remove("facts");
facts.remove("facts");
}
}

@Override
public void onFailure(Rule rule, Facts facts, Exception exception) {
Timber.e("Putting facts in onFailure");
facts.remove("facts");
if(backwardCompatibility) {
Timber.e("Putting facts in onFailure");
facts.remove("facts");
}
}

public String getRulesFolderPath() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public final static class KEY {
//Widgets
public static final String WIDGET_DATEPICKER_IS_NUMERIC = "widget.datepicker.is.numeric";
public static final String WIDGET_VALUE_TRANSLATED = "widget.value.translated";
public static final String EASY_RULES_V3_COMPATIBILITY = "easy_rule.v3.compatibility";


}
Expand Down

0 comments on commit 1191828

Please sign in to comment.