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] + ) } }
