You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nlpcraft.apache.org by ar...@apache.org on 2021/03/13 02:22:00 UTC
[incubator-nlpcraft] branch NLPCRAFT-206 updated: Update
NCDeployManager.scala
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
The following commit(s) were added to refs/heads/NLPCRAFT-206 by this push:
new 8ef24c7 Update NCDeployManager.scala
8ef24c7 is described below
commit 8ef24c7691acc2cea1180e7061e2871f2af0a68a
Author: Aaron Radzinski <ar...@apache.org>
AuthorDate: Fri Mar 12 18:21:50 2021 -0800
Update NCDeployManager.scala
---
.../probe/mgrs/deploy/NCDeployManager.scala | 56 ++++++++++++++++------
1 file changed, 41 insertions(+), 15 deletions(-)
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala
index daac10c..17aa194 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala
@@ -77,7 +77,7 @@ object NCDeployManager extends NCService with DecorateAsScala {
CLS_JAVA_OPT
)
- type Callback = Function[NCIntentMatch, NCResult]
+ type Callback = (String /* ID */, Function[NCIntentMatch, NCResult])
type Intent = (NCDslIntent, Callback)
type Sample = (String/* Intent ID */, Seq[Seq[String]] /* List of list of input samples for that intent. */)
@@ -483,7 +483,7 @@ object NCDeployManager extends NCService with DecorateAsScala {
}
solver = new NCIntentSolver(
- intents.toList.map(x ⇒ (x._1, (z: NCIntentMatch) ⇒ x._2.apply(z)))
+ intents.toList.map(x ⇒ (x._1, (z: NCIntentMatch) ⇒ x._2._2.apply(z)))
)
}
else
@@ -1178,17 +1178,20 @@ object NCDeployManager extends NCService with DecorateAsScala {
checkMinMax(mdl, mtd, tokParamTypes, termIds.map(allLimits), ctxFirstParam)
// Prepares invocation method.
- (ctx: NCIntentMatch) ⇒ {
- invoke(
- mtd,
- mdl,
- (
- (if (ctxFirstParam) Seq(ctx)
- else Seq.empty) ++
- prepareParams(mdlId, mtd, tokParamTypes, termIds.map(ctx.getTermTokens), ctxFirstParam)
- ).toArray
- )
- }
+ (
+ mtd.toString,
+ (ctx: NCIntentMatch) ⇒ {
+ invoke(
+ mtd,
+ mdl,
+ (
+ (if (ctxFirstParam) Seq(ctx)
+ else Seq.empty) ++
+ prepareParams(mdlId, mtd, tokParamTypes, termIds.map(ctx.getTermTokens), ctxFirstParam)
+ ).toArray
+ )
+ }
+ )
}
/**
@@ -1529,6 +1532,20 @@ object NCDeployManager extends NCService with DecorateAsScala {
for (m ← getAllMethods(mdl)) {
val mtdStr = method2Str(m)
+ def bindIntent(intent: NCDslIntent, cb: Callback): Unit = {
+ if (intents.exists(i ⇒ i._1.id == intent.id && i._2._1 != cb._1))
+ throw new NCE(s"The intent cannot be bound to more than one callback [" +
+ s"mdlId=$mdlId, " +
+ s"mdlOrigin=${mdl.getOrigin}, " +
+ s"class=$mdlCls, " +
+ s"intentId=${intent.id}" +
+ s"]")
+ else {
+ intentDecls += intent
+ intents += (intent → prepareCallback(m, mdl, intent))
+ }
+ }
+
// Process inline intent declarations by @NCIntent annotation.
for (ann ← m.getAnnotationsByType(CLS_INTENT); intent ← NCDslCompiler.compileIntents(ann.value(), mdl, mtdStr))
if (intentDecls.exists(_.id == intent.id) || intents.exists(_._1.id == intent.id))
@@ -1539,14 +1556,14 @@ object NCDeployManager extends NCService with DecorateAsScala {
s"id=${intent.id}" +
s"]")
else
- intents += (intent → prepareCallback(m, mdl, intent))
+ bindIntent(intent, prepareCallback(m, mdl, intent))
// Process intent references from @NCIntentRef annotation.
for (ann ← m.getAnnotationsByType(CLS_INTENT_REF)) {
val refId = ann.value().trim
intentDecls.find(_.id == refId) match {
- case Some(intent) ⇒ intents += (intent → prepareCallback(m, mdl, intent))
+ case Some(intent) ⇒ bindIntent(intent, prepareCallback(m, mdl, intent))
case None ⇒ throw new NCE(
s"""@NCIntentRef("$refId") references unknown intent ID [""" +
s"mdlId=$mdlId, " +
@@ -1557,6 +1574,15 @@ object NCDeployManager extends NCService with DecorateAsScala {
}
}
}
+
+ val unusedIntents = intentDecls.filter(i ⇒ !intents.exists(_._1.id == i.id))
+
+ if (unusedIntents.nonEmpty)
+ logger.warn(s"Declared but unused intents: [" +
+ s"mdlId=$mdlId, " +
+ s"mdlOrigin=${mdl.getOrigin}, " +
+ s"intentIds=${unusedIntents.map(_.id).mkString("(", ", ", ")")}]"
+ )
intents.toSet
}