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 2020/12/16 03:05:54 UTC

[incubator-nlpcraft] branch NLPCRAFT-193 created (now 6ee9a38)

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

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


      at 6ee9a38  WIP.

This branch includes the following new commits:

     new 6ee9a38  WIP.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[incubator-nlpcraft] 01/01: WIP.

Posted by ar...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 6ee9a3808b128db8368c5d2e4f414f0c6fa4a506
Author: Aaron Radzinski <ar...@datalingvo.com>
AuthorDate: Tue Dec 15 19:05:41 2020 -0800

    WIP.
---
 .../nlpcraft/examples/time/TimeModelApp.java       |  2 +-
 .../model/tools/embedded/NCEmbeddedProbe.java      | 76 ++++--------------
 .../model/tools/test/NCTestAutoModelValidator.java | 15 ----
 .../scala/org/apache/nlpcraft/probe/NCProbe.scala  |  2 +-
 .../org/apache/nlpcraft/probe/NCProbeBoot.scala    | 89 +++++-----------------
 5 files changed, 38 insertions(+), 146 deletions(-)

diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/time/TimeModelApp.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/time/TimeModelApp.java
index fd82494..d6ddf54 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/time/TimeModelApp.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/time/TimeModelApp.java
@@ -32,7 +32,7 @@ public class TimeModelApp {
      */
     public static void main(String[] args) throws Exception {
         // Start the data probe "in place" with 'TimeModel' model.
-        if (NCEmbeddedProbe.start(TimeModel.class))
+        if (NCEmbeddedProbe.start(null, TimeModel.class.getName()))
             Thread.currentThread().join();
     }
 }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/embedded/NCEmbeddedProbe.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/embedded/NCEmbeddedProbe.java
index 1017bc0..a25da3f 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/embedded/NCEmbeddedProbe.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/embedded/NCEmbeddedProbe.java
@@ -18,7 +18,6 @@
 package org.apache.nlpcraft.model.tools.embedded;
 
 import org.apache.nlpcraft.common.*;
-import org.apache.nlpcraft.model.*;
 import org.apache.nlpcraft.model.tools.test.*;
 import org.apache.nlpcraft.probe.*;
 import org.apache.nlpcraft.probe.mgrs.nlp.*;
@@ -81,68 +80,22 @@ public class NCEmbeddedProbe {
     }
 
     /**
+     * Start the embedded probe with optional configuration file and models overrides.
      *
-     * @param classes
-     */
-    private static void checkModelClasses(Class<? extends NCModel>[] classes) {
-        if (classes.length == 0)
-            throw new NCException("At least one model class must be provided when starting embedded probe.");
-    }
-
-    /**
-     * Start the embedded probe with given configuration file. It is equivalent to starting a probe using
-     * <code>-config=cfgFile</code> command line argument.
-     *
-     * @param cfgFile Configuration file path. It should be either a full path or the file name
+     * @param cfgFile Optional configuration file path. It should be either a full path or the file name
      *      that can be found in the current working directory or on the classpath as a class loader
-     *      resource.
+     *      resource. If provided - it is equivalent to starting a probe using <code>-config=cfgFile</code>
+     *      command line argument. If {@code null} - the probe will start with the default configuration.
+     * @param mdlClasses Optional data model classes to be deployed by the embedded probe. If provided -
+     *      these will override {@code nlpcraft.probe.models} configuration property. If {@code null} - the models
+     *      defined in the configuration (default or provided via {@code cfgFile} parameter) will be used.
      * @throws NCException Thrown in case of any errors starting the data probe.
      * @return Whether or not probe started ok.
      */
