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

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

commit cb26d87d9bfbb26f19699f0d841ba547fb23a17f
Author: Aaron Radzinski <[email protected]>
AuthorDate: Tue Feb 9 19:34:15 2021 -0800

    WIP.
---
 .../scala/org/apache/nlpcraft/common/debug/NCLogHolder.scala |  5 +++--
 .../src/main/scala/org/apache/nlpcraft/common/package.scala  |  2 ++
 .../src/main/scala/org/apache/nlpcraft/model/NCCompany.java  |  2 +-
 .../src/main/scala/org/apache/nlpcraft/model/NCMetadata.java |  2 +-
 .../src/main/scala/org/apache/nlpcraft/model/NCUser.java     |  9 +--------
 .../scala/org/apache/nlpcraft/model/impl/NCCompanyImpl.java  |  7 ++++++-
 .../scala/org/apache/nlpcraft/model/impl/NCTokenImpl.scala   | 12 ++++++------
 .../scala/org/apache/nlpcraft/model/impl/NCTokenLogger.scala |  2 +-
 .../scala/org/apache/nlpcraft/model/impl/NCUserImpl.java     | 12 ++++++------
 .../model/intent/impl/ver2/NCIntentDslCompiler.scala         |  8 +++++++-
 .../model/tools/sqlgen/impl/NCSqlModelGeneratorImpl.scala    |  6 +++---
 .../probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala     |  3 +--
 .../apache/nlpcraft/probe/mgrs/nlp/impl/NCRequestImpl.scala  |  6 ++++--
 .../org/apache/nlpcraft/server/probe/NCProbeManager.scala    | 10 +++++-----
 .../apache/nlpcraft/model/intent/dsl/NCDslCompilerSpec.scala |  8 ++++++--
 15 files changed, 53 insertions(+), 41 deletions(-)

diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/debug/NCLogHolder.scala 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/debug/NCLogHolder.scala
index f346759..5e9b5b6 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/debug/NCLogHolder.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/debug/NCLogHolder.scala
@@ -17,6 +17,7 @@
 
 package org.apache.nlpcraft.common.debug
 
+import org.apache.nlpcraft.common._
 import java.util
 import com.google.gson.Gson
 import org.apache.nlpcraft.common.util._
