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/04/26 04:24:47 UTC

[incubator-nlpcraft] branch master updated: Fix for NLPCRAFT-39.

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 15ea31d  Fix for NLPCRAFT-39.
15ea31d is described below

commit 15ea31d7fe77b8cb5a447b0b508902db048f72b7
Author: Aaron Radzinzski <ar...@datalingvo.com>
AuthorDate: Sat Apr 25 21:24:42 2020 -0700

    Fix for NLPCRAFT-39.
---
 pom.xml                                            | 36 ++++++++++------------
 .../org/apache/nlpcraft/common/util/NCUtils.scala  | 21 ++++++-------
 .../model/intent/impl/NCIntentDslCompiler.scala    |  2 +-
 .../model/intent/impl/NCIntentSolverEngine.scala   |  7 ++---
 .../probe/mgrs/deploy/NCDeployManager.scala        |  1 +
 .../nlpcraft/probe/mgrs/model/NCModelManager.scala |  2 +-
 .../mgrs/model/NCModelSynonymDslCompiler.scala     | 32 +++++++++----------
 .../server/geo/tools/NCGeoNamesGenerator.scala     |  8 ++---
 .../geo/tools/NCGeoStateNamesGenerator.scala       |  2 +-
 .../geo/tools/NCGeoSyntheticNamesGenerator.scala   |  4 +--
 .../geo/tools/metro/NCGeoMetroGenerator.scala      |  4 +--
 .../org/apache/nlpcraft/server/json/NCJson.scala   |  8 ++---
 .../nlp/core/stanford/NCStanfordAnnotator.scala    |  2 +-
 .../enrichers/stopword/NCStopWordEnricher.scala    |  2 +-
 .../nlpcraft/server/probe/NCProbeManager.scala     | 13 +++++---
 .../nlpcraft/server/query/NCQueryManager.scala     | 15 +++++----
 .../nlpcraft/server/rest/NCRestManager.scala       | 12 +++-----
 17 files changed, 85 insertions(+), 86 deletions(-)

diff --git a/pom.xml b/pom.xml
index 575571d..b0deedf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -69,13 +69,13 @@
 
     <properties>
         <!-- Major Scala version. -->
-        <scala.base>2.11</scala.base>
+        <scala.base>2.12</scala.base>
 
         <!-- Versions. -->
         <ignite.ver>2.7.5</ignite.ver>
-        <scala.plugin.ver>3.3.1</scala.plugin.ver>
+        <scala.plugin.ver>4.3.1</scala.plugin.ver>
         <log4j.ver>2.12.0</log4j.ver>
-        <scala.ver>${scala.base}.12</scala.ver>
+        <scala.ver>${scala.base}.11</scala.ver>
         <scala.config.ver>1.3.4</scala.config.ver>
         <commons.codec.ver>1.12</commons.codec.ver>
         <commons.io.ver>2.6</commons.io.ver>
@@ -89,8 +89,7 @@
         <scala.xml.ver>1.1.1</scala.xml.ver>
         <c3p0.ver>0.9.5.4</c3p0.ver> <!-- Upgraded to due security vulnerability. -->
         <scalatest.ver>3.0.8</scalatest.ver>
-        <akka.ver>2.5.21</akka.ver>
-        <lift.json.ver>2.6.3</lift.json.ver>
+        <lift.json.ver>3.3.0</lift.json.ver>
         <scalaj.ver>2.4.1</scalaj.ver>
         <spray.ver>1.3.5</spray.ver>
         <tika.ver>1.21</tika.ver>
@@ -112,7 +111,7 @@
         <apache.common.lang.ver>3.8.1</apache.common.lang.ver>
         <apache.httpcomponents.ver>4.5.7</apache.httpcomponents.ver>
         <apache.opennlp.ver>1.9.1</apache.opennlp.ver>
-        <maven.javadoc.plugin.ver>3.0.0-M1</maven.javadoc.plugin.ver>
+        <maven.javadoc.plugin.ver>3.2.0</maven.javadoc.plugin.ver>
         <maven.shade.plugin.ver>3.2.1</maven.shade.plugin.ver>
         <maven.source.plugin.ver>3.0.1</maven.source.plugin.ver>
         <maven.gpg.plugin.ver>1.6</maven.gpg.plugin.ver>
