diff --git a/ragconnect.base/src/main/jastadd/Configuration.jadd b/ragconnect.base/src/main/jastadd/Configuration.jadd index 4116807c5b921b74bd645a992c849d841b43bcf2..3f1101e968b21126de73ea17c4e3ae1cee74800a 100644 --- a/ragconnect.base/src/main/jastadd/Configuration.jadd +++ b/ragconnect.base/src/main/jastadd/Configuration.jadd @@ -1,6 +1,7 @@ aspect Configuration { public static boolean ASTNode.loggingEnabledForReads = false; public static boolean ASTNode.loggingEnabledForWrites = false; + public static boolean ASTNode.loggingEnabledForIncremental = false; public static TypeDecl ASTNode.rootNode; public static boolean ASTNode.usesMqtt; public static boolean ASTNode.usesRest; diff --git a/ragconnect.base/src/main/java/org/jastadd/ragconnect/compiler/Compiler.java b/ragconnect.base/src/main/java/org/jastadd/ragconnect/compiler/Compiler.java index 88bfbdc1689fe0c8040efc952832c0bc9ac58b02..2cb02ee8065fe3cfcd04717fc7012bd6c67c4721 100644 --- a/ragconnect.base/src/main/java/org/jastadd/ragconnect/compiler/Compiler.java +++ b/ragconnect.base/src/main/java/org/jastadd/ragconnect/compiler/Compiler.java @@ -25,6 +25,7 @@ public class Compiler extends AbstractCompiler { private BooleanOption optionVerbose; private BooleanOption optionLogReads; private BooleanOption optionLogWrites; + private BooleanOption optionLogIncremental; private static final String OPTION_PROTOCOL_MQTT = "mqtt"; private static final String OPTION_PROTOCOL_REST = "rest"; @@ -175,6 +176,9 @@ public class Compiler extends AbstractCompiler { optionLogWrites = addOption( new BooleanOption("logWrites", "Enable logging for every write.") .defaultValue(false)); + optionLogIncremental = addOption( + new BooleanOption("logIncremental", "Enable logging for observer in incremental dependency tracking.") + .defaultValue(false)); } private RagConnect parseProgram(Collection<String> files) throws CompilerException { @@ -226,6 +230,7 @@ public class Compiler extends AbstractCompiler { ragConnect.additionalRelations().forEach(ragConnectGrammarPart::addDeclaration); ASTNode.loggingEnabledForReads = optionLogReads.value(); ASTNode.loggingEnabledForWrites = optionLogWrites.value(); + ASTNode.loggingEnabledForIncremental = optionLogIncremental.value(); // reuse "--incremental" option of JastAdd ASTNode.incrementalOptionActive = getConfiguration().incremental() && getConfiguration().traceFlush(); diff --git a/ragconnect.base/src/main/resources/ragconnect.mustache b/ragconnect.base/src/main/resources/ragconnect.mustache index b834bd99b025a58c2a4daabb851a3f10fe413035..876833ac45635939ca65e62a7f336d084175d861 100644 --- a/ragconnect.base/src/main/resources/ragconnect.mustache +++ b/ragconnect.base/src/main/resources/ragconnect.mustache @@ -92,9 +92,9 @@ aspect RagConnectObserver { } void add(ConnectToken connectToken, ASTNode node, String attributeString, Runnable attributeCall) { - {{#loggingEnabledForWrites}} + {{#loggingEnabledForIncremental}} System.out.println("** observer add: " + node + " on " + attributeString); - {{/loggingEnabledForWrites}} + {{/loggingEnabledForIncremental}} observedNodes.add(new RagConnectObserverEntry(connectToken, node, attributeString, attributeCall)); } void remove(ConnectToken connectToken) { @@ -105,9 +105,9 @@ aspect RagConnectObserver { oldReceiver.accept(event, node, attribute, params, value); // react to INC_FLUSH_START and remember entry if (event == ASTState.Trace.Event.INC_FLUSH_START && startEntry == null) { - {{#loggingEnabledForWrites}} + {{#loggingEnabledForIncremental}} System.out.println("** observer start: " + node + " on " + attribute); - {{/loggingEnabledForWrites}} + {{/loggingEnabledForIncremental}} startEntry = new RagConnectObserverStartEntry(node, attribute, value); return; } @@ -121,9 +121,9 @@ aspect RagConnectObserver { RagConnectObserverEntry[] entriesToProcess = entryQueue.toArray(new RagConnectObserverEntry[entryQueue.size()]); entryQueue.clear(); startEntry = null; - {{#loggingEnabledForWrites}} + {{#loggingEnabledForIncremental}} System.out.println("** observer process (" + entriesToProcess.length + "): " + node + " on " + attribute); - {{/loggingEnabledForWrites}} + {{/loggingEnabledForIncremental}} for (RagConnectObserverEntry entry : entriesToProcess) { entry.attributeCall.run(); } @@ -135,16 +135,16 @@ aspect RagConnectObserver { return; } - {{#loggingEnabledForWrites}} + {{#loggingEnabledForIncremental}} System.out.println("** observer check INC_FLUSH_ATTR event: " + node + " on " + attribute); - {{/loggingEnabledForWrites}} + {{/loggingEnabledForIncremental}} // iterate through list, if matching pair. could maybe be more efficient. for (RagConnectObserverEntry entry : observedNodes) { if (entry.node.equals(node) && entry.attributeString.equals(attribute)) { // hit. call the attribute/nta-token - {{#loggingEnabledForWrites}} + {{#loggingEnabledForIncremental}} System.out.println("** observer hit: " + entry.node + " on " + entry.attributeString); - {{/loggingEnabledForWrites}} + {{/loggingEnabledForIncremental}} entryQueue.add(entry); } }