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

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


The following commit(s) were added to refs/heads/NLPCRAFT-41-2 by this push:
     new 1b5e967  WIP.
1b5e967 is described below

commit 1b5e96791ea4204631dcf8028204ac1ecc9624b8
Author: Aaron Radzinski <[email protected]>
AuthorDate: Wed Sep 9 22:09:27 2020 -0700

    WIP.
---
 nlpcraft/src/main/resources/log4j2.xml             | 22 ++++++--
 .../org/apache/nlpcraft/probe/NCProbeBoot.scala    | 23 +++++++-
 .../probe/mgrs/deploy/NCDeployManager.scala        | 66 ++++++++++++----------
 nlpcraft/src/test/resources/log4j2.xml             | 24 +++++---
 4 files changed, 90 insertions(+), 45 deletions(-)

diff --git a/nlpcraft/src/main/resources/log4j2.xml 
b/nlpcraft/src/main/resources/log4j2.xml
index 3e5d3b7..1bdc05d 100644
--- a/nlpcraft/src/main/resources/log4j2.xml
+++ b/nlpcraft/src/main/resources/log4j2.xml
@@ -18,23 +18,33 @@
 -->
 
 <Configuration status="INFO">
+    <Properties>
+        <Property name="pattern">%d{MMM-dd|HH:mm:ss}|%-5p| %m%n</Property>
+    </Properties>
     <Appenders>
-        <Console name="CONSOLE" target="SYSTEM_OUT">
-            <PatternLayout pattern="%d{MMM-dd|HH:mm:ss}|%-5p| %m%n"/>
+        <Console name="stdout" target="SYSTEM_OUT">
+            <PatternLayout pattern="${pattern}"/>
+            <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="ACCEPT"/>
+        </Console>
+        <Console name="stderr" target="SYSTEM_ERR">
+            <PatternLayout pattern="${pattern}"/>
+            <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
         </Console>
     </Appenders>
     <Loggers>
         <Root level="INFO">
-            <AppenderRef ref="CONSOLE"/>
+            <AppenderRef ref="stdout"/>
+            <AppenderRef ref="stderr"/>
         </Root>
         <Logger name="org.apache.nlpcraft" level="INFO" additivity="false">
-            <AppenderRef ref="CONSOLE"/>
+            <AppenderRef ref="stdout"/>
+            <AppenderRef ref="stderr"/>
         </Logger>
         <Logger name="com.mchange" level="WARN" additivity="false">
-            <AppenderRef ref="CONSOLE"/>
+            <AppenderRef ref="stderr"/>
         </Logger>
         <Logger name="org.apache.ignite" level="WARN" additivity="false">
-            <AppenderRef ref="CONSOLE"/>
+            <AppenderRef ref="stderr"/>
         </Logger>
     </Loggers>
 </Configuration>