@@ -120,9 +119,9 @@
         <maven.bazaarvoice.plugin.ver>0.9</maven.bazaarvoice.plugin.ver>
         <apache.rat.plugin.ver>0.13</apache.rat.plugin.ver>
         <org.antlr4.ver>4.8</org.antlr4.ver>
-        <akka.http.2.11.ver>10.1.9</akka.http.2.11.ver>
-        <akka.stream.2.11.ver>2.5.23</akka.stream.2.11.ver>
-        <akka.http.spray.json.2.11.ver>10.1.9</akka.http.spray.json.2.11.ver>
+        <akka.http.2.12.ver>10.1.9</akka.http.2.12.ver>
+        <akka.stream.2.12.ver>2.5.23</akka.stream.2.12.ver>
+        <akka.http.spray.json.2.12.ver>10.1.9</akka.http.spray.json.2.12.ver>
         <google.guava.ver>28.1-jre</google.guava.ver>
         <diff.utils.ver>4.5</diff.utils.ver>
         <vertical.blank.ver>1.0</vertical.blank.ver>
@@ -360,18 +359,18 @@
         </dependency>
         <dependency>
             <groupId>com.typesafe.akka</groupId>
-            <artifactId>akka-http_2.11</artifactId>
-            <version>${akka.http.2.11.ver}</version>
+            <artifactId>akka-http_2.12</artifactId>
+            <version>${akka.http.2.12.ver}</version>
         </dependency>
         <dependency>
             <groupId>com.typesafe.akka</groupId>
-            <artifactId>akka-stream_2.11</artifactId>
-            <version>${akka.stream.2.11.ver}</version>
+            <artifactId>akka-stream_2.12</artifactId>
+            <version>${akka.stream.2.12.ver}</version>
         </dependency>
         <dependency>
             <groupId>com.typesafe.akka</groupId>
-            <artifactId>akka-http-spray-json_2.11</artifactId>
-            <version>${akka.http.spray.json.2.11.ver}</version>
+            <artifactId>akka-http-spray-json_2.12</artifactId>
+            <version>${akka.http.spray.json.2.12.ver}</version>
         </dependency>
         <dependency>
             <groupId>com.fasterxml.jackson.dataformat</groupId>
@@ -574,11 +573,11 @@
 ------------------------------------------------------------------------
 You are trying to compile NLPCraft with inappropriate JDK version!
 Detected JDK Version: ${java.runtime.version}
-JDK version should be 1.8
+JDK version should be 8 or 11
 ------------------------------------------------------------------------
 
                             </message>
-                            <version>[1.8,1.9)</version>
+                            <version>1.8,11</version>
                         </requireJavaVersion>
                     </rules>
                 </configuration>
@@ -596,8 +595,7 @@ JDK version should be 1.8
                 <version>${maven.javadoc.plugin.ver}</version>
                 <configuration>
                     <!-- Required as of JDK 8u121 -->
-                    <additionalparam>--allow-script-in-comments, -Xdoclint:none</additionalparam>
-
+                    <additionalOptions>--allow-script-in-comments, -Xdoclint:none</additionalOptions>
                     <javadocDirectory>${project.basedir}/javadoc</javadocDirectory>
                     <docfilessubdirs>true</docfilessubdirs>
                     <encoding>UTF-8</encoding>
diff --git a/src/main/scala/org/apache/nlpcraft/common/util/NCUtils.scala b/src/main/scala/org/apache/nlpcraft/common/util/NCUtils.scala
index 8c67e94..f32a8a3 100644
--- a/src/main/scala/org/apache/nlpcraft/common/util/NCUtils.scala
+++ b/src/main/scala/org/apache/nlpcraft/common/util/NCUtils.scala
@@ -51,6 +51,7 @@ import scala.io.Source
 import scala.language.{implicitConversions, postfixOps}
 import scala.reflect.runtime.universe._
 import scala.sys.SystemProperties
