use of io.vavr.Tuple3 in project rulesservice by genny-project.
the class RulesLoader method processFileRealms.
private static List<Tuple3<String, String, String>> processFileRealms(final String realm, String inputFileStr) {
File file = new File(inputFileStr);
String fileName = inputFileStr.replaceFirst(".*/(\\w+).*", "$1");
String fileNameExt = inputFileStr.replaceFirst(".*/\\w+\\.(.*)", "$1");
List<Tuple3<String, String, String>> rules = new ArrayList<Tuple3<String, String, String>>();
if (!file.isFile()) {
// DIRECTORY
if (!fileName.startsWith("XX")) {
String localRealm = realm;
if (fileName.startsWith("prj_") || fileName.startsWith("PRJ_")) {
// extract realm name
localRealm = fileName.substring("prj_".length()).toLowerCase();
}
final List<String> filesList = Vertx.currentContext().owner().fileSystem().readDirBlocking(inputFileStr);
for (final String dirFileStr : filesList) {
// use
List<Tuple3<String, String, String>> childRules = processFileRealms(localRealm, dirFileStr);
// directory
// name
// as
// rulegroup
rules.addAll(childRules);
}
}
return rules;
} else {
Buffer buf = Vertx.currentContext().owner().fileSystem().readFileBlocking(inputFileStr);
try {
if ((!fileName.startsWith("XX")) && (fileNameExt.equalsIgnoreCase("drl"))) {
// ignore files that start
// with XX
final String ruleText = buf.toString();
Tuple3<String, String, String> rule = (Tuple.of(realm, fileName + "." + fileNameExt, ruleText));
System.out.println(realm + " Loading in Rule:" + rule._1 + " of " + inputFileStr);
rules.add(rule);
} else if ((!fileName.startsWith("XX")) && (fileNameExt.equalsIgnoreCase("bpmn"))) {
// ignore files
// that start
// with XX
final String bpmnText = buf.toString();
Tuple3<String, String, String> bpmn = (Tuple.of(realm, fileName + "." + fileNameExt, bpmnText));
System.out.println(realm + " Loading in BPMN:" + bpmn._1 + " of " + inputFileStr);
rules.add(bpmn);
} else if ((!fileName.startsWith("XX")) && (fileNameExt.equalsIgnoreCase("xls"))) {
// ignore files that
// start with XX
final String xlsText = buf.toString();
Tuple3<String, String, String> xls = (Tuple.of(realm, fileName + "." + fileNameExt, xlsText));
System.out.println(realm + " Loading in XLS:" + xls._1 + " of " + inputFileStr);
rules.add(xls);
}
return rules;
} catch (final DecodeException dE) {
}
}
return null;
}
use of io.vavr.Tuple3 in project rulesservice by genny-project.
the class KieTest method drlWhenConditionTest.
@Test
public void drlWhenConditionTest() {
String rule = "";
rule += "package org.kie.test\n";
rule += "import java.util.Map;\n";
rule += "global java.util.List list\n";
rule += "rule rule2\n";
rule += "when\n";
rule += " $a : Integer(intValue > 1)\n";
rule += " $map : Map($value: this[\"token\"] != null)\n";
rule += "then\n";
rule += " System.out.println(\"value a=\"+$a);\n";
rule += " list.add( $a );\n";
rule += "end\n";
rule += "\n";
String rulesGroup = "GRP_RULES_TEST";
List<Tuple3<String, String, String>> rules = new ArrayList<Tuple3<String, String, String>>();
List<Tuple2<String, Object>> globals = new ArrayList<Tuple2<String, Object>>();
EventBus eb = null;
rules.add(Tuple.of("genny", "rule2.drl", rule));
List<?> list = new ArrayList<Object>();
globals.add(Tuple.of("list", list));
RulesLoader.setupKieRules(rulesGroup, rules);
Map<String, KieBase> cache = RulesLoader.getKieBaseCache();
Integer count = cache.size();
System.out.println("Loaded Test Kie Session with " + count + " ruleGroups");
List<Object> facts = new ArrayList<Object>();
facts.add(1);
facts.add(2);
facts.add(3);
Map<String, String> keyvalue = new HashMap<String, String>();
keyvalue.put("token", "TOKEN");
RulesLoader.executeStatefull(rulesGroup, eb, globals, facts, keyvalue);
assertThat(list.size(), is(2));
}
use of io.vavr.Tuple3 in project rulesservice by genny-project.
the class KieTest method setupKieSessionTest.
@Test
public void setupKieSessionTest() {
String rule = "";
rule += "package org.kie.test\n";
rule += "global java.util.List list\n";
rule += "rule rule1\n";
rule += "when\n";
rule += " Integer(intValue > 0)\n";
rule += "then\n";
rule += " list.add( 1 );\n";
rule += " System.out.println(\"Added!\");\n";
rule += "end\n";
rule += "\n";
String rulesGroup = "GRP_RULES_TEST";
List<Tuple3<String, String, String>> rules = new ArrayList<Tuple3<String, String, String>>();
rules.add(Tuple.of("genny", "rule1.drl", rule));
List<Tuple2<String, Object>> globals = new ArrayList<Tuple2<String, Object>>();
List<?> list = new ArrayList<Object>();
globals.add(Tuple.of("list", list));
RulesLoader.setupKieRules(rulesGroup, rules);
Map<String, KieBase> cache = RulesLoader.getKieBaseCache();
Integer count = cache.size();
System.out.println("Loaded Test Kie Session with " + count + " ruleGroups");
EventBus eb = null;
List<Object> facts = new ArrayList<Object>();
facts.add(1);
facts.add(2);
facts.add(3);
Map<String, String> keyvalue = new HashMap<String, String>();
keyvalue.put("token", null);
RulesLoader.executeStatefull(rulesGroup, eb, globals, facts, keyvalue);
assertThat(list.size(), is(3));
}
use of io.vavr.Tuple3 in project rulesservice by genny-project.
the class EBCHandlers method registerHandlers.
public static void registerHandlers(final EventBus eventBus) {
Consumer.getFromCmds().subscribe(arg -> {
JsonObject payload = processMessage("Service Command", arg);
if ("CMD_RELOAD_RULES".equals(payload.getString("cmd_type"))) {
if ("RELOAD_RULES_FROM_FILES".equals(payload.getString("code"))) {
String rulesDir = payload.getString("rulesDir");
RulesLoader.loadInitialRules(rulesDir);
}
}
});
Consumer.getFromEvents().subscribe(arg -> {
JsonObject payload = processMessage("Event", arg);
QEventMessage eventMsg = null;
String evtMsg = "Event:";
if (payload.getString("event_type").equals("EVT_ATTRIBUTE_VALUE_CHANGE")) {
eventMsg = JsonUtils.fromJson(payload.toString(), QEventAttributeValueChangeMessage.class);
} else if (payload.getString("event_type").equals("BTN_CLICK")) {
eventMsg = JsonUtils.fromJson(payload.toString(), QEventBtnClickMessage.class);
} else if (payload.getString("event_type").equals("EVT_LINK_CHANGE")) {
eventMsg = JsonUtils.fromJson(payload.toString(), QEventLinkChangeMessage.class);
} else {
try {
eventMsg = JsonUtils.fromJson(payload.toString(), QEventMessage.class);
} catch (NoClassDefFoundError e) {
log.error("No class def found [" + payload.toString() + "]");
}
}
processMsg("Event:" + payload.getString("event_type"), payload.getString("ruleGroup"), eventMsg, eventBus, payload.getString("token"));
});
Consumer.getFromData().subscribe(arg -> {
JsonObject payload = processMessage("Data", arg);
if (payload.getString("msg_type").equalsIgnoreCase("DATA_MSG")) {
// should always be data if coming through
// this channel
QDataAnswerMessage dataMsg = null;
// Is it a Rule?
if (payload.getString("data_type").equals(Rule.class.getSimpleName())) {
JsonArray ja = payload.getJsonArray("items");
String ruleGroup = ja.getJsonObject(0).getString("ruleGroup");
String ruleText = ja.getJsonObject(0).getString("rule");
String ruleCode = ja.getJsonObject(0).getString("code");
// QDataRuleMessage ruleMsg = gson3.fromJson(json, QDataRuleMessage.class);
System.out.println("Incoming Rule :" + ruleText);
if (rulesDir == null) {
rulesDir = "rules";
}
String rulesGroup = rulesDir;
List<Tuple3<String, String, String>> rules = new ArrayList<Tuple3<String, String, String>>();
rules.add(Tuple.of(ruleGroup, ruleCode, ruleText));
RulesLoader.setupKieRules(rulesGroup, rules);
} else if (payload.getString("data_type").equals(Answer.class.getSimpleName())) {
try {
dataMsg = JsonUtils.fromJson(payload.toString(), QDataAnswerMessage.class);
processMsg("Data:" + dataMsg.getData_type(), payload.getString("ruleGroup"), dataMsg, eventBus, payload.getString("token"));
} catch (com.google.gson.JsonSyntaxException e) {
log.error("BAD Syntax converting to json from " + dataMsg);
JsonObject json = new JsonObject(payload.toString());
JsonObject answerData = json.getJsonObject("items");
JsonArray jsonArray = new JsonArray();
jsonArray.add(answerData);
json.put("items", jsonArray);
dataMsg = JsonUtils.fromJson(json.toString(), QDataAnswerMessage.class);
processMsg("Data:" + dataMsg.getData_type(), payload.getString("ruleGroup"), dataMsg, eventBus, payload.getString("token"));
}
} else if (payload.getString("data_type").equals(GPS.class.getSimpleName())) {
QDataGPSMessage dataGPSMsg = null;
try {
dataGPSMsg = JsonUtils.fromJson(payload.toString(), QDataGPSMessage.class);
processMsg("GPS", payload.getString("ruleGroup"), dataGPSMsg, eventBus, payload.getString("token"));
} catch (com.google.gson.JsonSyntaxException e) {
log.error("BAD Syntax converting to json from " + dataGPSMsg);
JsonObject json = new JsonObject(payload.toString());
JsonObject answerData = json.getJsonObject("items");
JsonArray jsonArray = new JsonArray();
jsonArray.add(answerData);
json.put("items", jsonArray);
dataGPSMsg = JsonUtils.fromJson(json.toString(), QDataGPSMessage.class);
processMsg("GPS:" + dataGPSMsg.getData_type(), payload.getString("ruleGroup"), dataGPSMsg, eventBus, payload.getString("token"));
}
} else if (payload.getString("data_type").equals(QDataPaymentsCallbackMessage.class.getSimpleName())) {
QDataPaymentsCallbackMessage dataCallbackMsg = null;
try {
dataCallbackMsg = JsonUtils.fromJson(payload.toString(), QDataPaymentsCallbackMessage.class);
processMsg("Data:" + dataCallbackMsg.getData_type(), payload.getString("ruleGroup"), dataCallbackMsg, eventBus, payload.getString("token"));
} catch (com.google.gson.JsonSyntaxException e) {
log.error("BAD Syntax converting to json from " + dataCallbackMsg);
JsonObject json = new JsonObject(payload.toString());
dataCallbackMsg = JsonUtils.fromJson(json.toString(), QDataPaymentsCallbackMessage.class);
processMsg("Callback:" + dataCallbackMsg.getData_type(), payload.getString("ruleGroup"), dataCallbackMsg, eventBus, payload.getString("token"));
}
}
}
});
}
use of io.vavr.Tuple3 in project jdbi by jdbi.
the class TestVavrTupleRowMapperFactoryWithDB method testMapTuple3WithoutSpecifiedColumn_shouldFail.
@Test
public void testMapTuple3WithoutSpecifiedColumn_shouldFail() throws SQLException {
Handle handle = dbRule.getSharedHandle();
handle.registerRowMapper(new SomethingMapper());
assertThatThrownBy(() -> handle.createQuery("select * from something where id = 1").mapTo(new GenericType<Tuple3<Integer, Something, Integer>>() {
}).findOnly()).isInstanceOf(NoSuchMapperException.class).hasMessageContaining("TupleMappers config class");
}
Aggregations