@@ -56,7 +57,7 @@ class NCLogHolder extends Serializable {
         avatarUrl: String,
         isAdmin: Boolean,
         signupTimestamp: Long,
-        properties: util.Map[String, String]
+        meta: JavaMeta
     )
     
     case class CompanyJson(
@@ -160,7 +161,7 @@ class NCLogHolder extends Serializable {
             avatarUrl = usr.getAvatarUrl.orElse(null),
             isAdmin = usr.isAdmin,
             signupTimestamp = usr.getSignupTimestamp,
-            properties = usr.getProperties.orElse(null)
+            meta = usr.getMetadata
         )
     
         val compJs = CompanyJson(
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/package.scala 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/package.scala
index 58512d7..21df52a 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/package.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/package.scala
@@ -30,6 +30,8 @@ import scala.language.implicitConversions
 package object common {
     // Type aliases for `org.apache.nlpcraft`
     type NCE = NCException
+    type ScalaMeta = Map[String, AnyRef]
+    type JavaMeta = java.util.Map[String, Object]
     final val U = NCUtils
     
     // Internal deep debug flag (more verbose tracing).
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCCompany.java 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCCompany.java
index cdbfaa5..0459af2 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCCompany.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCCompany.java
@@ -24,7 +24,7 @@ import java.util.*;
  *
  * @see NCRequest
  */
-public interface NCCompany {
+public interface NCCompany extends NCMetadata {
     /**
      * Gets ID of the company.
      *
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCMetadata.java 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCMetadata.java
index da98c83..2ca8a9f 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCMetadata.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCMetadata.java
@@ -21,7 +21,7 @@ import org.apache.nlpcraft.common.*;
 import java.util.*;
 
 /**
- * Provides support for mutable map-based metadata.
+ * Provides support for mutable runtime-only metadata.
  * <p>
  * Read full documentation in <a target=_ 
href="https://nlpcraft.apache.org/data-model.html";>Data Model</a> section and 
review
  * <a target=_ 
href="https://github.com/apache/incubator-nlpcraft/tree/master/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/";>examples</a>.
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCUser.java 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCUser.java
index e6e8931..f784e0a 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCUser.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCUser.java
@@ -24,7 +24,7 @@ import java.util.*;
  *
  * @see NCRequest
  */
-public interface NCUser {
+public interface NCUser extends NCMetadata {
     /**
      * Gets ID of this user.
      * 
@@ -47,13 +47,6 @@ public interface NCUser {
     Optional<String> getLastName();
 
     /**
-     * Gets properties associated with the user.
-     *
-     * @return Optional map of properties associated with the user.
-     */
-    Optional<Map<String, String>> getProperties();
-
-    /**
      * Gets email of the user.
      *
      * @return Email of the user.
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/NCCompanyImpl.java 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/NCCompanyImpl.java
index 398def8..d61e770 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/NCCompanyImpl.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/NCCompanyImpl.java
@@ -33,6 +33,7 @@ public class NCCompanyImpl implements NCCompany {
     private final Optional<String> address;
     private final Optional<String> city;
     private final Optional<String> postalCode;
+    private final Map<String, Object> meta;
 
     /**
      * 
@@ -44,6 +45,7 @@ public class NCCompanyImpl implements NCCompany {
      * @param address Address.
      * @param city City.
      * @param postalCode Postal code.
+     * @param meta Company metadata.
      */
     public NCCompanyImpl(
         long id,
@@ -53,7 +55,8 @@ public class NCCompanyImpl implements NCCompany {
         Optional<String> region,
         Optional<String> address,
         Optional<String> city,
-        Optional<String> postalCode
+        Optional<String> postalCode,
+        Map<String, Object> meta
     ) {
         this.id = id;
         this.name = name;
@@ -63,6 +66,7 @@ public class NCCompanyImpl implements NCCompany {
         this.address = address;
         this.city = city;
         this.postalCode = postalCode;
+        this.meta = meta;
     }
 
     @Override public long getId() {
@@ -89,4 +93,5 @@ public class NCCompanyImpl implements NCCompany {
     @Override public Optional<String> getPostalCode() {
         return postalCode;
     }
+    @Override public Map<String, Object> getMetadata() { return meta; }
 }
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/NCTokenImpl.scala 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/NCTokenImpl.scala
index 106f673..8893fcf 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/NCTokenImpl.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/NCTokenImpl.scala
@@ -116,7 +116,7 @@ private[nlpcraft] object NCTokenImpl {
         // No overlapping allowed at this point.
         require(usrNotes.size <= 1, s"Unexpected elements notes: $usrNotes")
 
-        def convertMeta(): Map[String, AnyRef] = md.toMap.map(p ⇒ p._1 → 
p._2.asInstanceOf[AnyRef])
+        def convertMeta(): ScalaMeta = md.toMap.map(p ⇒ p._1 → 
p._2.asInstanceOf[AnyRef])
 
         usrNotes.headOption match {
             case Some(usrNote) ⇒
@@ -125,14 +125,14 @@ private[nlpcraft] object NCTokenImpl {
                 val elm = mdl.elements(usrNote.noteType)
 
                 val ancestors = mutable.ArrayBuffer.empty[String]
-                var prntId = elm.getParentId
+                var parentId = elm.getParentId
 
-                while (prntId != null) {
-                    ancestors += prntId
+                while (parentId != null) {
+                    ancestors += parentId
 
-                    prntId = mdl.
+                    parentId = mdl.
                         elements.
-                        getOrElse(prntId, throw new AssertionError(s"Element 
not found: $prntId")).
+                        getOrElse(parentId, throw new AssertionError(s"Element 
not found: $parentId")).
                         getParentId
                 }
 
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/NCTokenLogger.scala 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/NCTokenLogger.scala
index 5db7a11..5f96b9e 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/NCTokenLogger.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/NCTokenLogger.scala
@@ -396,7 +396,7 @@ object NCTokenLogger extends LazyLogging {
         val tbl = NCAsciiTable(headers :_*)
 
         toks.foreach(tok ⇒ {
-            val md: util.Map[String, AnyRef] = tok.getMetadata
+            val md = tok.getMetadata
             val id = tok.getId
 
             def mkFullName(name: String): String = s"$id:$name"
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/NCUserImpl.java 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/NCUserImpl.java
index fb322e5..3083c03 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/NCUserImpl.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/NCUserImpl.java
@@ -30,7 +30,7 @@ public class NCUserImpl implements NCUser {
     private final Optional<String> lastName;
     private final Optional<String> email;
     private final Optional<String> avatarUrl;
-    private final Optional<Map<String, String>> props;
+    private final Map<String, Object> meta;
     private final boolean isAdmin;
     private final long signupTstamp;
 
@@ -41,7 +41,7 @@ public class NCUserImpl implements NCUser {
      * @param lastName Last name.
      * @param email Email.
      * @param avatarUrl Avatar URL.
-     * @param props Additional properties.
+     * @param meta User metadata.
      * @param isAdmin Is admin flag.
      * @param signupTstamp Signup timestamp.
      */
@@ -51,7 +51,7 @@ public class NCUserImpl implements NCUser {
         Optional<String> lastName,
         Optional<String> email,
         Optional<String> avatarUrl,
-        Optional<Map<String, String>> props,
+        Map<String, Object> meta,
         boolean isAdmin,
         long signupTstamp
     ) {
@@ -60,7 +60,7 @@ public class NCUserImpl implements NCUser {
         this.lastName = lastName;
         this.email = email;
         this.avatarUrl = avatarUrl;
-        this.props = props;
+        this.meta = meta;
         this.isAdmin = isAdmin;
         this.signupTstamp = signupTstamp;
     }
@@ -81,8 +81,8 @@ public class NCUserImpl implements NCUser {
     }
 
     @Override
-    public Optional<Map<String, String>> getProperties() {
-        return props;
+    public Map<String, Object> getMetadata() {
+        return meta;
     }
 
     @Override
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/ver2/NCIntentDslCompiler.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/ver2/NCIntentDslCompiler.scala
index 8e1892f..7d1f734 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/ver2/NCIntentDslCompiler.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/ver2/NCIntentDslCompiler.scala
@@ -199,7 +199,13 @@ object NCIntentDslCompiler extends LazyLogging {
      * @param mdlId ID of the model the intent belongs to.
      * @return
      */
-    def compile(dsl: String, mdlId: String): NCDslIntent = {
+    def compile(
+        dsl: String,
+        mdlId: String,
+        reqMeta: ScalaMeta,
+        usrMeta: ScalaMeta,
+        compMeta: ScalaMeta
+    ): NCDslIntent = {
         require(dsl != null)
 
         val src = dsl.strip()
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/sqlgen/impl/NCSqlModelGeneratorImpl.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/sqlgen/impl/NCSqlModelGeneratorImpl.scala
index 752bc8b..026199b 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/sqlgen/impl/NCSqlModelGeneratorImpl.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/sqlgen/impl/NCSqlModelGeneratorImpl.scala
@@ -208,11 +208,11 @@ object NCSqlModelGeneratorImpl {
 
     /**
       *
-      * @param m
+      * @param meta
       * @param key
       * @param v
       */
-    private def add(m: java.util.Map[String, AnyRef], key: String, v: Any): 
Unit = {
+    private def add(meta: JavaMeta, key: String, v: Any): Unit = {
         val obj = v.asInstanceOf[AnyRef]
 
         if (obj != null) {
@@ -222,7 +222,7 @@ object NCSqlModelGeneratorImpl {
             }
 
             if (ok)
-                m.put(key, obj)
+                meta.put(key, obj)
         }
     }
 
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala
index e2e2265..351f0a1 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala
@@ -481,8 +481,7 @@ object NCModelEnricher extends NCProbeEnricher with 
DecorateAsScala {
                             new NCCustomElement() {
                                 override def getElementId: String = noteId
                                 override def getWords: util.List[NCCustomWord] 
= words
-                                override def getMetadata: util.Map[String, 
AnyRef] =
-                                    md.map(p ⇒ p._1 → 
p._2.asInstanceOf[AnyRef]).asJava
+                                override def getMetadata: JavaMeta = md.map(p 
⇒ p._1 → p._2.asInstanceOf[AnyRef]).asJava
                             }
                         }).asJava
                     )
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/impl/NCRequestImpl.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/impl/NCRequestImpl.scala
index 633067e..129a5a7 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/impl/NCRequestImpl.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/impl/NCRequestImpl.scala
@@ -23,6 +23,7 @@ import org.apache.nlpcraft.model._
 import org.apache.nlpcraft.model.impl._
 
 import scala.collection._
+import scala.collection.JavaConverters._
 
 /**
  *
@@ -48,7 +49,8 @@ case class NCRequestImpl(meta: Map[String, Any], srvReqId: 
String) extends NCReq
         getOpt("COMPANY_REGION"),
         getOpt("COMPANY_CITY"),
         getOpt("COMPANY_ADDRESS"),
-        getOpt("COMPANY_POSTAL")
+        getOpt("COMPANY_POSTAL"),
+        Map.empty[String, AnyRef].asJava, // TODO
     )
     override lazy val getUser: NCUser = new NCUserImpl(
         meta("USER_ID").asInstanceOf[Long],
@@ -56,7 +58,7 @@ case class NCRequestImpl(meta: Map[String, Any], srvReqId: 
String) extends NCReq
         getOpt("LAST_NAME"),
         getOpt("EMAIL"),
         getOpt("AVATAR_URL"),
-        getOpt("USER_PROPS"),
+        Map.empty[String, AnyRef].asJava, // TODO
         meta("IS_ADMIN").asInstanceOf[Boolean],
         meta("SIGNUP_TSTAMP").asInstanceOf[Long]
     )
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/probe/NCProbeManager.scala 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/probe/NCProbeManager.scala
index 1aae268..88b85f5 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/probe/NCProbeManager.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/probe/NCProbeManager.scala
@@ -53,7 +53,7 @@ import scala.util.{Failure, Success}
   */
 object NCProbeManager extends NCService {
     private final val GSON = new Gson()
-    private final val TYPE_MODEL_INFO_RESP = new 
TypeToken[util.HashMap[String, AnyRef]]() {}.getType
+    private final val TYPE_MODEL_INFO_RESP = new TypeToken[ScalaMeta]() 
{}.getType
 
     // Type safe and eager configuration container.
     private object Config extends NCConfigurable {
@@ -156,7 +156,7 @@ object NCProbeManager extends NCService {
     // All probes pending complete handshake keyed by probe key.
     @volatile private var pending: mutable.Map[ProbeKey, ProbeHolder] = _
 
-    @volatile private var modelsInfo: ConcurrentHashMap[String, 
Promise[java.util.Map[String, AnyRef]]] = _
+    @volatile private var modelsInfo: ConcurrentHashMap[String, 
Promise[JavaMeta]] = _
 
     /**
      *
@@ -178,7 +178,7 @@ object NCProbeManager extends NCService {
             "downlink" → s"$dnHost:$dnPort"
         )
 
-        modelsInfo = new ConcurrentHashMap[String, 
Promise[java.util.Map[String, AnyRef]]]()
+        modelsInfo = new ConcurrentHashMap[String, Promise[JavaMeta]]()
 
         dnSrv = startServer("Downlink", dnHost, dnPort, downLinkHandler)
         upSrv = startServer("Uplink", upHost, upPort, upLinkHandler)
@@ -1026,13 +1026,13 @@ object NCProbeManager extends NCService {
       * @param parent
       * @return
       */
-    def getModelInfo(mdlId: String, parent: Span = null): 
Future[java.util.Map[String, AnyRef]] =
+    def getModelInfo(mdlId: String, parent: Span = null): Future[JavaMeta] =
         startScopedSpan("getModelInfo", parent, "mdlId" → mdlId) { _ ⇒
             getProbeForModelId(mdlId) match {
                 case Some(probe) ⇒
                     val msg = NCProbeMessage("S2P_MODEL_INFO", "mdlId" → mdlId)
 
-                    val p = Promise[java.util.Map[String, AnyRef]]()
+                    val p = Promise[JavaMeta]()
 
                     modelsInfo.put(msg.getGuid, p)
 
diff --git 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/NCDslCompilerSpec.scala
 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/NCDslCompilerSpec.scala
index 3656d74..9873444 100644
--- 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/NCDslCompilerSpec.scala
+++ 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/NCDslCompilerSpec.scala
@@ -17,7 +17,7 @@
 
 package org.apache.nlpcraft.model.intent.dsl
 
-import org.apache.nlpcraft.common.NCException
+import org.apache.nlpcraft.common._
 import org.apache.nlpcraft.model.intent.impl.ver2.NCIntentDslCompiler
 import org.junit.jupiter.api.Test
 
@@ -31,6 +31,10 @@ class NCDslCompilerSpec {
         NCIntentDslCompiler.compile(
             """
               |intent=i1 meta={'a': true} term={}
-              |""".stripMargin, "mdl.id")
+              |""".stripMargin, "mdl.id",
+            Map.empty[String, AnyRef],
+            Map.empty[String, AnyRef],
+            Map.empty[String, AnyRef]
+        )
     }
 }

Reply via email to