+import scala.util.{Failure, Success}
 import scala.util.control.Exception.ignoring
 
 /**
@@ -928,15 +929,13 @@ object NCUtils extends LazyLogging {
         body: Unit ⇒ T,
         onFailure: Throwable ⇒ Unit = _ ⇒ Unit,
         onSuccess: T ⇒ Unit = (_: T) ⇒ ())(implicit ec: ExecutionContext = global): Future[T] = {
-        val fut = Future { body(()) }
-        
-        fut.onFailure {
-            case e: Throwable ⇒ onFailure(e)
-        }
-        fut.onSuccess {
-            case t ⇒ onSuccess(t)
-        }
-        
+        val fut = Future { body(()) }(ec)
+
+        fut.onComplete {
+            case Success(ok) ⇒ onSuccess(ok)
+            case Failure(err) ⇒ onFailure(err)
+        }(ec)
+
         fut
     }
     
@@ -1577,7 +1576,7 @@ object NCUtils extends LazyLogging {
       * @param ec
       */
     def executeParallel(bodies: (() ⇒ Any)*)(implicit ec: ExecutionContext = global): Unit =
-        bodies.map(body ⇒ { Future { body() } } ).foreach(f ⇒ Await.result(f, Duration.Inf))
+        bodies.map(body ⇒ { Future { body() }(ec) } ).foreach(f ⇒ Await.result(f, Duration.Inf))
     
     /**
       *
@@ -1588,7 +1587,7 @@ object NCUtils extends LazyLogging {
     def mkObject[T](clsName: String): T = {
         try
             // Try Java reflection first.
-            Class.forName(clsName).newInstance().asInstanceOf[T]
+            Class.forName(clsName).getDeclaredConstructor().newInstance().asInstanceOf[T]
         catch {
             case _: Throwable ⇒
                 // Try Scala reflection second.
diff --git a/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentDslCompiler.scala b/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentDslCompiler.scala
index e312210..2261d1d 100644
--- a/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentDslCompiler.scala
+++ b/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentDslCompiler.scala
@@ -57,7 +57,7 @@ object NCIntentDslCompiler extends LazyLogging {
         private var min = 1
         private var max = 1
     
-        private val predStack = new mutable.Stack[NCToken ⇒ Boolean] // Stack of predicates.
+        private val predStack = new mutable.ArrayStack[NCToken ⇒ Boolean] // Stack of predicates.
         private val lvalParts = ArrayBuffer.empty[String] // lval parts collector.
         private val rvalList = ArrayBuffer.empty[String] // rval list collector.
         private var rval: String = _
diff --git a/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentSolverEngine.scala b/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentSolverEngine.scala
index 6bd7a46..5820fb7 100644
--- a/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentSolverEngine.scala
+++ b/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentSolverEngine.scala
@@ -29,8 +29,7 @@ import org.apache.nlpcraft.model._
 import org.apache.nlpcraft.model.impl.NCTokenLogger
 import org.apache.nlpcraft.probe.mgrs.dialogflow.NCDialogFlowManager
 
-import scala.collection.JavaConversions._
-import scala.collection.JavaConverters._
+import collection.convert.ImplicitConversions._
 import scala.collection.mutable
 
 /**
@@ -194,7 +193,7 @@ object NCIntentSolverEngine extends LazyLogging with NCOpenCensusTrace {
                                     // history and processed sentence.
                                     conv.
                                         filter(t ⇒ {
-                                            val convTokGroups = t.getGroups.asScala.sorted
+                                            val convTokGroups = t.getGroups.sorted
 
                                             !senTokGroups.exists(convTokGroups.containsSlice)
                                         }).
@@ -435,7 +434,7 @@ object NCIntentSolverEngine extends LazyLogging with NCOpenCensusTrace {
                 NCTokenLogger.prepareTable(senToks.filter(tok ⇒ !tok.used && tok.token.isUserDefined).map(_.token)).
                     info(
                         logger,
-                        Some(s"Unused user tokens for intent '$intentId' ${varStr}:")
+                        Some(s"Unused user tokens for intent '$intentId' $varStr:")
                     )
                 
                 None
diff --git a/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala b/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala
index 746bdda..d564737 100644
--- a/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala
+++ b/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala
@@ -109,6 +109,7 @@ object NCDeployManager extends NCService with DecorateAsScala {
     private def makeModelFactory(clsName: String): NCModelFactory =
         catching(classOf[Throwable]) either Thread.currentThread().getContextClassLoader.
             loadClass(clsName).
+            getDeclaredConstructor().
             newInstance().
             asInstanceOf[NCModelFactory]
         match {
diff --git a/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/NCModelManager.scala b/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/NCModelManager.scala
index 6bf48f3..f9ad86c 100644
--- a/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/NCModelManager.scala
+++ b/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/NCModelManager.scala
@@ -30,7 +30,7 @@ import org.apache.nlpcraft.probe.mgrs.NCSynonymChunkKind._
 import org.apache.nlpcraft.probe.mgrs.deploy._
 import org.apache.nlpcraft.probe.mgrs.{NCModelDecorator, NCSynonym, NCSynonymChunk}
 
-import scala.collection.JavaConversions._
+import collection.convert.ImplicitConversions._
 import scala.collection.convert.DecorateAsScala
 import scala.collection.mutable
 import scala.collection.mutable.ListBuffer
diff --git a/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/NCModelSynonymDslCompiler.scala b/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/NCModelSynonymDslCompiler.scala
index 6f3128e..6ee4c20 100644
--- a/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/NCModelSynonymDslCompiler.scala
+++ b/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/NCModelSynonymDslCompiler.scala
@@ -36,32 +36,30 @@ import scala.collection.mutable.ArrayBuffer
 object NCModelSynonymDslCompiler extends LazyLogging {
     private type Predicate = java.util.function.Function[NCToken, java.lang.Boolean]
     
-    def toJavaFunc(alias: String, func: NCToken ⇒ Boolean): Predicate = new Predicate() {
-        override def apply(tok: NCToken): java.lang.Boolean = {
-            val res = func(tok)
+    def toJavaFunc(alias: String, func: NCToken ⇒ Boolean): Predicate = (tok: NCToken) => {
+        val res = func(tok)
+    
+        // Store predicate's alias, if any, in token metadata if this token satisfies this predicate.
+        // NOTE: token can have multiple aliases associated with it.
+        if (res && alias != null) {
+            val meta = tok.getMetadata
             
-            // Store predicate's alias, if any, in token metadata if this token satisfies this predicate.
-            // NOTE: token can have multiple aliases associated with it.
-            if (res && alias != null) {
-                val meta = tok.getMetadata
-                
-                if (!meta.containsKey(TOK_META_ALIASES_KEY))
-                    meta.put(TOK_META_ALIASES_KEY, new java.util.HashSet[String]())
-                
-                val aliases = meta.get(TOK_META_ALIASES_KEY).asInstanceOf[java.util.Set[String]]
-                
-                aliases.add(alias)
-            }
+            if (!meta.containsKey(TOK_META_ALIASES_KEY))
+                meta.put(TOK_META_ALIASES_KEY, new java.util.HashSet[String]())
             
-            res
+            val aliases = meta.get(TOK_META_ALIASES_KEY).asInstanceOf[java.util.Set[String]]
+            
+            aliases.add(alias)
         }
+        
+        res
     }
     
     /**
      *
      */
     class FiniteStateMachine extends NCSynonymDslBaseListener {
-        private val predStack = new mutable.Stack[NCToken ⇒ Boolean] // Stack of predicates.
+        private val predStack = new mutable.ArrayStack[NCToken ⇒ Boolean] // Stack of predicates.
         private val lvalParts = ArrayBuffer.empty[String] // lval parts collector.
         private val rvalList = ArrayBuffer.empty[String] // rval list collector.
         private var alias: String = _
diff --git a/src/main/scala/org/apache/nlpcraft/server/geo/tools/NCGeoNamesGenerator.scala b/src/main/scala/org/apache/nlpcraft/server/geo/tools/NCGeoNamesGenerator.scala
index 5039533..c6330d5 100644
--- a/src/main/scala/org/apache/nlpcraft/server/geo/tools/NCGeoNamesGenerator.scala
+++ b/src/main/scala/org/apache/nlpcraft/server/geo/tools/NCGeoNamesGenerator.scala
@@ -361,7 +361,7 @@ object NCGeoNamesGenerator extends App {
 
         for (country ← countries)
             managed(new PrintStream(new File(s"$outDir/countries/${country.iso}.json"))) acquireAndGet { ps ⇒
-                ps.println(pretty(render(decompose(country))))
+                ps.println(prettyRender(decompose(country)))
             }
     }
 
@@ -443,7 +443,7 @@ object NCGeoNamesGenerator extends App {
 
         // Burn it.
         managed(new PrintStream(new File(outSynonyms))) acquireAndGet { ps ⇒
-            ps.println(pretty(render(decompose(hs))))
+            ps.println(prettyRender(decompose(hs)))
         }
     }
 
@@ -482,7 +482,7 @@ object NCGeoNamesGenerator extends App {
                 ).sortBy(p ⇒ (p.country, p.name))
 
             managed(new PrintStream(new File(file))) acquireAndGet { ps ⇒
-                ps.println(pretty(render(decompose(sorder))))
+                ps.println(prettyRender(decompose(sorder)))
             }
         }
 
