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 <[email protected]> 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() {
