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

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

commit 0496e2aae0230d65d74005401c7d5c1f8e2c6485
Author: Sergey Kamov <[email protected]>
AuthorDate: Sat Aug 6 15:43:39 2022 +0300

    Config trait refactoring.
---
 .../examples/lightswitch/LightSwitchFrModel.scala  |  2 +-
 .../examples/lightswitch/LightSwitchRuModel.scala  |  2 +-
 .../lightswitch/LightSwitchScalaModel.scala        |  2 +-
 .../nlpcraft/examples/pizzeria/PizzeriaModel.scala |  2 +-
 .../apache/nlpcraft/examples/time/TimeModel.scala  |  2 +-
 .../nlpcraft/nlp/util/stanford/NCTestConfig.scala  |  2 +-
 .../scala/org/apache/nlpcraft/NCModelClient.scala  |  6 +--
 .../scala/org/apache/nlpcraft/NCModelConfig.scala  | 44 +++++++++++++++-------
 .../conversation/NCConversationManager.scala       |  6 +--
 .../internal/dialogflow/NCDialogFlowManager.scala  |  6 +--
 .../nlpcraft/internal/impl/NCModelScanner.scala    | 16 ++++----
 .../intent/compiler/NCIDLCodeGenerator.scala       |  8 ++--
 .../internal/intent/compiler/NCIDLCompiler.scala   | 10 ++---
 .../intent/matcher/NCIntentSolverManager.scala     |  4 +-
 .../conversation/NCConversationManagerSpec.scala   | 23 ++++++-----
 .../conversation/NCConversationTimeoutSpec.scala   |  2 +-
 .../dialogflow/NCDialogFlowManagerSpec.scala       |  8 ++--
 .../compiler/functions/NCIDLFunctionsModel.scala   |  8 ++--
 .../apache/nlpcraft/nlp/NCEntityEnricherSpec.scala |  2 +-
 .../nlpcraft/nlp/NCEntityValidatorSpec.scala       |  2 +-
 .../apache/nlpcraft/nlp/NCTokenEnricherSpec.scala  |  2 +-
 .../apache/nlpcraft/nlp/NCTokenValidatorSpec.scala |  2 +-
 .../apache/nlpcraft/nlp/NCVariantFilterSpec.scala  |  2 +-
 .../apache/nlpcraft/nlp/util/NCTestConfig.scala    |  2 +-
 24 files changed, 91 insertions(+), 74 deletions(-)

diff --git 
a/nlpcraft-examples/lightswitch-fr/src/main/scala/org/apache/nlpcraft/examples/lightswitch/LightSwitchFrModel.scala
 
b/nlpcraft-examples/lightswitch-fr/src/main/scala/org/apache/nlpcraft/examples/lightswitch/LightSwitchFrModel.scala
index d3ab533e..ac7bca22 100644
--- 
a/nlpcraft-examples/lightswitch-fr/src/main/scala/org/apache/nlpcraft/examples/lightswitch/LightSwitchFrModel.scala
+++ 
b/nlpcraft-examples/lightswitch-fr/src/main/scala/org/apache/nlpcraft/examples/lightswitch/LightSwitchFrModel.scala
@@ -42,7 +42,7 @@ import scala.jdk.CollectionConverters.*
   * See 'README.md' file in the same folder for running and testing 