@@ -508,7 +508,7 @@ object NCGeoNamesGenerator extends App {
         ).toMap
 
         managed(new PrintStream(new File(outContinents))) acquireAndGet { ps ⇒
-            ps.println(pretty(render(decompose(hs))))
+            ps.println(prettyRender(decompose(hs)))
         }
     }
 
diff --git a/src/main/scala/org/apache/nlpcraft/server/geo/tools/NCGeoStateNamesGenerator.scala b/src/main/scala/org/apache/nlpcraft/server/geo/tools/NCGeoStateNamesGenerator.scala
index 6ddbe23..6393cd5 100644
--- a/src/main/scala/org/apache/nlpcraft/server/geo/tools/NCGeoStateNamesGenerator.scala
+++ b/src/main/scala/org/apache/nlpcraft/server/geo/tools/NCGeoStateNamesGenerator.scala
@@ -79,7 +79,7 @@ object NCGeoStateNamesGenerator extends App {
 
     // Burn it.
     managed(new PrintStream(new File(out))) acquireAndGet { ps ⇒
-        ps.println(pretty(render(decompose(syns))))
+        ps.println(prettyRender(decompose(syns)))
     }
 
     println(s"Files generated OK: $out")
diff --git a/src/main/scala/org/apache/nlpcraft/server/geo/tools/NCGeoSyntheticNamesGenerator.scala b/src/main/scala/org/apache/nlpcraft/server/geo/tools/NCGeoSyntheticNamesGenerator.scala
index f9a2b6f..bd33df8 100644
--- a/src/main/scala/org/apache/nlpcraft/server/geo/tools/NCGeoSyntheticNamesGenerator.scala
+++ b/src/main/scala/org/apache/nlpcraft/server/geo/tools/NCGeoSyntheticNamesGenerator.scala
@@ -129,7 +129,7 @@ object NCGeoSyntheticNamesGenerator extends App {
 
                             // Short representation (without subcontinent and continent.)
                             case e: NCGeoRegion ⇒
-                                NCGeoSynonym(None, Some(e.name), Some(e.country.name),None, None, None, List(s))
+                                NCGeoSynonym(None, Some(e.name), Some(e.country.name), None, None, None, List(s))
 
                             // Short representation (without subcontinent and continent.)
                             case e: NCGeoCity ⇒
@@ -157,7 +157,7 @@ object NCGeoSyntheticNamesGenerator extends App {
         val data = (syns.values ++ exists).toSet
 
         managed(new PrintStream(new File(outFile))) acquireAndGet { ps ⇒
-            ps.println(pretty(render(decompose(data))))
+            ps.println(prettyRender(decompose(data)))
         }
     }
 
diff --git a/src/main/scala/org/apache/nlpcraft/server/geo/tools/metro/NCGeoMetroGenerator.scala b/src/main/scala/org/apache/nlpcraft/server/geo/tools/metro/NCGeoMetroGenerator.scala
index da81246..2a613aa 100644
--- a/src/main/scala/org/apache/nlpcraft/server/geo/tools/metro/NCGeoMetroGenerator.scala
+++ b/src/main/scala/org/apache/nlpcraft/server/geo/tools/metro/NCGeoMetroGenerator.scala
@@ -58,7 +58,7 @@ object NCGeoMetroGenerator extends App {
         implicit val formats: DefaultFormats.type = net.liftweb.json.DefaultFormats
 
         managed(new PrintStream(new File(out_vals))) acquireAndGet { ps ⇒
-            ps.println(pretty(render(decompose(metro))))
+            ps.println(prettyRender(decompose(metro)))
         }
 
         println(s"File created: $out_vals")
@@ -81,7 +81,7 @@ object NCGeoMetroGenerator extends App {
         })
 
         managed(new PrintStream(new File(out_syns))) acquireAndGet { ps ⇒
-            ps.println(pretty(render(decompose(sync))))
+            ps.println(prettyRender(decompose(sync)))
         }
 
         println(s"Synonyms file created: $out_syns")
diff --git a/src/main/scala/org/apache/nlpcraft/server/json/NCJson.scala b/src/main/scala/org/apache/nlpcraft/server/json/NCJson.scala
index 922408b..99c5fe6 100644
--- a/src/main/scala/org/apache/nlpcraft/server/json/NCJson.scala
+++ b/src/main/scala/org/apache/nlpcraft/server/json/NCJson.scala
@@ -21,7 +21,7 @@ import java.io.{IOException, _}
 import java.util.zip._
 
 import com.typesafe.scalalogging.LazyLogging
-import net.liftweb.json.{compact ⇒ liftCompact, pretty ⇒ liftPretty, render ⇒ liftRender, _}
+import net.liftweb.json.{compactRender ⇒ liftCompact, prettyRender ⇒ liftPretty, _}
 import org.apache.nlpcraft.common._
 
 import scala.annotation.tailrec
@@ -90,14 +90,14 @@ class NCJson(val json: JValue) {
      *
      * @return String presentation of this JSON object.
      */
-    def pretty: String = liftPretty(liftRender(json))
+    def pretty: String = liftPretty(json)
 
     /**
      * Renders this JSON in a compact form (suitable for exchange).
      *
      * @return String presentation of this JSON object.
      */
-    def compact: String = liftCompact(liftRender(json))
+    def compact: String = liftCompact(json)
 
     /**
      * Zips this JSON object into array of bytes using GZIP.
@@ -269,7 +269,7 @@ object NCJson {
      *
      * @param json JSON text.
      */
-    private def removeComments(json: String): String = json.replaceAll("""\/\*(\*(?!\/)|[^*])*\*\/""", "")
+    private def removeComments(json: String): String = json.replaceAll("""/\*(\*(?!/)|[^*])*\*/""", "")
 
     /**
      * Extracts type `T` from given JSON `file`.
diff --git a/src/main/scala/org/apache/nlpcraft/server/nlp/core/stanford/NCStanfordAnnotator.scala b/src/main/scala/org/apache/nlpcraft/server/nlp/core/stanford/NCStanfordAnnotator.scala
index 6c4480b..0cb7983 100644
--- a/src/main/scala/org/apache/nlpcraft/server/nlp/core/stanford/NCStanfordAnnotator.scala
+++ b/src/main/scala/org/apache/nlpcraft/server/nlp/core/stanford/NCStanfordAnnotator.scala
@@ -26,7 +26,7 @@ import edu.stanford.nlp.process.AbstractTokenizer
 import edu.stanford.nlp.util.TypesafeMap
 
 import scala.language.implicitConversions
-import scala.collection.JavaConversions._
+import collection.convert.ImplicitConversions._
 
 /**
   * Custom annotator.
diff --git a/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/stopword/NCStopWordEnricher.scala b/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/stopword/NCStopWordEnricher.scala
index 92168ba..d948ed4 100644
--- a/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/stopword/NCStopWordEnricher.scala
+++ b/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/stopword/NCStopWordEnricher.scala
@@ -228,7 +228,7 @@ object NCStopWordEnricher extends NCServerEnricher {
                     def add(m: mutable.HashMap[String, mutable.HashSet[T]], incl: Boolean): Unit =
                         poses.filter { case (_, isIncl) ⇒ isIncl == incl }.keys.foreach(pos ⇒
                             m.get(pos) match {
-                                case Some(set) ⇒ set += cond
+                                case Some(set) ⇒ set.add(cond)
                                 case _ ⇒
                                     val set = mutable.HashSet.empty[T]
 
diff --git a/src/main/scala/org/apache/nlpcraft/server/probe/NCProbeManager.scala b/src/main/scala/org/apache/nlpcraft/server/probe/NCProbeManager.scala
index 4df9ae0..7f11397 100644
--- a/src/main/scala/org/apache/nlpcraft/server/probe/NCProbeManager.scala
+++ b/src/main/scala/org/apache/nlpcraft/server/probe/NCProbeManager.scala
@@ -46,6 +46,7 @@ import scala.collection.JavaConverters._
 import scala.collection.{Map, mutable}
 import scala.concurrent.ExecutionContext.Implicits.global
 import scala.concurrent.Future
+import scala.util.{Failure, Success}
 
 /**
   * Probe manager.
@@ -356,11 +357,13 @@ object NCProbeManager extends NCService {
                                 val fut = Future {
                                     fn(NCSocket(sock, sock.getRemoteSocketAddress.toString))
                                 }
-                                
-                                fut.onFailure {
-                                    case e: NCE ⇒ logger.warn(e.getMessage, e)
-                                    case _: EOFException ⇒ () // Just ignoring.
-                                    case e: Throwable ⇒ logger.warn(s"Ignoring socket error: ${e.getLocalizedMessage}")
+
+                                fut.onComplete {
+                                    case Success(_) ⇒ // No-op.
+
+                                    case Failure(e: NCE) ⇒ logger.warn(e.getMessage, e)
+                                    case Failure(_: EOFException) ⇒ () // Just ignoring.
+                                    case Failure(e: Throwable) ⇒ logger.warn(s"Ignoring socket error: ${e.getLocalizedMessage}")
                                 }
                             }
                         }
diff --git a/src/main/scala/org/apache/nlpcraft/server/query/NCQueryManager.scala b/src/main/scala/org/apache/nlpcraft/server/query/NCQueryManager.scala
index 298ff8b..8ea4d44 100644
--- a/src/main/scala/org/apache/nlpcraft/server/query/NCQueryManager.scala
+++ b/src/main/scala/org/apache/nlpcraft/server/query/NCQueryManager.scala
@@ -37,6 +37,7 @@ import org.apache.nlpcraft.server.user.NCUserManager
 
 import scala.concurrent.ExecutionContext.Implicits.global
 import scala.concurrent.{Future, Promise}
+import scala.util.{Failure, Success}
 import scala.util.control.Exception._
 
 /**
@@ -277,19 +278,21 @@ object NCQueryManager extends NCService with NCIgniteInstance with NCOpenCensusS
                     span
                 )
             }
-        } onFailure {
-            case e: NCE ⇒
+        } onComplete {
+            case Success(_) ⇒ // No-op.
+
+            case Failure(e: NCE) ⇒
                 logger.error(s"Query processing failed due to: ${e.getLocalizedMessage}")
-            
+
                 setError(
                     srvReqId,
                     e.getLocalizedMessage,
                     NCErrorCodes.SYSTEM_ERROR
                 )
-        
-            case e: Throwable ⇒
+
+            case Failure(e: Throwable) ⇒
                 logger.error(s"System error processing query: ${e.getLocalizedMessage}", e)
-            
+
                 setError(
                     srvReqId,
                     "Processing failed due to a system error.",
diff --git a/src/main/scala/org/apache/nlpcraft/server/rest/NCRestManager.scala b/src/main/scala/org/apache/nlpcraft/server/rest/NCRestManager.scala
index 54c9c67..f2a55ab 100644
--- a/src/main/scala/org/apache/nlpcraft/server/rest/NCRestManager.scala
+++ b/src/main/scala/org/apache/nlpcraft/server/rest/NCRestManager.scala
@@ -26,6 +26,7 @@ import org.apache.nlpcraft.common.config.NCConfigurable
 import org.apache.nlpcraft.common.{NCService, _}
 
 import scala.concurrent.{ExecutionContextExecutor, Future}
+import scala.util.{Failure, Success}
 
 /**
   * REST manager.
@@ -78,13 +79,10 @@ object NCRestManager extends NCService {
         handleRejections = api.getRejectionHandler
 
         bindFut = Http().bindAndHandleAsync(Route.asyncHandler(api.getRoute), Config.host, Config.port)
-        
-        bindFut.onFailure {
-            case _ ⇒ logger.info(s"REST server failed to start on '$url'.")
-        }
-    
-        bindFut.onSuccess {
-            case _ ⇒ logger.info(s"REST server is listening on '$url'.")
+
+        bindFut.onComplete {
+            case Success(_) ⇒ logger.info(s"REST server is listening on '$url'.")
+            case Failure(_) ⇒ logger.info(s"REST server failed to start on '$url'.")
         }
 
         super.start()