This is an automated email from the ASF dual-hosted git repository.

aradzinski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git

commit e68cafbf0b1f361791b8ded38a39a2588a89edc5
Author: Aaron Radzinski <[email protected]>
AuthorDate: Tue Sep 22 11:56:57 2020 -0700

    WIP.
---
 .../scala/org/apache/nlpcraft/model/NCConversation.java     | 13 +++++++++++++
 .../nlpcraft/probe/mgrs/conversation/NCConversation.scala   |  5 +++++
 .../nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala  |  1 +
 3 files changed, 19 insertions(+)

diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCConversation.java 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCConversation.java
index 5655426..b990851 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCConversation.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCConversation.java
@@ -18,6 +18,7 @@
 package org.apache.nlpcraft.model;
 
 import java.util.List;
+import java.util.Map;
 import java.util.function.Predicate;
 
 /**
@@ -83,4 +84,16 @@ public interface NCConversation {
      * @param filter Dialog flow filter based on IDs of previously matched 
intents.
      */
     void clearDialog(Predicate<String/* Intent ID. */> filter);
+
+    /**
+     * Gets modifiable user data container that can be to store user data in 
the conversation.
+     * Note that this data will expire the same as other elements in the 
conversation (i.e. tokens and
+     * previously matched intents).
+     * <p>
+     * Note that you should obtain the user data container on every intent 
callback invocation to make
+     * sure that expiration policy takes an effect. Do not cache the returned 
object elsewhere.
+     *
+     * @return Mutable user data container. The returned map is safe for 
concurrent modifications.
+     */
+    Map<String, Object> getUserData();
 }
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/conversation/NCConversation.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/conversation/NCConversation.scala
index 1f8f51b..21c17a7 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/conversation/NCConversation.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/conversation/NCConversation.scala
@@ -278,4 +278,9 @@ case class NCConversation(
             new util.ArrayList[NCToken](toks.asJava)
         }
     }
+
+    /**
+      *
+      */
+    def getUserData: util.Map[String, Object] = data
 }
\ No newline at end of file
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala
index e40e5ac..3e6ff92 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala
@@ -563,6 +563,7 @@ object NCProbeEnrichmentManager extends NCService with 
NCOpenCensusModelStats {
                 override def getDialogFlow: util.List[String] = 
NCDialogFlowManager.getDialogFlow(usrId, mdlId, span).asJava
                 override def clearStm(filter: Predicate[NCToken]): Unit = 
conv.clearTokens(filter)
                 override def clearDialog(filter: Predicate[String]): Unit = 
NCDialogFlowManager.clear(usrId, mdlId, span)
+                override def getUserData: util.Map[String, Object] = 
conv.getUserData
             }
 
             override def isOwnerOf(tok: NCToken): Boolean = 
allVars.contains(tok)

Reply via email to