\ No newline at end of file
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/NCProbeBoot.scala 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/NCProbeBoot.scala
index dad67ab..bab2fb1 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/NCProbeBoot.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/NCProbeBoot.scala
@@ -70,6 +70,7 @@ private [probe] object NCProbeBoot extends LazyLogging with 
NCOpenCensusTrace {
         var upLink: (String, Integer),
         var downLink: (String, Integer),
         var jarsFolder: Option[String],
+        var model: Option[String],
         var models: Seq[String],
         var lifecycle: Seq[String]
     ) {
@@ -90,6 +91,7 @@ private [probe] object NCProbeBoot extends LazyLogging with 
NCOpenCensusTrace {
             withValue(s"$prefix.token", fromAnyRef("3141592653589793")).
             withValue(s"$prefix.upLink", fromAnyRef("localhost:8201")).
             withValue(s"$prefix.downLink", fromAnyRef("localhost:8202")).
+            withValue(s"$prefix.model", fromAnyRef(null)).
             withValue(s"$prefix.models", fromIterable(Seq().asJava)).
             withValue(s"$prefix.lifecycle", fromIterable(Seq().asJava)).
             withValue(s"$prefix.resultMaxSizeBytes", fromAnyRef(1048576)).
@@ -142,6 +144,7 @@ private [probe] object NCProbeBoot extends LazyLogging with 
NCOpenCensusTrace {
             val upLink: (String, Integer) = getHostPort(s"$prefix.upLink")
             val downLink: (String, Integer) = getHostPort(s"$prefix.downLink")
             val jarsFolder: Option[String] = 
getStringOpt(s"$prefix.jarsFolder")
+            val model: Option[String] = getStringOpt(s"$prefix.model")
             val models: Seq[String] = getStringList(s"$prefix.models")
             val lifecycle: Seq[String] = getStringList(s"$prefix.lifecycle")
         }
@@ -152,6 +155,7 @@ private [probe] object NCProbeBoot extends LazyLogging with 
NCOpenCensusTrace {
             Cfg.upLink,
             Cfg.downLink,
             Cfg.jarsFolder,
+            Cfg.model,
             Cfg.models,
             Cfg.lifecycle
         )
@@ -302,6 +306,7 @@ private [probe] object NCProbeBoot extends LazyLogging with 
NCOpenCensusTrace {
             val upLink: (String, Integer) = getHostPort(upLinkStr)
             val dnLink: (String, Integer) = getHostPort(dnLinkStr)
             val jarsFolder: Option[String] = 
getStringOpt(s"$prefix.jarsFolder")
+            val model: Option[String] = getStringOpt(s"$prefix.model")
             val models: Seq[String] = mdlClasses.map(_.getName).toSeq
             val lifecycle: Seq[String] = getStringList(s"$prefix.lifecycle")
         }
@@ -314,6 +319,7 @@ private [probe] object NCProbeBoot extends LazyLogging with 
NCOpenCensusTrace {
                     Cfg.upLink,
                     Cfg.dnLink,
                     Cfg.jarsFolder,
+                    Cfg.model,
                     Cfg.models,
                     Cfg.lifecycle),
                     fut
@@ -366,15 +372,25 @@ private [probe] object NCProbeBoot extends LazyLogging 
with NCOpenCensusTrace {
         val tbl = NCAsciiTable()
         
         val ver = NCVersion.getCurrent
-        
+
         tbl += ("Probe ID", cfg.id)
         tbl += ("Probe Token", cfg.token)
         tbl += ("API Version", ver.version + ", " + ver.date.toString)
         tbl += ("Down-Link", cfg.downLinkString)
         tbl += ("Up-Link", cfg.upLinkString)
-        tbl += ("Models", cfg.models)
         tbl += ("Lifecycle", cfg.lifecycle)
-        tbl += ("JARs Folder", cfg.jarsFolder.getOrElse(""))
+
+        cfg.model match {
+            case Some(m) ⇒
+                tbl += ("Model", m)
+                tbl += ("Models" , "<ignored>")
+                tbl += ("JARs Folder", "<ignored>")
+
+            case None ⇒
+                tbl += ("Model", "<ignored>")
+                tbl += ("Models" , cfg.models)
+                tbl += ("JARs Folder", cfg.jarsFolder.getOrElse(""))
+        }
         
         tbl.info(logger, Some("Probe Configuration:"))
     }
@@ -414,6 +430,7 @@ private [probe] object NCProbeBoot extends LazyLogging with 
NCOpenCensusTrace {
                 "downlink" → cfg.downLinkString,
                 "relVer" → ver.version,
                 "relDate" → ver.date.toString,
+                "model" → cfg.model.getOrElse(""),
                 "models" → cfg.models.mkString(","),
                 "lifecycle" → cfg.lifecycle.mkString(","),
                 "jarFolder" → cfg.jarsFolder
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 3aca836..a7e494b 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
@@ -50,6 +50,7 @@ object NCDeployManager extends NCService with DecorateAsScala 
{
         // It should reload config.
         def modelFactoryType: Option[String] = 
getStringOpt(s"$pre.modelFactory.type")
         def modelFactoryProps: Option[Map[String, String]] = 
getMapOpt(s"$pre.modelFactory.properties")
+        def model: Option[String] = getStringOpt(s"$pre.model")
         def models: Seq[String] = getStringList(s"$pre.models")
         def jarsFolder: Option[String] = getStringOpt(s"$pre.jarsFolder")
     }
@@ -217,37 +218,44 @@ object NCDeployManager extends NCService with 
DecorateAsScala {
     
     @throws[NCE]
     override def start(parent: Span = null): NCService = 
startScopedSpan("start", parent) { _ ⇒
-        modelFactory = new NCBasicModelFactory
         models = ArrayBuffer.empty[NCModelWrapper]
 
-        // Initialize model factory (if configured).
-        Config.modelFactoryType match {
-            case Some(mft) ⇒
-                modelFactory = makeModelFactory(mft)
-    
-                
modelFactory.initialize(Config.modelFactoryProps.getOrElse(Map.empty[String, 
String]).asJava)
-                
-            case None ⇒ // No-op.
-        }
-        
-        models ++= Config.models.map(makeModel)
-        
-        Config.jarsFolder match {
-            case Some(jarsFolder) ⇒
-                val jarsFile = new File(jarsFolder)
-    
-                if (!jarsFile.exists())
-                    throw new NCE(s"JAR folder path '$jarsFolder' does not 
exist.")
-                if (!jarsFile.isDirectory)
-                    throw new NCE(s"JAR folder path '$jarsFolder' is not a 
directory.")
-    
-                val src = this.getClass.getProtectionDomain.getCodeSource
-                val locJar = if (src == null) null else new 
File(src.getLocation.getPath)
-    
-                for (jar ← scanJars(jarsFile) if jar != locJar)
-                    models ++= extractModels(jar)
-                
-            case None ⇒ // No-op.
+        Config.model match {
+            case Some(mdlClsName) ⇒
+                models += makeModel(mdlClsName)
+
+            case None ⇒
+                modelFactory = new NCBasicModelFactory
+
+                // Initialize model factory (if configured).
+                Config.modelFactoryType match {
+                    case Some(mft) ⇒
+                        modelFactory = makeModelFactory(mft)
+
+                        
modelFactory.initialize(Config.modelFactoryProps.getOrElse(Map.empty[String, 
String]).asJava)
+
+                    case None ⇒ // No-op.
+                }
+
+                models ++= Config.models.map(makeModel)
+
+                Config.jarsFolder match {
+                    case Some(jarsFolder) ⇒
+                        val jarsFile = new File(jarsFolder)
+
+                        if (!jarsFile.exists())
+                            throw new NCE(s"JAR folder path '$jarsFolder' does 
not exist.")
+                        if (!jarsFile.isDirectory)
+                            throw new NCE(s"JAR folder path '$jarsFolder' is 
not a directory.")
+
+                        val src = 
this.getClass.getProtectionDomain.getCodeSource
+                        val locJar = if (src == null) null else new 
File(src.getLocation.getPath)
+
+                        for (jar ← scanJars(jarsFile) if jar != locJar)
+                            models ++= extractModels(jar)
+
+                    case None ⇒ // No-op.
+                }
         }
 
         // Verify models' identities.
diff --git a/nlpcraft/src/test/resources/log4j2.xml 
b/nlpcraft/src/test/resources/log4j2.xml
index d8508aa..a233dc6 100644
--- a/nlpcraft/src/test/resources/log4j2.xml
+++ b/nlpcraft/src/test/resources/log4j2.xml
@@ -18,23 +18,33 @@
 -->
 
 <Configuration status="INFO">
+    <Properties>
+        <Property name="pattern">%d{MMM-dd|HH:mm:ss}|%-5p| %C{1} - (%F:%L) - 
%m%n</Property>
+    </Properties>
     <Appenders>
-        <Console name="CONSOLE" target="SYSTEM_OUT">
-            <PatternLayout pattern="%d{MMM-dd|HH:mm:ss}|%-5p| %C{1} - (%F:%L) 
- %m%n"/>
+        <Console name="stdout" target="SYSTEM_OUT">
+            <PatternLayout pattern="${pattern}"/>
+            <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="ACCEPT"/>
+        </Console>
+        <Console name="stderr" target="SYSTEM_ERR">
+            <PatternLayout pattern="${pattern}"/>
+            <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
         </Console>
     </Appenders>
     <Loggers>
         <Root level="INFO">
-            <AppenderRef ref="CONSOLE"/>
+            <AppenderRef ref="stdout"/>
+            <AppenderRef ref="stderr"/>
         </Root>
-        <Logger name="org.apache.nlpcraft" level="DEBUG" additivity="false">
-            <AppenderRef ref="CONSOLE"/>
+        <Logger name="org.apache.nlpcraft" level="INFO" additivity="false">
+            <AppenderRef ref="stdout"/>
+            <AppenderRef ref="stderr"/>
         </Logger>
         <Logger name="com.mchange" level="WARN" additivity="false">
-            <AppenderRef ref="CONSOLE"/>
+            <AppenderRef ref="stderr"/>
         </Logger>
         <Logger name="org.apache.ignite" level="WARN" additivity="false">
-            <AppenderRef ref="CONSOLE"/>
+            <AppenderRef ref="stderr"/>
         </Logger>
     </Loggers>
 </Configuration>
\ No newline at end of file

Reply via email to