This is an automated email from the ASF dual-hosted git repository.
sergeykamov pushed a commit to branch NLPCRAFT-434
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git
The following commit(s) were added to refs/heads/NLPCRAFT-434 by this push:
new 8f83d07 WIP.
8f83d07 is described below
commit 8f83d07137b36dccb355fa8a23006ca878556cf6
Author: Sergey Kamov <[email protected]>
AuthorDate: Thu Sep 9 23:38:31 2021 +0300
WIP.
---
.../apache/nlpcraft/model/NCElementDefinition.java | 2 +-
...ntDefinition.java => NCElementDefinition2.java} | 10 ++++-----
.../probe/mgrs/deploy/NCDeployManager.scala | 11 +++++++++-
.../mgrs/deploy1/NCElementAnnotationsSpec.scala | 24 ++++++++++++++++------
.../mgrs/deploy1/pack/NCElementAnnotations2.scala | 10 ++++++++-
5 files changed, 43 insertions(+), 14 deletions(-)
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCElementDefinition.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCElementDefinition.java
index 0a50a01..dff9ae7 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCElementDefinition.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCElementDefinition.java
@@ -26,7 +26,7 @@ import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
-// TODO:
+// TODO: json or yaml
@Documented
@Retention(value=RUNTIME)
@Target(value=METHOD)
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCElementDefinition.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCElementDefinition2.java
similarity index 88%
copy from
nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCElementDefinition.java
copy to
nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCElementDefinition2.java
index 0a50a01..d7a6b5d 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCElementDefinition.java
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCElementDefinition2.java
@@ -26,23 +26,23 @@ import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
-// TODO:
+// TODO: class name
@Documented
@Retention(value=RUNTIME)
@Target(value=METHOD)
-@Repeatable(NCElementDefinition.NCIntentRefList.class)
-public @interface NCElementDefinition {
+@Repeatable(NCElementDefinition2.NCIntentRefList.class)
+public @interface NCElementDefinition2 {
/**
* ID of the intent term.
*
* @return ID of the intent term.
*/
- String value();
+ Class<?> value();
@Retention(RetentionPolicy.RUNTIME)
@Target(value=METHOD)
@Documented
@interface NCIntentRefList {
- NCElementDefinition[] value();
+ NCElementDefinition2[] value();
}
}
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 dbe27cc..574ade2 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
@@ -69,6 +69,7 @@ object NCDeployManager extends NCService {
private final val CLS_MDL_CLS_REF = classOf[NCModelAddClasses]
private final val CLS_MDL_PKGS_REF = classOf[NCModelAddPackage]
private final val CLS_ELEM_DEF = classOf[NCElementDefinition]
+ private final val CLS_ELEM_DEF_CLASS = classOf[NCElementDefinition2]
// Java and scala lists.
private final val CLS_SCALA_SEQ = classOf[Seq[_]]
@@ -1649,7 +1650,6 @@ object NCDeployManager extends NCService {
s"]",
e
)
-
}
val elem =
@@ -1692,6 +1692,15 @@ object NCDeployManager extends NCService {
}
elems += elem
+
+ val allClassDefAnns =
mutable.ArrayBuffer.empty[NCElementDefinition2]
+
+ def addClass(anns: Array[NCElementDefinition2]): Unit = if
(anns != null) allClassDefAnns ++= anns.toSeq
+
+ addClass(claxx.getAnnotationsByType(CLS_ELEM_DEF_CLASS))
+ getAllMethods(claxx).foreach(m =>
addClass(m.getAnnotationsByType(CLS_ELEM_DEF_CLASS)))
+
+ allClassDefAnns.foreach(cl => elems +=
cl.value().getDeclaredConstructor().newInstance().asInstanceOf[NCElement])
})
}
diff --git
a/nlpcraft/src/test/scala/org/apache/nlpcraft/probe/mgrs/deploy1/NCElementAnnotationsSpec.scala
b/nlpcraft/src/test/scala/org/apache/nlpcraft/probe/mgrs/deploy1/NCElementAnnotationsSpec.scala
index ca844f5..4d594ed 100644
---
a/nlpcraft/src/test/scala/org/apache/nlpcraft/probe/mgrs/deploy1/NCElementAnnotationsSpec.scala
+++
b/nlpcraft/src/test/scala/org/apache/nlpcraft/probe/mgrs/deploy1/NCElementAnnotationsSpec.scala
@@ -17,7 +17,7 @@
package org.apache.nlpcraft.probe.mgrs.deploy1
-import org.apache.nlpcraft.model.{NCElement, NCElementDefinition, NCIntent,
NCModelAdapter, NCModelAddClasses, NCModelAddPackage, NCResult}
+import org.apache.nlpcraft.model.{NCElement, NCElementDefinition,
NCElementDefinition2, NCIntent, NCModelAdapter, NCModelAddClasses,
NCModelAddPackage, NCResult}
import org.apache.nlpcraft.{NCTestContext, NCTestElement, NCTestEnvironment}
import org.junit.jupiter.api.Test
@@ -31,6 +31,9 @@ class NCElementAnnotations1 {
def x(): Unit = ()
}
+class NCElementAnn1 extends NCElement {
+ override def getId: String = "e12"
+}
/**
*
*/
@@ -38,9 +41,7 @@ class NCElementAnnotations1 {
@NCModelAddPackage(Array("org.apache.nlpcraft.probe.mgrs.deploy1.pack"))
@NCElementDefinition("""{ "id": "e3" }""")
@NCElementDefinition("""{ "id": "e4" }""")
-class NCElementAnnotationsSpecModel extends NCModelAdapter(
- "nlpcraft.intents.idl.test", "IDL Test Model", "1.0"
-) {
+class NCElementAnnotationsSpecModel extends
NCModelAdapter("nlpcraft.intents.idl.test", "IDL Test Model", "1.0") {
// It overrides city.
override def getElements: util.Set[NCElement] = Set(NCTestElement("e1"))
@@ -74,8 +75,14 @@ class NCElementAnnotationsSpecModel extends NCModelAdapter(
@NCIntent("intent=onE10 term={# == 'e10'}")
def onE10(): NCResult = NCResult.text("OK")
-}
+ @NCIntent("intent=onE11 term={# == 'e11'}")
+ def onE11(): NCResult = NCResult.text("OK")
+
+ @NCElementDefinition2(classOf[NCElementAnn1])
+ @NCIntent("intent=onE12 term={# == 'e12'}")
+ def onE12(): NCResult = NCResult.text("OK")
+}
/**
*
*/
@@ -105,7 +112,12 @@ class NCElementAnnotationsSpec extends NCTestContext {
checkIntent("e8", "onE8")
// Added via annotation to class and method, where class added via
NCModelAddPackage.
+ // Complex YAML tested.
checkIntent("e9", "onE9")
- checkIntent("e10", "onE10")
+ checkIntent("e101", "onE10")
+ checkIntent("e11", "onE11")
+
+ // Added via class annotation.
+ checkIntent("e12", "onE12")
}
}
\ No newline at end of file
diff --git
a/nlpcraft/src/test/scala/org/apache/nlpcraft/probe/mgrs/deploy1/pack/NCElementAnnotations2.scala
b/nlpcraft/src/test/scala/org/apache/nlpcraft/probe/mgrs/deploy1/pack/NCElementAnnotations2.scala
index de06dda..26f5d6f 100644
---
a/nlpcraft/src/test/scala/org/apache/nlpcraft/probe/mgrs/deploy1/pack/NCElementAnnotations2.scala
+++
b/nlpcraft/src/test/scala/org/apache/nlpcraft/probe/mgrs/deploy1/pack/NCElementAnnotations2.scala
@@ -20,7 +20,15 @@ package org.apache.nlpcraft.probe.mgrs.deploy1.pack
import org.apache.nlpcraft.model.NCElementDefinition
@NCElementDefinition("""{ "id": "e9" }""")
+@NCElementDefinition(
+ """---
+ id: "e10"
+ synonyms:
+ - "e100"
+ - "e101"
+ """
+)
class NCElementAnnotations2 {
- @NCElementDefinition("""{ "id": "e10" }""")
+ @NCElementDefinition("""{ "id": "e11" }""")
def x(): Unit = ()
}
\ No newline at end of file