-    public static boolean start(String cfgFile) {
+    public static boolean start(String cfgFile, String... mdlClasses) {
         CompletableFuture<Integer> fut = new CompletableFuture<>();
 
-        NCProbeBoot$.MODULE$.start(cfgFile, fut);
-
-        return waitForFuture(fut);
-    }
-
-    /**
-     * Start the embedded probe with given configuration file and models overrides. It is equivalent to starting
-     * a probe using <code>-config=cfgFile</code> command line argument.
-     *
-     * @param cfgFile Configuration file path. It should be either a full path or the file name
-     *      that can be found in the current working directory or on the classpath as a class loader
-     *      resource.
-     * @param mdlClasses One or more data model classes to be deployed by the embedded probe. These will
-     *      override {@code nlpcraft.probe.models} configuration property in the provided configuration file.
-     * @throws NCException Thrown in case of any errors starting the data probe.
-     * @return Whether or not probe started ok.
-     */
-    @SafeVarargs
-    public static boolean start(String cfgFile, Class<? extends NCModel>... mdlClasses) {
-        CompletableFuture<Integer> fut = new CompletableFuture<>();
-
-        NCProbeBoot$.MODULE$.start(cfgFile, mdlClasses, fut);
-
-        return waitForFuture(fut);
-    }
-
-    /**
-     * Starts the embedded probe with default configuration and specified models to deploy.
-     *
-     * @param mdlClasses One or more data model classes to be deployed by the embedded probe. These will
-     *      override {@code nlpcraft.probe.models} configuration property in the default configuration file.
-     * @throws NCException Thrown in case of any errors starting the data probe.
-     * @return  Whether or not probe started ok.
-     */
-    @SafeVarargs
-    public static boolean start(Class<? extends NCModel>... mdlClasses) {
-        checkModelClasses(mdlClasses);
-
-        CompletableFuture<Integer> fut = new CompletableFuture<>();
-
-        NCProbeBoot$.MODULE$.start(mdlClasses, fut);
+        NCProbeBoot$.MODULE$.startEmbedded(cfgFile, mdlClasses, fut);
 
         return waitForFuture(fut);
     }
@@ -154,22 +107,23 @@ public class NCEmbeddedProbe {
      * @param tok Probe token override.
      * @param upLink Probe up-link to the server override.
      * @param dnLink Probe down-link from the server override.
-     * @param mdlClasses One or more data model classes overrides to be deployed by the embedded probe.
+     * @param mdlClasses One or more data model classes overrides to be deployed by the embedded probe. At least
+     *      model must be provided.
      * @throws NCException Thrown in case of any errors starting the data probe.
      * @return  Whether or not probe started ok.
      */
-    @SafeVarargs
     public static boolean start(
         String probeId,
         String tok,
         String upLink,
         String dnLink,
-        Class<? extends NCModel>... mdlClasses) {
-        checkModelClasses(mdlClasses);
+        String... mdlClasses) {
+        if (mdlClasses.length == 0)
+            throw new NCException("At least one model class must be provided when starting embedded probe.");
 
         CompletableFuture<Integer> fut = new CompletableFuture<>();
 
-        NCProbeBoot$.MODULE$.start(probeId, tok, upLink, dnLink, mdlClasses, fut);
+        NCProbeBoot$.MODULE$.startEmbedded(probeId, tok, upLink, dnLink, mdlClasses, fut);
 
         return waitForFuture(fut);
     }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/test/NCTestAutoModelValidator.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/test/NCTestAutoModelValidator.java
index 3b0386c..a2635b2 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/test/NCTestAutoModelValidator.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/test/NCTestAutoModelValidator.java
@@ -121,21 +121,6 @@ public class NCTestAutoModelValidator {
     /**
      * Performs validation based on {@link NCIntentSample} annotations for given models.
      *
-     * @param mdlIds Comma separate list of one or more model IDs to validate.
-     * @return <code>True</code> if no validation errors found, <code>false</code> otherwise. Note that
-     *      standard validation output will be printed out to the configured logger.
-     * @throws Exception Thrown in case of any unexpected errors during validation. Note that standard validation
-     *      output will be printed out to the configured logger.
-     *
-     * @see NCModelView#getId()
-     */
-    public static boolean isValid(String mdlIds) throws Exception {
-        return NCTestAutoModelValidatorImpl.isValidForModelIds(mdlIds);
-    }
-
-    /**
-     * Performs validation based on {@link NCIntentSample} annotations for given models.
-     *
      * @param mdlIds Collection of model IDs to validate.
      * @return <code>True</code> if no validation errors found, <code>false</code> otherwise. Note that
      *      standard validation output will be printed out to the configured logger (e.g. log4j), if any.
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/NCProbe.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/NCProbe.scala
index 33d7aa6..44abbef 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/NCProbe.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/NCProbe.scala
@@ -35,7 +35,7 @@ object NCProbe extends App {
 
     while (!fut.isDone)
         ignoring(classOf[Exception]) {
-            fut.get();
+            fut.get()
         }
 
     System.exit(fut.get)
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 85c7d67..bf1ffa7 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/NCProbeBoot.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/NCProbeBoot.scala
@@ -33,7 +33,6 @@ import org.apache.nlpcraft.common.opencensus.NCOpenCensusTrace
 import org.apache.nlpcraft.common.extcfg.NCExternalConfigManager
 import org.apache.nlpcraft.common.version.NCVersion
 import org.apache.nlpcraft.common.{NCE, NCException, NCService, U}
-import org.apache.nlpcraft.model.NCModel
 import org.apache.nlpcraft.probe.mgrs.cmd.NCCommandManager
 import org.apache.nlpcraft.probe.mgrs.conn.NCConnectionManager
 import org.apache.nlpcraft.probe.mgrs.conversation.NCConversationManager
@@ -312,45 +311,34 @@ private [probe] object NCProbeBoot extends LazyLogging with NCOpenCensusTrace {
     private def checkStarted(): Unit = 
         if (started)
             throw new NCException(s"Probe has already been started (only one probe per JVM is allowed).")
-    
-    /**
-      *
-      * @param cfgFile Configuration file to use.
-      * @param fut
-      */
-    private [probe] def start(cfgFile: String, fut: CompletableFuture[Integer]): Unit = {
-        checkStarted()
-        
-        val cfg = initializeConfig(Array(s"-config=$cfgFile"), None)
-        
-        new Thread() {
-            override def run(): Unit = start0(cfg, fut)
-        }.start()
-    }
-    
+
     /**
-      * Starts the embedded probe with given configuration file and provided overrides.
+      * Starts the embedded probe with optional configuration file and provided overrides.
      *
-      * @param cfgFile Configuration file to use.
-      * @param mdlClasses Overrides for 'nlpcraft.probe.models' configuration property.
+      * @param cfgFile Optional configuration file to use. If `null` - the default configuration will be used.
+      * @param mdlClasses Optional overrides for 'nlpcraft.probe.models' configuration property. If `null` -
+      *     the models configured in the configuration (default or provided) will be used.
       * @param fut
       */
-    private [probe] def start(
+    private [probe] def startEmbedded(
         cfgFile: String,
-        mdlClasses: Array[java.lang.Class[_ <: NCModel]],
+        mdlClasses: Array[String],
         fut: CompletableFuture[Integer]): Unit = {
         checkStarted()
     
         import ConfigValueFactory._
-    
+
         val cfg = initializeConfig(
-            Array(s"-config=$cfgFile"),
-            Some(
-                ConfigFactory.empty().withValue(
-                    "nlpcraft.probe.models",
-                    fromAnyRef(mdlClasses.map(_.getName).mkString(","))
+            if (cfgFile == null) Array.empty else Array(s"-config=$cfgFile"),
+            if (mdlClasses == null)
+                None
+            else
+                Some(
+                    ConfigFactory.empty().withValue(
+                        "nlpcraft.probe.models",
+                        fromAnyRef(mdlClasses.mkString(","))
+                    )
                 )
-            )
         )
         
         new Thread() {
@@ -359,35 +347,8 @@ private [probe] object NCProbeBoot extends LazyLogging with NCOpenCensusTrace {
     }
 
     /**
-     * Starts the embedded probe with the default configuration.
+      * Starts the embedded probe with specified configuration values.
      *
-     * @param mdlClasses Overrides for 'nlpcraft.probe.models' configuration property.
-     * @param fut
-     */
-    private [probe] def start(
-        mdlClasses: Array[java.lang.Class[_ <: NCModel]],
-        fut: CompletableFuture[Integer]): Unit = {
-        checkStarted()
-
-        import ConfigValueFactory._
-
-        val cfg = initializeConfig(
-            Array.empty,
-            Some(
-                ConfigFactory.empty().withValue(
-                    "nlpcraft.probe.models",
-                    fromAnyRef(mdlClasses.map(_.getName).mkString(","))
-                )
-            )
-        )
-
-        new Thread() {
-            override def run(): Unit = start0(cfg, fut)
-        }.start()
-    }
-
-    /**
-      * 
       * @param probeId Probe ID.
       * @param tok
       * @param upLinkStr
@@ -395,12 +356,12 @@ private [probe] object NCProbeBoot extends LazyLogging with NCOpenCensusTrace {
       * @param mdlClasses
       * @param fut
       */
-    private [probe] def start(
+    private [probe] def startEmbedded(
         probeId: String,
         tok: String,
         upLinkStr: String,
         dnLinkStr: String,
-        mdlClasses: Array[java.lang.Class[_ <: NCModel]],
+        mdlClasses: Array[String],
         fut: CompletableFuture[Integer]): Unit = {
         checkStarted()
     
@@ -412,7 +373,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 models: String = mdlClasses.map(_.getName).mkString(",")
+            val models: String = mdlClasses.mkString(",")
             val lifecycle: Seq[String] = getStringList(s"$prefix.lifecycle")
         }
     
@@ -444,14 +405,6 @@ private [probe] object NCProbeBoot extends LazyLogging with NCOpenCensusTrace {
     }
 
     /**
-      *
-      * @param args
-      * @param fut
-      */
-    private [probe] def start(args: Array[String], fut: CompletableFuture[Integer]): Unit =
-        start0(initializeConfig(args, None), fut)
-    
-    /**
       * Prints ASCII-logo.
       */
     private def asciiLogo() {