instructions.
   */
 class LightSwitchFrModel extends NCModelAdapter(
-    new NCModelConfig("nlpcraft.lightswitch.fr.ex", "LightSwitch Example Model 
FR", "1.0"),
+    NCModelConfig("nlpcraft.lightswitch.fr.ex", "LightSwitch Example Model 
FR", "1.0"),
     new NCPipelineBuilder().
         withTokenParser(new NCFrTokenParser()).
         withTokenEnricher(new NCFrLemmaPosTokenEnricher()).
diff --git 
a/nlpcraft-examples/lightswitch-ru/src/main/scala/org/apache/nlpcraft/examples/lightswitch/LightSwitchRuModel.scala
 
b/nlpcraft-examples/lightswitch-ru/src/main/scala/org/apache/nlpcraft/examples/lightswitch/LightSwitchRuModel.scala
index 60e7399c..10eca4ca 100644
--- 
a/nlpcraft-examples/lightswitch-ru/src/main/scala/org/apache/nlpcraft/examples/lightswitch/LightSwitchRuModel.scala
+++ 
b/nlpcraft-examples/lightswitch-ru/src/main/scala/org/apache/nlpcraft/examples/lightswitch/LightSwitchRuModel.scala
@@ -35,7 +35,7 @@ import scala.jdk.CollectionConverters.*
   * See 'README.md' file in the same folder for running and testing 
instructions.
   */
 class LightSwitchRuModel extends NCModelAdapter(
-    new NCModelConfig("nlpcraft.lightswitch.ru.ex", "LightSwitch Example Model 
RU", "1.0"),
+    NCModelConfig("nlpcraft.lightswitch.ru.ex", "LightSwitch Example Model 
RU", "1.0"),
     new NCPipelineBuilder().
         withTokenParser(new NCRuTokenParser()).
         withTokenEnricher(new NCRuLemmaPosTokenEnricher()).
diff --git 
a/nlpcraft-examples/lightswitch/src/main/scala/org/apache/nlpcraft/examples/lightswitch/LightSwitchScalaModel.scala
 
b/nlpcraft-examples/lightswitch/src/main/scala/org/apache/nlpcraft/examples/lightswitch/LightSwitchScalaModel.scala
index 39727959..2320e128 100644
--- 
a/nlpcraft-examples/lightswitch/src/main/scala/org/apache/nlpcraft/examples/lightswitch/LightSwitchScalaModel.scala
+++ 
b/nlpcraft-examples/lightswitch/src/main/scala/org/apache/nlpcraft/examples/lightswitch/LightSwitchScalaModel.scala
@@ -40,7 +40,7 @@ import 
org.apache.nlpcraft.nlp.token.parser.NCOpenNLPTokenParser
   */
 
 class LightSwitchScalaModel extends NCModelAdapter(
-    new NCModelConfig("nlpcraft.lightswitch.java.ex", "LightSwitch Example 
Model", "1.0"),
+    NCModelConfig("nlpcraft.lightswitch.java.ex", "LightSwitch Example Model", 
"1.0"),
     new NCPipelineBuilder().withSemantic("en", "lightswitch_model.yaml").build
 ):
     /**
diff --git 
a/nlpcraft-examples/pizzeria/src/main/java/org/apache/nlpcraft/examples/pizzeria/PizzeriaModel.scala
 
b/nlpcraft-examples/pizzeria/src/main/java/org/apache/nlpcraft/examples/pizzeria/PizzeriaModel.scala
index 4f528796..d661b813 100644
--- 
a/nlpcraft-examples/pizzeria/src/main/java/org/apache/nlpcraft/examples/pizzeria/PizzeriaModel.scala
+++ 
b/nlpcraft-examples/pizzeria/src/main/java/org/apache/nlpcraft/examples/pizzeria/PizzeriaModel.scala
@@ -123,7 +123,7 @@ import org.apache.nlpcraft.examples.pizzeria.PizzeriaModel.*
   * Each order can in one of 5 state 
(org.apache.nlpcraft.examples.pizzeria.OrderState)
   * Note that there is used custom states logic instead of STM, because 
complex states flow.
   */
-class PizzeriaModel extends NCModelAdapter(new 
NCModelConfig("nlpcraft.pizzeria.ex", "Pizzeria Example Model", "1.0"), 
PizzeriaModelPipeline.PIPELINE) with LazyLogging:
+class PizzeriaModel extends 
NCModelAdapter(NCModelConfig("nlpcraft.pizzeria.ex", "Pizzeria Example Model", 
"1.0"), PizzeriaModelPipeline.PIPELINE) with LazyLogging:
     // This method is defined in class scope and has package access level for 
tests reasons.
     private[pizzeria] def doExecute(o: Order)(using ctx: NCContext, im: 
NCIntentMatch): Result =
         require(o.isValid)
diff --git 
a/nlpcraft-examples/time/src/main/scala/org/apache/nlpcraft/examples/time/TimeModel.scala
 
b/nlpcraft-examples/time/src/main/scala/org/apache/nlpcraft/examples/time/TimeModel.scala
index 2a7e0bf3..245b80f0 100644
--- 
a/nlpcraft-examples/time/src/main/scala/org/apache/nlpcraft/examples/time/TimeModel.scala
+++ 
b/nlpcraft-examples/time/src/main/scala/org/apache/nlpcraft/examples/time/TimeModel.scala
@@ -34,7 +34,7 @@ import java.time.*
 @NCIntent("intent=intent2 term~{# == 'x:time'} fragment(city)")
 @NCIntent("intent=intent1 term={# == 'x:time'}")
 class TimeModel extends NCModelAdapter(
-    new NCModelConfig("nlpcraft.time.ex", "Time Example Model", "1.0"),
+    NCModelConfig("nlpcraft.time.ex", "Time Example Model", "1.0"),
     new NCPipelineBuilder().
         withSemantic("en", "time_model.yaml").
         
withEntityParser(NCOpenNLPEntityParser(NCResourceReader.getPath("opennlp/en-ner-location.bin"))).
diff --git 
a/nlpcraft-stanford/src/test/scala/org/apache/nlpcraft/nlp/util/stanford/NCTestConfig.scala
 
b/nlpcraft-stanford/src/test/scala/org/apache/nlpcraft/nlp/util/stanford/NCTestConfig.scala
index 74e7ca33..64d31f9d 100644
--- 
a/nlpcraft-stanford/src/test/scala/org/apache/nlpcraft/nlp/util/stanford/NCTestConfig.scala
+++ 
b/nlpcraft-stanford/src/test/scala/org/apache/nlpcraft/nlp/util/stanford/NCTestConfig.scala
@@ -24,7 +24,7 @@ import org.apache.nlpcraft.nlp.util.NCTestPipeline
 
 import java.util.Properties
 
-final val CFG = new NCModelConfig("testId", "test", "1.0")
+final val CFG = NCModelConfig("testId", "test", "1.0")
 
 /**
   *
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelClient.scala 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelClient.scala
index 6c46a4af..07c626d1 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelClient.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelClient.scala
@@ -56,9 +56,9 @@ class NCModelClient(mdl: NCModel) extends LazyLogging, 
AutoCloseable:
         val cfg = mdl.getConfig
         val pipeline = mdl.getPipeline
 
-        require(cfg.id != null, "Model ID cannot be null.")
-        require(cfg.name != null, "Model name cannot be null.")
-        require(cfg.version != null, "Model version cannot be null.")
+        require(cfg.getId != null, "Model ID cannot be null.")
+        require(cfg.getName != null, "Model name cannot be null.")
+        require(cfg.getVersion != null, "Model version cannot be null.")
         require(pipeline.getTokenParser != null, "Token parser cannot be 
null.")
         require(pipeline.getEntityParsers != null, "List of entity parsers in 
the pipeline cannot be null.")
 
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelConfig.scala 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelConfig.scala
index e3ff4186..757ddf24 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelConfig.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelConfig.scala
@@ -27,10 +27,29 @@ object NCModelConfig:
     val DFLT_CONV_TIMEOUT: Long = Duration.ofMinutes(60).toMillis
     val DFLT_CONV_DEPTH = 3
 
-    def apply(id: String, name: String, ver: String) = new NCModelConfig(id, 
name, ver)
-    def apply(id: String, name: String, ver: String, desc: String, orig: 
String) =
-        new NCModelConfig(id, name, ver, Option(desc), Option(orig))
-        
+    def apply(id: String, name: String, ver: String): NCModelConfig =
+        new NCModelConfig ():
+            override val getId: String = id
+            override val getName: String = name
+            override val getVersion: String = ver
+
+    def apply(id: String, name: String, ver: String, desc: String, orig: 
String): NCModelConfig =
+        new NCModelConfig() :
+            override val getId: String = id
+            override val getName: String = name
+            override val getVersion: String = ver
+            override val getDescription: Option[String] = Option(desc)
+            override val getOrigin: Option[String] = Option(orig)
+
+    def apply(id: String, name: String, ver: String, desc: String, orig: 
String, conversationTimeout: Long, conversationDepth: Int): NCModelConfig = new 
NCModelConfig() :
+        override val getId: String = id
+        override val getName: String = name
+        override val getVersion: String = ver
+        override val getDescription: Option[String] = Option(desc)
+        override val getOrigin: Option[String] = Option(orig)
+        override val getConversationTimeout: Long = conversationTimeout
+        override val getConversationDepth: Int = conversationDepth
+
 import org.apache.nlpcraft.NCModelConfig.*
 
 /**
@@ -43,12 +62,11 @@ import org.apache.nlpcraft.NCModelConfig.*
   * @param conversationTimeout
   * @param conversationDepth
   */
-case class NCModelConfig(
-    id: String,
-    name: String,
-    version: String,
-    description: Option[String] = None,
-    origin: Option[String] = None,
-    conversationTimeout: Long = DFLT_CONV_TIMEOUT,
-    conversationDepth: Int = DFLT_CONV_DEPTH
-) extends NCPropertyMapAdapter
\ No newline at end of file
+trait NCModelConfig extends NCPropertyMapAdapter:
+    def getId: String
+    def getName: String
+    def getVersion: String
+    def getDescription: Option[String] = None
+    def getOrigin: Option[String] = None
+    def getConversationTimeout: Long = DFLT_CONV_TIMEOUT
+    def getConversationDepth: Int = DFLT_CONV_DEPTH
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/conversation/NCConversationManager.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/conversation/NCConversationManager.scala
index 1af4e448..7a47de2c 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/conversation/NCConversationManager.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/conversation/NCConversationManager.scala
@@ -41,7 +41,7 @@ class NCConversationManager(cfg: NCModelConfig) extends 
LazyLogging:
         convs.synchronized {
             val v = convs.getOrElseUpdate(
                 usrId,
-                Value(NCConversationData(usrId, cfg.id, 
cfg.conversationTimeout, cfg.conversationDepth))
+                Value(NCConversationData(usrId, cfg.getId, 
cfg.getConversationTimeout, cfg.getConversationDepth))
             )
 
             v.tstamp = NCUtils.nowUtcMs()
@@ -59,7 +59,7 @@ class NCConversationManager(cfg: NCModelConfig) extends 
LazyLogging:
         val delKeys = mutable.HashSet.empty[String]
 
         for ((key, value) <- convs)
-            if value.tstamp < now - cfg.conversationTimeout then
+            if value.tstamp < now - cfg.getConversationTimeout then
                 value.conv.clear()
                 delKeys += key
 
@@ -73,7 +73,7 @@ class NCConversationManager(cfg: NCModelConfig) extends 
LazyLogging:
       * @return
       */
     def start(): Unit =
-        gc = NCUtils.mkThread("conv-mgr-gc", cfg.id) { t =>
+        gc = NCUtils.mkThread("conv-mgr-gc", cfg.getId) { t =>
             while (!t.isInterrupted)
                 try
                     convs.synchronized {
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/dialogflow/NCDialogFlowManager.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/dialogflow/NCDialogFlowManager.scala
index 9cc9bbb8..5b9be5e0 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/dialogflow/NCDialogFlowManager.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/dialogflow/NCDialogFlowManager.scala
@@ -40,7 +40,7 @@ class NCDialogFlowManager(cfg: NCModelConfig) extends 
LazyLogging:
     private def clearForTimeout(): Long =
         require(Thread.holdsLock(flow))
 
-        val timeout = cfg.conversationTimeout
+        val timeout = cfg.getConversationTimeout
         val bound = NCUtils.now() - timeout
         var next = Long.MaxValue
 
@@ -77,7 +77,7 @@ class NCDialogFlowManager(cfg: NCModelConfig) extends 
LazyLogging:
       * @return
       */
     def start(): Unit =
-        gc = NCUtils.mkThread("dialog-mgr-gc", cfg.id) { t =>
+        gc = NCUtils.mkThread("dialog-mgr-gc", cfg.getId) { t =>
             while (!t.isInterrupted)
                 try
                     flow.synchronized {
@@ -171,7 +171,7 @@ class NCDialogFlowManager(cfg: NCModelConfig) extends 
LazyLogging:
             )
         }
 
-        logger.info(s"""Current dialog flow (oldest first) for 
[mdlId=${cfg.id}, usrId=$usrId]\n${tbl.toString()}""")
+        logger.info(s"""Current dialog flow (oldest first) for 
[mdlId=${cfg.getId}, usrId=$usrId]\n${tbl.toString()}""")
 
     /**
       * Clears dialog history for given user ID.
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/impl/NCModelScanner.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/impl/NCModelScanner.scala
index 14a58aab..89bdf13d 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/impl/NCModelScanner.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/impl/NCModelScanner.scala
@@ -146,7 +146,7 @@ object NCModelScanner extends LazyLogging:
         prmClss.zip(argsList).zipWithIndex.map { case ((paramCls, argList), i) 
=>
             def mkArg(): String = arg2Str(mtd, i)
 
-            lazy val z = s"mdlId=${cfg.id}, type=$paramCls, arg=${mkArg()}"
+            lazy val z = s"mdlId=${cfg.getId}, type=$paramCls, arg=${mkArg()}"
             val entsCnt = argList.size
 
             // Single entity.
@@ -182,7 +182,7 @@ object NCModelScanner extends LazyLogging:
     private def invoke(cfg: NCModelConfig, mtd: Method, obj: AnyRef, args: 
scala.Array[AnyRef]): NCResult =
         val methodObj = if Modifier.isStatic(mtd.getModifiers) then null else 
obj
         var flag = mtd.canAccess(methodObj)
-        lazy val z = s"mdlId=${cfg.id}, callback=${method2Str(mtd)}"
+        lazy val z = s"mdlId=${cfg.getId}, callback=${method2Str(mtd)}"
         try
             if !flag then
                 mtd.setAccessible(true)
@@ -214,7 +214,7 @@ object NCModelScanner extends LazyLogging:
         lazy val fStr = field2Str(field)
         val fieldObj = if Modifier.isStatic(field.getModifiers) then null else 
obj
         var flag = field.canAccess(fieldObj)
-        lazy val z = s"mdlId=${cfg.id}, field=$fStr"
+        lazy val z = s"mdlId=${cfg.getId}, field=$fStr"
         val res =
             try
                 if !flag then
@@ -318,7 +318,7 @@ object NCModelScanner extends LazyLogging:
         argClasses.zip(paramGenTypes).zipWithIndex.foreach { case ((argClass, 
paramGenType), i) =>
             def mkArg(): String = arg2Str(mtd, i)
 
-            lazy val z = s"mdlId=${cfg.id}, type=${class2Str(argClass)}, 
arg=${mkArg()}"
+            lazy val z = s"mdlId=${cfg.getId}, type=${class2Str(argClass)}, 
arg=${mkArg()}"
 
             // Entity.
             if argClass == CLS_ENTITY then () // No-op.
@@ -374,7 +374,7 @@ object NCModelScanner extends LazyLogging:
             def mkArg(): String = arg2Str(mtd, i)
 
             val p1 = "its $IT annotated argument"
-            val p2 = s"mdlId=${cfg.id}, arg=${mkArg()}"
+            val p2 = s"mdlId=${cfg.getId}, arg=${mkArg()}"
 
             // Argument is single entity but defined as not single entity.
             if cls == CLS_ENTITY && (min != 1 || max != 1) then
@@ -399,7 +399,7 @@ object NCModelScanner extends LazyLogging:
       * @return
       */
     private def prepareCallback(cfg: NCModelConfig, method: Method, obj: 
AnyRef, intent: NCIDLIntent): NCCallbackInput => NCResult =
-        lazy val z = s"mdlId=${cfg.id}, intentId=${intent.id}, 
type=${class2Str(method.getReturnType)}, callback=${method2Str(method)}"
+        lazy val z = s"mdlId=${cfg.getId}, intentId=${intent.id}, 
type=${class2Str(method.getReturnType)}, callback=${method2Str(method)}"
 
         // Checks method result type.
         if method.getReturnType != CLS_QRY_RES && 
!CLS_QRY_RES.isAssignableFrom(method.getReturnType) then
@@ -471,7 +471,7 @@ object NCModelScanner extends LazyLogging:
         require(mdl != null)
 
         val cfg = mdl.getConfig
-        lazy val z = s"mdlId=${cfg.id}"
+        lazy val z = s"mdlId=${cfg.getId}"
         val intentsMtds = mutable.HashMap.empty[Method, IntentHolder]
         val intentDecls = mutable.HashMap.empty[String, NCIDLIntent]
         val objs = mutable.Buffer.empty[AnyRef]
@@ -548,6 +548,6 @@ object NCModelScanner extends LazyLogging:
                 case ids if ids.nonEmpty => E(s"Duplicate intent IDs [$z, 
ids=${col2Str(ids)}]")
                 case _ => // No-op.
         else
-            logger.warn(s"Model has no intent: ${cfg.id}")
+            logger.warn(s"Model has no intent: ${cfg.getId}")
 
         intents.map(i => NCModelIntent(i.intent, i.function, 
samples.getOrElse(i.method, Map.empty).getOrElse(i.intent.id, Seq.empty))).toSeq
\ No newline at end of file
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/intent/compiler/NCIDLCodeGenerator.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/intent/compiler/NCIDLCodeGenerator.scala
index 17456e5e..2bd957ec 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/intent/compiler/NCIDLCodeGenerator.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/intent/compiler/NCIDLCodeGenerator.scala
@@ -911,10 +911,10 @@ trait NCIDLCodeGenerator:
                 case "or_else" => doOrElse()
 
                 // Model configuration.
-                case "mdl_id" => z0(() => Z(idlCtx.mdlCfg.id, 0))
-                case "mdl_name" => z0(() => Z(idlCtx.mdlCfg.name, 0))
-                case "mdl_ver" => z0(() => Z(idlCtx.mdlCfg.version, 0))
-                case "mdl_origin" => z0(() => Z(idlCtx.mdlCfg.origin, 0))
+                case "mdl_id" => z0(() => Z(idlCtx.mdlCfg.getId, 0))
+                case "mdl_name" => z0(() => Z(idlCtx.mdlCfg.getName, 0))
+                case "mdl_ver" => z0(() => Z(idlCtx.mdlCfg.getVersion, 0))
+                case "mdl_origin" => z0(() => Z(idlCtx.mdlCfg.getOrigin, 0))
 
                 // Entity functions.
                 case "ent_id" => arg1Tok() match { case x => stack.push(() => 
Z(toEntity(x().value).impl.getId, 1)) }
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/intent/compiler/NCIDLCompiler.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/intent/compiler/NCIDLCompiler.scala
index 322e7542..9f8a1ee9 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/intent/compiler/NCIDLCompiler.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/intent/compiler/NCIDLCompiler.scala
@@ -181,12 +181,12 @@ object NCIDLCompiler extends LazyLogging:
 
         override def exitFragId(ctx: IDP.FragIdContext): Unit =
             fragId = ctx.id().getText
-            if NCIDLGlobal.getFragment(mdlCfg.id, fragId).isDefined then 
SE(s"Duplicate fragment ID: $fragId")(ctx.id())
+            if NCIDLGlobal.getFragment(mdlCfg.getId, fragId).isDefined then 
SE(s"Duplicate fragment ID: $fragId")(ctx.id())
 
         override def exitFragRef(ctx: IDP.FragRefContext): Unit =
             val id = ctx.id().getText
 
-            NCIDLGlobal.getFragment(mdlCfg.id, id) match
+            NCIDLGlobal.getFragment(mdlCfg.getId, id) match
                 case Some(frag) =>
                     val meta = if fragMeta == null then Map.empty[String, Any] 
else fragMeta
                     for (fragTerm <- frag.terms)
@@ -256,7 +256,7 @@ object NCIDLCompiler extends LazyLogging:
             }
 
         override def exitFrag(ctx: IDP.FragContext): Unit =
-            NCIDLGlobal.addFragment(mdlCfg.id, NCIDLFragment(fragId, 
terms.toList))
+            NCIDLGlobal.addFragment(mdlCfg.getId, NCIDLFragment(fragId, 
terms.toList))
             terms.clear()
             fragId = null
 
@@ -393,8 +393,8 @@ object NCIDLCompiler extends LazyLogging:
             case s: String => s"$s."
 
         s"""IDL $kind error in '$srcName' at line $line - $aMsg
-          |-- Model ID: ${mdlCfg.id}
-          |-- Model origin: ${mdlCfg.origin}
+          |-- Model ID: ${mdlCfg.getId}
+          |-- Model origin: ${mdlCfg.getOrigin}
           |-- Intent origin: $origin
           |--
           |-- Line:  ${hold.origStr}
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/intent/matcher/NCIntentSolverManager.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/intent/matcher/NCIntentSolverManager.scala
index 4637a01f..4ce87943 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/intent/matcher/NCIntentSolverManager.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/intent/matcher/NCIntentSolverManager.scala
@@ -748,7 +748,7 @@ class NCIntentSolverManager(
                         case SEARCH_NO_HISTORY =>
                             finishSearch()
                 else
-                    logger.info(s"Model '${ctx.getModelConfig.id}' triggered 
rematching of intents by intent '${intentRes.intentId}' on variant 
#${intentRes.variantIdx + 1}.")
+                    logger.info(s"Model '${ctx.getModelConfig.getId}' 
triggered rematching of intents by intent '${intentRes.intentId}' on variant 
#${intentRes.variantIdx + 1}.")
                     Loop.finish()
                 catch
                     case e: NCIntentSkip =>
@@ -769,7 +769,7 @@ class NCIntentSolverManager(
     def solve(mdl: NCModel, ctx: NCContext, typ: NCIntentSolveType): 
ResultData =
         import NCIntentSolveType.REGULAR
 
-        val key = UserModelKey(ctx.getRequest.getUserId, mdl.getConfig.id)
+        val key = UserModelKey(ctx.getRequest.getUserId, mdl.getConfig.getId)
         reqIds.synchronized { reqIds.put(key, ctx.getRequest.getRequestId)}
 
         mdl.onContext(ctx) match
diff --git 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/conversation/NCConversationManagerSpec.scala
 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/conversation/NCConversationManagerSpec.scala
index 4889f2b9..f2fb54ce 100644
--- 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/conversation/NCConversationManagerSpec.scala
+++ 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/conversation/NCConversationManagerSpec.scala
@@ -27,20 +27,19 @@ import java.util.function.Predicate
   *
   */
 class NCConversationManagerSpec:
-    class ModelConfigMock(timeout: Long = Long.MaxValue) extends NCModelConfig(
-        "testId",
-        "test",
-        "1.0",
-        Some("Test description"),
-        Some("Test origin"),
-        NCModelConfig.DFLT_CONV_TIMEOUT,
-        NCModelConfig.DFLT_CONV_DEPTH
-    ):
-        override val conversationTimeout: Long = timeout
+    def mkConfig(timeout: Long = Long.MaxValue):NCModelConfig =
+        NCModelConfig(
+            "testId",
+            "test", "1.0",
+            "Test description",
+            "Test origin",
+            timeout,
+            NCModelConfig.DFLT_CONV_DEPTH
+        )
 
     @Test
     def test(): Unit =
-        val mgr = NCConversationManager(ModelConfigMock())
+        val mgr = NCConversationManager(mkConfig())
         val t = NCTestToken()
         val reqId = "req1"
 
@@ -69,7 +68,7 @@ class NCConversationManagerSpec:
     def testTimeout(): Unit =
         val timeout = 1000
 
-        val mgr = NCConversationManager(ModelConfigMock(timeout))
+        val mgr = NCConversationManager(mkConfig(timeout))
         val t = NCTestToken()
         val reqId = "req1"
 
diff --git 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/conversation/NCConversationTimeoutSpec.scala
 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/conversation/NCConversationTimeoutSpec.scala
index 61442ad6..ee8537c8 100644
--- 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/conversation/NCConversationTimeoutSpec.scala
+++ 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/conversation/NCConversationTimeoutSpec.scala
@@ -45,7 +45,7 @@ class NCConversationTimeoutSpec:
         val mdl: NCModel =
             new NCTestModelAdapter:
                 override val getConfig: NCModelConfig =
-                    new NCModelConfig(CFG.id, CFG.name, CFG.version, 
CFG.description, CFG.origin, TIMEOUT, CFG.conversationDepth)
+                    NCModelConfig(CFG.getId, CFG.getName, CFG.getVersion, 
"Test desc", "Test origin", TIMEOUT, CFG.getConversationDepth)
 
                 override val getPipeline: NCPipeline =
                     val pl = mkEnPipeline
diff --git 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/dialogflow/NCDialogFlowManagerSpec.scala
 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/dialogflow/NCDialogFlowManagerSpec.scala
index 57a1be15..b14c4ffd 100644
--- 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/dialogflow/NCDialogFlowManagerSpec.scala
+++ 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/dialogflow/NCDialogFlowManagerSpec.scala
@@ -44,8 +44,8 @@ class NCDialogFlowManagerSpec:
         override def getVariants: List[NCVariant] = null
         override def getTokens: List[NCToken] = null
 
-    class ModelConfigMock(timeout: Long = Long.MaxValue) extends 
NCModelConfig("testId", "test", "1.0", Some("Test description"), Some("Test 
origin"), NCModelConfig.DFLT_CONV_TIMEOUT, NCModelConfig.DFLT_CONV_DEPTH):
-        override val conversationTimeout: Long = timeout
+    def mkConfig(timeout: Long = Long.MaxValue): NCModelConfig =
+        NCModelConfig("testId", "test", "1.0", "Test description", "Test 
origin", timeout, NCModelConfig.DFLT_CONV_DEPTH)
 
     private var mgr: NCDialogFlowManager = _
 
@@ -79,7 +79,7 @@ class NCDialogFlowManagerSpec:
 
     @Test
     def test(): Unit =
-        mgr = NCDialogFlowManager(ModelConfigMock())
+        mgr = NCDialogFlowManager(mkConfig())
 
         val now = NCUtils.now()
 
@@ -111,7 +111,7 @@ class NCDialogFlowManagerSpec:
         val delay = 10
         val timeout = delay * 1000
 
-        mgr = NCDialogFlowManager(ModelConfigMock(timeout))
+        mgr = NCDialogFlowManager(mkConfig(timeout))
 
         val now = NCUtils.now()
 
diff --git 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/intent/compiler/functions/NCIDLFunctionsModel.scala
 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/intent/compiler/functions/NCIDLFunctionsModel.scala
index ea5d2459..fa2f41f3 100644
--- 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/intent/compiler/functions/NCIDLFunctionsModel.scala
+++ 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/intent/compiler/functions/NCIDLFunctionsModel.scala
@@ -34,8 +34,8 @@ class NCIDLFunctionsModel extends NCIDLFunctions:
         def mkTestDesc(truth: String): TestDesc = TestDesc(truth = truth, 
idlCtx = idlCtx)
 
         test(
-            mkTestDesc(s"mdl_id == '${idlCtx.mdlCfg.id}'"),
-            mkTestDesc(s"mdl_name == '${idlCtx.mdlCfg.name}'"),
-            mkTestDesc(s"mdl_ver == '${idlCtx.mdlCfg.version}'"),
-            mkTestDesc(s"mdl_origin == '${idlCtx.mdlCfg.origin}'")
+            mkTestDesc(s"mdl_id == '${idlCtx.mdlCfg.getId}'"),
+            mkTestDesc(s"mdl_name == '${idlCtx.mdlCfg.getName}'"),
+            mkTestDesc(s"mdl_ver == '${idlCtx.mdlCfg.getVersion}'"),
+            mkTestDesc(s"mdl_origin == '${idlCtx.mdlCfg.getOrigin}'")
         )
diff --git 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCEntityEnricherSpec.scala 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCEntityEnricherSpec.scala
index f9333c93..056ec772 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCEntityEnricherSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCEntityEnricherSpec.scala
@@ -32,7 +32,7 @@ import scala.util.Using
   */
 class NCEntityEnricherSpec:
     private def test0(pipeline: NCPipeline, ok: Boolean): Unit =
-        val mdl: NCModel = new NCModelAdapter(new NCModelConfig("test.id", 
"Test model", "1.0"), pipeline):
+        val mdl: NCModel = new NCModelAdapter(NCModelConfig("test.id", "Test 
model", "1.0"), pipeline):
             @NCIntent("intent=i term(any)={meta_ent('k1') == 'v1'}")
             def onMatch(ctx: NCContext, im: NCIntentMatch): NCResult = 
NCResult("OK", NCResultType.ASK_RESULT)
 
diff --git 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCEntityValidatorSpec.scala 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCEntityValidatorSpec.scala
index a09cb0b6..909930be 100644
--- 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCEntityValidatorSpec.scala
+++ 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCEntityValidatorSpec.scala
@@ -31,7 +31,7 @@ import scala.util.Using
   */
 class NCEntityValidatorSpec:
     private def test0(pipeline: NCPipeline, ok: Boolean): Unit =
-        val mdl: NCModel = new NCModelAdapter(new NCModelConfig("test.id", 
"Test model", "1.0"), pipeline):
+        val mdl: NCModel = new NCModelAdapter(NCModelConfig("test.id", "Test 
model", "1.0"), pipeline):
             override def onContext(ctx: NCContext): Option[NCResult] = 
Option(NCResult("OK", NCResultType.ASK_RESULT))
 
         NCTestUtils.askSomething(mdl, ok)
diff --git 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCTokenEnricherSpec.scala 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCTokenEnricherSpec.scala
index b5facb78..e31f04fe 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCTokenEnricherSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCTokenEnricherSpec.scala
@@ -32,7 +32,7 @@ import scala.util.Using
   */
 class NCTokenEnricherSpec:
     private def test0(pipeline: NCPipeline, ok: Boolean): Unit =
-        val mdl: NCModel = new NCModelAdapter(new NCModelConfig("test.id", 
"Test model", "1.0"), pipeline):
+        val mdl: NCModel = new NCModelAdapter(NCModelConfig("test.id", "Test 
model", "1.0"), pipeline):
             @NCIntent("intent=i term(any)={meta_ent('nlp:token:k1') == 'v1'}")
             def onMatch(ctx: NCContext, im: NCIntentMatch): NCResult = 
NCResult("OK", NCResultType.ASK_RESULT)
 
diff --git 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCTokenValidatorSpec.scala 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCTokenValidatorSpec.scala
index 1b9fb256..f7a71c8b 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCTokenValidatorSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCTokenValidatorSpec.scala
@@ -31,7 +31,7 @@ import scala.util.Using
   */
 class NCTokenValidatorSpec:
     private def test0(pipeline: NCPipeline, ok: Boolean): Unit =
-        val mdl: NCModel = new NCModelAdapter(new NCModelConfig("test.id", 
"Test model", "1.0"), pipeline):
+        val mdl: NCModel = new NCModelAdapter(NCModelConfig("test.id", "Test 
model", "1.0"), pipeline):
             override def onContext(ctx: NCContext): Option[NCResult] = 
Option(NCResult("OK", NCResultType.ASK_RESULT))
 
         NCTestUtils.askSomething(mdl, ok)
diff --git 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCVariantFilterSpec.scala 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCVariantFilterSpec.scala
index cdd3e994..b893d520 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCVariantFilterSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCVariantFilterSpec.scala
@@ -33,7 +33,7 @@ import scala.util.Using
   */
 class NCVariantFilterSpec:
     private def test0(pipeline: NCPipeline, ok: Boolean): Unit =
-        val mdl: NCModel = new NCModelAdapter(new NCModelConfig("test.id", 
"Test model", "1.0"), pipeline):
+        val mdl: NCModel = new NCModelAdapter(NCModelConfig("test.id", "Test 
model", "1.0"), pipeline):
             @NCIntent("intent=i term(any)={true}")
             def onMatch(ctx: NCContext, im: NCIntentMatch): NCResult = 
NCResult("OK", NCResultType.ASK_RESULT)
 
diff --git 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/util/NCTestConfig.scala 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/util/NCTestConfig.scala
index c5fc8591..d127c055 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/util/NCTestConfig.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/util/NCTestConfig.scala
@@ -23,7 +23,7 @@ import org.apache.nlpcraft.nlp.token.enricher.*
 import org.apache.nlpcraft.nlp.token.parser.NCOpenNLPTokenParser
 import org.apache.nlpcraft.nlp.util.*
 
-final val CFG = new NCModelConfig("testId", "test", "1.0", description = 
Some("Test description"), origin = Some("Test origin"))
+final val CFG = NCModelConfig("testId", "test", "1.0", desc = "Test 
description", orig = "Test origin")
 final val EN_TOK_PARSER = new 
NCOpenNLPTokenParser(R.getPath("opennlp/en-token.bin"))
 final val EN_TOK_STOP_ENRICHER = new NCEnStopWordsTokenEnricher
 final val EN_TOK_LEMMA_POS_ENRICHER =

Reply via email to